├── .gitignore ├── README.md ├── main.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | mypassword.js 3 | test.js 4 | node_modules/ 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Prerequisite 2 | 3 | 4 | 5 | 1. Node 6 | 7 | LINK: https://nodejs.org/en 8 | 9 | 2. Git 10 | 11 | LINK: https://git-scm.com/downloads 12 | 13 | # How to use it 14 | 15 | 16 | 17 | ### Step 1. open your terminal and 18 | 19 | 20 | ``` 21 | git clone https://github.com/NateCC0902/holdyourfork 22 | cd holdyourfork 23 | npm install 24 | ``` 25 | 26 | 27 | ### Step 2. Run it (in terminal). 28 | 29 | Replace username, password, duo_code and course_code. and presses ENTER. 30 | 31 | ``` 32 | node main.js 33 | // i.e 34 | //node main.js imhuman password 123089 AA3QCD 35 | ``` 36 | 37 | 38 | 39 | # Reminder 40 | 41 | 42 | 43 | This script re add course every 1 hours. DONT make it shorter you may block by school. 44 | 45 | DUO passcode is one time use. 46 | 47 | headless: false // this is for show you how the script run it. and set it true will run the script background. 48 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require('puppeteer'); 2 | 3 | let username = ''; 4 | let password = ''; 5 | let duocode = ''; 6 | let course = []; 7 | 8 | process.argv.forEach(function(val, index, array) { 9 | if (index == 2) { 10 | username = val; 11 | } 12 | if (index == 3) { 13 | password = val; 14 | } 15 | if (index == 4) { 16 | duocode = val; 17 | } 18 | if (index == 5) { 19 | course.push(val); 20 | } 21 | 22 | }); 23 | console.log('INFO - username: ' + username); 24 | console.log('INFO - password: ' + password); 25 | console.log('INFO - duo_code: ' + duocode); 26 | console.log('INFO - courses['+ course.length +']: ' + course); 27 | 28 | (async () => { 29 | const browser = await puppeteer.launch({ 30 | headless: true, 31 | args: [ 32 | '--disable-web-security', 33 | '--disable-features=IsolateOrigins,site-per-process', 34 | '--no-sandbox', 35 | '--disable-dev-shm-usage', 36 | ] 37 | }); 38 | //init 39 | const page = await browser.newPage(); 40 | await page.setDefaultNavigationTimeout(0); 41 | await page.goto('https://wrem.sis.yorku.ca/Apps/WebObjects/REM.woa/wa/DirectAction/rem'); 42 | await page.setViewport({ width: 1080, height: 1024 }); 43 | 44 | await login(page); 45 | 46 | flag = true; 47 | while (flag) { 48 | //loop slect course 49 | 50 | if (course.length == 0) { 51 | console.log("INFO - No more courses to add"); 52 | break; 53 | } else { 54 | //random choose index 55 | var index = Math.floor(Math.random() * course.length); 56 | } 57 | 58 | await page.waitForTimeout(15000); 59 | await page.waitForSelector('input[name="5.1.27.1.23"]'); 60 | await page.click('input[name="5.1.27.1.23"]'); 61 | 62 | await page.waitForTimeout(15000); 63 | await page.type('input[name="5.1.27.7.7"]', course[index]); 64 | await page.click('input[name="5.1.27.7.9"]'); 65 | 66 | await page.waitForSelector('input[name="5.1.27.11.11"]'); 67 | await page.click('input[name="5.1.27.11.11"]'); 68 | 69 | 70 | const result = await page.waitForSelector('body > form > div:nth-child(1) > table > tbody > tr:nth-child(4) > td:nth-child(2) > table > tbody > tr > td > table:nth-child(4) > tbody > tr:nth-child(1) > td:nth-child(2) > span > font > b'); 71 | let text = await result.evaluate(result => result.textContent); 72 | text = text.trim(); 73 | var today = new Date(); 74 | var time = today.getHours() + ":" + today.getMinutes(); 75 | 76 | if (text === 'The course has been successfully added.') { 77 | flag = false; 78 | console.log(text); 79 | console.log("INFO - Course added: " + course.pop() + " " + username + " " + time); 80 | } else { 81 | resultText = text + " INFO: " + course[index] + " add fail " + username + " " + time + " left courses: " + course.length; 82 | console.log(resultText); 83 | } 84 | 85 | await page.waitForTimeout(15000); 86 | await page.waitForSelector('input[name="5.1.27.27.11"]'); 87 | await page.click('input[name="5.1.27.27.11"]'); 88 | 89 | 90 | 91 | // wait for 5 mins * 12 = 1 hour 92 | for (let i = 0; i < 12; i++) { 93 | await page.waitForTimeout(200000); 94 | await page.reload(); 95 | } 96 | 97 | } 98 | 99 | })(); 100 | 101 | async function login(page) { 102 | //login 103 | await page.type('#mli', username); 104 | await page.type('#password', password) 105 | const btn = '.btn.btn-lg.btn-primary'; 106 | await page.waitForSelector(btn); 107 | await page.click(btn); 108 | 109 | //duo 110 | await page.waitForTimeout(10000); 111 | const frames = page.frames(); 112 | const duoF = frames[1]; 113 | if (duoF) { 114 | await duoF.$eval('#passcode', el => el.click()); 115 | await duoF.$eval('.passcode-input', (el, duocode) => { el.value = duocode }, duocode); // YOUR DUO CODE GOES HERE 116 | await duoF.$eval('#passcode', el => el.click()); 117 | } 118 | 119 | console.log("Login Successed"); 120 | //select term 121 | await selectTerm(page); 122 | 123 | 124 | } 125 | 126 | async function selectTerm(page) { 127 | await page.waitForTimeout(10000); 128 | await page.select('select[name="5.5.1.27.1.11.0"]', '0'); //summer 129 | await page.waitForSelector('input[type=submit]'); 130 | await page.click('input[type=submit]'); 131 | } 132 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pup", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "pup", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "puppeteer": "^19.8.5" 13 | } 14 | }, 15 | "node_modules/@babel/code-frame": { 16 | "version": "7.21.4", 17 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 18 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 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/@puppeteer/browsers": { 48 | "version": "0.4.0", 49 | "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.4.0.tgz", 50 | "integrity": "sha512-3iB5pWn9Sr55PKKwqFWSWjLsTKCOEhKNI+uV3BZesgXuA3IhsX8I3hW0HI+3ksMIPkh2mVYzKSpvgq3oicjG2Q==", 51 | "dependencies": { 52 | "debug": "4.3.4", 53 | "extract-zip": "2.0.1", 54 | "https-proxy-agent": "5.0.1", 55 | "progress": "2.0.3", 56 | "proxy-from-env": "1.1.0", 57 | "tar-fs": "2.1.1", 58 | "unbzip2-stream": "1.4.3", 59 | "yargs": "17.7.1" 60 | }, 61 | "bin": { 62 | "browsers": "lib/cjs/main-cli.js" 63 | }, 64 | "engines": { 65 | "node": ">=14.1.0" 66 | }, 67 | "peerDependencies": { 68 | "typescript": ">= 4.7.4" 69 | }, 70 | "peerDependenciesMeta": { 71 | "typescript": { 72 | "optional": true 73 | } 74 | } 75 | }, 76 | "node_modules/@types/node": { 77 | "version": "18.15.11", 78 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", 79 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", 80 | "optional": true 81 | }, 82 | "node_modules/@types/yauzl": { 83 | "version": "2.10.0", 84 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 85 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 86 | "optional": true, 87 | "dependencies": { 88 | "@types/node": "*" 89 | } 90 | }, 91 | "node_modules/agent-base": { 92 | "version": "6.0.2", 93 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 94 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 95 | "dependencies": { 96 | "debug": "4" 97 | }, 98 | "engines": { 99 | "node": ">= 6.0.0" 100 | } 101 | }, 102 | "node_modules/ansi-regex": { 103 | "version": "5.0.1", 104 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 105 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 106 | "engines": { 107 | "node": ">=8" 108 | } 109 | }, 110 | "node_modules/ansi-styles": { 111 | "version": "3.2.1", 112 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 113 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 114 | "dependencies": { 115 | "color-convert": "^1.9.0" 116 | }, 117 | "engines": { 118 | "node": ">=4" 119 | } 120 | }, 121 | "node_modules/argparse": { 122 | "version": "2.0.1", 123 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 124 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 125 | }, 126 | "node_modules/base64-js": { 127 | "version": "1.5.1", 128 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 129 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 130 | "funding": [ 131 | { 132 | "type": "github", 133 | "url": "https://github.com/sponsors/feross" 134 | }, 135 | { 136 | "type": "patreon", 137 | "url": "https://www.patreon.com/feross" 138 | }, 139 | { 140 | "type": "consulting", 141 | "url": "https://feross.org/support" 142 | } 143 | ] 144 | }, 145 | "node_modules/bl": { 146 | "version": "4.1.0", 147 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 148 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 149 | "dependencies": { 150 | "buffer": "^5.5.0", 151 | "inherits": "^2.0.4", 152 | "readable-stream": "^3.4.0" 153 | } 154 | }, 155 | "node_modules/buffer": { 156 | "version": "5.7.1", 157 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 158 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 159 | "funding": [ 160 | { 161 | "type": "github", 162 | "url": "https://github.com/sponsors/feross" 163 | }, 164 | { 165 | "type": "patreon", 166 | "url": "https://www.patreon.com/feross" 167 | }, 168 | { 169 | "type": "consulting", 170 | "url": "https://feross.org/support" 171 | } 172 | ], 173 | "dependencies": { 174 | "base64-js": "^1.3.1", 175 | "ieee754": "^1.1.13" 176 | } 177 | }, 178 | "node_modules/buffer-crc32": { 179 | "version": "0.2.13", 180 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 181 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 182 | "engines": { 183 | "node": "*" 184 | } 185 | }, 186 | "node_modules/callsites": { 187 | "version": "3.1.0", 188 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 189 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 190 | "engines": { 191 | "node": ">=6" 192 | } 193 | }, 194 | "node_modules/chalk": { 195 | "version": "2.4.2", 196 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 197 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 198 | "dependencies": { 199 | "ansi-styles": "^3.2.1", 200 | "escape-string-regexp": "^1.0.5", 201 | "supports-color": "^5.3.0" 202 | }, 203 | "engines": { 204 | "node": ">=4" 205 | } 206 | }, 207 | "node_modules/chownr": { 208 | "version": "1.1.4", 209 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 210 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 211 | }, 212 | "node_modules/chromium-bidi": { 213 | "version": "0.4.6", 214 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.6.tgz", 215 | "integrity": "sha512-TQOkWRaLI/IWvoP8XC+7jO4uHTIiAUiklXU1T0qszlUFEai9LgKXIBXy3pOS3EnQZ3bQtMbKUPkug0fTAEHCSw==", 216 | "dependencies": { 217 | "mitt": "3.0.0" 218 | }, 219 | "peerDependencies": { 220 | "devtools-protocol": "*" 221 | } 222 | }, 223 | "node_modules/cliui": { 224 | "version": "8.0.1", 225 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 226 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 227 | "dependencies": { 228 | "string-width": "^4.2.0", 229 | "strip-ansi": "^6.0.1", 230 | "wrap-ansi": "^7.0.0" 231 | }, 232 | "engines": { 233 | "node": ">=12" 234 | } 235 | }, 236 | "node_modules/color-convert": { 237 | "version": "1.9.3", 238 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 239 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 240 | "dependencies": { 241 | "color-name": "1.1.3" 242 | } 243 | }, 244 | "node_modules/color-name": { 245 | "version": "1.1.3", 246 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 247 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 248 | }, 249 | "node_modules/cosmiconfig": { 250 | "version": "8.1.3", 251 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", 252 | "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", 253 | "dependencies": { 254 | "import-fresh": "^3.2.1", 255 | "js-yaml": "^4.1.0", 256 | "parse-json": "^5.0.0", 257 | "path-type": "^4.0.0" 258 | }, 259 | "engines": { 260 | "node": ">=14" 261 | }, 262 | "funding": { 263 | "url": "https://github.com/sponsors/d-fischer" 264 | } 265 | }, 266 | "node_modules/cross-fetch": { 267 | "version": "3.1.5", 268 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 269 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 270 | "dependencies": { 271 | "node-fetch": "2.6.7" 272 | } 273 | }, 274 | "node_modules/debug": { 275 | "version": "4.3.4", 276 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 277 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 278 | "dependencies": { 279 | "ms": "2.1.2" 280 | }, 281 | "engines": { 282 | "node": ">=6.0" 283 | }, 284 | "peerDependenciesMeta": { 285 | "supports-color": { 286 | "optional": true 287 | } 288 | } 289 | }, 290 | "node_modules/devtools-protocol": { 291 | "version": "0.0.1107588", 292 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", 293 | "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==" 294 | }, 295 | "node_modules/emoji-regex": { 296 | "version": "8.0.0", 297 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 298 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 299 | }, 300 | "node_modules/end-of-stream": { 301 | "version": "1.4.4", 302 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 303 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 304 | "dependencies": { 305 | "once": "^1.4.0" 306 | } 307 | }, 308 | "node_modules/error-ex": { 309 | "version": "1.3.2", 310 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 311 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 312 | "dependencies": { 313 | "is-arrayish": "^0.2.1" 314 | } 315 | }, 316 | "node_modules/escalade": { 317 | "version": "3.1.1", 318 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 319 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 320 | "engines": { 321 | "node": ">=6" 322 | } 323 | }, 324 | "node_modules/escape-string-regexp": { 325 | "version": "1.0.5", 326 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 327 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 328 | "engines": { 329 | "node": ">=0.8.0" 330 | } 331 | }, 332 | "node_modules/extract-zip": { 333 | "version": "2.0.1", 334 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 335 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 336 | "dependencies": { 337 | "debug": "^4.1.1", 338 | "get-stream": "^5.1.0", 339 | "yauzl": "^2.10.0" 340 | }, 341 | "bin": { 342 | "extract-zip": "cli.js" 343 | }, 344 | "engines": { 345 | "node": ">= 10.17.0" 346 | }, 347 | "optionalDependencies": { 348 | "@types/yauzl": "^2.9.1" 349 | } 350 | }, 351 | "node_modules/fd-slicer": { 352 | "version": "1.1.0", 353 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 354 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 355 | "dependencies": { 356 | "pend": "~1.2.0" 357 | } 358 | }, 359 | "node_modules/fs-constants": { 360 | "version": "1.0.0", 361 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 362 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 363 | }, 364 | "node_modules/get-caller-file": { 365 | "version": "2.0.5", 366 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 367 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 368 | "engines": { 369 | "node": "6.* || 8.* || >= 10.*" 370 | } 371 | }, 372 | "node_modules/get-stream": { 373 | "version": "5.2.0", 374 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 375 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 376 | "dependencies": { 377 | "pump": "^3.0.0" 378 | }, 379 | "engines": { 380 | "node": ">=8" 381 | }, 382 | "funding": { 383 | "url": "https://github.com/sponsors/sindresorhus" 384 | } 385 | }, 386 | "node_modules/has-flag": { 387 | "version": "3.0.0", 388 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 389 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 390 | "engines": { 391 | "node": ">=4" 392 | } 393 | }, 394 | "node_modules/https-proxy-agent": { 395 | "version": "5.0.1", 396 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 397 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 398 | "dependencies": { 399 | "agent-base": "6", 400 | "debug": "4" 401 | }, 402 | "engines": { 403 | "node": ">= 6" 404 | } 405 | }, 406 | "node_modules/ieee754": { 407 | "version": "1.2.1", 408 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 409 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 410 | "funding": [ 411 | { 412 | "type": "github", 413 | "url": "https://github.com/sponsors/feross" 414 | }, 415 | { 416 | "type": "patreon", 417 | "url": "https://www.patreon.com/feross" 418 | }, 419 | { 420 | "type": "consulting", 421 | "url": "https://feross.org/support" 422 | } 423 | ] 424 | }, 425 | "node_modules/import-fresh": { 426 | "version": "3.3.0", 427 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 428 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 429 | "dependencies": { 430 | "parent-module": "^1.0.0", 431 | "resolve-from": "^4.0.0" 432 | }, 433 | "engines": { 434 | "node": ">=6" 435 | }, 436 | "funding": { 437 | "url": "https://github.com/sponsors/sindresorhus" 438 | } 439 | }, 440 | "node_modules/inherits": { 441 | "version": "2.0.4", 442 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 443 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 444 | }, 445 | "node_modules/is-arrayish": { 446 | "version": "0.2.1", 447 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 448 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 449 | }, 450 | "node_modules/is-fullwidth-code-point": { 451 | "version": "3.0.0", 452 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 453 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 454 | "engines": { 455 | "node": ">=8" 456 | } 457 | }, 458 | "node_modules/js-tokens": { 459 | "version": "4.0.0", 460 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 461 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 462 | }, 463 | "node_modules/js-yaml": { 464 | "version": "4.1.0", 465 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 466 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 467 | "dependencies": { 468 | "argparse": "^2.0.1" 469 | }, 470 | "bin": { 471 | "js-yaml": "bin/js-yaml.js" 472 | } 473 | }, 474 | "node_modules/json-parse-even-better-errors": { 475 | "version": "2.3.1", 476 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 477 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 478 | }, 479 | "node_modules/lines-and-columns": { 480 | "version": "1.2.4", 481 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 482 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 483 | }, 484 | "node_modules/mitt": { 485 | "version": "3.0.0", 486 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 487 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" 488 | }, 489 | "node_modules/mkdirp-classic": { 490 | "version": "0.5.3", 491 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 492 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 493 | }, 494 | "node_modules/ms": { 495 | "version": "2.1.2", 496 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 497 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 498 | }, 499 | "node_modules/node-fetch": { 500 | "version": "2.6.7", 501 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 502 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 503 | "dependencies": { 504 | "whatwg-url": "^5.0.0" 505 | }, 506 | "engines": { 507 | "node": "4.x || >=6.0.0" 508 | }, 509 | "peerDependencies": { 510 | "encoding": "^0.1.0" 511 | }, 512 | "peerDependenciesMeta": { 513 | "encoding": { 514 | "optional": true 515 | } 516 | } 517 | }, 518 | "node_modules/once": { 519 | "version": "1.4.0", 520 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 521 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 522 | "dependencies": { 523 | "wrappy": "1" 524 | } 525 | }, 526 | "node_modules/parent-module": { 527 | "version": "1.0.1", 528 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 529 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 530 | "dependencies": { 531 | "callsites": "^3.0.0" 532 | }, 533 | "engines": { 534 | "node": ">=6" 535 | } 536 | }, 537 | "node_modules/parse-json": { 538 | "version": "5.2.0", 539 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 540 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 541 | "dependencies": { 542 | "@babel/code-frame": "^7.0.0", 543 | "error-ex": "^1.3.1", 544 | "json-parse-even-better-errors": "^2.3.0", 545 | "lines-and-columns": "^1.1.6" 546 | }, 547 | "engines": { 548 | "node": ">=8" 549 | }, 550 | "funding": { 551 | "url": "https://github.com/sponsors/sindresorhus" 552 | } 553 | }, 554 | "node_modules/path-type": { 555 | "version": "4.0.0", 556 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 557 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 558 | "engines": { 559 | "node": ">=8" 560 | } 561 | }, 562 | "node_modules/pend": { 563 | "version": "1.2.0", 564 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 565 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 566 | }, 567 | "node_modules/progress": { 568 | "version": "2.0.3", 569 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 570 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 571 | "engines": { 572 | "node": ">=0.4.0" 573 | } 574 | }, 575 | "node_modules/proxy-from-env": { 576 | "version": "1.1.0", 577 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 578 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 579 | }, 580 | "node_modules/pump": { 581 | "version": "3.0.0", 582 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 583 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 584 | "dependencies": { 585 | "end-of-stream": "^1.1.0", 586 | "once": "^1.3.1" 587 | } 588 | }, 589 | "node_modules/puppeteer": { 590 | "version": "19.8.5", 591 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.8.5.tgz", 592 | "integrity": "sha512-WSjouU7eux6cwBMEz4A7mDRVZWTQQTDXrb1R6AhKDdeEgpiBBkAzcAusPhILxiJOKj60rULZpWuCZ7HZIO6GTA==", 593 | "hasInstallScript": true, 594 | "dependencies": { 595 | "@puppeteer/browsers": "0.4.0", 596 | "cosmiconfig": "8.1.3", 597 | "https-proxy-agent": "5.0.1", 598 | "progress": "2.0.3", 599 | "proxy-from-env": "1.1.0", 600 | "puppeteer-core": "19.8.5" 601 | } 602 | }, 603 | "node_modules/puppeteer-core": { 604 | "version": "19.8.5", 605 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.8.5.tgz", 606 | "integrity": "sha512-zoGhim/oBQbkND6h4Xz4X7l5DkWVH9wH7z0mVty5qa/c0P1Yad47t/npVtt2xS10BiQwzztWKx7Pa2nJ5yykdw==", 607 | "dependencies": { 608 | "@puppeteer/browsers": "0.4.0", 609 | "chromium-bidi": "0.4.6", 610 | "cross-fetch": "3.1.5", 611 | "debug": "4.3.4", 612 | "devtools-protocol": "0.0.1107588", 613 | "extract-zip": "2.0.1", 614 | "https-proxy-agent": "5.0.1", 615 | "proxy-from-env": "1.1.0", 616 | "tar-fs": "2.1.1", 617 | "unbzip2-stream": "1.4.3", 618 | "ws": "8.13.0" 619 | }, 620 | "engines": { 621 | "node": ">=14.14.0" 622 | }, 623 | "peerDependencies": { 624 | "typescript": ">= 4.7.4" 625 | }, 626 | "peerDependenciesMeta": { 627 | "typescript": { 628 | "optional": true 629 | } 630 | } 631 | }, 632 | "node_modules/readable-stream": { 633 | "version": "3.6.2", 634 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 635 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 636 | "dependencies": { 637 | "inherits": "^2.0.3", 638 | "string_decoder": "^1.1.1", 639 | "util-deprecate": "^1.0.1" 640 | }, 641 | "engines": { 642 | "node": ">= 6" 643 | } 644 | }, 645 | "node_modules/require-directory": { 646 | "version": "2.1.1", 647 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 648 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 649 | "engines": { 650 | "node": ">=0.10.0" 651 | } 652 | }, 653 | "node_modules/resolve-from": { 654 | "version": "4.0.0", 655 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 656 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 657 | "engines": { 658 | "node": ">=4" 659 | } 660 | }, 661 | "node_modules/safe-buffer": { 662 | "version": "5.2.1", 663 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 664 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 665 | "funding": [ 666 | { 667 | "type": "github", 668 | "url": "https://github.com/sponsors/feross" 669 | }, 670 | { 671 | "type": "patreon", 672 | "url": "https://www.patreon.com/feross" 673 | }, 674 | { 675 | "type": "consulting", 676 | "url": "https://feross.org/support" 677 | } 678 | ] 679 | }, 680 | "node_modules/string_decoder": { 681 | "version": "1.3.0", 682 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 683 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 684 | "dependencies": { 685 | "safe-buffer": "~5.2.0" 686 | } 687 | }, 688 | "node_modules/string-width": { 689 | "version": "4.2.3", 690 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 691 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 692 | "dependencies": { 693 | "emoji-regex": "^8.0.0", 694 | "is-fullwidth-code-point": "^3.0.0", 695 | "strip-ansi": "^6.0.1" 696 | }, 697 | "engines": { 698 | "node": ">=8" 699 | } 700 | }, 701 | "node_modules/strip-ansi": { 702 | "version": "6.0.1", 703 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 704 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 705 | "dependencies": { 706 | "ansi-regex": "^5.0.1" 707 | }, 708 | "engines": { 709 | "node": ">=8" 710 | } 711 | }, 712 | "node_modules/supports-color": { 713 | "version": "5.5.0", 714 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 715 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 716 | "dependencies": { 717 | "has-flag": "^3.0.0" 718 | }, 719 | "engines": { 720 | "node": ">=4" 721 | } 722 | }, 723 | "node_modules/tar-fs": { 724 | "version": "2.1.1", 725 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 726 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 727 | "dependencies": { 728 | "chownr": "^1.1.1", 729 | "mkdirp-classic": "^0.5.2", 730 | "pump": "^3.0.0", 731 | "tar-stream": "^2.1.4" 732 | } 733 | }, 734 | "node_modules/tar-stream": { 735 | "version": "2.2.0", 736 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 737 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 738 | "dependencies": { 739 | "bl": "^4.0.3", 740 | "end-of-stream": "^1.4.1", 741 | "fs-constants": "^1.0.0", 742 | "inherits": "^2.0.3", 743 | "readable-stream": "^3.1.1" 744 | }, 745 | "engines": { 746 | "node": ">=6" 747 | } 748 | }, 749 | "node_modules/through": { 750 | "version": "2.3.8", 751 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 752 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 753 | }, 754 | "node_modules/tr46": { 755 | "version": "0.0.3", 756 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 757 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 758 | }, 759 | "node_modules/unbzip2-stream": { 760 | "version": "1.4.3", 761 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 762 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 763 | "dependencies": { 764 | "buffer": "^5.2.1", 765 | "through": "^2.3.8" 766 | } 767 | }, 768 | "node_modules/util-deprecate": { 769 | "version": "1.0.2", 770 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 771 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 772 | }, 773 | "node_modules/webidl-conversions": { 774 | "version": "3.0.1", 775 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 776 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 777 | }, 778 | "node_modules/whatwg-url": { 779 | "version": "5.0.0", 780 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 781 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 782 | "dependencies": { 783 | "tr46": "~0.0.3", 784 | "webidl-conversions": "^3.0.0" 785 | } 786 | }, 787 | "node_modules/wrap-ansi": { 788 | "version": "7.0.0", 789 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 790 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 791 | "dependencies": { 792 | "ansi-styles": "^4.0.0", 793 | "string-width": "^4.1.0", 794 | "strip-ansi": "^6.0.0" 795 | }, 796 | "engines": { 797 | "node": ">=10" 798 | }, 799 | "funding": { 800 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 801 | } 802 | }, 803 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 804 | "version": "4.3.0", 805 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 806 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 807 | "dependencies": { 808 | "color-convert": "^2.0.1" 809 | }, 810 | "engines": { 811 | "node": ">=8" 812 | }, 813 | "funding": { 814 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 815 | } 816 | }, 817 | "node_modules/wrap-ansi/node_modules/color-convert": { 818 | "version": "2.0.1", 819 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 820 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 821 | "dependencies": { 822 | "color-name": "~1.1.4" 823 | }, 824 | "engines": { 825 | "node": ">=7.0.0" 826 | } 827 | }, 828 | "node_modules/wrap-ansi/node_modules/color-name": { 829 | "version": "1.1.4", 830 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 831 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 832 | }, 833 | "node_modules/wrappy": { 834 | "version": "1.0.2", 835 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 836 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 837 | }, 838 | "node_modules/ws": { 839 | "version": "8.13.0", 840 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 841 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 842 | "engines": { 843 | "node": ">=10.0.0" 844 | }, 845 | "peerDependencies": { 846 | "bufferutil": "^4.0.1", 847 | "utf-8-validate": ">=5.0.2" 848 | }, 849 | "peerDependenciesMeta": { 850 | "bufferutil": { 851 | "optional": true 852 | }, 853 | "utf-8-validate": { 854 | "optional": true 855 | } 856 | } 857 | }, 858 | "node_modules/y18n": { 859 | "version": "5.0.8", 860 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 861 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 862 | "engines": { 863 | "node": ">=10" 864 | } 865 | }, 866 | "node_modules/yargs": { 867 | "version": "17.7.1", 868 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", 869 | "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", 870 | "dependencies": { 871 | "cliui": "^8.0.1", 872 | "escalade": "^3.1.1", 873 | "get-caller-file": "^2.0.5", 874 | "require-directory": "^2.1.1", 875 | "string-width": "^4.2.3", 876 | "y18n": "^5.0.5", 877 | "yargs-parser": "^21.1.1" 878 | }, 879 | "engines": { 880 | "node": ">=12" 881 | } 882 | }, 883 | "node_modules/yargs-parser": { 884 | "version": "21.1.1", 885 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 886 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 887 | "engines": { 888 | "node": ">=12" 889 | } 890 | }, 891 | "node_modules/yauzl": { 892 | "version": "2.10.0", 893 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 894 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 895 | "dependencies": { 896 | "buffer-crc32": "~0.2.3", 897 | "fd-slicer": "~1.1.0" 898 | } 899 | } 900 | } 901 | } 902 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pup", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "puppeteer": "^19.8.5" 13 | } 14 | } 15 | --------------------------------------------------------------------------------