├── .gitignore ├── courses.json ├── index.js ├── package-lock.json ├── package.json └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | example.png 3 | example.pdf -------------------------------------------------------------------------------- /courses.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Tailwind CSS From Scratch", 4 | "level": "BEGINNER", 5 | "url": "https://www.udemy.com/course/tailwind-from-scratch", 6 | "promo": "TAILWINDNOV2022" 7 | }, 8 | { 9 | "title": "React Front To Back 2022", 10 | "level": "BEGINNER - INTERMEDIATE", 11 | "url": "https://www.udemy.com/course/react-front-to-back-2022/?referralCode=4A622C7E48DB66154114", 12 | "promo": "REACTNOV2022" 13 | }, 14 | { 15 | "title": "50 Projects in 50 Days - HTML, CSS & JavaScript", 16 | "level": "BEGINNER", 17 | "url": "https://www.udemy.com/course/50-projects-50-days/?referralCode=684EE5F9DE1745B6428B", 18 | "promo": "50PROJECTSNOV2022" 19 | }, 20 | { 21 | "title": "Modern HTML & CSS From The Beginning", 22 | "level": "BEGINNER", 23 | "url": "https://www.udemy.com/course/modern-html-css-from-the-beginning/?referralCode=EB0470C43F3C3E9AA306", 24 | "promo": "HTMLCSSNOV2022" 25 | }, 26 | { 27 | "title": "Modern JavaScript From The Beginning", 28 | "level": "BEGINNER", 29 | "url": "https://www.udemy.com/course/modern-javascript-from-the-beginning/?referralCode=F3249B20C1BBE85EFEEC", 30 | "promo": "JSNOV2022" 31 | }, 32 | { 33 | "title": "Next.js Dev To Deployment", 34 | "level": "INTERMEDIATE", 35 | "url": "https://www.udemy.com/course/nextjs-dev-to-deployment/?referralCode=7CD3920A9760E6ABEC11", 36 | "promo": "NEXTNOV2022" 37 | }, 38 | { 39 | "title": "MERN eCommerce From Scratch", 40 | "level": "Intermediate", 41 | "url": "https://www.udemy.com/course/mern-ecommerce/?referralCode=C8B2CD73BFA462D1219C", 42 | "promo": "MERNECOMMNOV2022" 43 | }, 44 | { 45 | "title": "Node.js API Masterclass", 46 | "level": "Intermediate", 47 | "url": "https://www.udemy.com/course/nodejs-api-masterclass/?referralCode=F95A0D3B9CA1DB648F55", 48 | "promo": "NODENOV2022" 49 | }, 50 | { 51 | "title": "20 Vanilla JavaScript Projects", 52 | "level": "Beginner", 53 | "url": "https://www.udemy.com/course/web-projects-with-vanilla-javascript/?referralCode=F9B7C7FED834F91ADE75", 54 | "promo": "20PROJECTSNOV2022" 55 | }, 56 | { 57 | "title": "Python Django Dev To Deployment", 58 | "level": "Intermediate", 59 | "url": "https://www.udemy.com/course/python-django-dev-to-deployment/?referralCode=A9FE27488C451769B322", 60 | "promo": "DJANGONOV2022" 61 | }, 62 | { 63 | "title": "PHP MVC OOP - Build a Framework", 64 | "level": "Intermediate", 65 | "url": "https://www.udemy.com/course/object-oriented-php-mvc/?referralCode=E3FD4CD073A8AF79CF04", 66 | "promo": "PHPNOV2022" 67 | }, 68 | { 69 | "title": "Electron From Scratch", 70 | "level": "Intermediate", 71 | "url": "https://www.udemy.com/course/electron-from-scratch/?referralCode=D83E1593BE5EC5AFF830", 72 | "promo": "ELECTRONNOV2022" 73 | } 74 | ] 75 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const puppeteer = require('puppeteer'); 3 | 4 | async function run() { 5 | const browser = await puppeteer.launch(); 6 | const page = await browser.newPage(); 7 | await page.goto('https://www.traversymedia.com'); 8 | 9 | // Get a screenshot of the page 10 | // await page.screenshot({ path: 'example.png', fullPage: true }); 11 | 12 | // Get a PDF of the page 13 | // await page.pdf({ path: 'example.pdf', format: 'A4' }); 14 | 15 | // Get HTML of the page 16 | // const html = await page.content(); 17 | 18 | // Get text of the page 19 | // const title = await page.evaluate(() => document.title); 20 | 21 | // Get text of the page 22 | // const text = await page.evaluate(() => document.body.innerText); 23 | 24 | // Get all links 25 | // const links = await page.evaluate(() => 26 | // Array.from(document.querySelectorAll('a'), (e) => e.href) 27 | // ); 28 | 29 | // Get courses 30 | // const courses = await page.evaluate(() => 31 | // Array.from(document.querySelectorAll('#courses .card'), (e) => ({ 32 | // title: e.querySelector('.card-body h3').innerText, 33 | // level: e.querySelector('.card-body .level').innerText, 34 | // url: e.querySelector('.card-footer a').href, 35 | // promo: e.querySelector('.card-footer .promo-code .promo').innerText, 36 | // })) 37 | // ); 38 | 39 | // Get courses using $$eval 40 | const courses = await page.$$eval('#courses .card', (elements) => 41 | elements.map((e) => ({ 42 | title: e.querySelector('.card-body h3').innerText, 43 | level: e.querySelector('.card-body .level').innerText, 44 | url: e.querySelector('.card-footer a').href, 45 | promo: e.querySelector('.card-footer .promo-code .promo').innerText, 46 | })) 47 | ); 48 | 49 | console.log(courses); 50 | 51 | // Save data to JSON file 52 | fs.writeFile('courses.json', JSON.stringify(courses), (err) => { 53 | if (err) throw err; 54 | console.log('File saved'); 55 | }); 56 | 57 | await browser.close(); 58 | } 59 | 60 | run(); 61 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "courses-scrape", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "courses-scrape", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "puppeteer": "^19.2.2" 13 | } 14 | }, 15 | "node_modules/@babel/code-frame": { 16 | "version": "7.18.6", 17 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 18 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 19 | "dependencies": { 20 | "@babel/highlight": "^7.18.6" 21 | }, 22 | "engines": { 23 | "node": ">=6.9.0" 24 | } 25 | }, 26 | "node_modules/@babel/helper-validator-identifier": { 27 | "version": "7.19.1", 28 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 29 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 30 | "engines": { 31 | "node": ">=6.9.0" 32 | } 33 | }, 34 | "node_modules/@babel/highlight": { 35 | "version": "7.18.6", 36 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 37 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 38 | "dependencies": { 39 | "@babel/helper-validator-identifier": "^7.18.6", 40 | "chalk": "^2.0.0", 41 | "js-tokens": "^4.0.0" 42 | }, 43 | "engines": { 44 | "node": ">=6.9.0" 45 | } 46 | }, 47 | "node_modules/@types/node": { 48 | "version": "18.11.9", 49 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 50 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", 51 | "optional": true 52 | }, 53 | "node_modules/@types/parse-json": { 54 | "version": "4.0.0", 55 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 56 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 57 | }, 58 | "node_modules/@types/yauzl": { 59 | "version": "2.10.0", 60 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 61 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 62 | "optional": true, 63 | "dependencies": { 64 | "@types/node": "*" 65 | } 66 | }, 67 | "node_modules/agent-base": { 68 | "version": "6.0.2", 69 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 70 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 71 | "dependencies": { 72 | "debug": "4" 73 | }, 74 | "engines": { 75 | "node": ">= 6.0.0" 76 | } 77 | }, 78 | "node_modules/ansi-styles": { 79 | "version": "3.2.1", 80 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 81 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 82 | "dependencies": { 83 | "color-convert": "^1.9.0" 84 | }, 85 | "engines": { 86 | "node": ">=4" 87 | } 88 | }, 89 | "node_modules/balanced-match": { 90 | "version": "1.0.2", 91 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 92 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 93 | }, 94 | "node_modules/base64-js": { 95 | "version": "1.5.1", 96 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 97 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 98 | "funding": [ 99 | { 100 | "type": "github", 101 | "url": "https://github.com/sponsors/feross" 102 | }, 103 | { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/feross" 106 | }, 107 | { 108 | "type": "consulting", 109 | "url": "https://feross.org/support" 110 | } 111 | ] 112 | }, 113 | "node_modules/bl": { 114 | "version": "4.1.0", 115 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 116 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 117 | "dependencies": { 118 | "buffer": "^5.5.0", 119 | "inherits": "^2.0.4", 120 | "readable-stream": "^3.4.0" 121 | } 122 | }, 123 | "node_modules/brace-expansion": { 124 | "version": "1.1.11", 125 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 126 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 127 | "dependencies": { 128 | "balanced-match": "^1.0.0", 129 | "concat-map": "0.0.1" 130 | } 131 | }, 132 | "node_modules/buffer": { 133 | "version": "5.7.1", 134 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 135 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 136 | "funding": [ 137 | { 138 | "type": "github", 139 | "url": "https://github.com/sponsors/feross" 140 | }, 141 | { 142 | "type": "patreon", 143 | "url": "https://www.patreon.com/feross" 144 | }, 145 | { 146 | "type": "consulting", 147 | "url": "https://feross.org/support" 148 | } 149 | ], 150 | "dependencies": { 151 | "base64-js": "^1.3.1", 152 | "ieee754": "^1.1.13" 153 | } 154 | }, 155 | "node_modules/buffer-crc32": { 156 | "version": "0.2.13", 157 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 158 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 159 | "engines": { 160 | "node": "*" 161 | } 162 | }, 163 | "node_modules/callsites": { 164 | "version": "3.1.0", 165 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 166 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 167 | "engines": { 168 | "node": ">=6" 169 | } 170 | }, 171 | "node_modules/chalk": { 172 | "version": "2.4.2", 173 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 174 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 175 | "dependencies": { 176 | "ansi-styles": "^3.2.1", 177 | "escape-string-regexp": "^1.0.5", 178 | "supports-color": "^5.3.0" 179 | }, 180 | "engines": { 181 | "node": ">=4" 182 | } 183 | }, 184 | "node_modules/chownr": { 185 | "version": "1.1.4", 186 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 187 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 188 | }, 189 | "node_modules/color-convert": { 190 | "version": "1.9.3", 191 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 192 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 193 | "dependencies": { 194 | "color-name": "1.1.3" 195 | } 196 | }, 197 | "node_modules/color-name": { 198 | "version": "1.1.3", 199 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 200 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 201 | }, 202 | "node_modules/concat-map": { 203 | "version": "0.0.1", 204 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 205 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 206 | }, 207 | "node_modules/cosmiconfig": { 208 | "version": "7.0.1", 209 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", 210 | "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", 211 | "dependencies": { 212 | "@types/parse-json": "^4.0.0", 213 | "import-fresh": "^3.2.1", 214 | "parse-json": "^5.0.0", 215 | "path-type": "^4.0.0", 216 | "yaml": "^1.10.0" 217 | }, 218 | "engines": { 219 | "node": ">=10" 220 | } 221 | }, 222 | "node_modules/cross-fetch": { 223 | "version": "3.1.5", 224 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 225 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 226 | "dependencies": { 227 | "node-fetch": "2.6.7" 228 | } 229 | }, 230 | "node_modules/debug": { 231 | "version": "4.3.4", 232 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 233 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 234 | "dependencies": { 235 | "ms": "2.1.2" 236 | }, 237 | "engines": { 238 | "node": ">=6.0" 239 | }, 240 | "peerDependenciesMeta": { 241 | "supports-color": { 242 | "optional": true 243 | } 244 | } 245 | }, 246 | "node_modules/devtools-protocol": { 247 | "version": "0.0.1056733", 248 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1056733.tgz", 249 | "integrity": "sha512-CmTu6SQx2g3TbZzDCAV58+LTxVdKplS7xip0g5oDXpZ+isr0rv5dDP8ToyVRywzPHkCCPKgKgScEcwz4uPWDIA==" 250 | }, 251 | "node_modules/end-of-stream": { 252 | "version": "1.4.4", 253 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 254 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 255 | "dependencies": { 256 | "once": "^1.4.0" 257 | } 258 | }, 259 | "node_modules/error-ex": { 260 | "version": "1.3.2", 261 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 262 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 263 | "dependencies": { 264 | "is-arrayish": "^0.2.1" 265 | } 266 | }, 267 | "node_modules/escape-string-regexp": { 268 | "version": "1.0.5", 269 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 270 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 271 | "engines": { 272 | "node": ">=0.8.0" 273 | } 274 | }, 275 | "node_modules/extract-zip": { 276 | "version": "2.0.1", 277 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 278 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 279 | "dependencies": { 280 | "debug": "^4.1.1", 281 | "get-stream": "^5.1.0", 282 | "yauzl": "^2.10.0" 283 | }, 284 | "bin": { 285 | "extract-zip": "cli.js" 286 | }, 287 | "engines": { 288 | "node": ">= 10.17.0" 289 | }, 290 | "optionalDependencies": { 291 | "@types/yauzl": "^2.9.1" 292 | } 293 | }, 294 | "node_modules/fd-slicer": { 295 | "version": "1.1.0", 296 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 297 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 298 | "dependencies": { 299 | "pend": "~1.2.0" 300 | } 301 | }, 302 | "node_modules/fs-constants": { 303 | "version": "1.0.0", 304 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 305 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 306 | }, 307 | "node_modules/fs.realpath": { 308 | "version": "1.0.0", 309 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 310 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 311 | }, 312 | "node_modules/get-stream": { 313 | "version": "5.2.0", 314 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 315 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 316 | "dependencies": { 317 | "pump": "^3.0.0" 318 | }, 319 | "engines": { 320 | "node": ">=8" 321 | }, 322 | "funding": { 323 | "url": "https://github.com/sponsors/sindresorhus" 324 | } 325 | }, 326 | "node_modules/glob": { 327 | "version": "7.2.3", 328 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 329 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 330 | "dependencies": { 331 | "fs.realpath": "^1.0.0", 332 | "inflight": "^1.0.4", 333 | "inherits": "2", 334 | "minimatch": "^3.1.1", 335 | "once": "^1.3.0", 336 | "path-is-absolute": "^1.0.0" 337 | }, 338 | "engines": { 339 | "node": "*" 340 | }, 341 | "funding": { 342 | "url": "https://github.com/sponsors/isaacs" 343 | } 344 | }, 345 | "node_modules/has-flag": { 346 | "version": "3.0.0", 347 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 348 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 349 | "engines": { 350 | "node": ">=4" 351 | } 352 | }, 353 | "node_modules/https-proxy-agent": { 354 | "version": "5.0.1", 355 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 356 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 357 | "dependencies": { 358 | "agent-base": "6", 359 | "debug": "4" 360 | }, 361 | "engines": { 362 | "node": ">= 6" 363 | } 364 | }, 365 | "node_modules/ieee754": { 366 | "version": "1.2.1", 367 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 368 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 369 | "funding": [ 370 | { 371 | "type": "github", 372 | "url": "https://github.com/sponsors/feross" 373 | }, 374 | { 375 | "type": "patreon", 376 | "url": "https://www.patreon.com/feross" 377 | }, 378 | { 379 | "type": "consulting", 380 | "url": "https://feross.org/support" 381 | } 382 | ] 383 | }, 384 | "node_modules/import-fresh": { 385 | "version": "3.3.0", 386 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 387 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 388 | "dependencies": { 389 | "parent-module": "^1.0.0", 390 | "resolve-from": "^4.0.0" 391 | }, 392 | "engines": { 393 | "node": ">=6" 394 | }, 395 | "funding": { 396 | "url": "https://github.com/sponsors/sindresorhus" 397 | } 398 | }, 399 | "node_modules/inflight": { 400 | "version": "1.0.6", 401 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 402 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 403 | "dependencies": { 404 | "once": "^1.3.0", 405 | "wrappy": "1" 406 | } 407 | }, 408 | "node_modules/inherits": { 409 | "version": "2.0.4", 410 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 411 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 412 | }, 413 | "node_modules/is-arrayish": { 414 | "version": "0.2.1", 415 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 416 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 417 | }, 418 | "node_modules/js-tokens": { 419 | "version": "4.0.0", 420 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 421 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 422 | }, 423 | "node_modules/json-parse-even-better-errors": { 424 | "version": "2.3.1", 425 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 426 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 427 | }, 428 | "node_modules/lines-and-columns": { 429 | "version": "1.2.4", 430 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 431 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 432 | }, 433 | "node_modules/minimatch": { 434 | "version": "3.1.2", 435 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 436 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 437 | "dependencies": { 438 | "brace-expansion": "^1.1.7" 439 | }, 440 | "engines": { 441 | "node": "*" 442 | } 443 | }, 444 | "node_modules/mkdirp-classic": { 445 | "version": "0.5.3", 446 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 447 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 448 | }, 449 | "node_modules/ms": { 450 | "version": "2.1.2", 451 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 452 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 453 | }, 454 | "node_modules/node-fetch": { 455 | "version": "2.6.7", 456 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 457 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 458 | "dependencies": { 459 | "whatwg-url": "^5.0.0" 460 | }, 461 | "engines": { 462 | "node": "4.x || >=6.0.0" 463 | }, 464 | "peerDependencies": { 465 | "encoding": "^0.1.0" 466 | }, 467 | "peerDependenciesMeta": { 468 | "encoding": { 469 | "optional": true 470 | } 471 | } 472 | }, 473 | "node_modules/once": { 474 | "version": "1.4.0", 475 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 476 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 477 | "dependencies": { 478 | "wrappy": "1" 479 | } 480 | }, 481 | "node_modules/parent-module": { 482 | "version": "1.0.1", 483 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 484 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 485 | "dependencies": { 486 | "callsites": "^3.0.0" 487 | }, 488 | "engines": { 489 | "node": ">=6" 490 | } 491 | }, 492 | "node_modules/parse-json": { 493 | "version": "5.2.0", 494 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 495 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 496 | "dependencies": { 497 | "@babel/code-frame": "^7.0.0", 498 | "error-ex": "^1.3.1", 499 | "json-parse-even-better-errors": "^2.3.0", 500 | "lines-and-columns": "^1.1.6" 501 | }, 502 | "engines": { 503 | "node": ">=8" 504 | }, 505 | "funding": { 506 | "url": "https://github.com/sponsors/sindresorhus" 507 | } 508 | }, 509 | "node_modules/path-is-absolute": { 510 | "version": "1.0.1", 511 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 512 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 513 | "engines": { 514 | "node": ">=0.10.0" 515 | } 516 | }, 517 | "node_modules/path-type": { 518 | "version": "4.0.0", 519 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 520 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 521 | "engines": { 522 | "node": ">=8" 523 | } 524 | }, 525 | "node_modules/pend": { 526 | "version": "1.2.0", 527 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 528 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 529 | }, 530 | "node_modules/progress": { 531 | "version": "2.0.3", 532 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 533 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 534 | "engines": { 535 | "node": ">=0.4.0" 536 | } 537 | }, 538 | "node_modules/proxy-from-env": { 539 | "version": "1.1.0", 540 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 541 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 542 | }, 543 | "node_modules/pump": { 544 | "version": "3.0.0", 545 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 546 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 547 | "dependencies": { 548 | "end-of-stream": "^1.1.0", 549 | "once": "^1.3.1" 550 | } 551 | }, 552 | "node_modules/puppeteer": { 553 | "version": "19.2.2", 554 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.2.2.tgz", 555 | "integrity": "sha512-m1T5Mog5qu5+dMBptWYTn6pXRdnFbydbVUCthqwbfd8/kOiMlzZBR9ywjX79LpvI1Sj+/z8+FKeIsjnMul8ZYA==", 556 | "hasInstallScript": true, 557 | "dependencies": { 558 | "cosmiconfig": "7.0.1", 559 | "devtools-protocol": "0.0.1056733", 560 | "https-proxy-agent": "5.0.1", 561 | "progress": "2.0.3", 562 | "proxy-from-env": "1.1.0", 563 | "puppeteer-core": "19.2.2" 564 | }, 565 | "engines": { 566 | "node": ">=14.1.0" 567 | } 568 | }, 569 | "node_modules/puppeteer-core": { 570 | "version": "19.2.2", 571 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.2.2.tgz", 572 | "integrity": "sha512-faojf+1pZ/tHXSr4x1q+9MVd9FrL3rpdbC0w7qN7MNClMoLuCvMbpR4vzcjoiJYgclt1n+SOPUOmHQViTw6frw==", 573 | "dependencies": { 574 | "cross-fetch": "3.1.5", 575 | "debug": "4.3.4", 576 | "devtools-protocol": "0.0.1056733", 577 | "extract-zip": "2.0.1", 578 | "https-proxy-agent": "5.0.1", 579 | "proxy-from-env": "1.1.0", 580 | "rimraf": "3.0.2", 581 | "tar-fs": "2.1.1", 582 | "unbzip2-stream": "1.4.3", 583 | "ws": "8.10.0" 584 | }, 585 | "engines": { 586 | "node": ">=14.1.0" 587 | } 588 | }, 589 | "node_modules/readable-stream": { 590 | "version": "3.6.0", 591 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 592 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 593 | "dependencies": { 594 | "inherits": "^2.0.3", 595 | "string_decoder": "^1.1.1", 596 | "util-deprecate": "^1.0.1" 597 | }, 598 | "engines": { 599 | "node": ">= 6" 600 | } 601 | }, 602 | "node_modules/resolve-from": { 603 | "version": "4.0.0", 604 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 605 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 606 | "engines": { 607 | "node": ">=4" 608 | } 609 | }, 610 | "node_modules/rimraf": { 611 | "version": "3.0.2", 612 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 613 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 614 | "dependencies": { 615 | "glob": "^7.1.3" 616 | }, 617 | "bin": { 618 | "rimraf": "bin.js" 619 | }, 620 | "funding": { 621 | "url": "https://github.com/sponsors/isaacs" 622 | } 623 | }, 624 | "node_modules/safe-buffer": { 625 | "version": "5.2.1", 626 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 627 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 628 | "funding": [ 629 | { 630 | "type": "github", 631 | "url": "https://github.com/sponsors/feross" 632 | }, 633 | { 634 | "type": "patreon", 635 | "url": "https://www.patreon.com/feross" 636 | }, 637 | { 638 | "type": "consulting", 639 | "url": "https://feross.org/support" 640 | } 641 | ] 642 | }, 643 | "node_modules/string_decoder": { 644 | "version": "1.3.0", 645 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 646 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 647 | "dependencies": { 648 | "safe-buffer": "~5.2.0" 649 | } 650 | }, 651 | "node_modules/supports-color": { 652 | "version": "5.5.0", 653 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 654 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 655 | "dependencies": { 656 | "has-flag": "^3.0.0" 657 | }, 658 | "engines": { 659 | "node": ">=4" 660 | } 661 | }, 662 | "node_modules/tar-fs": { 663 | "version": "2.1.1", 664 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 665 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 666 | "dependencies": { 667 | "chownr": "^1.1.1", 668 | "mkdirp-classic": "^0.5.2", 669 | "pump": "^3.0.0", 670 | "tar-stream": "^2.1.4" 671 | } 672 | }, 673 | "node_modules/tar-stream": { 674 | "version": "2.2.0", 675 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 676 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 677 | "dependencies": { 678 | "bl": "^4.0.3", 679 | "end-of-stream": "^1.4.1", 680 | "fs-constants": "^1.0.0", 681 | "inherits": "^2.0.3", 682 | "readable-stream": "^3.1.1" 683 | }, 684 | "engines": { 685 | "node": ">=6" 686 | } 687 | }, 688 | "node_modules/through": { 689 | "version": "2.3.8", 690 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 691 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 692 | }, 693 | "node_modules/tr46": { 694 | "version": "0.0.3", 695 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 696 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 697 | }, 698 | "node_modules/unbzip2-stream": { 699 | "version": "1.4.3", 700 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 701 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 702 | "dependencies": { 703 | "buffer": "^5.2.1", 704 | "through": "^2.3.8" 705 | } 706 | }, 707 | "node_modules/util-deprecate": { 708 | "version": "1.0.2", 709 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 710 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 711 | }, 712 | "node_modules/webidl-conversions": { 713 | "version": "3.0.1", 714 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 715 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 716 | }, 717 | "node_modules/whatwg-url": { 718 | "version": "5.0.0", 719 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 720 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 721 | "dependencies": { 722 | "tr46": "~0.0.3", 723 | "webidl-conversions": "^3.0.0" 724 | } 725 | }, 726 | "node_modules/wrappy": { 727 | "version": "1.0.2", 728 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 729 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 730 | }, 731 | "node_modules/ws": { 732 | "version": "8.10.0", 733 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", 734 | "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", 735 | "engines": { 736 | "node": ">=10.0.0" 737 | }, 738 | "peerDependencies": { 739 | "bufferutil": "^4.0.1", 740 | "utf-8-validate": "^5.0.2" 741 | }, 742 | "peerDependenciesMeta": { 743 | "bufferutil": { 744 | "optional": true 745 | }, 746 | "utf-8-validate": { 747 | "optional": true 748 | } 749 | } 750 | }, 751 | "node_modules/yaml": { 752 | "version": "1.10.2", 753 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 754 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 755 | "engines": { 756 | "node": ">= 6" 757 | } 758 | }, 759 | "node_modules/yauzl": { 760 | "version": "2.10.0", 761 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 762 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 763 | "dependencies": { 764 | "buffer-crc32": "~0.2.3", 765 | "fd-slicer": "~1.1.0" 766 | } 767 | } 768 | }, 769 | "dependencies": { 770 | "@babel/code-frame": { 771 | "version": "7.18.6", 772 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 773 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 774 | "requires": { 775 | "@babel/highlight": "^7.18.6" 776 | } 777 | }, 778 | "@babel/helper-validator-identifier": { 779 | "version": "7.19.1", 780 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 781 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" 782 | }, 783 | "@babel/highlight": { 784 | "version": "7.18.6", 785 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 786 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 787 | "requires": { 788 | "@babel/helper-validator-identifier": "^7.18.6", 789 | "chalk": "^2.0.0", 790 | "js-tokens": "^4.0.0" 791 | } 792 | }, 793 | "@types/node": { 794 | "version": "18.11.9", 795 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 796 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", 797 | "optional": true 798 | }, 799 | "@types/parse-json": { 800 | "version": "4.0.0", 801 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 802 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 803 | }, 804 | "@types/yauzl": { 805 | "version": "2.10.0", 806 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 807 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 808 | "optional": true, 809 | "requires": { 810 | "@types/node": "*" 811 | } 812 | }, 813 | "agent-base": { 814 | "version": "6.0.2", 815 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 816 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 817 | "requires": { 818 | "debug": "4" 819 | } 820 | }, 821 | "ansi-styles": { 822 | "version": "3.2.1", 823 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 824 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 825 | "requires": { 826 | "color-convert": "^1.9.0" 827 | } 828 | }, 829 | "balanced-match": { 830 | "version": "1.0.2", 831 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 832 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 833 | }, 834 | "base64-js": { 835 | "version": "1.5.1", 836 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 837 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 838 | }, 839 | "bl": { 840 | "version": "4.1.0", 841 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 842 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 843 | "requires": { 844 | "buffer": "^5.5.0", 845 | "inherits": "^2.0.4", 846 | "readable-stream": "^3.4.0" 847 | } 848 | }, 849 | "brace-expansion": { 850 | "version": "1.1.11", 851 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 852 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 853 | "requires": { 854 | "balanced-match": "^1.0.0", 855 | "concat-map": "0.0.1" 856 | } 857 | }, 858 | "buffer": { 859 | "version": "5.7.1", 860 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 861 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 862 | "requires": { 863 | "base64-js": "^1.3.1", 864 | "ieee754": "^1.1.13" 865 | } 866 | }, 867 | "buffer-crc32": { 868 | "version": "0.2.13", 869 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 870 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" 871 | }, 872 | "callsites": { 873 | "version": "3.1.0", 874 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 875 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 876 | }, 877 | "chalk": { 878 | "version": "2.4.2", 879 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 880 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 881 | "requires": { 882 | "ansi-styles": "^3.2.1", 883 | "escape-string-regexp": "^1.0.5", 884 | "supports-color": "^5.3.0" 885 | } 886 | }, 887 | "chownr": { 888 | "version": "1.1.4", 889 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 890 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 891 | }, 892 | "color-convert": { 893 | "version": "1.9.3", 894 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 895 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 896 | "requires": { 897 | "color-name": "1.1.3" 898 | } 899 | }, 900 | "color-name": { 901 | "version": "1.1.3", 902 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 903 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 904 | }, 905 | "concat-map": { 906 | "version": "0.0.1", 907 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 908 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 909 | }, 910 | "cosmiconfig": { 911 | "version": "7.0.1", 912 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", 913 | "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", 914 | "requires": { 915 | "@types/parse-json": "^4.0.0", 916 | "import-fresh": "^3.2.1", 917 | "parse-json": "^5.0.0", 918 | "path-type": "^4.0.0", 919 | "yaml": "^1.10.0" 920 | } 921 | }, 922 | "cross-fetch": { 923 | "version": "3.1.5", 924 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 925 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 926 | "requires": { 927 | "node-fetch": "2.6.7" 928 | } 929 | }, 930 | "debug": { 931 | "version": "4.3.4", 932 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 933 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 934 | "requires": { 935 | "ms": "2.1.2" 936 | } 937 | }, 938 | "devtools-protocol": { 939 | "version": "0.0.1056733", 940 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1056733.tgz", 941 | "integrity": "sha512-CmTu6SQx2g3TbZzDCAV58+LTxVdKplS7xip0g5oDXpZ+isr0rv5dDP8ToyVRywzPHkCCPKgKgScEcwz4uPWDIA==" 942 | }, 943 | "end-of-stream": { 944 | "version": "1.4.4", 945 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 946 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 947 | "requires": { 948 | "once": "^1.4.0" 949 | } 950 | }, 951 | "error-ex": { 952 | "version": "1.3.2", 953 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 954 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 955 | "requires": { 956 | "is-arrayish": "^0.2.1" 957 | } 958 | }, 959 | "escape-string-regexp": { 960 | "version": "1.0.5", 961 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 962 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 963 | }, 964 | "extract-zip": { 965 | "version": "2.0.1", 966 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 967 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 968 | "requires": { 969 | "@types/yauzl": "^2.9.1", 970 | "debug": "^4.1.1", 971 | "get-stream": "^5.1.0", 972 | "yauzl": "^2.10.0" 973 | } 974 | }, 975 | "fd-slicer": { 976 | "version": "1.1.0", 977 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 978 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 979 | "requires": { 980 | "pend": "~1.2.0" 981 | } 982 | }, 983 | "fs-constants": { 984 | "version": "1.0.0", 985 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 986 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 987 | }, 988 | "fs.realpath": { 989 | "version": "1.0.0", 990 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 991 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 992 | }, 993 | "get-stream": { 994 | "version": "5.2.0", 995 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 996 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 997 | "requires": { 998 | "pump": "^3.0.0" 999 | } 1000 | }, 1001 | "glob": { 1002 | "version": "7.2.3", 1003 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1004 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1005 | "requires": { 1006 | "fs.realpath": "^1.0.0", 1007 | "inflight": "^1.0.4", 1008 | "inherits": "2", 1009 | "minimatch": "^3.1.1", 1010 | "once": "^1.3.0", 1011 | "path-is-absolute": "^1.0.0" 1012 | } 1013 | }, 1014 | "has-flag": { 1015 | "version": "3.0.0", 1016 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1017 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1018 | }, 1019 | "https-proxy-agent": { 1020 | "version": "5.0.1", 1021 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1022 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1023 | "requires": { 1024 | "agent-base": "6", 1025 | "debug": "4" 1026 | } 1027 | }, 1028 | "ieee754": { 1029 | "version": "1.2.1", 1030 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1031 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1032 | }, 1033 | "import-fresh": { 1034 | "version": "3.3.0", 1035 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1036 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1037 | "requires": { 1038 | "parent-module": "^1.0.0", 1039 | "resolve-from": "^4.0.0" 1040 | } 1041 | }, 1042 | "inflight": { 1043 | "version": "1.0.6", 1044 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1045 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1046 | "requires": { 1047 | "once": "^1.3.0", 1048 | "wrappy": "1" 1049 | } 1050 | }, 1051 | "inherits": { 1052 | "version": "2.0.4", 1053 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1054 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1055 | }, 1056 | "is-arrayish": { 1057 | "version": "0.2.1", 1058 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1059 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 1060 | }, 1061 | "js-tokens": { 1062 | "version": "4.0.0", 1063 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1064 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1065 | }, 1066 | "json-parse-even-better-errors": { 1067 | "version": "2.3.1", 1068 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1069 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1070 | }, 1071 | "lines-and-columns": { 1072 | "version": "1.2.4", 1073 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1074 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 1075 | }, 1076 | "minimatch": { 1077 | "version": "3.1.2", 1078 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1079 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1080 | "requires": { 1081 | "brace-expansion": "^1.1.7" 1082 | } 1083 | }, 1084 | "mkdirp-classic": { 1085 | "version": "0.5.3", 1086 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1087 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1088 | }, 1089 | "ms": { 1090 | "version": "2.1.2", 1091 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1092 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1093 | }, 1094 | "node-fetch": { 1095 | "version": "2.6.7", 1096 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1097 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1098 | "requires": { 1099 | "whatwg-url": "^5.0.0" 1100 | } 1101 | }, 1102 | "once": { 1103 | "version": "1.4.0", 1104 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1105 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1106 | "requires": { 1107 | "wrappy": "1" 1108 | } 1109 | }, 1110 | "parent-module": { 1111 | "version": "1.0.1", 1112 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1113 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1114 | "requires": { 1115 | "callsites": "^3.0.0" 1116 | } 1117 | }, 1118 | "parse-json": { 1119 | "version": "5.2.0", 1120 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1121 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1122 | "requires": { 1123 | "@babel/code-frame": "^7.0.0", 1124 | "error-ex": "^1.3.1", 1125 | "json-parse-even-better-errors": "^2.3.0", 1126 | "lines-and-columns": "^1.1.6" 1127 | } 1128 | }, 1129 | "path-is-absolute": { 1130 | "version": "1.0.1", 1131 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1132 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1133 | }, 1134 | "path-type": { 1135 | "version": "4.0.0", 1136 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1137 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1138 | }, 1139 | "pend": { 1140 | "version": "1.2.0", 1141 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1142 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 1143 | }, 1144 | "progress": { 1145 | "version": "2.0.3", 1146 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1147 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1148 | }, 1149 | "proxy-from-env": { 1150 | "version": "1.1.0", 1151 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1152 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1153 | }, 1154 | "pump": { 1155 | "version": "3.0.0", 1156 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1157 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1158 | "requires": { 1159 | "end-of-stream": "^1.1.0", 1160 | "once": "^1.3.1" 1161 | } 1162 | }, 1163 | "puppeteer": { 1164 | "version": "19.2.2", 1165 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.2.2.tgz", 1166 | "integrity": "sha512-m1T5Mog5qu5+dMBptWYTn6pXRdnFbydbVUCthqwbfd8/kOiMlzZBR9ywjX79LpvI1Sj+/z8+FKeIsjnMul8ZYA==", 1167 | "requires": { 1168 | "cosmiconfig": "7.0.1", 1169 | "devtools-protocol": "0.0.1056733", 1170 | "https-proxy-agent": "5.0.1", 1171 | "progress": "2.0.3", 1172 | "proxy-from-env": "1.1.0", 1173 | "puppeteer-core": "19.2.2" 1174 | } 1175 | }, 1176 | "puppeteer-core": { 1177 | "version": "19.2.2", 1178 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.2.2.tgz", 1179 | "integrity": "sha512-faojf+1pZ/tHXSr4x1q+9MVd9FrL3rpdbC0w7qN7MNClMoLuCvMbpR4vzcjoiJYgclt1n+SOPUOmHQViTw6frw==", 1180 | "requires": { 1181 | "cross-fetch": "3.1.5", 1182 | "debug": "4.3.4", 1183 | "devtools-protocol": "0.0.1056733", 1184 | "extract-zip": "2.0.1", 1185 | "https-proxy-agent": "5.0.1", 1186 | "proxy-from-env": "1.1.0", 1187 | "rimraf": "3.0.2", 1188 | "tar-fs": "2.1.1", 1189 | "unbzip2-stream": "1.4.3", 1190 | "ws": "8.10.0" 1191 | } 1192 | }, 1193 | "readable-stream": { 1194 | "version": "3.6.0", 1195 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1196 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1197 | "requires": { 1198 | "inherits": "^2.0.3", 1199 | "string_decoder": "^1.1.1", 1200 | "util-deprecate": "^1.0.1" 1201 | } 1202 | }, 1203 | "resolve-from": { 1204 | "version": "4.0.0", 1205 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1206 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1207 | }, 1208 | "rimraf": { 1209 | "version": "3.0.2", 1210 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1211 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1212 | "requires": { 1213 | "glob": "^7.1.3" 1214 | } 1215 | }, 1216 | "safe-buffer": { 1217 | "version": "5.2.1", 1218 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1219 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1220 | }, 1221 | "string_decoder": { 1222 | "version": "1.3.0", 1223 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1224 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1225 | "requires": { 1226 | "safe-buffer": "~5.2.0" 1227 | } 1228 | }, 1229 | "supports-color": { 1230 | "version": "5.5.0", 1231 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1232 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1233 | "requires": { 1234 | "has-flag": "^3.0.0" 1235 | } 1236 | }, 1237 | "tar-fs": { 1238 | "version": "2.1.1", 1239 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1240 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1241 | "requires": { 1242 | "chownr": "^1.1.1", 1243 | "mkdirp-classic": "^0.5.2", 1244 | "pump": "^3.0.0", 1245 | "tar-stream": "^2.1.4" 1246 | } 1247 | }, 1248 | "tar-stream": { 1249 | "version": "2.2.0", 1250 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1251 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1252 | "requires": { 1253 | "bl": "^4.0.3", 1254 | "end-of-stream": "^1.4.1", 1255 | "fs-constants": "^1.0.0", 1256 | "inherits": "^2.0.3", 1257 | "readable-stream": "^3.1.1" 1258 | } 1259 | }, 1260 | "through": { 1261 | "version": "2.3.8", 1262 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1263 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 1264 | }, 1265 | "tr46": { 1266 | "version": "0.0.3", 1267 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1268 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1269 | }, 1270 | "unbzip2-stream": { 1271 | "version": "1.4.3", 1272 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1273 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1274 | "requires": { 1275 | "buffer": "^5.2.1", 1276 | "through": "^2.3.8" 1277 | } 1278 | }, 1279 | "util-deprecate": { 1280 | "version": "1.0.2", 1281 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1282 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1283 | }, 1284 | "webidl-conversions": { 1285 | "version": "3.0.1", 1286 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1287 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1288 | }, 1289 | "whatwg-url": { 1290 | "version": "5.0.0", 1291 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1292 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1293 | "requires": { 1294 | "tr46": "~0.0.3", 1295 | "webidl-conversions": "^3.0.0" 1296 | } 1297 | }, 1298 | "wrappy": { 1299 | "version": "1.0.2", 1300 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1301 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1302 | }, 1303 | "ws": { 1304 | "version": "8.10.0", 1305 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", 1306 | "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", 1307 | "requires": {} 1308 | }, 1309 | "yaml": { 1310 | "version": "1.10.2", 1311 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1312 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 1313 | }, 1314 | "yauzl": { 1315 | "version": "2.10.0", 1316 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1317 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 1318 | "requires": { 1319 | "buffer-crc32": "~0.2.3", 1320 | "fd-slicer": "~1.1.0" 1321 | } 1322 | } 1323 | } 1324 | } 1325 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "courses-scrape", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "puppeteer": "^19.2.2" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Courses Scrape 2 | 3 | A simple Node.js/Puppeteer script to scrape courses from the [Traversy Media](https://www.traversymedia.com) website. This is code from this [YouTube video](https://youtu.be/S67gyqnYHmI). 4 | 5 | ## Usage 6 | 7 | Install dependencies 8 | 9 | ```bash 10 | npm install 11 | ``` 12 | 13 | Run the script 14 | 15 | ```bash 16 | npm start 17 | ``` 18 | --------------------------------------------------------------------------------