diff --git a/package-lock.json b/package-lock.json index 4725cdb..60f463d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,133 +9,168 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "cheerio": "^1.0.0-rc.3", - "fs-extra": "^9.0.1", - "got": "^11.8.2", + "axios": "^1.4.0", + "cheerio": "^1.0.0-rc.12", + "fs-extra": "^11.1.1", + "got": "^13.0.0", "jsonfile": "^6.1.0", - "puppeteer": "^5.4.1", - "tldts": "^5.6.71", - "typescript": "^4.0.5", + "puppeteer": "^20.7.2", + "tldts": "^6.0.8", + "typescript": "^5.1.3", "write": "^2.0.0" }, "devDependencies": { - "@types/cheerio": "^0.22.22", - "@types/fs-extra": "^9.0.4", - "@types/jsonfile": "^6.0.0", - "@types/puppeteer": "^5.4.0", - "@types/write": "^2.0.0" + "@types/got": "^9.6.12", + "@types/jsonfile": "^6.1.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.1.tgz", + "integrity": "sha512-H43VosMzywHCcYcgv0GXXopvwnV21Ud9g2aXbPlQUJj1Xcz9V0wBwHeFz6saFhx/3VKisZfI1GEKEOhQCau7Vw==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@sindresorhus/is": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "node_modules/@types/got": { + "version": "9.6.12", + "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz", + "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==", + "dev": true, "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/cheerio": { - "version": "0.22.22", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.22.tgz", - "integrity": "sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/fs-extra": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.4.tgz", - "integrity": "sha512-50GO5ez44lxK5MDH90DYHFFfqxH7+fTqEEnvguQRzJ/tY9qFrMSHLiYHite+F3SNmf7+LHC1eMXojuD+E3Qcyg==", - "dev": true, - "dependencies": { - "@types/node": "*" + "@types/tough-cookie": "*", + "form-data": "^2.5.0" } }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "node_modules/@types/jsonfile": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.0.0.tgz", - "integrity": "sha512-mUHbRieyluPtL3c466K7oUGua1lAVlz45PV4U3bHs5CXdBlDIeXJI5xQXa6IZYnrgmcJzJp/CiTZB4zfShAi6w==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", "dev": true, "dependencies": { "@types/node": "*" } }, - "node_modules/@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { "version": "14.14.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", - "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==", + "devOptional": true }, - "node_modules/@types/puppeteer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.0.tgz", - "integrity": "sha512-zTYDLjnHjgzokrwKt7N0rgn7oZPYo1J0m8Ghu+gXqzLCEn8RWbELa2uprE2UFJ0jU/Sk0x9jXXdOH/5QQLFHhQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/write": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/write/-/write-2.0.0.tgz", - "integrity": "sha512-SYY3QVxIxwyQo2Esqw1UxeQO2PwIRTNyCXCXS+fT1L+0SkIi0ahUiR3FNYOvST5nzfNG11d/gm49Yks/4PS60w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true }, "node_modules/@types/yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/add-filename-increment": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-filename-increment/-/add-filename-increment-1.0.0.tgz", @@ -148,35 +183,110 @@ } }, "node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">= 4.0.0" + "node": ">=8" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "engines": { + "node": ">=10.0.0" + } }, "node_modules/bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -186,21 +296,26 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -209,50 +324,91 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { "node": "*" } }, "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "engines": { - "node": ">=10.6.0" + "node": ">=14.16" } }, "node_modules/cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.10.tgz", + "integrity": "sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==", "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/chownr": { @@ -260,47 +416,127 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "node_modules/chromium-bidi": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.12.tgz", + "integrity": "sha512-yl0ngMHtYUGJa2G0lkcbPvbnUZ9WMQyMNSfYmlrGD1nHRNyI9KOGw3dOaofFugXHHToneUaSmF9iUdgCBamCjA==", "dependencies": { - "mimic-response": "^1.0.0" + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", + "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "dependencies": { + "node-fetch": "^2.6.11" + } }, "node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "engines": { - "node": "*" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "engines": { + "node": ">= 14" } }, "node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decompress-response": { @@ -312,6 +548,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decompress-response/node_modules/mimic-response": { @@ -320,8 +559,16 @@ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -330,42 +577,89 @@ "node": ">=10" } }, + "node_modules/degenerator": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.3.tgz", + "integrity": "sha512-2wY8vmCfxrQpe2PKGYdiWRre5HQRwsAXbAAWRbC+z2b80MEpnWc8A3a9k4TwqwN3Z/Fm3uhNm5vYUZIbMhyRxQ==", + "dependencies": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.19" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/devtools-protocol": { - "version": "0.0.809251", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.809251.tgz", - "integrity": "sha512-pf+2OY6ghMDPjKkzSWxHMq+McD+9Ojmq5XVRYpv/kPd9sTMQxzEt21592a31API8qRjro0iYYOc3ag46qF/1FA==" + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" }, "node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dependencies": { - "domelementtype": "1" + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -375,9 +669,88 @@ } }, "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/extract-zip": { "version": "2.0.1", @@ -398,59 +771,7 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/get-stream": { + "node_modules/extract-zip/node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", @@ -459,43 +780,167 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "pend": "~1.2.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": "*" + "node": ">= 0.12" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" } }, "node_modules/got": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", - "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/graceful-fs": { @@ -503,60 +948,105 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } }, "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", "dependencies": { "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "resolve-alpn": "^1.2.0" }, "engines": { "node": ">=10.19.0" } }, "node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", + "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", "dependencies": { - "agent-base": "5", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inherits": { @@ -564,11 +1054,50 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -579,55 +1108,83 @@ } }, "node_modules/keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dependencies": { - "p-locate": "^4.1.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -639,114 +1196,187 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dependencies": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-cancelable": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.0.tgz", - "integrity": "sha512-HAZyB3ZodPo+BDpb4/Iu7Jv4P6cSazBz9ZM0ChhEXp70scx834aWCEjQRwgt41UzzejUAPdbqqONfRWTPYrPAQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=8" + "node": ">=12.20" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/pac-proxy-agent": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", + "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", "dependencies": { - "p-try": "^2.0.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "pac-resolver": "^6.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", + "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", + "dependencies": { + "degenerator": "^4.0.1", + "ip": "^1.1.5", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { - "p-limit": "^2.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "@types/node": "*" + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/path-exists": { + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, "node_modules/progress": { @@ -757,6 +1387,24 @@ "node": ">=0.4.0" } }, + "node_modules/proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", + "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^6.0.3", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -772,26 +1420,41 @@ } }, "node_modules/puppeteer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.4.1.tgz", - "integrity": "sha512-8u6r9tFm3gtMylU4uCry1W/CeAA8uczKMONvGvivkTsGqKA7iB7DWO2CBFYlB9GY6/IEoq9vkI5slJWzUBkwNw==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.7.2.tgz", + "integrity": "sha512-SKg9TgUY3TJvnOy0VrkhduSvDQIjBsi+s/Ne6S+qD53MM6emau+oh+kNqySNrT7c4qkg27UrJ9aEnltKDAQTzQ==", "hasInstallScript": true, "dependencies": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.809251", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" + "@puppeteer/browsers": "1.4.1", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.7.2" }, "engines": { - "node": ">=10.18.1" + "node": ">=16.3.0" + } + }, + "node_modules/puppeteer-core": { + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.2.tgz", + "integrity": "sha512-4Sd+v2YLlYMYFP/9SI/spT1joGTePwhmKP89pchUqz7VcWwv/Yh0Atmsybz+7wWT0VPDnw0UhBM6iNEfXEoUvg==", + "dependencies": { + "@puppeteer/browsers": "1.4.1", + "chromium-bidi": "0.4.12", + "cross-fetch": "3.1.6", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" + }, + "engines": { + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/quick-lru": { @@ -800,12 +1463,15 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -815,34 +1481,108 @@ "node": ">= 6" } }, - "node_modules/resolve-alpn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", - "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dependencies": { - "lowercase-keys": "^2.0.0" + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { - "glob": "^7.1.3" + "lowercase-keys": "^3.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", + "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "dependencies": { + "agent-base": "^7.0.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/string_decoder": { "version": "1.3.0", @@ -852,6 +1592,30 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-filename-increment": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-filename-increment/-/strip-filename-increment-2.0.1.tgz", @@ -860,6 +1624,17 @@ "node": ">=8" } }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -872,9 +1647,9 @@ } }, "node_modules/tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -889,34 +1664,55 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tldts": { - "version": "5.6.71", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.6.71.tgz", - "integrity": "sha512-4sC+aVjRi99cJWJIMWcuM4fX9mlw0NKpLhOF/gZwKYtbSGBXjLAIUJ43wJkMFn3eLUy938hyKmdvAvke7OWEyw==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.0.8.tgz", + "integrity": "sha512-gc0SFsuvk5IfBMTfDDy7MnH5Ut138HkavoiSiOTbyaPMCFU5eN95Rl9YrovVCkD0eOrwEhxXYbxe2bcKRcc7ag==", "dependencies": { - "tldts-core": "^5.6.71" + "tldts-core": "^6.0.8" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "5.6.71", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.71.tgz", - "integrity": "sha512-tIrUPFN247p7bdubl9oaJ7ctJ5tMYo1UFUl5Su3ZC9s+l+feYjy2YW8basgTibTHc5S0wtvRdheE0hkC1b21Xw==" + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.0.8.tgz", + "integrity": "sha512-9DoeDV0eqDmXKkg43LGxLdJZstcdNfdhAElerrChj78Y3fYcidTKtVSLjXC0w6naMWYejPvJtTpnRPWHJJD4yw==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/typescript": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", - "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbzip2-stream": { @@ -939,12 +1735,95 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write": { "version": "2.0.0", @@ -958,17 +1837,62 @@ } }, "node_modules/ws": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", - "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" } }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -976,110 +1900,112 @@ } }, "dependencies": { + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@puppeteer/browsers": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.1.tgz", + "integrity": "sha512-H43VosMzywHCcYcgv0GXXopvwnV21Ud9g2aXbPlQUJj1Xcz9V0wBwHeFz6saFhx/3VKisZfI1GEKEOhQCau7Vw==", + "requires": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.2.1", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + } + }, "@sindresorhus/is": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==" }, "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "requires": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" } }, - "@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "@types/got": { + "version": "9.6.12", + "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.12.tgz", + "integrity": "sha512-X4pj/HGHbXVLqTpKjA2ahI4rV/nNBc9mGO2I/0CgAra+F2dKgMXnENv2SRpemScBzBAI4vMelIVYViQxlSE6xA==", + "dev": true, "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", "@types/node": "*", - "@types/responselike": "*" - } - }, - "@types/cheerio": { - "version": "0.22.22", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.22.tgz", - "integrity": "sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/fs-extra": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.4.tgz", - "integrity": "sha512-50GO5ez44lxK5MDH90DYHFFfqxH7+fTqEEnvguQRzJ/tY9qFrMSHLiYHite+F3SNmf7+LHC1eMXojuD+E3Qcyg==", - "dev": true, - "requires": { - "@types/node": "*" + "@types/tough-cookie": "*", + "form-data": "^2.5.0" } }, "@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "@types/jsonfile": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.0.0.tgz", - "integrity": "sha512-mUHbRieyluPtL3c466K7oUGua1lAVlz45PV4U3bHs5CXdBlDIeXJI5xQXa6IZYnrgmcJzJp/CiTZB4zfShAi6w==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", "dev": true, "requires": { "@types/node": "*" } }, - "@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", - "requires": { - "@types/node": "*" - } - }, "@types/node": { "version": "14.14.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", - "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==", + "devOptional": true }, - "@types/puppeteer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.0.tgz", - "integrity": "sha512-zTYDLjnHjgzokrwKt7N0rgn7oZPYo1J0m8Ghu+gXqzLCEn8RWbELa2uprE2UFJ0jU/Sk0x9jXXdOH/5QQLFHhQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "requires": { - "@types/node": "*" - } - }, - "@types/write": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/write/-/write-2.0.0.tgz", - "integrity": "sha512-SYY3QVxIxwyQo2Esqw1UxeQO2PwIRTNyCXCXS+fT1L+0SkIi0ahUiR3FNYOvST5nzfNG11d/gm49Yks/4PS60w==", - "dev": true, - "requires": { - "@types/node": "*" - } + "@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "dev": true }, "@types/yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "optional": true, "requires": { "@types/node": "*" } }, + "acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==" + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, "add-filename-increment": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-filename-increment/-/add-filename-increment-1.0.0.tgz", @@ -1089,29 +2015,80 @@ } }, "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + } }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "requires": { + "tslib": "^2.0.1" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==" + }, "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -1121,16 +2098,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "buffer": { "version": "5.7.1", @@ -1144,38 +2112,67 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" }, "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==" }, "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.10.tgz", + "integrity": "sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==", "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" } }, "chownr": { @@ -1183,39 +2180,90 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "chromium-bidi": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.12.tgz", + "integrity": "sha512-yl0ngMHtYUGJa2G0lkcbPvbnUZ9WMQyMNSfYmlrGD1nHRNyI9KOGw3dOaofFugXHHToneUaSmF9iUdgCBamCjA==", "requires": { - "mimic-response": "^1.0.0" + "mitt": "3.0.0" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "requires": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + } + }, + "cross-fetch": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", + "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "requires": { + "node-fetch": "^2.6.11" + } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==" }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } @@ -1235,47 +2283,75 @@ } } }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, + "degenerator": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.3.tgz", + "integrity": "sha512-2wY8vmCfxrQpe2PKGYdiWRre5HQRwsAXbAAWRbC+z2b80MEpnWc8A3a9k4TwqwN3Z/Fm3uhNm5vYUZIbMhyRxQ==", + "requires": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.19" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "devtools-protocol": { - "version": "0.0.809251", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.809251.tgz", - "integrity": "sha512-pf+2OY6ghMDPjKkzSWxHMq+McD+9Ojmq5XVRYpv/kPd9sTMQxzEt21592a31API8qRjro0iYYOc3ag46qF/1FA==" + "version": "0.0.1135028", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz", + "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==" }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.3.0" } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -1285,9 +2361,54 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "extract-zip": { "version": "2.0.1", @@ -1298,90 +2419,129 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + } } }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "requires": { "pend": "~1.2.0" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==" + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "universalify": "^2.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" }, "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "got": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", - "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" } }, "graceful-fs": { @@ -1389,39 +2549,51 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } }, "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", "requires": { "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "resolve-alpn": "^1.2.0" } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", + "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", "requires": { - "agent-base": "5", + "agent-base": "^7.0.2", "debug": "4" } }, @@ -1430,13 +2602,13 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "inherits": { @@ -1444,11 +2616,44 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -1459,43 +2664,59 @@ } }, "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "requires": { "json-buffer": "3.0.1" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "requires": { - "p-locate": "^4.1.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } }, "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==" }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" }, "mkdirp-classic": { "version": "0.5.3", @@ -1507,94 +2728,153 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" + }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==" }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "p-cancelable": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.0.tgz", - "integrity": "sha512-HAZyB3ZodPo+BDpb4/Iu7Jv4P6cSazBz9ZM0ChhEXp70scx834aWCEjQRwgt41UzzejUAPdbqqONfRWTPYrPAQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "pac-proxy-agent": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz", + "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==", "requires": { - "p-try": "^2.0.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "pac-resolver": "^6.0.1", + "socks-proxy-agent": "^8.0.1" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "pac-resolver": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz", + "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==", "requires": { - "p-limit": "^2.2.0" + "degenerator": "^4.0.1", + "ip": "^1.1.5", + "netmask": "^2.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "requires": { - "@types/node": "*" + "entities": "^4.4.0" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz", + "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==", + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^6.0.3", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -1610,22 +2890,26 @@ } }, "puppeteer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.4.1.tgz", - "integrity": "sha512-8u6r9tFm3gtMylU4uCry1W/CeAA8uczKMONvGvivkTsGqKA7iB7DWO2CBFYlB9GY6/IEoq9vkI5slJWzUBkwNw==", + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.7.2.tgz", + "integrity": "sha512-SKg9TgUY3TJvnOy0VrkhduSvDQIjBsi+s/Ne6S+qD53MM6emau+oh+kNqySNrT7c4qkg27UrJ9aEnltKDAQTzQ==", "requires": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.809251", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" + "@puppeteer/browsers": "1.4.1", + "cosmiconfig": "8.2.0", + "puppeteer-core": "20.7.2" + } + }, + "puppeteer-core": { + "version": "20.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.7.2.tgz", + "integrity": "sha512-4Sd+v2YLlYMYFP/9SI/spT1joGTePwhmKP89pchUqz7VcWwv/Yh0Atmsybz+7wWT0VPDnw0UhBM6iNEfXEoUvg==", + "requires": { + "@puppeteer/browsers": "1.4.1", + "chromium-bidi": "0.4.12", + "cross-fetch": "3.1.6", + "debug": "4.3.4", + "devtools-protocol": "0.0.1135028", + "ws": "8.13.0" } }, "quick-lru": { @@ -1634,34 +2918,36 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, "resolve-alpn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", - "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" + "lowercase-keys": "^3.0.0" } }, "safe-buffer": { @@ -1669,6 +2955,43 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + } + } + }, + "socks-proxy-agent": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", + "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "requires": { + "agent-base": "^7.0.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1677,11 +3000,37 @@ "safe-buffer": "~5.2.0" } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-filename-increment": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-filename-increment/-/strip-filename-increment-2.0.1.tgz", "integrity": "sha512-+v5xsiTTsdYqkPj7qz1zlngIsjZedhHDi3xp/9bMurV8kXe9DAr732gNVqtt4X8sI3hOqS3nlFfps5gyVcux6w==" }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -1694,9 +3043,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -1708,25 +3057,43 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "tldts": { - "version": "5.6.71", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.6.71.tgz", - "integrity": "sha512-4sC+aVjRi99cJWJIMWcuM4fX9mlw0NKpLhOF/gZwKYtbSGBXjLAIUJ43wJkMFn3eLUy938hyKmdvAvke7OWEyw==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.0.8.tgz", + "integrity": "sha512-gc0SFsuvk5IfBMTfDDy7MnH5Ut138HkavoiSiOTbyaPMCFU5eN95Rl9YrovVCkD0eOrwEhxXYbxe2bcKRcc7ag==", "requires": { - "tldts-core": "^5.6.71" + "tldts-core": "^6.0.8" } }, "tldts-core": { - "version": "5.6.71", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.71.tgz", - "integrity": "sha512-tIrUPFN247p7bdubl9oaJ7ctJ5tMYo1UFUl5Su3ZC9s+l+feYjy2YW8basgTibTHc5S0wtvRdheE0hkC1b21Xw==" + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.0.8.tgz", + "integrity": "sha512-9DoeDV0eqDmXKkg43LGxLdJZstcdNfdhAElerrChj78Y3fYcidTKtVSLjXC0w6naMWYejPvJtTpnRPWHJJD4yw==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } }, "typescript": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", - "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==" + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==" }, "unbzip2-stream": { "version": "1.4.3", @@ -1745,12 +3112,73 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "vm2": { + "version": "3.9.19", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz", + "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==", + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write": { "version": "2.0.0", @@ -1761,14 +3189,39 @@ } }, "ws": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", - "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==" + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/package.json b/package.json index 3de45e3..0e25229 100644 --- a/package.json +++ b/package.json @@ -13,20 +13,17 @@ "author": "", "license": "ISC", "dependencies": { - "cheerio": "^1.0.0-rc.3", - "fs-extra": "^9.0.1", - "got": "^11.8.2", + "axios": "^1.4.0", + "cheerio": "^1.0.0-rc.12", + "fs-extra": "^11.1.1", "jsonfile": "^6.1.0", - "puppeteer": "^5.4.1", - "tldts": "^5.6.71", - "typescript": "^4.0.5", + "puppeteer": "^20.7.2", + "tldts": "^6.0.8", + "typescript": "^5.1.3", "write": "^2.0.0" }, "devDependencies": { - "@types/cheerio": "^0.22.22", - "@types/fs-extra": "^9.0.4", - "@types/jsonfile": "^6.0.0", - "@types/puppeteer": "^5.4.0", - "@types/write": "^2.0.0" + "@types/got": "^9.6.12", + "@types/jsonfile": "^6.1.1" } } diff --git a/sportschoolplus.nl_2021-12-5_report copy.txt b/sportschoolplus.nl_2021-12-5_report copy.txt deleted file mode 100644 index 0cc901a..0000000 --- a/sportschoolplus.nl_2021-12-5_report copy.txt +++ /dev/null @@ -1,112 +0,0 @@ ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 120 -Total Products: 271 -Total Out of Stock: 34 ----------------------------------------- - - -https://sportschoolplus.nl/beste-eiwitpoeders/ ----------------------------------- -bol.com - Body & Fit Whey Perfection - Whey Protein / Proteine Shake - 750 gram - Chocolade - https://www.bol.com/nl/nl/p/body-fit-whey-perfection-proteine-poeder-whey-protein-eiwitshake-896-gram-chocolade/9200000073275553/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/hometrainers/ ----------------------------------- -bol.com - VirtuFit HTR 1.0 hometrainer - Zwart - https://www.bol.com/nl/nl/p/virtufit-htr-1-0-hometrainer-8-weerstandsniveaus-extra-stevige-constructie-hartslagfunctie/9200000099300369/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.2i Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-bike-12i-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ - - -https://sportschoolplus.nl/handknijpers/ ----------------------------------- - - -https://sportschoolplus.nl/hardlooptips-voor-beginners/ ----------------------------------- -bol.com - Samsung Galaxy Fit 2 - Zwart - https://www.bol.com/nl/nl/p/samsung-galaxy-fit-2-activitytracker-zwart/9300000009950917/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/foamrollers/ ----------------------------------- - - -https://sportschoolplus.nl/crosstrainers/ ----------------------------------- -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -bol.com - Tunturi Performance C55 Crosstrainer - https://www.bol.com/nl/nl/p/tunturi-performance-c55-crosstrainer/9200000075670510/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Elite FDR 2.5i Semi-Pro Crosstrainer - https://www.thuisatleet.nl/p/virtufit-elite-fdr-2-5i-semi-pro-crosstrainer/ - - -https://sportschoolplus.nl/beste-halterbanken/ ----------------------------------- - - -https://sportschoolplus.nl/push-up-bars/ ----------------------------------- - - -https://sportschoolplus.nl/cable-crossover-machines/ ----------------------------------- -bol.com - Alternatief - cable crossover selection style - https://www.bol.com/nl/nl/p/cable-crossover-selection-style/9300000009318436/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Alternatief - cable jungle + crossover selection style - https://www.bol.com/nl/nl/p/cable-jungle-crossover-selection-style/9300000009318437/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker - - -https://sportschoolplus.nl/fitnesselastieken/ ----------------------------------- - - -https://sportschoolplus.nl/pull-up-bars/ ----------------------------------- - - -https://sportschoolplus.nl/beste-weight-gainers/ ----------------------------------- -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bodybuildingkleding.com - Alternatief - Weight Gainer - Ideale samenstelling voor mensen die moeilijk aankomen - https://www.bodybuildingkleding.com/p/supplementen/weight-gainers/weight-gainer/?attribute_pa_smaak=chocolade&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/10-beste-spinningfietsen-vanaf-450-euro/ ----------------------------------- -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -bol.com - Spinningfiets - VirtuFit Indoor Cycle S1 - Spinbike - LCD display en hartslagfunctie - Zwart - https://www.bol.com/nl/nl/p/spinningfiets-virtufit-indoor-cycle-s1-spinbike-lcd-display-hartslagfunctie-zwart/9200000126662541/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/beste-roeitrainers/ ----------------------------------- -thuisatleet.nl - VirtuFit Row 600i Opvouwbare Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-600i-opvouwbare-roeitrainer/ -thuisatleet.nl - VirtuFit Ergometer Roeitrainer Semi-Pro - https://www.thuisatleet.nl/p/virtufit-ergometer-roeitrainer-semi-pro/ -thuisatleet.nl - VirtuFit Water Weerstand Row 1000 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-water-weerstand-row-1000-roeitrainer/ -thuisatleet.nl - VirtuFit Ultimate pro 2 ergometer roeitrainer - https://www.thuisatleet.nl/p/ultimate-pro-2-ergometer/ -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ - - -https://sportschoolplus.nl/supplementen-voor-spieropbouw/ ----------------------------------- -bol.com - XXL Nutrition Creatine Monohydraat 500 gram - https://www.bol.com/nl/nl/p/xxl-nutrition-creatine-monohydraat-zonder-smaak-500-gram/9200000085173471/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Applied Nutrition Creatine Monohydrate - 250 gram - https://www.bol.com/nl/nl/p/applied-nutrition-creatine-monohydrate-250-gram/9200000090250939/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/loopbanden/ ----------------------------------- -thuisatleet.nl - VirtuFit Totally Foldable TR-50i Loopband - https://www.thuisatleet.nl/p/virtufit-totally-foldable-tr-50i-loopband/ -thuisatleet.nl - VirtuFit TR-200i Loopband - https://www.thuisatleet.nl/p/virtufit-tr-200i-loopband/ -thuisatleet.nl - VirtuFit Pro Elite HiiT Running Loopband - https://www.thuisatleet.nl/p/virtufit-pro-elite-hiit-running/ - - -https://sportschoolplus.nl/dumbells-kopen-advies/ ----------------------------------- -bol.com - 2x Dumbell 3 kg - Dumbells Set 3 kg - Halterset - Halters - https://www.bol.com/nl/nl/p/kaytan-dumbbell-set-3-kg-2-stuks-blauw/9300000000507963/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - Muscle Power Dumbbellset PU 1-10 kg - https://www.thuisatleet.nl/p/dumbbellset-pu-1-10-kg-mp/ - - -https://sportschoolplus.nl/de-beste-krachtstations-voor-thuis/ ----------------------------------- -thuisatleet.nl - VirtuFit Multifunctionele Halterbank Deluxe - https://www.thuisatleet.nl/p/multifunctionele-halterbank-virtufit-deluxe/ -thuisatleet.nl - VirtuFit Deluxe Power Tower met Fitnessbank - https://www.thuisatleet.nl/p/deluxe-power-tower-met-fitnessbank-virtufit/ -thuisatleet.nl - VirtuFit Krachtstation Homegym KH1 - https://www.thuisatleet.nl/p/krachtstation-homegym-kh1-virtufit/ diff --git a/sportschoolplus.nl_2021-12-5_report.txt b/sportschoolplus.nl_2021-12-5_report.txt deleted file mode 100644 index 2f1a9e1..0000000 --- a/sportschoolplus.nl_2021-12-5_report.txt +++ /dev/null @@ -1,165 +0,0 @@ ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 120 -Total Products: 272 -Total Out of Stock: 87 ----------------------------------------- - - -https://sportschoolplus.nl/beste-eiwitpoeders/ ----------------------------------- -bol.com - Body & Fit Whey Perfection - Whey Protein / Proteine Shake - 750 gram - Chocolade - https://www.bol.com/nl/nl/p/body-fit-whey-perfection-proteine-poeder-whey-protein-eiwitshake-896-gram-chocolade/9200000073275553/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/handknijpers/ ----------------------------------- - - -https://sportschoolplus.nl/foamrollers/ ----------------------------------- - - -https://sportschoolplus.nl/crosstrainers/ ----------------------------------- -betersport.nl - Crosstrainer - Focus Fitness Fox 1 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Crosstrainer - Focus Fitness Fox 1 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Crosstrainer - Focus Fitness Fox 1 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-1.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Focus Fitness Fox 3 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-3.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Nautilus E626 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Crosstrainer - Focus Fitness Fox 4 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-4.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Focus Fitness Fox 5 iPlus - https://www.betersport.nl/focus-fitness-fox-5-iplus-crosstrainer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -betersport.nl - Crosstrainer - Focus Fitness Senator - https://www.betersport.nl/crosstrainer-focus-fitness-senator.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Schwinn 570E - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Crosstrainer - NordicTrack New Commercial 12.9 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Elite FDR 2.5i Semi-Pro Crosstrainer - https://www.thuisatleet.nl/p/virtufit-elite-fdr-2-5i-semi-pro-crosstrainer/ -bol.com - Tunturi Performance C55 Crosstrainer - https://www.bol.com/nl/nl/p/tunturi-performance-c55-crosstrainer/9200000075670510/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Crosstrainer - Schwinn 570E - https://www.betersport.nl/crosstrainer-schwinn-570e.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-halterbanken/ ----------------------------------- -betersport.nl - Halterbank - Focus Fitness Force 50 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Halterbank - Powertec WB-OB - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/push-up-bars/ ----------------------------------- -betersport.nl - Opdruksteunen - Focus Fitness - Push up grips - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Push Up Bar - Focus Fitness Twist Bars - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Push Up Bar - Focus Fitness Twist Bars - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/cable-crossover-machines/ ----------------------------------- -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Cable Crossover - Body-Solid Functional Trainer GDCC200 - https://www.betersport.nl/cable-crossover-body-solid-functional-trainer-gdcc200.html?channable=02bf3b696400313834d1&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker - - -https://sportschoolplus.nl/fitnesselastieken/ ----------------------------------- -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,5 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,35 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,65 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,5 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,65 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,35 mm - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Yoga Fitness Elastiek - Focus Fitness - 0,35 mm - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/pull-up-bars/ ----------------------------------- -betersport.nl - Pull Up Bar - Focus Fitness Doorway Gym - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Pull Up Bar - Focus Fitness Doorway Bar - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Chin Up Bar - Focus Fitness Chinning Bar - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/beste-weight-gainers/ ----------------------------------- -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bodybuildingkleding.com - Alternatief - Weight Gainer - Ideale samenstelling voor mensen die moeilijk aankomen - https://www.bodybuildingkleding.com/p/supplementen/weight-gainers/weight-gainer/?attribute_pa_smaak=chocolade&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/10-beste-spinningfietsen-vanaf-450-euro/ ----------------------------------- -betersport.nl - Spinningbike - FitBike Race Magnetic Home - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Spinningbike - FitBike Race Magnetic Pro - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - FitBike Race Magnetic Pro - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - FitBike Race Magnetic Basic - Demo - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Spinningbike - Senz Sports S5000 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - FitBike Race Magnetic Pro - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - Senz Sports S5000 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - Gymost S12 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -bol.com - Spinningfiets - VirtuFit Indoor Cycle S1 - Spinbike - LCD display en hartslagfunctie - Zwart - https://www.bol.com/nl/nl/p/spinningfiets-virtufit-indoor-cycle-s1-spinbike-lcd-display-hartslagfunctie-zwart/9200000126662541/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Spinningbike - NordicTrack S10i - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Alternatief - Spinningbike - NordicTrack S10i - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/beste-roeitrainers/ ----------------------------------- -betersport.nl - Roeitrainer - Focus Fitness Row 2 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Row 600i Opvouwbare Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-600i-opvouwbare-roeitrainer/ -betersport.nl - Roeitrainer - Senz Sports R5000 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Roeitrainer - Senz Sports R5000 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Roeitrainer - Senz Sports R5000 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Ergometer Roeitrainer Semi-Pro - https://www.thuisatleet.nl/p/virtufit-ergometer-roeitrainer-semi-pro/ -thuisatleet.nl - VirtuFit Water Weerstand Row 1000 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-water-weerstand-row-1000-roeitrainer/ -thuisatleet.nl - VirtuFit Ultimate pro 2 ergometer roeitrainer - https://www.thuisatleet.nl/p/ultimate-pro-2-ergometer/ -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ -betersport.nl - Roeitrainer - NordicTrack RW900 - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/supplementen-voor-spieropbouw/ ----------------------------------- -bol.com - XXL Nutrition Creatine Monohydraat 500 gram - https://www.bol.com/nl/nl/p/xxl-nutrition-creatine-monohydraat-zonder-smaak-500-gram/9200000085173471/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Applied Nutrition Creatine Monohydrate - 250 gram - https://www.bol.com/nl/nl/p/applied-nutrition-creatine-monohydrate-250-gram/9200000090250939/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/loopbanden/ ----------------------------------- -betersport.nl - Loopband - Focus Fitness Jet 1 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Totally Foldable TR-50i Loopband - https://www.thuisatleet.nl/p/virtufit-totally-foldable-tr-50i-loopband/ -betersport.nl - Loopband - Senz Sports M2000 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Loopband - Focus Fitness Jet 5 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Loopband - Focus Fitness Jet 7 iPlus - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit TR-200i Loopband - https://www.thuisatleet.nl/p/virtufit-tr-200i-loopband/ -betersport.nl - Loopband - Focus Fitness Senator iPlus - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Pro Elite HiiT Running Loopband - https://www.thuisatleet.nl/p/virtufit-pro-elite-hiit-running/ - - -https://sportschoolplus.nl/dumbells-kopen-advies/ ----------------------------------- -bol.com - 2x Dumbell 3 kg - Dumbells Set 3 kg - Halterset - Halters - https://www.bol.com/nl/nl/p/kaytan-dumbbell-set-3-kg-2-stuks-blauw/9300000000507963/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - Muscle Power Dumbbellset PU 1-10 kg - https://www.thuisatleet.nl/p/dumbbellset-pu-1-10-kg-mp/ - - -https://sportschoolplus.nl/de-beste-krachtstations-voor-thuis/ ----------------------------------- -thuisatleet.nl - VirtuFit Multifunctionele Halterbank Deluxe - https://www.thuisatleet.nl/p/multifunctionele-halterbank-virtufit-deluxe/ -thuisatleet.nl - VirtuFit Deluxe Power Tower met Fitnessbank - https://www.thuisatleet.nl/p/deluxe-power-tower-met-fitnessbank-virtufit/ -thuisatleet.nl - VirtuFit Krachtstation Homegym KH1 - https://www.thuisatleet.nl/p/krachtstation-homegym-kh1-virtufit/ - - -https://sportschoolplus.nl/hometrainers/ ----------------------------------- -sportschoolplus.nl - VirtuFit HTR 1.0 Hometrainer - https://sportschoolplus.nl/product/13986-VFHTR1.0-84433 -betersport.nl - Hometrainer - FitBike Ride 3 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Hometrainer - FitBike Ride 2 - https://www.betersport.nl/tradetracker/redirect -betersport.nl - Hometrainer - FitBike Ride 5 - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.2i Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-bike-12i-hometrainer/ -betersport.nl - Hometrainer - FitBike Senator - Ergometer - https://www.betersport.nl/tradetracker/redirect -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -betersport.nl - Hometrainer - NordicTrack VR21 - Recumbent Bike - https://www.betersport.nl/tradetracker/redirect - - -https://sportschoolplus.nl/hardlooptips-voor-beginners/ ----------------------------------- -bol.com - Samsung Galaxy Fit 2 - Zwart - https://www.bol.com/nl/nl/p/samsung-galaxy-fit-2-activitytracker-zwart/9300000009950917/?Referrer=ADVNLPPcef0a500002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl diff --git a/sportschoolplus.nl_2022-3-5_report.txt b/sportschoolplus.nl_2022-3-5_report.txt deleted file mode 100644 index e14b509..0000000 --- a/sportschoolplus.nl_2022-3-5_report.txt +++ /dev/null @@ -1,165 +0,0 @@ ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 4 -Total Products: 0 -Total Out of Stock: 0 ----------------------------------------- ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 122 -Total Products: 296 -Total Out of Stock: 81 ----------------------------------------- - - -https://sportschoolplus.nl/handknijpers/ ----------------------------------- - - -https://sportschoolplus.nl/hardlooptips-voor-beginners/ ----------------------------------- - - -https://sportschoolplus.nl/supplementen-voor-spieropbouw/ ----------------------------------- -bol.com - Optimum Nutrition - Creatine (Micronized) - Creatine Poeder - 634 Gram (176 doseringen) - 1 Pot - https://www.bol.com/nl/nl/p/optimum-nutrition-creatine-creatine-poeder-634-gram-1-pot/9200000077028747/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/dumbells-kopen-advies/ ----------------------------------- -thuisfitnessxl.nl - Complete set Dumbells Gietijzer / Vinyl Coating - https://www.thuisfitnessxl.nl/complete-set-dumbells-gietijzer-vinyl-coating.html?source=tradetracker&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -thuisatleet.nl - Muscle Power Dumbbellset PU 1-10 kg - https://www.thuisatleet.nl/p/dumbbellset-pu-1-10-kg-mp/ -bol.com - Discountershop Verstelbare Dumbbell set 20.6 kg - Gietijzeren gewichten - 2x 10k.3g - https://www.bol.com/nl/nl/p/verstelbare-dumbbell-set-20-6-kg-gietijzeren-gewichten-2x-10k-3g/9300000025749111/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/de-beste-krachtstations-voor-thuis/ ----------------------------------- -thuisatleet.nl - VirtuFit Multifunctionele Halterbank Deluxe - https://www.thuisatleet.nl/p/multifunctionele-halterbank-virtufit-deluxe/ -thuisatleet.nl - VirtuFit Deluxe Power Tower met Fitnessbank - https://www.thuisatleet.nl/p/deluxe-power-tower-met-fitnessbank-virtufit/ -thuisatleet.nl - VirtuFit Krachtstation Homegym KH1 - https://www.thuisatleet.nl/p/krachtstation-homegym-kh1-virtufit/ -bol.com - Ultimate Gym 3000 Multifunctioneel fitnessstation voor meer dan 30 verschillende oefeningen .... - https://www.bol.com/nl/nl/p/klarfit-ultimate-gym-3000-multifunctioneel-fitnessstation-krachtstation-voor-meer-dan-30-verschillende-oefeningen/9300000010305334/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -fitnesskoerier.nl - Hammer Ferrum TX3 Homegym met pulley en legpress - https://www.fitnesskoerier.nl/hammer-ferrum-tx3-krachtstation-114182009.html?source=tradetracker -fitnesskoerier.nl - Body-Solid EXM2750G Bi-Angular Homegym - https://www.fitnesskoerier.nl/body-solid-exm2750g-bi-angular-homegym.html?source=tradetracker -fitnesskoerier.nl - Body-Solid EXM4000 Multi-User Krachtstation - https://www.fitnesskoerier.nl/body-solid-exm4000-multi-user-krachtstation.html?source=tradetracker -betersport.nl - Home Gym - Body-Solid Fusion 600 - https://www.betersport.nl/home-gym-body-solid-fusion-600.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Home Gym - Powerline P2 - https://www.betersport.nl/home-gym-powerline-p2.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/crosstrainers/ ----------------------------------- -betersport.nl - Crosstrainer - Focus Fitness Fox 4 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-4.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -betersport.nl - Crosstrainer - ProForm Carbon EL - https://www.betersport.nl/crosstrainer-proform-carbon-el.html?channable=02bf3b696400393431339a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - DKN Technology XC-190 crosstrainer - https://www.thuisatleet.nl/p/dkn-technology-xc-190-crosstrainer/ -betersport.nl - Crosstrainer - Kettler Optima 400 - https://www.betersport.nl/crosstrainer-kettler-optima-400.html?channable=02bf3b69640039313338df&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Senz Sports C7000 - https://www.betersport.nl/crosstrainer-senz-sports-c7000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Nautilus E626 - https://www.betersport.nl/crosstrainer-nautilus-e626.html?channable=02bf3b6964003732343961&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Elite FDR 2.5i Semi-Pro Crosstrainer - https://www.thuisatleet.nl/p/virtufit-elite-fdr-2-5i-semi-pro-crosstrainer/ -betersport.nl - Crosstrainer - Kettler Omnium 500 - https://www.betersport.nl/crosstrainer-kettler-omnium-500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Octane Max Trainer MTX - https://www.bol.com/nl/nl/p/octane-fitness-max-trainer-mtx/9200000104032790/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/beste-halterbanken/ ----------------------------------- -betersport.nl - Halterbank - Best Fitness BFOB10 - https://www.betersport.nl/halterbank-best-fitness-bfob10.html?channable=02bf3b69640031353551&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - TecTake - halterbank voor lange halters - hoogte verstelbaar - zwart - 402148 - https://www.bol.com/nl/nl/p/tectake-halterbank-voor-lange-halters-hoogte-verstelbaar-zwart-402148/9200000074861916/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Active Panther Fitnessbank Halterbank Fitnessbankje Verstelbare Trainingsbank Utility Bench... - https://www.bol.com/nl/nl/p/active-panther-fitnessbank-halterbank-fitnessbankje-verstelbare-trainingsbank-utility-bench-multifunctionele-sportbank/9300000031644028/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Halterbank - Body-Solid Press Halterbank SPB368G - https://www.betersport.nl/halterbank-body-solid-press-halterbank-spb368g.html?channable=02bf3b696400313631cd&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - ProClubline SIB359G Incline Olympic Bench - https://www.fitnesskoerier.nl/proclubline-sib359g-incline-olympic-bench.html?source=tradetracker - - -https://sportschoolplus.nl/pull-up-bars/ ----------------------------------- -betersport.nl - Pull Up Bar - Focus Fitness Doorway Bar - https://www.betersport.nl/pull-up-bar-focus-fitness-doorway-bar.html?channable=02bf3b696400313437d2&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?channable=02bf3b696400313237321a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/hometrainers/ ----------------------------------- -sportschoolplus.nl - VirtuFit HTR 1.0 Hometrainer - https://sportschoolplus.nl/product/13986-VFHTR1.0-84433 -betersport.nl - Hometrainer - FitBike Ride 3 - https://www.betersport.nl/hometrainer-fitbike-ride-3-limited-black-edition.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Hometrainer - FitBike Ride 2 - https://www.betersport.nl/hometrainer-fitbike-ride-2.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Hometrainer - FitBike Ride 5 - https://www.betersport.nl/hometrainer-fitbike-ride-5.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Tectake fitness hometrainer - 401077 - https://www.bol.com/nl/nl/p/tectake-fitness-hometrainer-401077/9200000036361390/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.2i Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-bike-12i-hometrainer/ -betersport.nl - Hometrainer - FitBike Senator - Ergometer - https://www.betersport.nl/hometrainer-fitbike-senator-ergometer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Hometrainer - Hammer Cardio Motion BT - Ergometer - https://www.betersport.nl/hometrainer-hammer-cardio-motion-bt-ergometer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -betersport.nl - Hometrainer - NordicTrack VR21 - Recumbent Bike - https://www.betersport.nl/hometrainer-nordictrack-vr21-recumbent-bike.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-eiwitpoeders/ ----------------------------------- - - -https://sportschoolplus.nl/beste-weight-gainers/ ----------------------------------- -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bodybuildingkleding.com - Alternatief - Weight Gainer - Ideale samenstelling voor mensen die moeilijk aankomen - https://www.bodybuildingkleding.com/p/supplementen/weight-gainers/weight-gainer/?attribute_pa_smaak=chocolade&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -bol.com - Body & Fit Mass Perfection - Weight gainer - 4400 gram - Chocolade Milkshake - https://www.bol.com/nl/nl/p/body-fit-mass-perfection-weight-gainer-mass-gainer-chocolade-4400-gram/9200000073275869/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Interactive nutrition Mammoth 2500 - 6800 gram - Vanilla - https://www.bol.com/nl/nl/p/interactive-nutrition-mammoth-2500-weight-gainer-mass-gainer-vanille-6800-gram/9200000073276112/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/cable-crossover-machines/ ----------------------------------- -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Body-Solid GCCO150 Cable Crossover 2 x 75 kg - https://www.fitnesskoerier.nl/body-solid-gcco150-cable-crossover-2-x-75-kg.html?source=tradetracker -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Cable Crossover - Body-Solid Functional Trainer GDCC200 - https://www.betersport.nl/cable-crossover-body-solid-functional-trainer-gdcc200.html?channable=02bf3b696400313834d1&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Best Fitness BFFT10 Functional Trainer - https://www.fitnesskoerier.nl/best-fitness-bfft10-functional-trainer.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker - - -https://sportschoolplus.nl/beste-roeitrainers/ ----------------------------------- -thuisatleet.nl - VirtuFit Row 1.0 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-1-0-roeitrainer/ -thuisatleet.nl - VirtuFit Elite Air Magnetic Roeitrainer - VirtuFit Roeitrainer - https://www.thuisatleet.nl/p/virtufit-elite-air-magnetic-roeitrainer/ -thuisatleet.nl - VirtuFit Row 600i Opvouwbare Roeitrainer - VirtuFit Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-600i-opvouwbare-roeitrainer/ -thuisatleet.nl - VirtuFit Ergometer Roeitrainer Semi-Pro - https://www.thuisatleet.nl/p/virtufit-ergometer-roeitrainer-semi-pro/ -thuisatleet.nl - DKN Technology R-400 roeitrainer - https://www.thuisatleet.nl/p/dkn-technology-r-400-roeitrainer/ -thuisatleet.nl - VirtuFit Water Weerstand Row 1000 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-water-weerstand-row-1000-roeitrainer/ -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ -thuisatleet.nl - VirtuFit Ultimate pro 2 ergometer roeitrainer - https://www.thuisatleet.nl/p/ultimate-pro-2-ergometer/ -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ - - -https://sportschoolplus.nl/10-beste-spinningfietsen-vanaf-450-euro/ ----------------------------------- -betersport.nl - Spinningbike - FitBike Race Magnetic Home - https://www.betersport.nl/spinningbike-fitbike-race-magnetic-home.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - Senz Sports S5000 - https://www.betersport.nl/spinningbike-senz-sports-s5000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Elite Indoor Cycle Pro Spinningfiets - https://www.thuisatleet.nl/p/virtufit-elite-indoor-cycle-pro-spinningfiets/ -betersport.nl - Spinningbike - NordicTrack S10i - https://www.betersport.nl/spinningbike-nordictrack-s10i.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/push-up-bars/ ----------------------------------- -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bodybuildingkleding.com - VirtuFit Multifunctionele Optrekstang - Pull Up Bar Deluxe - Zwart - https://www.bodybuildingkleding.com/p/fitness-artikelen/functional-training/optrekstangen/virtufit-multifunctionele-optrekstang-pull-up-bar-deluxe-zwart/?utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/loopbanden/ ----------------------------------- -thuisatleet.nl - VirtuFit Totally Foldable TR-50i Loopband - https://www.thuisatleet.nl/p/virtufit-totally-foldable-tr-50i-loopband/ -betersport.nl - Loopband - Senz Sports M500 - https://www.betersport.nl/loopband-senz-sports-m500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit TR-200i Loopband - https://www.thuisatleet.nl/p/virtufit-tr-200i-loopband/ -bol.com - VirtuFit Elite TR-900i Loopband - https://www.bol.com/nl/nl/p/virtufit-elite-tr-900i-loopband-hartslagfunctie-inklapbaar-20-trainingsniveaus/9200000104026386/?Referrer=ADVNLPPcef03a00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Pro Elite HiiT Running Loopband - https://www.thuisatleet.nl/p/virtufit-pro-elite-hiit-running/ -fitnesskoerier.nl - Crossmaxx Runner PRO Curved Crossfit Loopband - https://www.fitnesskoerier.nl/crossmaxx-runner-pro-curved-loopband-hiit-loopband.html?source=tradetracker - - -https://sportschoolplus.nl/fitnesselastieken/ ----------------------------------- - - -https://sportschoolplus.nl/foamrollers/ ----------------------------------- diff --git a/sportschoolplus.nl_2022-5-5_report.txt b/sportschoolplus.nl_2022-5-5_report.txt deleted file mode 100644 index 38bc7a9..0000000 --- a/sportschoolplus.nl_2022-5-5_report.txt +++ /dev/null @@ -1,336 +0,0 @@ ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 122 -Total Products: 308 -Total Out of Stock: 95 ----------------------------------------- - - -https://sportschoolplus.nl/loopbanden/ ----------------------------------- -thuisatleet.nl - VirtuFit Totally Foldable TR-50i Loopband - https://www.thuisatleet.nl/p/virtufit-totally-foldable-tr-50i-loopband/ -betersport.nl - Loopband - Senz Sports M500 - https://www.betersport.nl/loopband-senz-sports-m500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit TR-200i Loopband - https://www.thuisatleet.nl/p/virtufit-tr-200i-loopband/ -thuisatleet.nl - VirtuFit Pro Elite HiiT Running Loopband - https://www.thuisatleet.nl/p/virtufit-pro-elite-hiit-running/ -betersport.nl - Loopband - Sole Fitness TT8 - https://www.betersport.nl/loopband-sole-fitness-tt8.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/10-beste-spinningfietsen-vanaf-450-euro/ ----------------------------------- -betersport.nl - Indoor Cycle - FitBike Race Magnetic Home - https://www.betersport.nl/spinningbike-fitbike-race-magnetic-home.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - FitBike Race Magnetic Home - https://www.betersport.nl/spinningbike-fitbike-race-magnetic-home.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - Senz Sports S5000 - https://www.betersport.nl/spinningbike-senz-sports-s5000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Alternatief - Finnlo SPEED BIKE CRT spinbike | Gratis Montage - https://www.fitnesskoerier.nl/finnlo-speed-bike-crt-spinbike-gratis-montage.html?source=tradetracker -bol.com - Spinningfiets - VirtuFit Indoor Cycle S1 - Spinbike - LCD display en hartslagfunctie - Zwart - https://www.bol.com/nl/nl/p/virtufit-indoorfiets-s1-indoor-cycle-lcd-display-hartslagfunctie/9200000126662541/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Elite Indoor Cycle Pro Spinningfiets - https://www.thuisatleet.nl/p/virtufit-elite-indoor-cycle-pro-spinningfiets/ -thuisatleet.nl - VirtuFit Elite Indoor Cycle Pro Spinningfiets - hometrainer - VirtuFit Spinningfiets - https://www.thuisatleet.nl/p/virtufit-elite-indoor-cycle-pro-spinningfiets/ -bol.com - Spirit Fitness CB900 Spinningfiets - Professionele Fietstrainer - Uitstekende Garantie - https://www.bol.com/nl/nl/p/spirit-fitness-cb900-spinningfiets-professionele-fietstrainer-uitstekende-garantie/9300000006888118/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Indoor Cycle - NordicTrack S10i - https://www.betersport.nl/spinningbike-nordictrack-s10i.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - NordicTrack S10i - https://www.betersport.nl/spinningbike-nordictrack-s10i.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-roeitrainers/ ----------------------------------- -thuisatleet.nl - VirtuFit Row 1.0 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-1-0-roeitrainer/ -bol.com - CAPITAL SPORTS Stream M1 Roeitrainer - Roeimachine - Roeiapparaat - 105 cm lange rail van... - https://www.bol.com/nl/nl/p/capital-sports-stream-m1-roeitrainer-roeimachine-roeiapparaat-105-cm-lange-rail-van-aluminium-lc-display-magnetische-weerstand-8-niveaus/9300000045383415/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Row 450 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-450-roeitrainer/ -thuisatleet.nl - VirtuFit Elite Air Magnetic Roeitrainer - VirtuFit Roeitrainer - https://www.thuisatleet.nl/p/virtufit-elite-air-magnetic-roeitrainer/ -thuisatleet.nl - VirtuFit Ergometer Roeitrainer Semi-Pro - https://www.thuisatleet.nl/p/virtufit-ergometer-roeitrainer-semi-pro/ -thuisatleet.nl - DKN Technology R-400 roeitrainer - https://www.thuisatleet.nl/p/dkn-technology-r-400-roeitrainer/ -thuisatleet.nl - VirtuFit Water Weerstand Row 1000 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-water-weerstand-row-1000-roeitrainer/ -fitnesskoerier.nl - Finnlo AQUON EVO Roeitrainer - https://www.fitnesskoerier.nl/finnlo-aquon-evo-roeitrainer-gratis-montage.html?source=tradetracker -betersport.nl - Roeitrainer - Finnlo Aquon Competition - https://www.betersport.nl/roeitrainer-finnlo-aquon-competition.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ -thuisatleet.nl - VirtuFit Ultimate pro 2 ergometer roeitrainer - https://www.thuisatleet.nl/p/ultimate-pro-2-ergometer/ -betersport.nl - Roeitrainer - First Degree Apollo V - https://www.betersport.nl/roeitrainer-first-degree-apollo-v.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Inspire Fitness CR2.5X Cross Rower | HIIT Rower - https://www.fitnesskoerier.nl/cr21x-cross-rower-copy.html?source=tradetracker - - -https://sportschoolplus.nl/cable-crossover-machines/ ----------------------------------- -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Body-Solid GCCO150 Cable Crossover 2 x 75 kg - https://www.fitnesskoerier.nl/body-solid-gcco150-cable-crossover-2-x-75-kg.html?source=tradetracker -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Body-Solid GCCO150 Cable Crossover - https://www.bol.com/nl/nl/p/body-solid-gcco150-cable-crossover/9200000072006572/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Cable Crossover - Body-Solid Functional Trainer GDCC200 - https://www.betersport.nl/cable-crossover-body-solid-functional-trainer-gdcc200.html?channable=02bf3b696400313834d1&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Best Fitness BFFT10 Functional Trainer - https://www.fitnesskoerier.nl/best-fitness-bfft10-functional-trainer.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker - - -https://sportschoolplus.nl/beste-weight-gainers/ ----------------------------------- -bodybuildingkleding.com - Alternatief - Weight Gainer - Ideale samenstelling voor mensen die moeilijk aankomen - https://www.bodybuildingkleding.com/p/supplementen/weight-gainers/weight-gainer/?attribute_pa_smaak=chocolade&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus - - -https://sportschoolplus.nl/hometrainers/ ----------------------------------- -sportschoolplus.nl - VirtuFit HTR 1.0 Hometrainer - https://sportschoolplus.nl/product/13986-VFHTR1.0-84433 -betersport.nl - Hometrainer - FitBike Ride 3 - https://www.betersport.nl/hometrainer-fitbike-ride-3-limited-black-edition.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Hometrainer - FitBike Ride 5 - https://www.betersport.nl/hometrainer-fitbike-ride-5.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.2i Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-bike-12i-hometrainer/ -betersport.nl - Hometrainer - FitBike Senator - Ergometer - https://www.betersport.nl/hometrainer-fitbike-senator-ergometer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -betersport.nl - Hometrainer - NordicTrack VR21 - Recumbent Bike - https://www.betersport.nl/hometrainer-nordictrack-vr21-recumbent-bike.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Finnlo UB8000 Maximum Upright Indoor Cycle - Hometrainer - https://www.fitnesskoerier.nl/finnlo-maximum-hometrainer-ub8000-gratis-installat.html?source=tradetracker - - -https://sportschoolplus.nl/pull-up-bars/ ----------------------------------- -betersport.nl - Pull Up Bar - Focus Fitness Doorway Bar - https://www.betersport.nl/pull-up-bar-focus-fitness-doorway-bar.html?channable=02bf3b696400313437d2&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - pull up bar fitness - optrekstang deur - uitschuifbaar 80 tot 130 cm - lichaams gewicht training - https://www.bol.com/nl/nl/p/fitness4u-pull-up-bar-fitness-optrekstang-deur-uitschuifbaar-80-tot-130-cm-lichaamsgewicht-training/9300000000482239/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Pull Up Bar - VirtuFit Mulifunctionele Optrekstang - Deluxe - Zwart - https://www.bol.com/nl/nl/p/pull-up-bar-virtufit-mulifunctionele-optrekstang-deluxe/9200000099938413/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?channable=02bf3b696400313237321a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-halterbanken/ ----------------------------------- -thuisatleet.nl - VirtuFit Verstelbare Halterbank Compact - https://www.thuisatleet.nl/p/virtufit-verstelbare-halterbank-compact/ -thuisatleet.nl - Gymstick Power Tower met halterbank - fitness apparatuur - Power towers - https://www.thuisatleet.nl/p/power-tower-met-halterbank/ -bodybuildingkleding.com - VirtuFit Multifunctionele Halterbank Deluxe - https://www.bodybuildingkleding.com/p/fitness-artikelen/apparatuur/halterbanken/virtufit-multifunctionele-halterbank-deluxe/?utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -fitnesskoerier.nl - ProClubline SOFB250 Flat Olympische Halterbank Professioneel - https://www.fitnesskoerier.nl/proclubline-sofb250-flat-olympische-halterbank-pro.html?source=tradetracker -betersport.nl - Halterbank - Body-Solid Press Halterbank SPB368G - https://www.betersport.nl/halterbank-body-solid-press-halterbank-spb368g.html?channable=02bf3b696400313631cd&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Trainingsbank Buiktrainer Fitnessbank Halter Bank 401079 - https://www.bol.com/nl/nl/p/trainingsbank-buiktrainer-fitnessbank-halter-bank-401079/9200000036361384/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/de-beste-krachtstations-voor-thuis/ ----------------------------------- -thuisatleet.nl - VirtuFit Multifunctionele Halterbank Deluxe - https://www.thuisatleet.nl/p/multifunctionele-halterbank-virtufit-deluxe/ -thuisatleet.nl - VirtuFit Deluxe Power Tower met Fitnessbank - https://www.thuisatleet.nl/p/deluxe-power-tower-met-fitnessbank-virtufit/ -bol.com - Focus Fitness Home Gym - Krachtstation - Unit 6 - Zwart - https://www.bol.com/nl/nl/p/home-gym-focus-fitness-krachtstation-unit-6-zwart/9200000045397830/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Krachtstation Homegym KH1 - https://www.thuisatleet.nl/p/krachtstation-homegym-kh1-virtufit/ -bol.com - Ultimate Gym 5000 multifunctioneel Fitness-Station zwart - https://www.bol.com/nl/nl/p/klarfit-ultimate-gym-5000-multifunctioneel-fitness-station-krachstation-krachttraining-50-verschillende-oefeningen/9300000009668810/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Home Gym - Finnlo Autark 1500 - https://www.betersport.nl/home-gym-finnlo-autark-1500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Home Gym - Powertec Multi System WB-MS Black - https://www.betersport.nl/home-gym-powertec-multi-system-wb-ms-b.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Home Gym - Inspire FT2 Functional Trainer - https://www.betersport.nl/home-gym-ft2-functional-trainer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Home Gym - Body-Solid Fusion 600 - https://www.betersport.nl/home-gym-body-solid-fusion-600.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/dumbells-kopen-advies/ ----------------------------------- -thuisfitnessxl.nl - Complete set Dumbells Gietijzer / Vinyl Coating - https://www.thuisfitnessxl.nl/complete-set-dumbells-gietijzer-vinyl-coating.html?source=tradetracker&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -thuisatleet.nl - Muscle Power Dumbbellset PU 1-10 kg - https://www.thuisatleet.nl/p/dumbbellset-pu-1-10-kg-mp/ -bol.com - 2-in-1 dumbbell set met drijfstang rood 30 kg - https://www.bol.com/nl/nl/p/2-in-1-dumbbell-set-met-drijfstang-rood-30-kg/9300000048651765/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/supplementen-voor-spieropbouw/ ----------------------------------- -bol.com - Optimum Nutrition Creatine (Micronized) - Creatine Poeder - 1 Pot - 317 gram (88 doseringen) - https://www.bol.com/nl/nl/p/optimum-nutrition-creatine-creatine-poeder-1-pot-317-gram/9200000048099422/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bol.com - Body & Fit Creatine - CreaPure® - Monohydraat - Best Creatine Worldwide - 1000 gram (294 doseringen) - https://www.bol.com/nl/nl/p/body-fit-creatine-creapure-monohydraat-best-creatine-worldwide-1000-gram/9200000126080840/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/foamrollers/ ----------------------------------- - - -https://sportschoolplus.nl/fitnesselastieken/ ----------------------------------- - - -https://sportschoolplus.nl/push-up-bars/ ----------------------------------- -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bodyandfit.com - Push up Bar - https://www.bodyandfit.com/nl-nl/Producten/Kleding-%26-Accessoires/Sportaccessoires-%26-Fitnessaccessoires/Sportaccessoires/Fitnessaccessoires/Push-up-Bar/p/9116397?cectid=9-40069-17&utm_source=tradetracker_nederland&utm_medium=affiliate&utm_campaign=179951&utm_content=Sportschoolplus -bodybuildingkleding.com - VirtuFit Multifunctionele Optrekstang - Pull Up Bar Deluxe - Zwart - https://www.bodybuildingkleding.com/p/fitness-artikelen/functional-training/optrekstangen/virtufit-multifunctionele-optrekstang-pull-up-bar-deluxe-zwart/?utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-eiwitpoeders/ ----------------------------------- -bol.com - Body & Fit Whey Perfection - Whey Protein / Proteine Shake - 750 gram - Chocolade - https://www.bol.com/nl/nl/p/body-fit-whey-perfection-proteine-poeder-whey-protein-eiwitshake-896-gram-chocolade/9200000073275553/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/crosstrainers/ ----------------------------------- -betersport.nl - Crosstrainer - Focus Fitness Fox 4 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-4.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -thuisatleet.nl - VirtuFit iConsole FDR 2.1 crosstrainer - https://www.thuisatleet.nl/p/virtufit-iconsole-fdr-2-1/ -betersport.nl - Crosstrainer - ProForm Carbon EL - https://www.betersport.nl/crosstrainer-proform-carbon-el.html?channable=02bf3b696400393431339a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - DKN Technology XC-190 crosstrainer - https://www.thuisatleet.nl/p/dkn-technology-xc-190-crosstrainer/ -betersport.nl - Crosstrainer - Kettler Optima 400 - https://www.betersport.nl/crosstrainer-kettler-optima-400.html?channable=02bf3b69640039313338df&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Senz Sports C7000 - https://www.betersport.nl/crosstrainer-senz-sports-c7000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Nautilus E626 - https://www.betersport.nl/crosstrainer-nautilus-e626.html?channable=02bf3b6964003732343961&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Elite FDR 2.5i Semi-Pro Crosstrainer - https://www.thuisatleet.nl/p/virtufit-elite-fdr-2-5i-semi-pro-crosstrainer/ -betersport.nl - Crosstrainer - Kettler Omnium 500 - https://www.betersport.nl/crosstrainer-kettler-omnium-500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Inspire Fitness Cardio Strider 3.1 Recumbent Elliptical - https://www.fitnesskoerier.nl/inspirecardio-strider-31-recumbent-elliptical.html?source=tradetracker -fitnesskoerier.nl - Inspire Fitness Cardio Strider 3.1 Recumbent Elliptical - https://www.fitnesskoerier.nl/inspirecardio-strider-31-recumbent-elliptical.html?source=tradetracker -bol.com - Octane Max Trainer MTX - https://www.bol.com/nl/nl/p/octane-fitness-max-trainer-mtx/9200000104032790/?Referrer=ADVNLPPcef01000002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/hardlooptips-voor-beginners/ ----------------------------------- - - -https://sportschoolplus.nl/handknijpers/ ----------------------------------- ----------------------------------------- -Content Egg Product Stock Crawler Report -Total Blog Urls: 122 -Total Products: 318 -Total Out of Stock: 85 ----------------------------------------- - - -https://sportschoolplus.nl/crosstrainers/ ----------------------------------- -betersport.nl - Crosstrainer - Focus Fitness Fox 1 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-1.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Focus Fitness Fox 3 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-3.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Focus Fitness Fox 4 - https://www.betersport.nl/crosstrainer-focus-fitness-fox-4.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - ProForm Carbon EL - https://www.betersport.nl/crosstrainer-proform-carbon-el.html?channable=02bf3b696400393431339a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - DKN Technology XC-190 crosstrainer - https://www.thuisatleet.nl/p/dkn-technology-xc-190-crosstrainer/ -betersport.nl - Crosstrainer - Kettler Optima 400 - https://www.betersport.nl/crosstrainer-kettler-optima-400.html?channable=02bf3b69640039313338df&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Senz Sports C7000 - https://www.betersport.nl/crosstrainer-senz-sports-c7000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Nautilus E626 - https://www.betersport.nl/crosstrainer-nautilus-e626.html?channable=02bf3b6964003732343961&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Crosstrainer - Kettler Omnium 500 - https://www.betersport.nl/crosstrainer-kettler-omnium-500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Octane Max Trainer MTX - https://www.bol.com/nl/nl/p/octane-fitness-max-trainer-mtx/9200000104032790/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/foamrollers/ ----------------------------------- - - -https://sportschoolplus.nl/cable-crossover-machines/ ----------------------------------- -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Body-Solid GCCO150 Cable Crossover 2 x 75 kg - https://www.fitnesskoerier.nl/body-solid-gcco150-cable-crossover-2-x-75-kg.html?source=tradetracker -betersport.nl - Cable Crossover - Body-Solid GCCO150 - https://www.betersport.nl/cable-crossover-body-solid-gcco150.html?channable=02bf3b6964003238353039&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Cable Crossover - Body-Solid Functional Trainer GDCC200 - https://www.betersport.nl/cable-crossover-body-solid-functional-trainer-gdcc200.html?channable=02bf3b696400313834d1&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Best Fitness BFFT10 Functional Trainer - https://www.fitnesskoerier.nl/best-fitness-bfft10-functional-trainer.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker -fitnesskoerier.nl - ProClubline SCC1200 Cable Crossover - https://www.fitnesskoerier.nl/proclubline-scc1200-cable-crossover.html?source=tradetracker - - -https://sportschoolplus.nl/beste-weight-gainers/ ----------------------------------- -bol.com - XXL Nutrition Complex Carb Gainer Vanille 2500 gram - https://www.bol.com/nl/nl/p/xxl-nutrition-complex-carb-gainer-vanille-2500-gram/9200000085443345/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -bodybuildingkleding.com - Alternatief - Weight Gainer - Ideale samenstelling voor mensen die moeilijk aankomen - https://www.bodybuildingkleding.com/p/supplementen/weight-gainers/weight-gainer/?attribute_pa_smaak=chocolade&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus - - -https://sportschoolplus.nl/hometrainers/ ----------------------------------- -betersport.nl - Hometrainer - FitBike Ride 3 - https://www.betersport.nl/hometrainer-fitbike-ride-3-limited-black-edition.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Hometrainer - FitBike Ride 5 - https://www.betersport.nl/hometrainer-fitbike-ride-5.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit HTR 2.0 Ergometer Hometrainer - https://www.thuisatleet.nl/p/virtufit-htr-20-ergometer-hometrainer/ -thuisatleet.nl - VirtuFit Low Entry Bike 1.2i Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-bike-12i-hometrainer/ -betersport.nl - Hometrainer - FitBike Senator - Ergometer - https://www.betersport.nl/hometrainer-fitbike-senator-ergometer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Low Entry Bike 1.1 Hometrainer - https://www.thuisatleet.nl/p/virtufit-low-entry-11-bike-hometrainer/ -betersport.nl - Hometrainer - NordicTrack VR21 - Recumbent Bike - https://www.betersport.nl/hometrainer-nordictrack-vr21-recumbent-bike.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Finnlo UB8000 Maximum Upright Indoor Cycle - Hometrainer - https://www.fitnesskoerier.nl/finnlo-maximum-hometrainer-ub8000-gratis-installat.html?source=tradetracker - - -https://sportschoolplus.nl/loopbanden/ ----------------------------------- -thuisatleet.nl - VirtuFit Totally Foldable TR-50i Loopband - https://www.thuisatleet.nl/p/virtufit-totally-foldable-tr-50i-loopband/ -betersport.nl - Loopband - Senz Sports M500 - https://www.betersport.nl/loopband-senz-sports-m500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit TR-200i Loopband - https://www.thuisatleet.nl/p/virtufit-tr-200i-loopband/ -thuisatleet.nl - VirtuFit Pro Elite HiiT Running Loopband - https://www.thuisatleet.nl/p/virtufit-pro-elite-hiit-running/ -betersport.nl - Loopband - Sole Fitness TT8 - https://www.betersport.nl/loopband-sole-fitness-tt8.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/push-up-bars/ ----------------------------------- -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?channable=02bf3b696400313430cb&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness Twist Bars - https://www.betersport.nl/push-up-bar-focus-fitness-twist-bars.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Push Up Bar - Focus Fitness opdruksteunen - https://www.betersport.nl/focus-fitness-opdruk-steunen.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/supplementen-voor-spieropbouw/ ----------------------------------- -bol.com - Dutch Giant Creatine Monohydraat Creapure® (500gr) - https://www.bol.com/nl/nl/p/dutch-giant-creatine-monohydraat-creapure/9300000008038455/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl - - -https://sportschoolplus.nl/dumbells-kopen-advies/ ----------------------------------- -bol.com - Dumbbell set 20 KG - Chroom - https://www.bol.com/nl/nl/p/dumbbell-set-20-kg-chroom/9300000001647705/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisfitnessxl.nl - Complete set Dumbells Gietijzer / Vinyl Coating - https://www.thuisfitnessxl.nl/complete-set-dumbells-gietijzer-vinyl-coating.html?source=tradetracker&utm_source=tradetracker&utm_medium=affiliate&utm_content=Sportschoolplus -thuisatleet.nl - Muscle Power Dumbell bar set - Verstelbare dumbbells - https://www.thuisatleet.nl/p/dumbell-bar-set/ -thuisatleet.nl - Muscle Power Dumbbellset PU 1-10 kg - https://www.thuisatleet.nl/p/dumbbellset-pu-1-10-kg-mp/ - - -https://sportschoolplus.nl/de-beste-krachtstations-voor-thuis/ ----------------------------------- -thuisatleet.nl - VirtuFit Multifunctionele Halterbank Deluxe - https://www.thuisatleet.nl/p/multifunctionele-halterbank-virtufit-deluxe/ -thuisatleet.nl - VirtuFit Deluxe Power Tower met Fitnessbank - https://www.thuisatleet.nl/p/deluxe-power-tower-met-fitnessbank-virtufit/ -thuisatleet.nl - VirtuFit Krachtstation Homegym KH1 - https://www.thuisatleet.nl/p/krachtstation-homegym-kh1-virtufit/ -betersport.nl - Home Gym - Finnlo Autark 1500 - https://www.betersport.nl/home-gym-finnlo-autark-1500.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Home Gym - Powertec Multi System WB-MS Black - https://www.betersport.nl/home-gym-powertec-multi-system-wb-ms-b.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Body-Solid EXM2750G Bi-Angular Homegym - https://www.fitnesskoerier.nl/body-solid-exm2750g-bi-angular-homegym.html?source=tradetracker -fitnesskoerier.nl - Finnlo AUTARK 6600 Homegym met AB-Trainer - https://www.fitnesskoerier.nl/autark-6000-homegym-copy.html?source=tradetracker -betersport.nl - Home Gym - Inspire FT2 Functional Trainer - https://www.betersport.nl/home-gym-ft2-functional-trainer.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Body-Solid EXM4000 Multi-User Krachtstation - https://www.fitnesskoerier.nl/body-solid-exm4000-multi-user-krachtstation.html?source=tradetracker - - -https://sportschoolplus.nl/beste-halterbanken/ ----------------------------------- -thuisatleet.nl - VirtuFit Verstelbare Halterbank Compact - https://www.thuisatleet.nl/p/virtufit-verstelbare-halterbank-compact/ -thuisatleet.nl - VirtuFit Verstelbare Halterbank Compact - https://www.thuisatleet.nl/p/virtufit-verstelbare-halterbank-compact/ -thuisatleet.nl - Gymstick Weight Bench 400 - Halterbank - Krachtapparatuur - https://www.thuisatleet.nl/p/gymstick-weight-bench-400-halterbank/ -fitnesskoerier.nl - ProClubline SIB359G Incline Olympic Bench - https://www.fitnesskoerier.nl/proclubline-sib359g-incline-olympic-bench.html?source=tradetracker - - -https://sportschoolplus.nl/pull-up-bars/ ----------------------------------- -betersport.nl - Pull Up Bar - Focus Fitness Doorway Bar - https://www.betersport.nl/pull-up-bar-focus-fitness-doorway-bar.html?channable=02bf3b696400313437d2&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?channable=02bf3b696400313237321a&utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -bol.com - Multifunctionele optrekstang - pull up bar – deurtrainer – fitness – opdrukstang – dip station –... - https://www.bol.com/nl/nl/p/multifunctionele-optrekstang-pull-up-bar-deurtrainer-fitness-opdrukstang-dip-station-homegym-pull-up-station/9300000026091198/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -betersport.nl - Pull Up Bar - Focus Fitness Multifunctionele Doorway Gym Deluxe - https://www.betersport.nl/pull-up-bar-focus-fitness-gym-xtreme.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/beste-roeitrainers/ ----------------------------------- -thuisatleet.nl - VirtuFit Row 1.0 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-1-0-roeitrainer/ -thuisatleet.nl - VirtuFit Row 450 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-row-450-roeitrainer/ -thuisatleet.nl - VirtuFit Elite Air Magnetic Roeitrainer - VirtuFit Roeitrainer - https://www.thuisatleet.nl/p/virtufit-elite-air-magnetic-roeitrainer/ -thuisatleet.nl - VirtuFit Ergometer Roeitrainer Semi-Pro - https://www.thuisatleet.nl/p/virtufit-ergometer-roeitrainer-semi-pro/ -thuisatleet.nl - DKN Technology R-400 roeitrainer - https://www.thuisatleet.nl/p/dkn-technology-r-400-roeitrainer/ -thuisatleet.nl - VirtuFit Water Weerstand Row 1000 Roeitrainer - https://www.thuisatleet.nl/p/virtufit-water-weerstand-row-1000-roeitrainer/ -fitnesskoerier.nl - Finnlo AQUON EVO Roeitrainer - https://www.fitnesskoerier.nl/finnlo-aquon-evo-roeitrainer-gratis-montage.html?source=tradetracker -betersport.nl - Roeitrainer - Finnlo Aquon Competition - https://www.betersport.nl/roeitrainer-finnlo-aquon-competition.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Ultimate pro 2i ergometer roeitrainer Bluetooth/ANT+ - https://www.thuisatleet.nl/p/virtufit-ultimate-pro-2i-ergometer-roeitrainer-bluetooth-ant/ -thuisatleet.nl - VirtuFit Ultimate pro 2 ergometer roeitrainer - https://www.thuisatleet.nl/p/ultimate-pro-2-ergometer/ -betersport.nl - Roeitrainer - First Degree Apollo V - https://www.betersport.nl/roeitrainer-first-degree-apollo-v.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -fitnesskoerier.nl - Inspire Fitness CR2.5X Cross Rower | HIIT Rower - https://www.fitnesskoerier.nl/cr21x-cross-rower-copy.html?source=tradetracker - - -https://sportschoolplus.nl/10-beste-spinningfietsen-vanaf-450-euro/ ----------------------------------- -betersport.nl - Spinningbike - FitBike Race Magnetic Home - https://www.betersport.nl/spinningbike-fitbike-race-magnetic-home.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Indoor Cycle - FitBike Race Magnetic Home - https://www.betersport.nl/spinningbike-fitbike-race-magnetic-home.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - Senz Sports S5000 - https://www.betersport.nl/spinningbike-senz-sports-s5000.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -thuisatleet.nl - VirtuFit Indoor Cycle S1 Spinningfiets - hometrainer - https://www.thuisatleet.nl/p/virtufit-indoor-cycle-s1-spinningfiets/ -bol.com - Spinningfiets - VirtuFit Indoor Cycle S1 - Spinbike - LCD display en hartslagfunctie - Zwart - https://www.bol.com/nl/nl/p/virtufit-indoorfiets-s1-indoor-cycle-lcd-display-hartslagfunctie/9200000126662541/?Referrer=ADVNLPPcef07d00002e88c20065bba51d000047814&utm_source=47814&utm_medium=Affiliates&utm_campaign=CPS&utm_content=txl -thuisatleet.nl - VirtuFit Elite Indoor Cycle Pro Spinningfiets - https://www.thuisatleet.nl/p/virtufit-elite-indoor-cycle-pro-spinningfiets/ -thuisatleet.nl - VirtuFit Elite Indoor Cycle Pro Spinningfiets - hometrainer - VirtuFit Spinningfiets - https://www.thuisatleet.nl/p/virtufit-elite-indoor-cycle-pro-spinningfiets/ -betersport.nl - Indoor Cycle - NordicTrack S10i - https://www.betersport.nl/spinningbike-nordictrack-s10i.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport -betersport.nl - Spinningbike - NordicTrack S10i - https://www.betersport.nl/spinningbike-nordictrack-s10i.html?utm_source=tradetracker&utm_medium=affiliate&utm_term=Sportschoolplus&utm_campaign=betersport - - -https://sportschoolplus.nl/fitnesselastieken/ ----------------------------------- - - -https://sportschoolplus.nl/beste-eiwitpoeders/ ----------------------------------- - - -https://sportschoolplus.nl/hardlooptips-voor-beginners/ ----------------------------------- - - -https://sportschoolplus.nl/handknijpers/ ----------------------------------- diff --git a/src/core.ts b/src/core.ts index 94d6644..daa2675 100644 --- a/src/core.ts +++ b/src/core.ts @@ -1,56 +1,31 @@ -import puppeteer, { product } from "puppeteer"; + import jsonfile from "jsonfile"; import cheerio from "cheerio"; -import fs from "fs-extra"; +import fs from "fs"; import { getDomain } from "tldts"; -import got from "got"; +import { Browser, launch } from "puppeteer"; +import axios from "axios"; +import { BolCom } from "./modules/websites"; -// Import website modules -import { - FitnessKoerier, - FitnessApparaat, - BolCom, - BeterSport, - FitnessGeest, - BodyAndFit, - PerfectBody, - Alternate, - Expert, - Silvergear, - AlsaNature, - Dobey, - EzyDog, - K9Shop, - OnlineHondenSpeciaalZaak, - MacroVet, - PetDuka, - ZooEnzo, - PetsOnline, - PetsPlace, - ThePetEmpire, - Conrad, - HuisdierExpress, - HondenBed, - Coolblue, - WifiMedia, - Ep, - Kinq, - Maxiaxi, - FotoDeVakman, - Kabels -} from "./modules/websites"; +interface IProduct { + name: string; + blogUrl: string; + url: string; + domain: string; + inStock: boolean; +}; // Globals -let browser: puppeteer.Browser = null; +let browser: Browser = null; let sitemapUrl: string = ""; -let allProducts: Array = []; -let allBlogUrls: Array = []; +let allProducts: Array = []; +let allBlogUrls: Array = []; // debugStart(); start(); async function debugStart() { - browser = await puppeteer.launch({ headless: false }); + browser = await launch({ headless: false }); console.log(await crawlProductStock("https://www.kabels.nl/nl_nl/ewent-ew3240-draadloze-multi-connect-muis-600-2400-dpi-zwart-34863350.html")); } @@ -58,35 +33,59 @@ async function start() { try { console.log(`---- ContentEggStockCrawler ----`); const urls: Array = []; + const sitemapUrls: Array = []; // Get sitemap url from process params let params = process.argv.slice(2); sitemapUrl = params[0]; // Crawl Sitemap - const sitemap = await got(sitemapUrl); - const $ = cheerio.load(sitemap.body, { xmlMode: true }) + console.log(`Crawling input sitemap: ${sitemapUrl}`); + const sitemapRequest = await axios.get(sitemapUrl); + const $ = cheerio.load(sitemapRequest.data, { xmlMode: true }); $('loc').each(function() { - const url = $(this).text() + const url = $(this).text(); - if (!urls.includes(url)) { - urls.push(url) + if (url.endsWith(".xml")) { + if (!sitemapUrls.includes(url)) { + console.log("Found sitemap url: " + url); + sitemapUrls.push(url); + } + } else { + if (!urls.includes(url)) { + urls.push(url); + } } }); - console.log(`Loaded ${urls.length} urls from sitemap! (${params[0]})`); + + for (const sitemapUrl of sitemapUrls) { + console.log(`Crawling crawled sitemap: ${sitemapUrl}`); + const sitemapRequest = await axios.get(sitemapUrl); + const $ = cheerio.load(sitemapRequest.data, { xmlMode: true }); + + $('loc').each(function() { + const url = $(this).text(); + + if (!urls.includes(url)) { + urls.push(url); + } + }); + } + + console.log(`Crawled ${urls.length} urls from sitemaps.`); console.log(`Starting crawler browser..`); - browser = await puppeteer.launch({ headless: true }); + browser = await launch({ headless: true }); - console.log(`Initialization done!`); + console.log(`Initialization done.`); console.log(`------------------------------------- \n`); for (let url of urls) { try { allBlogUrls.push(url); - await crawlBlogPage(url); + await crawlUrl(url); } catch (error) { continue; } @@ -99,9 +98,9 @@ async function start() { } } -async function crawlBlogPage(url: string) { +async function crawlUrl(url: string) { try { - console.log(`Crawling blog page: ${url}`); + console.log(`Crawling url: ${url}`); // Open new page and goto url const page = await browser.newPage(); @@ -119,7 +118,7 @@ async function crawlBlogPage(url: string) { let products: Array = []; if ($(".row-products").length >= 1) { - console.log(`Detected ${$(".row-products").length} content egg row type products!`); + console.log(`- Detected ${$(".row-products").length} content egg row type products.`); $(".row-products .cegg-list-logo-title a").each((index, element) => { let productUrl = $(element).attr("href"); @@ -136,7 +135,7 @@ async function crawlBlogPage(url: string) { } if ($("div.egg-container.egg-item").length >= 1) { - console.log(`Detected ${$("div.egg-container.egg-item").length} content egg large type products!`); + console.log(`- Detected ${$("div.egg-container.egg-item").length} content egg large type products.`); $("div.egg-container.egg-item").each((index, element) => { let productUrl = $(element).find(".cegg-btn-row a").first().attr("href"); @@ -152,7 +151,7 @@ async function crawlBlogPage(url: string) { }); } - console.log("Checking product stocks..."); + console.log("- Checking product stocks..."); for (let index in products) { try { @@ -163,14 +162,14 @@ async function crawlBlogPage(url: string) { products[index].inStock = status[2]; if (products[index].inStock) { - console.log(`[IN STOCK] ${products[index].name} - ${products[index].domain}`); + console.log(` [IN STOCK] ${products[index].name} - ${products[index].domain}`); } else { - console.log(`[OUT OF STOCK] ${products[index].name} - ${products[index].domain}`); + console.log(` [OUT OF STOCK] ${products[index].name} - ${products[index].domain}`); } allProducts.push(products[index]); } catch (error) { - console.log("Skipping product..."); + console.log("- Skipping product..."); continue; } } @@ -179,7 +178,7 @@ async function crawlBlogPage(url: string) { console.log(""); } catch (error) { - console.log("Error while trying to crawl page! Skipping..."); + console.log("-- Error while trying to crawl page! Skipping..."); } } @@ -204,113 +203,14 @@ async function crawlProductStock(url: string) { switch (domain) { case "bol.com": return [domain, page.url(), await BolCom.check(html)]; - - case "coolblue.nl": - return [domain, page.url(), await Coolblue.check(html)]; - - case "fitnesskoerier.nl": - return [domain, page.url(), await FitnessKoerier.check(html)]; - - case "fitnessapparaat.nl": - return [domain, page.url(), false]; - - case "betersport.nl": - return [domain, page.url(), await BeterSport.check(html)]; - - case "fitness-geest.nl": - return [domain, page.url(), await FitnessGeest.check(html)]; - - case "bodyandfit.com": - return [domain, page.url(), await BodyAndFit.check(html)]; - - case "gorillasports.nl": - return [domain, page.url(), await BodyAndFit.check(html)]; - - case "perfectbody.nl": - return [domain, page.url(), await PerfectBody.check(html)]; - - case "alternate.nl": - return [domain, page.url(), await Alternate.check(html)]; - - case "expert.nl": - return [domain, page.url(), await Expert.check(html)]; - - case "bcc.nl": - return [domain, page.url(), await Expert.check(html)]; - - case "silvergear.eu": - return [domain, page.url(), await Silvergear.check(html)]; - - case "conrad.com": - return [domain, page.url(), await Conrad.check(html)]; - - case "conrad.nl": - return [domain, page.url(), await Conrad.check(html)]; - - case "alsa-nature.nl": - return [domain, page.url(), await AlsaNature.check(html)]; - - case "dobey.nl": - return [domain, page.url(), await Dobey.check(html)]; - - case "ezydog.nl": - return [domain, page.url(), await EzyDog.check(html)]; - - case "k9shop.nl": - return [domain, page.url(), await K9Shop.check(html)]; - - case "onlinehondenspeciaalzaak.nl": - return [domain, page.url(), await OnlineHondenSpeciaalZaak.check(html)]; - - case "macrovet.nl": - return [domain, page.url(), await MacroVet.check(html)]; - - case "petduka.nl": - return [domain, page.url(), await PetDuka.check(html)]; - - case "petsonline.nl": - return [domain, page.url(), await PetsOnline.check(html)]; - - case "petsplace.nl": - return [domain, page.url(), await PetsPlace.check(html)]; - - case "zoo-enzo.nl": - return [domain, page.url(), await ZooEnzo.check(html)]; - - case "thepetempire.com": - return [domain, page.url(), await ThePetEmpire.check(html)]; - - case "huisdierexpress.nl": - return [domain, page.url(), await HuisdierExpress.check(html)]; - - case "hondenbed.nl": - return [domain, page.url(), await HondenBed.check(html)]; - - case "wifimedia.eu": - return [domain, page.url(), await WifiMedia.check(html)]; - - case "ep.nl": - return [domain, page.url(), await Ep.check(html)]; - - case "kinq.nl": - return [domain, page.url(), await Kinq.check(html)]; - - case "maxiaxi.com": - return [domain, page.url(), await Maxiaxi.check(html)]; - - case "fotodevakman.nl": - return [domain, page.url(), await FotoDeVakman.check(html)]; - - case "kabels.nl": - return [domain, page.url(), await Kabels.check(html)]; default: - console.error(`-- ${domain} is not an available website module! Can't check stock!`); + console.error(`-- ${domain} is not an supported website! Cannot check stock!`); return [domain, page.url(), false]; } } catch (error) { console.error(error); - console.log("Error while trying to crawl page! Skipping..."); + console.log("-- Error while trying to crawl page! Skipping..."); } } @@ -332,29 +232,38 @@ async function generateReport() { } } - await fs.appendFile(file, `----------------------------------------\n`); - await fs.appendFile(file, `Content Egg Product Stock Crawler Report\n`); - await fs.appendFile(file, `Total Blog Urls: ${allBlogUrls.length}\n`); - await fs.appendFile(file, `Total Products: ${totalProducts}\n`); - await fs.appendFile(file, `Total Out of Stock: ${totalOutStock}\n`); - await fs.appendFile(file, `----------------------------------------\n`); - await fs.appendFile(file, ``); + appendLn(file, `Content Egg Product Stock Crawler Report\n`); + appendLn(file, `Total Blog Urls: ${allBlogUrls.length}\n`); + appendLn(file, `Total Products: ${totalProducts}\n`); + appendLn(file, `Total Out of Stock: ${totalOutStock}\n`); + appendLn(file, ``); let lastBlogUrl = ""; for (let product of allProducts) { if (product.blogUrl != lastBlogUrl) { - await fs.appendFile(file, `\n\n`); - await fs.appendFile(file, `${product.blogUrl}\n`); - await fs.appendFile(file, `----------------------------------\n`); + appendLn(file, `\n\n`); + appendLn(file, `${product.blogUrl}\n`); + appendLn(file, `----------------------------------\n`); } if (product.inStock == false) { - await fs.appendFile(file, `${product.domain} - ${product.name} - ${product.url}\n`); + appendLn(file, `${product.domain} - ${product.name} - ${product.url}\n`); } lastBlogUrl = product.blogUrl; } - console.log("Report generated!"); + console.log("Report generated."); } +function appendLn(file: string, text: string): Promise { + return new Promise((resolve, reject) => { + fs.appendFile(file, text + "\n", (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} \ No newline at end of file diff --git a/src/modules/websites.ts b/src/modules/websites.ts index 921d6de..4548a35 100644 --- a/src/modules/websites.ts +++ b/src/modules/websites.ts @@ -51,438 +51,6 @@ export namespace FitnessApparaat { } export namespace BolCom { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('[data-test="outofstock-buy-block"]').length >= 1) { - return false; - } else { - return true; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace BeterSport { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - return false; - if ($('.product-shop .in-stock').first().html() !== null) { - if ($('.product-shop .in-stock').first().html().trim() == "Niet op voorraad, neem contact op voor actuele informatie") { - return false; - } - - else if ($('.product-shop .in-stock').first().html().trim().includes("week")) { - return false; - } - - else { - return true; - } - } else { - return true; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace FitnessGeest { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product-info-box .in_stock_message').length >= 1) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace BodyAndFit { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product-page .product-cart-controls .btn__primary').first().attr("disabled")) { - return false; - } else { - return true; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace GorillaSports { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product_buy .button_sold_out').length >= 1) { - return false; - } else { - return true; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace PerfectBody { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product.type-product').first().hasClass("instock")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace BCC { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".productoffer__availability .productoffer__deliverymsg .icon").first().length >= 1) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Alternate { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".productMainContainerRow .stockStatus.available_stock").length >= 1) { - if ($(".productMainContainerRow .stockStatus.available_stock").first().html().trim().toLocaleLowerCase() >= "direct leverbaar") { - return true; - } else { - return false; - } - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Expert { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".product__view .product__add-to-cart").length >= 1) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Conrad { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($(".product-summary .availability__status")) { - if ($(".product-summary .availability__status").first().html().trim().toLowerCase() == "available") { - return true; - } - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Silvergear { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product.type-product').first().hasClass("instock")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace AlsaNature { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product .inventoryStatus .icon').first().hasClass("icon-in_stock")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Dobey { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($("#product_view #stock_indicator").hasClass("stock_green")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace EzyDog { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".product-shop .availability").first().hasClass("in-stock")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace K9Shop { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".ty-qty-in-stock i").first().hasClass("ty-icon-ok")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace OnlineHondenSpeciaalZaak { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($("#Product #StockContainer #ShowOutOfStock").hasClass("hidden")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace MacroVet { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($('.product-essential meta[itemprop=availability]').attr("href") == "http://schema.org/InStock") { - return true; - } - - if ($(".row-products-blog .row-products-blog2 .active link").attr("href") == "http://schema.org/InStock") { - return true; - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace PetDuka { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($("#product .hurry i").first().hasClass("icon-check-white")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace PetsOnline { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($("#content #product_configure_form .overlay-e i").first().hasClass("icon-check-circle")) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace PetsPlace { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".product-info-main #product-addtocart-button").length >= 1) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace ZooEnzo { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($(".row.main_content .availability .available-now link").attr("href") == "http://schema.org/InStock") { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace ThePetEmpire { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - if ($("#content .form-product .add-to-cart-button").length >= 1) { - return true; - } else { - return false; - } - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace HuisdierExpress { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($("[itemprop=availability]").first().attr("content") == "in_stock") { - return true; - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace HondenBed { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($("[itemprop=availability]").first().attr("content") == "http://schema.org/InStock") { - return true; - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Coolblue { export async function check(html: string) { try { const $ = cheerio.load(html); @@ -493,7 +61,7 @@ export namespace Coolblue { if (json["@type"]) { if (json["@type"] == "Product") { - if (json["offers"]["availability"] == "http://schema.org/InStock") { + if (json["offers"]["availability"].includes("InStock")) { stock = true; return; } @@ -528,43 +96,6 @@ export namespace WifiMedia { } } -export namespace Ep { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($(".product__info").find(".is-green").html()) { - return true; - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Kinq { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($(".product-detail-infomation").find(".stock")) { - if ($(".product-detail-infomation").find(".stock").first().attr("style") == "color: #2ace48;") { - return true; - } - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} export namespace Maxiaxi { export async function check(html: string) { @@ -592,50 +123,4 @@ export namespace Maxiaxi { return false; } } -} - -export namespace FotoDeVakman { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - let stock = false; - - $('script[type="application/ld+json"]').each((index, element) => { - let json = JSON.parse($(element).html()); - - if (json["@type"]) { - if (json["@type"] == "Product") { - if (json["offers"]["availability"] == "http://schema.org/InStock") { - stock = true; - return; - } - } - } - }); - - return stock; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } -} - -export namespace Kabels { - export async function check(html: string) { - try { - const $ = cheerio.load(html); - - if ($(".product-info-main").find(".stock .available").first()) { - return true; - } - - return false; - } catch (error) { - console.log(error); - console.error(`Error occured during stock check!`); - return false; - } - } } \ No newline at end of file