├── .gitignore ├── README.md ├── index.mjs ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # URL to Code 4 | 5 | [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/your-username/your-repo-name/blob/main/LICENSE) 6 | [![GitHub issues](https://img.shields.io/github/issues/Bahrul-Rozak/url-to-code)](https://github.com/Bahrul-Rozak/url-to-code/issues) 7 | [![GitHub stars](https://img.shields.io/github/stars/Bahrul-Rozak/url-to-code)](https://github.com/Bahrul-Rozak/url-to-code/stargazers) 8 | [![GitHub forks](https://img.shields.io/github/forks/your-username/your-repo-name)](https://github.com/your-username/your-repo-name/network) 9 | 10 | A simple Node.js web scraper using [website-scraper](https://www.npmjs.com/package/website-scraper) to download an entire website. 11 | 12 | ## Getting Started 13 | 14 | ### Prerequisites 15 | 16 | Make sure you have [Node.js](https://nodejs.org/) installed on your machine. 17 | 18 | ### Installation 19 | 20 | 1. Clone the repository: 21 | 22 | ```bash 23 | git clone https://github.com/Bahrul-Rozak/url-to-code.git 24 | ``` 25 | 26 | 2. Navigate to the project directory: 27 | 28 | ```bash 29 | cd your-repo-name 30 | ``` 31 | 32 | 3. Install dependencies: 33 | 34 | ```bash 35 | npm install 36 | ``` 37 | 38 | ### Usage 39 | 40 | 1. Open `index.js` in your preferred code editor. 41 | 42 | 2. Set the `websiteUrl` variable to the URL of the website you want to scrape. 43 | 44 | ```javascript 45 | const websiteUrl = 'https://example.com'; 46 | ``` 47 | 48 | 3. Customize other options if needed (e.g., `maxDepth`, `directory`, etc.). 49 | 50 | 4. Run the scraper: 51 | 52 | ```bash 53 | node index.mjs 54 | ``` 55 | 56 | 5. Check the `./result` directory for the downloaded website. 57 | 58 | ## Configuration 59 | 60 | - `urls`: An array of URLs to scrape. 61 | - `urlFilter`: A function to filter URLs. The example filters URLs that start with the specified `websiteUrl`. 62 | - `recursive`: If `true`, the scraper will follow links recursively. 63 | - `maxDepth`: Maximum recursion depth. 64 | - `prettifyUrls`: If `true`, URLs will be prettified. 65 | - `filenameGenerator`: File naming strategy, set to `'bySiteStructure'` in the example. 66 | - `directory`: Output directory for the downloaded website. 67 | 68 | 69 | ## Acknowledgments 70 | 71 | - [website-scraper](https://www.npmjs.com/package/website-scraper) for providing an easy-to-use web scraping library. 72 | 73 | Happy downloading! 🕸️ 74 | -------------------------------------------------------------------------------- /index.mjs: -------------------------------------------------------------------------------- 1 | import scrape from 'website-scraper'; 2 | const websiteUrl = 'https://bahrul-rozak.vercel.app/'; 3 | 4 | scrape({ 5 | urls: [websiteUrl], 6 | urlFilter: function (url) { 7 | return url.indexOf(websiteUrl) === 0; 8 | }, 9 | recursive: true, 10 | maxDepth: 50, 11 | prettifyUrls: true, 12 | filenameGenerator: 'bySiteStructure', 13 | directory: './result' 14 | }).then((data) => { 15 | console.log("Entire website succesfully downloaded"); 16 | }).catch((err) => { 17 | console.log("An error ocurred", err); 18 | }); -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Auto-downloader", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "website-scraper": "^5.3.1" 9 | } 10 | }, 11 | "node_modules/@sindresorhus/is": { 12 | "version": "5.6.0", 13 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", 14 | "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", 15 | "engines": { 16 | "node": ">=14.16" 17 | }, 18 | "funding": { 19 | "url": "https://github.com/sindresorhus/is?sponsor=1" 20 | } 21 | }, 22 | "node_modules/@szmarczak/http-timer": { 23 | "version": "5.0.1", 24 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", 25 | "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", 26 | "dependencies": { 27 | "defer-to-connect": "^2.0.1" 28 | }, 29 | "engines": { 30 | "node": ">=14.16" 31 | } 32 | }, 33 | "node_modules/@types/http-cache-semantics": { 34 | "version": "4.0.4", 35 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", 36 | "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" 37 | }, 38 | "node_modules/boolbase": { 39 | "version": "1.0.0", 40 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 41 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 42 | }, 43 | "node_modules/cacheable-lookup": { 44 | "version": "7.0.0", 45 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", 46 | "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", 47 | "engines": { 48 | "node": ">=14.16" 49 | } 50 | }, 51 | "node_modules/cacheable-request": { 52 | "version": "10.2.14", 53 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", 54 | "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", 55 | "dependencies": { 56 | "@types/http-cache-semantics": "^4.0.2", 57 | "get-stream": "^6.0.1", 58 | "http-cache-semantics": "^4.1.1", 59 | "keyv": "^4.5.3", 60 | "mimic-response": "^4.0.0", 61 | "normalize-url": "^8.0.0", 62 | "responselike": "^3.0.0" 63 | }, 64 | "engines": { 65 | "node": ">=14.16" 66 | } 67 | }, 68 | "node_modules/cacheable-request/node_modules/normalize-url": { 69 | "version": "8.0.0", 70 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", 71 | "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", 72 | "engines": { 73 | "node": ">=14.16" 74 | }, 75 | "funding": { 76 | "url": "https://github.com/sponsors/sindresorhus" 77 | } 78 | }, 79 | "node_modules/cheerio": { 80 | "version": "1.0.0-rc.12", 81 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", 82 | "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", 83 | "dependencies": { 84 | "cheerio-select": "^2.1.0", 85 | "dom-serializer": "^2.0.0", 86 | "domhandler": "^5.0.3", 87 | "domutils": "^3.0.1", 88 | "htmlparser2": "^8.0.1", 89 | "parse5": "^7.0.0", 90 | "parse5-htmlparser2-tree-adapter": "^7.0.0" 91 | }, 92 | "engines": { 93 | "node": ">= 6" 94 | }, 95 | "funding": { 96 | "url": "https://github.com/cheeriojs/cheerio?sponsor=1" 97 | } 98 | }, 99 | "node_modules/cheerio-select": { 100 | "version": "2.1.0", 101 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 102 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 103 | "dependencies": { 104 | "boolbase": "^1.0.0", 105 | "css-select": "^5.1.0", 106 | "css-what": "^6.1.0", 107 | "domelementtype": "^2.3.0", 108 | "domhandler": "^5.0.3", 109 | "domutils": "^3.0.1" 110 | }, 111 | "funding": { 112 | "url": "https://github.com/sponsors/fb55" 113 | } 114 | }, 115 | "node_modules/css-select": { 116 | "version": "5.1.0", 117 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 118 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 119 | "dependencies": { 120 | "boolbase": "^1.0.0", 121 | "css-what": "^6.1.0", 122 | "domhandler": "^5.0.2", 123 | "domutils": "^3.0.1", 124 | "nth-check": "^2.0.1" 125 | }, 126 | "funding": { 127 | "url": "https://github.com/sponsors/fb55" 128 | } 129 | }, 130 | "node_modules/css-url-parser": { 131 | "version": "1.1.3", 132 | "resolved": "https://registry.npmjs.org/css-url-parser/-/css-url-parser-1.1.3.tgz", 133 | "integrity": "sha512-KO4HrqK3lAlrnobbBEHib/lFRw7kGOlQTLYhwTwWzDEGilGTYIYOpI22d+6euyZiqfZpV96pii87ZufifbxpqA==" 134 | }, 135 | "node_modules/css-what": { 136 | "version": "6.1.0", 137 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 138 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 139 | "engines": { 140 | "node": ">= 6" 141 | }, 142 | "funding": { 143 | "url": "https://github.com/sponsors/fb55" 144 | } 145 | }, 146 | "node_modules/debug": { 147 | "version": "4.3.4", 148 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 149 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 150 | "dependencies": { 151 | "ms": "2.1.2" 152 | }, 153 | "engines": { 154 | "node": ">=6.0" 155 | }, 156 | "peerDependenciesMeta": { 157 | "supports-color": { 158 | "optional": true 159 | } 160 | } 161 | }, 162 | "node_modules/decompress-response": { 163 | "version": "6.0.0", 164 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 165 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 166 | "dependencies": { 167 | "mimic-response": "^3.1.0" 168 | }, 169 | "engines": { 170 | "node": ">=10" 171 | }, 172 | "funding": { 173 | "url": "https://github.com/sponsors/sindresorhus" 174 | } 175 | }, 176 | "node_modules/decompress-response/node_modules/mimic-response": { 177 | "version": "3.1.0", 178 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 179 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 180 | "engines": { 181 | "node": ">=10" 182 | }, 183 | "funding": { 184 | "url": "https://github.com/sponsors/sindresorhus" 185 | } 186 | }, 187 | "node_modules/defer-to-connect": { 188 | "version": "2.0.1", 189 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 190 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 191 | "engines": { 192 | "node": ">=10" 193 | } 194 | }, 195 | "node_modules/dom-serializer": { 196 | "version": "2.0.0", 197 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 198 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 199 | "dependencies": { 200 | "domelementtype": "^2.3.0", 201 | "domhandler": "^5.0.2", 202 | "entities": "^4.2.0" 203 | }, 204 | "funding": { 205 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 206 | } 207 | }, 208 | "node_modules/domelementtype": { 209 | "version": "2.3.0", 210 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 211 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 212 | "funding": [ 213 | { 214 | "type": "github", 215 | "url": "https://github.com/sponsors/fb55" 216 | } 217 | ] 218 | }, 219 | "node_modules/domhandler": { 220 | "version": "5.0.3", 221 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 222 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 223 | "dependencies": { 224 | "domelementtype": "^2.3.0" 225 | }, 226 | "engines": { 227 | "node": ">= 4" 228 | }, 229 | "funding": { 230 | "url": "https://github.com/fb55/domhandler?sponsor=1" 231 | } 232 | }, 233 | "node_modules/domutils": { 234 | "version": "3.1.0", 235 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 236 | "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 237 | "dependencies": { 238 | "dom-serializer": "^2.0.0", 239 | "domelementtype": "^2.3.0", 240 | "domhandler": "^5.0.3" 241 | }, 242 | "funding": { 243 | "url": "https://github.com/fb55/domutils?sponsor=1" 244 | } 245 | }, 246 | "node_modules/entities": { 247 | "version": "4.5.0", 248 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 249 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 250 | "engines": { 251 | "node": ">=0.12" 252 | }, 253 | "funding": { 254 | "url": "https://github.com/fb55/entities?sponsor=1" 255 | } 256 | }, 257 | "node_modules/eventemitter3": { 258 | "version": "5.0.1", 259 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 260 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" 261 | }, 262 | "node_modules/form-data-encoder": { 263 | "version": "2.1.4", 264 | "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", 265 | "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", 266 | "engines": { 267 | "node": ">= 14.17" 268 | } 269 | }, 270 | "node_modules/fs-extra": { 271 | "version": "10.1.0", 272 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 273 | "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", 274 | "dependencies": { 275 | "graceful-fs": "^4.2.0", 276 | "jsonfile": "^6.0.1", 277 | "universalify": "^2.0.0" 278 | }, 279 | "engines": { 280 | "node": ">=12" 281 | } 282 | }, 283 | "node_modules/get-stream": { 284 | "version": "6.0.1", 285 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 286 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 287 | "engines": { 288 | "node": ">=10" 289 | }, 290 | "funding": { 291 | "url": "https://github.com/sponsors/sindresorhus" 292 | } 293 | }, 294 | "node_modules/got": { 295 | "version": "12.6.1", 296 | "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", 297 | "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", 298 | "dependencies": { 299 | "@sindresorhus/is": "^5.2.0", 300 | "@szmarczak/http-timer": "^5.0.1", 301 | "cacheable-lookup": "^7.0.0", 302 | "cacheable-request": "^10.2.8", 303 | "decompress-response": "^6.0.0", 304 | "form-data-encoder": "^2.1.2", 305 | "get-stream": "^6.0.1", 306 | "http2-wrapper": "^2.1.10", 307 | "lowercase-keys": "^3.0.0", 308 | "p-cancelable": "^3.0.0", 309 | "responselike": "^3.0.0" 310 | }, 311 | "engines": { 312 | "node": ">=14.16" 313 | }, 314 | "funding": { 315 | "url": "https://github.com/sindresorhus/got?sponsor=1" 316 | } 317 | }, 318 | "node_modules/graceful-fs": { 319 | "version": "4.2.11", 320 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 321 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 322 | }, 323 | "node_modules/htmlparser2": { 324 | "version": "8.0.2", 325 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", 326 | "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", 327 | "funding": [ 328 | "https://github.com/fb55/htmlparser2?sponsor=1", 329 | { 330 | "type": "github", 331 | "url": "https://github.com/sponsors/fb55" 332 | } 333 | ], 334 | "dependencies": { 335 | "domelementtype": "^2.3.0", 336 | "domhandler": "^5.0.3", 337 | "domutils": "^3.0.1", 338 | "entities": "^4.4.0" 339 | } 340 | }, 341 | "node_modules/http-cache-semantics": { 342 | "version": "4.1.1", 343 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 344 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 345 | }, 346 | "node_modules/http2-wrapper": { 347 | "version": "2.2.1", 348 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", 349 | "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", 350 | "dependencies": { 351 | "quick-lru": "^5.1.1", 352 | "resolve-alpn": "^1.2.0" 353 | }, 354 | "engines": { 355 | "node": ">=10.19.0" 356 | } 357 | }, 358 | "node_modules/json-buffer": { 359 | "version": "3.0.1", 360 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 361 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 362 | }, 363 | "node_modules/jsonfile": { 364 | "version": "6.1.0", 365 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 366 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 367 | "dependencies": { 368 | "universalify": "^2.0.0" 369 | }, 370 | "optionalDependencies": { 371 | "graceful-fs": "^4.1.6" 372 | } 373 | }, 374 | "node_modules/keyv": { 375 | "version": "4.5.4", 376 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 377 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 378 | "dependencies": { 379 | "json-buffer": "3.0.1" 380 | } 381 | }, 382 | "node_modules/lowercase-keys": { 383 | "version": "3.0.0", 384 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", 385 | "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", 386 | "engines": { 387 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 388 | }, 389 | "funding": { 390 | "url": "https://github.com/sponsors/sindresorhus" 391 | } 392 | }, 393 | "node_modules/mimic-response": { 394 | "version": "4.0.0", 395 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", 396 | "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", 397 | "engines": { 398 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 399 | }, 400 | "funding": { 401 | "url": "https://github.com/sponsors/sindresorhus" 402 | } 403 | }, 404 | "node_modules/ms": { 405 | "version": "2.1.2", 406 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 407 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 408 | }, 409 | "node_modules/normalize-url": { 410 | "version": "7.2.0", 411 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.2.0.tgz", 412 | "integrity": "sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA==", 413 | "engines": { 414 | "node": ">=12.20" 415 | }, 416 | "funding": { 417 | "url": "https://github.com/sponsors/sindresorhus" 418 | } 419 | }, 420 | "node_modules/nth-check": { 421 | "version": "2.1.1", 422 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 423 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 424 | "dependencies": { 425 | "boolbase": "^1.0.0" 426 | }, 427 | "funding": { 428 | "url": "https://github.com/fb55/nth-check?sponsor=1" 429 | } 430 | }, 431 | "node_modules/p-cancelable": { 432 | "version": "3.0.0", 433 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", 434 | "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", 435 | "engines": { 436 | "node": ">=12.20" 437 | } 438 | }, 439 | "node_modules/p-queue": { 440 | "version": "7.4.1", 441 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", 442 | "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", 443 | "dependencies": { 444 | "eventemitter3": "^5.0.1", 445 | "p-timeout": "^5.0.2" 446 | }, 447 | "engines": { 448 | "node": ">=12" 449 | }, 450 | "funding": { 451 | "url": "https://github.com/sponsors/sindresorhus" 452 | } 453 | }, 454 | "node_modules/p-timeout": { 455 | "version": "5.1.0", 456 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", 457 | "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", 458 | "engines": { 459 | "node": ">=12" 460 | }, 461 | "funding": { 462 | "url": "https://github.com/sponsors/sindresorhus" 463 | } 464 | }, 465 | "node_modules/parse5": { 466 | "version": "7.1.2", 467 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 468 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 469 | "dependencies": { 470 | "entities": "^4.4.0" 471 | }, 472 | "funding": { 473 | "url": "https://github.com/inikulin/parse5?sponsor=1" 474 | } 475 | }, 476 | "node_modules/parse5-htmlparser2-tree-adapter": { 477 | "version": "7.0.0", 478 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 479 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 480 | "dependencies": { 481 | "domhandler": "^5.0.2", 482 | "parse5": "^7.0.0" 483 | }, 484 | "funding": { 485 | "url": "https://github.com/inikulin/parse5?sponsor=1" 486 | } 487 | }, 488 | "node_modules/quick-lru": { 489 | "version": "5.1.1", 490 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 491 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 492 | "engines": { 493 | "node": ">=10" 494 | }, 495 | "funding": { 496 | "url": "https://github.com/sponsors/sindresorhus" 497 | } 498 | }, 499 | "node_modules/resolve-alpn": { 500 | "version": "1.2.1", 501 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 502 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 503 | }, 504 | "node_modules/responselike": { 505 | "version": "3.0.0", 506 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", 507 | "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", 508 | "dependencies": { 509 | "lowercase-keys": "^3.0.0" 510 | }, 511 | "engines": { 512 | "node": ">=14.16" 513 | }, 514 | "funding": { 515 | "url": "https://github.com/sponsors/sindresorhus" 516 | } 517 | }, 518 | "node_modules/sanitize-filename": { 519 | "version": "1.6.3", 520 | "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", 521 | "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", 522 | "dependencies": { 523 | "truncate-utf8-bytes": "^1.0.0" 524 | } 525 | }, 526 | "node_modules/srcset": { 527 | "version": "5.0.0", 528 | "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.0.tgz", 529 | "integrity": "sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA==", 530 | "engines": { 531 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 532 | }, 533 | "funding": { 534 | "url": "https://github.com/sponsors/sindresorhus" 535 | } 536 | }, 537 | "node_modules/truncate-utf8-bytes": { 538 | "version": "1.0.2", 539 | "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", 540 | "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", 541 | "dependencies": { 542 | "utf8-byte-length": "^1.0.1" 543 | } 544 | }, 545 | "node_modules/universalify": { 546 | "version": "2.0.1", 547 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 548 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", 549 | "engines": { 550 | "node": ">= 10.0.0" 551 | } 552 | }, 553 | "node_modules/utf8-byte-length": { 554 | "version": "1.0.4", 555 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", 556 | "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" 557 | }, 558 | "node_modules/website-scraper": { 559 | "version": "5.3.1", 560 | "resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.3.1.tgz", 561 | "integrity": "sha512-gogqPXD2gVsxoyd2yRiympw3rA5GuEpD1CaDEJ/J8zzanx7hkbTtneoO1SGs436PpLbWVcUge+6APGLhzsuZPA==", 562 | "dependencies": { 563 | "cheerio": "1.0.0-rc.12", 564 | "css-url-parser": "^1.0.0", 565 | "debug": "^4.3.1", 566 | "fs-extra": "^10.0.0", 567 | "got": "^12.0.0", 568 | "normalize-url": "^7.0.2", 569 | "p-queue": "^7.1.0", 570 | "sanitize-filename": "^1.6.3", 571 | "srcset": "^5.0.0" 572 | }, 573 | "engines": { 574 | "node": ">=14.14" 575 | } 576 | } 577 | }, 578 | "dependencies": { 579 | "@sindresorhus/is": { 580 | "version": "5.6.0", 581 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", 582 | "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==" 583 | }, 584 | "@szmarczak/http-timer": { 585 | "version": "5.0.1", 586 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", 587 | "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", 588 | "requires": { 589 | "defer-to-connect": "^2.0.1" 590 | } 591 | }, 592 | "@types/http-cache-semantics": { 593 | "version": "4.0.4", 594 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", 595 | "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" 596 | }, 597 | "boolbase": { 598 | "version": "1.0.0", 599 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 600 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 601 | }, 602 | "cacheable-lookup": { 603 | "version": "7.0.0", 604 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", 605 | "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==" 606 | }, 607 | "cacheable-request": { 608 | "version": "10.2.14", 609 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", 610 | "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", 611 | "requires": { 612 | "@types/http-cache-semantics": "^4.0.2", 613 | "get-stream": "^6.0.1", 614 | "http-cache-semantics": "^4.1.1", 615 | "keyv": "^4.5.3", 616 | "mimic-response": "^4.0.0", 617 | "normalize-url": "^8.0.0", 618 | "responselike": "^3.0.0" 619 | }, 620 | "dependencies": { 621 | "normalize-url": { 622 | "version": "8.0.0", 623 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", 624 | "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==" 625 | } 626 | } 627 | }, 628 | "cheerio": { 629 | "version": "1.0.0-rc.12", 630 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", 631 | "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", 632 | "requires": { 633 | "cheerio-select": "^2.1.0", 634 | "dom-serializer": "^2.0.0", 635 | "domhandler": "^5.0.3", 636 | "domutils": "^3.0.1", 637 | "htmlparser2": "^8.0.1", 638 | "parse5": "^7.0.0", 639 | "parse5-htmlparser2-tree-adapter": "^7.0.0" 640 | } 641 | }, 642 | "cheerio-select": { 643 | "version": "2.1.0", 644 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 645 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 646 | "requires": { 647 | "boolbase": "^1.0.0", 648 | "css-select": "^5.1.0", 649 | "css-what": "^6.1.0", 650 | "domelementtype": "^2.3.0", 651 | "domhandler": "^5.0.3", 652 | "domutils": "^3.0.1" 653 | } 654 | }, 655 | "css-select": { 656 | "version": "5.1.0", 657 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 658 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 659 | "requires": { 660 | "boolbase": "^1.0.0", 661 | "css-what": "^6.1.0", 662 | "domhandler": "^5.0.2", 663 | "domutils": "^3.0.1", 664 | "nth-check": "^2.0.1" 665 | } 666 | }, 667 | "css-url-parser": { 668 | "version": "1.1.3", 669 | "resolved": "https://registry.npmjs.org/css-url-parser/-/css-url-parser-1.1.3.tgz", 670 | "integrity": "sha512-KO4HrqK3lAlrnobbBEHib/lFRw7kGOlQTLYhwTwWzDEGilGTYIYOpI22d+6euyZiqfZpV96pii87ZufifbxpqA==" 671 | }, 672 | "css-what": { 673 | "version": "6.1.0", 674 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 675 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" 676 | }, 677 | "debug": { 678 | "version": "4.3.4", 679 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 680 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 681 | "requires": { 682 | "ms": "2.1.2" 683 | } 684 | }, 685 | "decompress-response": { 686 | "version": "6.0.0", 687 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 688 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 689 | "requires": { 690 | "mimic-response": "^3.1.0" 691 | }, 692 | "dependencies": { 693 | "mimic-response": { 694 | "version": "3.1.0", 695 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 696 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 697 | } 698 | } 699 | }, 700 | "defer-to-connect": { 701 | "version": "2.0.1", 702 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 703 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 704 | }, 705 | "dom-serializer": { 706 | "version": "2.0.0", 707 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 708 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 709 | "requires": { 710 | "domelementtype": "^2.3.0", 711 | "domhandler": "^5.0.2", 712 | "entities": "^4.2.0" 713 | } 714 | }, 715 | "domelementtype": { 716 | "version": "2.3.0", 717 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 718 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" 719 | }, 720 | "domhandler": { 721 | "version": "5.0.3", 722 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 723 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 724 | "requires": { 725 | "domelementtype": "^2.3.0" 726 | } 727 | }, 728 | "domutils": { 729 | "version": "3.1.0", 730 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", 731 | "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", 732 | "requires": { 733 | "dom-serializer": "^2.0.0", 734 | "domelementtype": "^2.3.0", 735 | "domhandler": "^5.0.3" 736 | } 737 | }, 738 | "entities": { 739 | "version": "4.5.0", 740 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 741 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" 742 | }, 743 | "eventemitter3": { 744 | "version": "5.0.1", 745 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 746 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" 747 | }, 748 | "form-data-encoder": { 749 | "version": "2.1.4", 750 | "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", 751 | "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==" 752 | }, 753 | "fs-extra": { 754 | "version": "10.1.0", 755 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 756 | "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", 757 | "requires": { 758 | "graceful-fs": "^4.2.0", 759 | "jsonfile": "^6.0.1", 760 | "universalify": "^2.0.0" 761 | } 762 | }, 763 | "get-stream": { 764 | "version": "6.0.1", 765 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 766 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" 767 | }, 768 | "got": { 769 | "version": "12.6.1", 770 | "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", 771 | "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", 772 | "requires": { 773 | "@sindresorhus/is": "^5.2.0", 774 | "@szmarczak/http-timer": "^5.0.1", 775 | "cacheable-lookup": "^7.0.0", 776 | "cacheable-request": "^10.2.8", 777 | "decompress-response": "^6.0.0", 778 | "form-data-encoder": "^2.1.2", 779 | "get-stream": "^6.0.1", 780 | "http2-wrapper": "^2.1.10", 781 | "lowercase-keys": "^3.0.0", 782 | "p-cancelable": "^3.0.0", 783 | "responselike": "^3.0.0" 784 | } 785 | }, 786 | "graceful-fs": { 787 | "version": "4.2.11", 788 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 789 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 790 | }, 791 | "htmlparser2": { 792 | "version": "8.0.2", 793 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", 794 | "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", 795 | "requires": { 796 | "domelementtype": "^2.3.0", 797 | "domhandler": "^5.0.3", 798 | "domutils": "^3.0.1", 799 | "entities": "^4.4.0" 800 | } 801 | }, 802 | "http-cache-semantics": { 803 | "version": "4.1.1", 804 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 805 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 806 | }, 807 | "http2-wrapper": { 808 | "version": "2.2.1", 809 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", 810 | "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", 811 | "requires": { 812 | "quick-lru": "^5.1.1", 813 | "resolve-alpn": "^1.2.0" 814 | } 815 | }, 816 | "json-buffer": { 817 | "version": "3.0.1", 818 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 819 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 820 | }, 821 | "jsonfile": { 822 | "version": "6.1.0", 823 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 824 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 825 | "requires": { 826 | "graceful-fs": "^4.1.6", 827 | "universalify": "^2.0.0" 828 | } 829 | }, 830 | "keyv": { 831 | "version": "4.5.4", 832 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 833 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 834 | "requires": { 835 | "json-buffer": "3.0.1" 836 | } 837 | }, 838 | "lowercase-keys": { 839 | "version": "3.0.0", 840 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", 841 | "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" 842 | }, 843 | "mimic-response": { 844 | "version": "4.0.0", 845 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", 846 | "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==" 847 | }, 848 | "ms": { 849 | "version": "2.1.2", 850 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 851 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 852 | }, 853 | "normalize-url": { 854 | "version": "7.2.0", 855 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.2.0.tgz", 856 | "integrity": "sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA==" 857 | }, 858 | "nth-check": { 859 | "version": "2.1.1", 860 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 861 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 862 | "requires": { 863 | "boolbase": "^1.0.0" 864 | } 865 | }, 866 | "p-cancelable": { 867 | "version": "3.0.0", 868 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", 869 | "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" 870 | }, 871 | "p-queue": { 872 | "version": "7.4.1", 873 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", 874 | "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", 875 | "requires": { 876 | "eventemitter3": "^5.0.1", 877 | "p-timeout": "^5.0.2" 878 | } 879 | }, 880 | "p-timeout": { 881 | "version": "5.1.0", 882 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", 883 | "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==" 884 | }, 885 | "parse5": { 886 | "version": "7.1.2", 887 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 888 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 889 | "requires": { 890 | "entities": "^4.4.0" 891 | } 892 | }, 893 | "parse5-htmlparser2-tree-adapter": { 894 | "version": "7.0.0", 895 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 896 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 897 | "requires": { 898 | "domhandler": "^5.0.2", 899 | "parse5": "^7.0.0" 900 | } 901 | }, 902 | "quick-lru": { 903 | "version": "5.1.1", 904 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 905 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 906 | }, 907 | "resolve-alpn": { 908 | "version": "1.2.1", 909 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 910 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 911 | }, 912 | "responselike": { 913 | "version": "3.0.0", 914 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", 915 | "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", 916 | "requires": { 917 | "lowercase-keys": "^3.0.0" 918 | } 919 | }, 920 | "sanitize-filename": { 921 | "version": "1.6.3", 922 | "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", 923 | "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", 924 | "requires": { 925 | "truncate-utf8-bytes": "^1.0.0" 926 | } 927 | }, 928 | "srcset": { 929 | "version": "5.0.0", 930 | "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.0.tgz", 931 | "integrity": "sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA==" 932 | }, 933 | "truncate-utf8-bytes": { 934 | "version": "1.0.2", 935 | "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", 936 | "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", 937 | "requires": { 938 | "utf8-byte-length": "^1.0.1" 939 | } 940 | }, 941 | "universalify": { 942 | "version": "2.0.1", 943 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", 944 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" 945 | }, 946 | "utf8-byte-length": { 947 | "version": "1.0.4", 948 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", 949 | "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" 950 | }, 951 | "website-scraper": { 952 | "version": "5.3.1", 953 | "resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-5.3.1.tgz", 954 | "integrity": "sha512-gogqPXD2gVsxoyd2yRiympw3rA5GuEpD1CaDEJ/J8zzanx7hkbTtneoO1SGs436PpLbWVcUge+6APGLhzsuZPA==", 955 | "requires": { 956 | "cheerio": "1.0.0-rc.12", 957 | "css-url-parser": "^1.0.0", 958 | "debug": "^4.3.1", 959 | "fs-extra": "^10.0.0", 960 | "got": "^12.0.0", 961 | "normalize-url": "^7.0.2", 962 | "p-queue": "^7.1.0", 963 | "sanitize-filename": "^1.6.3", 964 | "srcset": "^5.0.0" 965 | } 966 | } 967 | } 968 | } 969 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "website-scraper": "^5.3.1" 4 | } 5 | } 6 | --------------------------------------------------------------------------------