├── .gitignore ├── Build.bat ├── LICENSE.md ├── README.md ├── Start.bat ├── package-lock.json ├── package.json └── src ├── app.js ├── ask.js ├── chrome.js ├── index.js ├── links.json ├── log.js ├── password.js ├── registration.js └── storage.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | mails.txt 4 | registeredMails.txt 5 | settings.json -------------------------------------------------------------------------------- /Build.bat: -------------------------------------------------------------------------------- 1 | nexe src/index.js --build --verbose -t windows --python=C:\My\Programs\Python3 --name=RamblerAutoReg 2 | pause -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | “Commons Clause” License Condition v1.0 2 | 3 | The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition. 4 | 5 | Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software. 6 | 7 | For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Clause License Condition notice. 8 | 9 | Software: RamblerAutoReg 10 | 11 | License: Apache 2.0 12 | 13 | Licensor: NightStranger 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | RamblerAutoReg 3 |

4 | 5 |

6 | Program for automatic mail registration on rambler (autoreg/autoreger) 7 |

8 | 9 | ![](https://i.ibb.co/JkmBVvF/2022-08-23-130306568.png) 10 | 11 | ## ⚡ **Installation** 12 | 13 | 1. Install **[Google Chrome](https://www.google.com/intl/en/chrome/)**. 14 | 2. Install **[Node.JS](https://nodejs.org/en/)**. 15 | 3. Download this **[repository](https://github.com/NightStrang6r/RamblerAutoReg)** (green button `CODE`, then `Download zip`). 16 | 4. Unzip it to any folder. 17 | 5. Run the `Start.bat` file, this will install dependencies for the program to work. Then run this file again and follow the prompts of the program. Installation complete! 18 | 19 | ## 📧 Contacts 20 | If you have any questions, I will be glad to answer. 21 | 22 | - Telegram - [@NightStrang6r](https://t.me/NightStrang6r) 23 | - Discord - 𝓝𝓲𝓰𝓱𝓽𝓢𝓽𝓻𝓪𝓷𝓰𝓮𝓻#0015 24 | 25 | ## 🎉 Did you like the app? 26 | 27 | Rate this repository by putting a star in the upper right corner of the page on GitHub (you need to be logged into your account). This gives me motivation to develop this project. 28 | 29 | ![](https://i.ibb.co/x3hFFvf/2022-08-18-132617815.png) 30 | 31 | You can also support the developer financially to speed up the release of future updates: 32 | 33 | - [Monobank](https://send.monobank.ua/jar/7fiVkcrWYv) 34 | - [DonationAlerts](https://www.donationalerts.com/r/nightstranger) 35 | - [ЮMoney](https://sobe.ru/na/U2B2K0R852D3) -------------------------------------------------------------------------------- /Start.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | @if not exist "node_modules" ( 3 | echo Installing... 4 | npm i 5 | ) 6 | node . 7 | pause -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autorambler", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "autorambler", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "chalk": "^5.0.1", 13 | "get-chrome": "^0.0.2", 14 | "inquirer": "^9.1.0", 15 | "puppeteer": "^13.5.1" 16 | } 17 | }, 18 | "node_modules/@types/node": { 19 | "version": "17.0.23", 20 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", 21 | "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", 22 | "optional": true 23 | }, 24 | "node_modules/@types/yauzl": { 25 | "version": "2.9.2", 26 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 27 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 28 | "optional": true, 29 | "dependencies": { 30 | "@types/node": "*" 31 | } 32 | }, 33 | "node_modules/agent-base": { 34 | "version": "6.0.2", 35 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 36 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 37 | "dependencies": { 38 | "debug": "4" 39 | }, 40 | "engines": { 41 | "node": ">= 6.0.0" 42 | } 43 | }, 44 | "node_modules/ansi-escapes": { 45 | "version": "5.0.0", 46 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", 47 | "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", 48 | "dependencies": { 49 | "type-fest": "^1.0.2" 50 | }, 51 | "engines": { 52 | "node": ">=12" 53 | }, 54 | "funding": { 55 | "url": "https://github.com/sponsors/sindresorhus" 56 | } 57 | }, 58 | "node_modules/ansi-regex": { 59 | "version": "6.0.1", 60 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 61 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 62 | "engines": { 63 | "node": ">=12" 64 | }, 65 | "funding": { 66 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 67 | } 68 | }, 69 | "node_modules/balanced-match": { 70 | "version": "1.0.2", 71 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 72 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 73 | }, 74 | "node_modules/base64-js": { 75 | "version": "1.5.1", 76 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 77 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 78 | "funding": [ 79 | { 80 | "type": "github", 81 | "url": "https://github.com/sponsors/feross" 82 | }, 83 | { 84 | "type": "patreon", 85 | "url": "https://www.patreon.com/feross" 86 | }, 87 | { 88 | "type": "consulting", 89 | "url": "https://feross.org/support" 90 | } 91 | ] 92 | }, 93 | "node_modules/bl": { 94 | "version": "4.1.0", 95 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 96 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 97 | "dependencies": { 98 | "buffer": "^5.5.0", 99 | "inherits": "^2.0.4", 100 | "readable-stream": "^3.4.0" 101 | } 102 | }, 103 | "node_modules/brace-expansion": { 104 | "version": "1.1.11", 105 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 106 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 107 | "dependencies": { 108 | "balanced-match": "^1.0.0", 109 | "concat-map": "0.0.1" 110 | } 111 | }, 112 | "node_modules/buffer": { 113 | "version": "5.7.1", 114 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 115 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 116 | "funding": [ 117 | { 118 | "type": "github", 119 | "url": "https://github.com/sponsors/feross" 120 | }, 121 | { 122 | "type": "patreon", 123 | "url": "https://www.patreon.com/feross" 124 | }, 125 | { 126 | "type": "consulting", 127 | "url": "https://feross.org/support" 128 | } 129 | ], 130 | "dependencies": { 131 | "base64-js": "^1.3.1", 132 | "ieee754": "^1.1.13" 133 | } 134 | }, 135 | "node_modules/buffer-crc32": { 136 | "version": "0.2.13", 137 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 138 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 139 | "engines": { 140 | "node": "*" 141 | } 142 | }, 143 | "node_modules/chalk": { 144 | "version": "5.0.1", 145 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", 146 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", 147 | "engines": { 148 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 149 | }, 150 | "funding": { 151 | "url": "https://github.com/chalk/chalk?sponsor=1" 152 | } 153 | }, 154 | "node_modules/chardet": { 155 | "version": "0.7.0", 156 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 157 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 158 | }, 159 | "node_modules/chownr": { 160 | "version": "1.1.4", 161 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 162 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 163 | }, 164 | "node_modules/cli-cursor": { 165 | "version": "4.0.0", 166 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 167 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 168 | "dependencies": { 169 | "restore-cursor": "^4.0.0" 170 | }, 171 | "engines": { 172 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 173 | }, 174 | "funding": { 175 | "url": "https://github.com/sponsors/sindresorhus" 176 | } 177 | }, 178 | "node_modules/cli-spinners": { 179 | "version": "2.7.0", 180 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", 181 | "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", 182 | "engines": { 183 | "node": ">=6" 184 | }, 185 | "funding": { 186 | "url": "https://github.com/sponsors/sindresorhus" 187 | } 188 | }, 189 | "node_modules/cli-width": { 190 | "version": "4.0.0", 191 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", 192 | "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", 193 | "engines": { 194 | "node": ">= 12" 195 | } 196 | }, 197 | "node_modules/clone": { 198 | "version": "1.0.4", 199 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 200 | "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", 201 | "engines": { 202 | "node": ">=0.8" 203 | } 204 | }, 205 | "node_modules/concat-map": { 206 | "version": "0.0.1", 207 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 208 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 209 | }, 210 | "node_modules/cross-fetch": { 211 | "version": "3.1.5", 212 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 213 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 214 | "dependencies": { 215 | "node-fetch": "2.6.7" 216 | } 217 | }, 218 | "node_modules/debug": { 219 | "version": "4.3.3", 220 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 221 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 222 | "dependencies": { 223 | "ms": "2.1.2" 224 | }, 225 | "engines": { 226 | "node": ">=6.0" 227 | }, 228 | "peerDependenciesMeta": { 229 | "supports-color": { 230 | "optional": true 231 | } 232 | } 233 | }, 234 | "node_modules/defaults": { 235 | "version": "1.0.3", 236 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 237 | "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", 238 | "dependencies": { 239 | "clone": "^1.0.2" 240 | } 241 | }, 242 | "node_modules/devtools-protocol": { 243 | "version": "0.0.969999", 244 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", 245 | "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==" 246 | }, 247 | "node_modules/eastasianwidth": { 248 | "version": "0.2.0", 249 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 250 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 251 | }, 252 | "node_modules/emoji-regex": { 253 | "version": "9.2.2", 254 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 255 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 256 | }, 257 | "node_modules/end-of-stream": { 258 | "version": "1.4.4", 259 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 260 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 261 | "dependencies": { 262 | "once": "^1.4.0" 263 | } 264 | }, 265 | "node_modules/external-editor": { 266 | "version": "3.1.0", 267 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 268 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 269 | "dependencies": { 270 | "chardet": "^0.7.0", 271 | "iconv-lite": "^0.4.24", 272 | "tmp": "^0.0.33" 273 | }, 274 | "engines": { 275 | "node": ">=4" 276 | } 277 | }, 278 | "node_modules/extract-zip": { 279 | "version": "2.0.1", 280 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 281 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 282 | "dependencies": { 283 | "debug": "^4.1.1", 284 | "get-stream": "^5.1.0", 285 | "yauzl": "^2.10.0" 286 | }, 287 | "bin": { 288 | "extract-zip": "cli.js" 289 | }, 290 | "engines": { 291 | "node": ">= 10.17.0" 292 | }, 293 | "optionalDependencies": { 294 | "@types/yauzl": "^2.9.1" 295 | } 296 | }, 297 | "node_modules/fd-slicer": { 298 | "version": "1.1.0", 299 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 300 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 301 | "dependencies": { 302 | "pend": "~1.2.0" 303 | } 304 | }, 305 | "node_modules/figures": { 306 | "version": "4.0.1", 307 | "resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz", 308 | "integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==", 309 | "dependencies": { 310 | "escape-string-regexp": "^5.0.0", 311 | "is-unicode-supported": "^1.2.0" 312 | }, 313 | "engines": { 314 | "node": ">=12" 315 | }, 316 | "funding": { 317 | "url": "https://github.com/sponsors/sindresorhus" 318 | } 319 | }, 320 | "node_modules/figures/node_modules/escape-string-regexp": { 321 | "version": "5.0.0", 322 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 323 | "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 324 | "engines": { 325 | "node": ">=12" 326 | }, 327 | "funding": { 328 | "url": "https://github.com/sponsors/sindresorhus" 329 | } 330 | }, 331 | "node_modules/find-up": { 332 | "version": "4.1.0", 333 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 334 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 335 | "dependencies": { 336 | "locate-path": "^5.0.0", 337 | "path-exists": "^4.0.0" 338 | }, 339 | "engines": { 340 | "node": ">=8" 341 | } 342 | }, 343 | "node_modules/fs-constants": { 344 | "version": "1.0.0", 345 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 346 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 347 | }, 348 | "node_modules/fs.realpath": { 349 | "version": "1.0.0", 350 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 351 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 352 | }, 353 | "node_modules/get-chrome": { 354 | "version": "0.0.2", 355 | "resolved": "https://registry.npmjs.org/get-chrome/-/get-chrome-0.0.2.tgz", 356 | "integrity": "sha512-OSPmQqTS6l6JndHoxZ1F6IPbeUMGsbL1qTjj5xY0Tl718wjgb8A/0sxIDk28OfJKvlpAz3M8jz1ZVrdI8+QDcw==", 357 | "dependencies": { 358 | "is-wsl": "^1.1.0", 359 | "lighthouse-logger": "^1.0.1" 360 | } 361 | }, 362 | "node_modules/get-stream": { 363 | "version": "5.2.0", 364 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 365 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 366 | "dependencies": { 367 | "pump": "^3.0.0" 368 | }, 369 | "engines": { 370 | "node": ">=8" 371 | }, 372 | "funding": { 373 | "url": "https://github.com/sponsors/sindresorhus" 374 | } 375 | }, 376 | "node_modules/glob": { 377 | "version": "7.2.0", 378 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 379 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 380 | "dependencies": { 381 | "fs.realpath": "^1.0.0", 382 | "inflight": "^1.0.4", 383 | "inherits": "2", 384 | "minimatch": "^3.0.4", 385 | "once": "^1.3.0", 386 | "path-is-absolute": "^1.0.0" 387 | }, 388 | "engines": { 389 | "node": "*" 390 | }, 391 | "funding": { 392 | "url": "https://github.com/sponsors/isaacs" 393 | } 394 | }, 395 | "node_modules/https-proxy-agent": { 396 | "version": "5.0.0", 397 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 398 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 399 | "dependencies": { 400 | "agent-base": "6", 401 | "debug": "4" 402 | }, 403 | "engines": { 404 | "node": ">= 6" 405 | } 406 | }, 407 | "node_modules/iconv-lite": { 408 | "version": "0.4.24", 409 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 410 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 411 | "dependencies": { 412 | "safer-buffer": ">= 2.1.2 < 3" 413 | }, 414 | "engines": { 415 | "node": ">=0.10.0" 416 | } 417 | }, 418 | "node_modules/ieee754": { 419 | "version": "1.2.1", 420 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 421 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 422 | "funding": [ 423 | { 424 | "type": "github", 425 | "url": "https://github.com/sponsors/feross" 426 | }, 427 | { 428 | "type": "patreon", 429 | "url": "https://www.patreon.com/feross" 430 | }, 431 | { 432 | "type": "consulting", 433 | "url": "https://feross.org/support" 434 | } 435 | ] 436 | }, 437 | "node_modules/inflight": { 438 | "version": "1.0.6", 439 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 440 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 441 | "dependencies": { 442 | "once": "^1.3.0", 443 | "wrappy": "1" 444 | } 445 | }, 446 | "node_modules/inherits": { 447 | "version": "2.0.4", 448 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 449 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 450 | }, 451 | "node_modules/inquirer": { 452 | "version": "9.1.0", 453 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.0.tgz", 454 | "integrity": "sha512-eukdjrBljg9t55ZnvJjvGi1OyYEzVBFsO/8o5d2MV3mc28u3x4X2kS4eJ/+9U10KiREfPkEBSeCrU/S2G/uRtw==", 455 | "dependencies": { 456 | "ansi-escapes": "^5.0.0", 457 | "chalk": "^5.0.1", 458 | "cli-cursor": "^4.0.0", 459 | "cli-width": "^4.0.0", 460 | "external-editor": "^3.0.3", 461 | "figures": "^4.0.1", 462 | "lodash": "^4.17.21", 463 | "mute-stream": "0.0.8", 464 | "ora": "^6.1.2", 465 | "run-async": "^2.4.0", 466 | "rxjs": "^7.5.6", 467 | "string-width": "^5.1.2", 468 | "strip-ansi": "^7.0.1", 469 | "through": "^2.3.6", 470 | "wrap-ansi": "^8.0.1" 471 | }, 472 | "engines": { 473 | "node": ">=12.0.0" 474 | } 475 | }, 476 | "node_modules/is-interactive": { 477 | "version": "2.0.0", 478 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", 479 | "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", 480 | "engines": { 481 | "node": ">=12" 482 | }, 483 | "funding": { 484 | "url": "https://github.com/sponsors/sindresorhus" 485 | } 486 | }, 487 | "node_modules/is-unicode-supported": { 488 | "version": "1.2.0", 489 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.2.0.tgz", 490 | "integrity": "sha512-wH+U77omcRzevfIG8dDhTS0V9zZyweakfD01FULl97+0EHiJTTZtJqxPSkIIo/SDPv/i07k/C9jAPY+jwLLeUQ==", 491 | "engines": { 492 | "node": ">=12" 493 | }, 494 | "funding": { 495 | "url": "https://github.com/sponsors/sindresorhus" 496 | } 497 | }, 498 | "node_modules/is-wsl": { 499 | "version": "1.1.0", 500 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 501 | "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", 502 | "engines": { 503 | "node": ">=4" 504 | } 505 | }, 506 | "node_modules/lighthouse-logger": { 507 | "version": "1.3.0", 508 | "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", 509 | "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", 510 | "dependencies": { 511 | "debug": "^2.6.9", 512 | "marky": "^1.2.2" 513 | } 514 | }, 515 | "node_modules/lighthouse-logger/node_modules/debug": { 516 | "version": "2.6.9", 517 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 518 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 519 | "dependencies": { 520 | "ms": "2.0.0" 521 | } 522 | }, 523 | "node_modules/lighthouse-logger/node_modules/ms": { 524 | "version": "2.0.0", 525 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 526 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 527 | }, 528 | "node_modules/locate-path": { 529 | "version": "5.0.0", 530 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 531 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 532 | "dependencies": { 533 | "p-locate": "^4.1.0" 534 | }, 535 | "engines": { 536 | "node": ">=8" 537 | } 538 | }, 539 | "node_modules/lodash": { 540 | "version": "4.17.21", 541 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 542 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 543 | }, 544 | "node_modules/log-symbols": { 545 | "version": "5.1.0", 546 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", 547 | "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", 548 | "dependencies": { 549 | "chalk": "^5.0.0", 550 | "is-unicode-supported": "^1.1.0" 551 | }, 552 | "engines": { 553 | "node": ">=12" 554 | }, 555 | "funding": { 556 | "url": "https://github.com/sponsors/sindresorhus" 557 | } 558 | }, 559 | "node_modules/marky": { 560 | "version": "1.2.5", 561 | "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", 562 | "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==" 563 | }, 564 | "node_modules/mimic-fn": { 565 | "version": "2.1.0", 566 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 567 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 568 | "engines": { 569 | "node": ">=6" 570 | } 571 | }, 572 | "node_modules/minimatch": { 573 | "version": "3.1.2", 574 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 575 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 576 | "dependencies": { 577 | "brace-expansion": "^1.1.7" 578 | }, 579 | "engines": { 580 | "node": "*" 581 | } 582 | }, 583 | "node_modules/mkdirp-classic": { 584 | "version": "0.5.3", 585 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 586 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 587 | }, 588 | "node_modules/ms": { 589 | "version": "2.1.2", 590 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 591 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 592 | }, 593 | "node_modules/mute-stream": { 594 | "version": "0.0.8", 595 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 596 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 597 | }, 598 | "node_modules/node-fetch": { 599 | "version": "2.6.7", 600 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 601 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 602 | "dependencies": { 603 | "whatwg-url": "^5.0.0" 604 | }, 605 | "engines": { 606 | "node": "4.x || >=6.0.0" 607 | }, 608 | "peerDependencies": { 609 | "encoding": "^0.1.0" 610 | }, 611 | "peerDependenciesMeta": { 612 | "encoding": { 613 | "optional": true 614 | } 615 | } 616 | }, 617 | "node_modules/once": { 618 | "version": "1.4.0", 619 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 620 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 621 | "dependencies": { 622 | "wrappy": "1" 623 | } 624 | }, 625 | "node_modules/onetime": { 626 | "version": "5.1.2", 627 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 628 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 629 | "dependencies": { 630 | "mimic-fn": "^2.1.0" 631 | }, 632 | "engines": { 633 | "node": ">=6" 634 | }, 635 | "funding": { 636 | "url": "https://github.com/sponsors/sindresorhus" 637 | } 638 | }, 639 | "node_modules/ora": { 640 | "version": "6.1.2", 641 | "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", 642 | "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", 643 | "dependencies": { 644 | "bl": "^5.0.0", 645 | "chalk": "^5.0.0", 646 | "cli-cursor": "^4.0.0", 647 | "cli-spinners": "^2.6.1", 648 | "is-interactive": "^2.0.0", 649 | "is-unicode-supported": "^1.1.0", 650 | "log-symbols": "^5.1.0", 651 | "strip-ansi": "^7.0.1", 652 | "wcwidth": "^1.0.1" 653 | }, 654 | "engines": { 655 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 656 | }, 657 | "funding": { 658 | "url": "https://github.com/sponsors/sindresorhus" 659 | } 660 | }, 661 | "node_modules/ora/node_modules/bl": { 662 | "version": "5.0.0", 663 | "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", 664 | "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", 665 | "dependencies": { 666 | "buffer": "^6.0.3", 667 | "inherits": "^2.0.4", 668 | "readable-stream": "^3.4.0" 669 | } 670 | }, 671 | "node_modules/ora/node_modules/buffer": { 672 | "version": "6.0.3", 673 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 674 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 675 | "funding": [ 676 | { 677 | "type": "github", 678 | "url": "https://github.com/sponsors/feross" 679 | }, 680 | { 681 | "type": "patreon", 682 | "url": "https://www.patreon.com/feross" 683 | }, 684 | { 685 | "type": "consulting", 686 | "url": "https://feross.org/support" 687 | } 688 | ], 689 | "dependencies": { 690 | "base64-js": "^1.3.1", 691 | "ieee754": "^1.2.1" 692 | } 693 | }, 694 | "node_modules/os-tmpdir": { 695 | "version": "1.0.2", 696 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 697 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 698 | "engines": { 699 | "node": ">=0.10.0" 700 | } 701 | }, 702 | "node_modules/p-limit": { 703 | "version": "2.3.0", 704 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 705 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 706 | "dependencies": { 707 | "p-try": "^2.0.0" 708 | }, 709 | "engines": { 710 | "node": ">=6" 711 | }, 712 | "funding": { 713 | "url": "https://github.com/sponsors/sindresorhus" 714 | } 715 | }, 716 | "node_modules/p-locate": { 717 | "version": "4.1.0", 718 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 719 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 720 | "dependencies": { 721 | "p-limit": "^2.2.0" 722 | }, 723 | "engines": { 724 | "node": ">=8" 725 | } 726 | }, 727 | "node_modules/p-try": { 728 | "version": "2.2.0", 729 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 730 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 731 | "engines": { 732 | "node": ">=6" 733 | } 734 | }, 735 | "node_modules/path-exists": { 736 | "version": "4.0.0", 737 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 738 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 739 | "engines": { 740 | "node": ">=8" 741 | } 742 | }, 743 | "node_modules/path-is-absolute": { 744 | "version": "1.0.1", 745 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 746 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 747 | "engines": { 748 | "node": ">=0.10.0" 749 | } 750 | }, 751 | "node_modules/pend": { 752 | "version": "1.2.0", 753 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 754 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 755 | }, 756 | "node_modules/pkg-dir": { 757 | "version": "4.2.0", 758 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 759 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 760 | "dependencies": { 761 | "find-up": "^4.0.0" 762 | }, 763 | "engines": { 764 | "node": ">=8" 765 | } 766 | }, 767 | "node_modules/progress": { 768 | "version": "2.0.3", 769 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 770 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 771 | "engines": { 772 | "node": ">=0.4.0" 773 | } 774 | }, 775 | "node_modules/proxy-from-env": { 776 | "version": "1.1.0", 777 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 778 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 779 | }, 780 | "node_modules/pump": { 781 | "version": "3.0.0", 782 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 783 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 784 | "dependencies": { 785 | "end-of-stream": "^1.1.0", 786 | "once": "^1.3.1" 787 | } 788 | }, 789 | "node_modules/puppeteer": { 790 | "version": "13.5.1", 791 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.5.1.tgz", 792 | "integrity": "sha512-wWxO//vMiqxlvuzHMAJ0pRJeDHvDtM7DQpW1GKdStz2nZo2G42kOXBDgkmQ+zqjwMCFofKGesBeeKxIkX9BO+w==", 793 | "hasInstallScript": true, 794 | "dependencies": { 795 | "cross-fetch": "3.1.5", 796 | "debug": "4.3.3", 797 | "devtools-protocol": "0.0.969999", 798 | "extract-zip": "2.0.1", 799 | "https-proxy-agent": "5.0.0", 800 | "pkg-dir": "4.2.0", 801 | "progress": "2.0.3", 802 | "proxy-from-env": "1.1.0", 803 | "rimraf": "3.0.2", 804 | "tar-fs": "2.1.1", 805 | "unbzip2-stream": "1.4.3", 806 | "ws": "8.5.0" 807 | }, 808 | "engines": { 809 | "node": ">=10.18.1" 810 | } 811 | }, 812 | "node_modules/readable-stream": { 813 | "version": "3.6.0", 814 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 815 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 816 | "dependencies": { 817 | "inherits": "^2.0.3", 818 | "string_decoder": "^1.1.1", 819 | "util-deprecate": "^1.0.1" 820 | }, 821 | "engines": { 822 | "node": ">= 6" 823 | } 824 | }, 825 | "node_modules/restore-cursor": { 826 | "version": "4.0.0", 827 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 828 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 829 | "dependencies": { 830 | "onetime": "^5.1.0", 831 | "signal-exit": "^3.0.2" 832 | }, 833 | "engines": { 834 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 835 | }, 836 | "funding": { 837 | "url": "https://github.com/sponsors/sindresorhus" 838 | } 839 | }, 840 | "node_modules/rimraf": { 841 | "version": "3.0.2", 842 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 843 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 844 | "dependencies": { 845 | "glob": "^7.1.3" 846 | }, 847 | "bin": { 848 | "rimraf": "bin.js" 849 | }, 850 | "funding": { 851 | "url": "https://github.com/sponsors/isaacs" 852 | } 853 | }, 854 | "node_modules/run-async": { 855 | "version": "2.4.1", 856 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 857 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 858 | "engines": { 859 | "node": ">=0.12.0" 860 | } 861 | }, 862 | "node_modules/rxjs": { 863 | "version": "7.5.6", 864 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", 865 | "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", 866 | "dependencies": { 867 | "tslib": "^2.1.0" 868 | } 869 | }, 870 | "node_modules/safe-buffer": { 871 | "version": "5.2.1", 872 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 873 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 874 | "funding": [ 875 | { 876 | "type": "github", 877 | "url": "https://github.com/sponsors/feross" 878 | }, 879 | { 880 | "type": "patreon", 881 | "url": "https://www.patreon.com/feross" 882 | }, 883 | { 884 | "type": "consulting", 885 | "url": "https://feross.org/support" 886 | } 887 | ] 888 | }, 889 | "node_modules/safer-buffer": { 890 | "version": "2.1.2", 891 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 892 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 893 | }, 894 | "node_modules/signal-exit": { 895 | "version": "3.0.7", 896 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 897 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 898 | }, 899 | "node_modules/string_decoder": { 900 | "version": "1.3.0", 901 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 902 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 903 | "dependencies": { 904 | "safe-buffer": "~5.2.0" 905 | } 906 | }, 907 | "node_modules/string-width": { 908 | "version": "5.1.2", 909 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 910 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 911 | "dependencies": { 912 | "eastasianwidth": "^0.2.0", 913 | "emoji-regex": "^9.2.2", 914 | "strip-ansi": "^7.0.1" 915 | }, 916 | "engines": { 917 | "node": ">=12" 918 | }, 919 | "funding": { 920 | "url": "https://github.com/sponsors/sindresorhus" 921 | } 922 | }, 923 | "node_modules/strip-ansi": { 924 | "version": "7.0.1", 925 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 926 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 927 | "dependencies": { 928 | "ansi-regex": "^6.0.1" 929 | }, 930 | "engines": { 931 | "node": ">=12" 932 | }, 933 | "funding": { 934 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 935 | } 936 | }, 937 | "node_modules/tar-fs": { 938 | "version": "2.1.1", 939 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 940 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 941 | "dependencies": { 942 | "chownr": "^1.1.1", 943 | "mkdirp-classic": "^0.5.2", 944 | "pump": "^3.0.0", 945 | "tar-stream": "^2.1.4" 946 | } 947 | }, 948 | "node_modules/tar-stream": { 949 | "version": "2.2.0", 950 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 951 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 952 | "dependencies": { 953 | "bl": "^4.0.3", 954 | "end-of-stream": "^1.4.1", 955 | "fs-constants": "^1.0.0", 956 | "inherits": "^2.0.3", 957 | "readable-stream": "^3.1.1" 958 | }, 959 | "engines": { 960 | "node": ">=6" 961 | } 962 | }, 963 | "node_modules/through": { 964 | "version": "2.3.8", 965 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 966 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 967 | }, 968 | "node_modules/tmp": { 969 | "version": "0.0.33", 970 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 971 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 972 | "dependencies": { 973 | "os-tmpdir": "~1.0.2" 974 | }, 975 | "engines": { 976 | "node": ">=0.6.0" 977 | } 978 | }, 979 | "node_modules/tr46": { 980 | "version": "0.0.3", 981 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 982 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 983 | }, 984 | "node_modules/tslib": { 985 | "version": "2.4.0", 986 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 987 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 988 | }, 989 | "node_modules/type-fest": { 990 | "version": "1.4.0", 991 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 992 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 993 | "engines": { 994 | "node": ">=10" 995 | }, 996 | "funding": { 997 | "url": "https://github.com/sponsors/sindresorhus" 998 | } 999 | }, 1000 | "node_modules/unbzip2-stream": { 1001 | "version": "1.4.3", 1002 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1003 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1004 | "dependencies": { 1005 | "buffer": "^5.2.1", 1006 | "through": "^2.3.8" 1007 | } 1008 | }, 1009 | "node_modules/util-deprecate": { 1010 | "version": "1.0.2", 1011 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1012 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1013 | }, 1014 | "node_modules/wcwidth": { 1015 | "version": "1.0.1", 1016 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 1017 | "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", 1018 | "dependencies": { 1019 | "defaults": "^1.0.3" 1020 | } 1021 | }, 1022 | "node_modules/webidl-conversions": { 1023 | "version": "3.0.1", 1024 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1025 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1026 | }, 1027 | "node_modules/whatwg-url": { 1028 | "version": "5.0.0", 1029 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1030 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1031 | "dependencies": { 1032 | "tr46": "~0.0.3", 1033 | "webidl-conversions": "^3.0.0" 1034 | } 1035 | }, 1036 | "node_modules/wrap-ansi": { 1037 | "version": "8.0.1", 1038 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", 1039 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", 1040 | "dependencies": { 1041 | "ansi-styles": "^6.1.0", 1042 | "string-width": "^5.0.1", 1043 | "strip-ansi": "^7.0.1" 1044 | }, 1045 | "engines": { 1046 | "node": ">=12" 1047 | }, 1048 | "funding": { 1049 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1050 | } 1051 | }, 1052 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 1053 | "version": "6.1.0", 1054 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", 1055 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", 1056 | "engines": { 1057 | "node": ">=12" 1058 | }, 1059 | "funding": { 1060 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1061 | } 1062 | }, 1063 | "node_modules/wrappy": { 1064 | "version": "1.0.2", 1065 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1066 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1067 | }, 1068 | "node_modules/ws": { 1069 | "version": "8.5.0", 1070 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", 1071 | "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", 1072 | "engines": { 1073 | "node": ">=10.0.0" 1074 | }, 1075 | "peerDependencies": { 1076 | "bufferutil": "^4.0.1", 1077 | "utf-8-validate": "^5.0.2" 1078 | }, 1079 | "peerDependenciesMeta": { 1080 | "bufferutil": { 1081 | "optional": true 1082 | }, 1083 | "utf-8-validate": { 1084 | "optional": true 1085 | } 1086 | } 1087 | }, 1088 | "node_modules/yauzl": { 1089 | "version": "2.10.0", 1090 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1091 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 1092 | "dependencies": { 1093 | "buffer-crc32": "~0.2.3", 1094 | "fd-slicer": "~1.1.0" 1095 | } 1096 | } 1097 | }, 1098 | "dependencies": { 1099 | "@types/node": { 1100 | "version": "17.0.23", 1101 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", 1102 | "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", 1103 | "optional": true 1104 | }, 1105 | "@types/yauzl": { 1106 | "version": "2.9.2", 1107 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 1108 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 1109 | "optional": true, 1110 | "requires": { 1111 | "@types/node": "*" 1112 | } 1113 | }, 1114 | "agent-base": { 1115 | "version": "6.0.2", 1116 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1117 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1118 | "requires": { 1119 | "debug": "4" 1120 | } 1121 | }, 1122 | "ansi-escapes": { 1123 | "version": "5.0.0", 1124 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", 1125 | "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", 1126 | "requires": { 1127 | "type-fest": "^1.0.2" 1128 | } 1129 | }, 1130 | "ansi-regex": { 1131 | "version": "6.0.1", 1132 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1133 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" 1134 | }, 1135 | "balanced-match": { 1136 | "version": "1.0.2", 1137 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1138 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1139 | }, 1140 | "base64-js": { 1141 | "version": "1.5.1", 1142 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1143 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1144 | }, 1145 | "bl": { 1146 | "version": "4.1.0", 1147 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1148 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1149 | "requires": { 1150 | "buffer": "^5.5.0", 1151 | "inherits": "^2.0.4", 1152 | "readable-stream": "^3.4.0" 1153 | } 1154 | }, 1155 | "brace-expansion": { 1156 | "version": "1.1.11", 1157 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1158 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1159 | "requires": { 1160 | "balanced-match": "^1.0.0", 1161 | "concat-map": "0.0.1" 1162 | } 1163 | }, 1164 | "buffer": { 1165 | "version": "5.7.1", 1166 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1167 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1168 | "requires": { 1169 | "base64-js": "^1.3.1", 1170 | "ieee754": "^1.1.13" 1171 | } 1172 | }, 1173 | "buffer-crc32": { 1174 | "version": "0.2.13", 1175 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 1176 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 1177 | }, 1178 | "chalk": { 1179 | "version": "5.0.1", 1180 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", 1181 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==" 1182 | }, 1183 | "chardet": { 1184 | "version": "0.7.0", 1185 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 1186 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 1187 | }, 1188 | "chownr": { 1189 | "version": "1.1.4", 1190 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 1191 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 1192 | }, 1193 | "cli-cursor": { 1194 | "version": "4.0.0", 1195 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 1196 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 1197 | "requires": { 1198 | "restore-cursor": "^4.0.0" 1199 | } 1200 | }, 1201 | "cli-spinners": { 1202 | "version": "2.7.0", 1203 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", 1204 | "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" 1205 | }, 1206 | "cli-width": { 1207 | "version": "4.0.0", 1208 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", 1209 | "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==" 1210 | }, 1211 | "clone": { 1212 | "version": "1.0.4", 1213 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 1214 | "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" 1215 | }, 1216 | "concat-map": { 1217 | "version": "0.0.1", 1218 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1219 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1220 | }, 1221 | "cross-fetch": { 1222 | "version": "3.1.5", 1223 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 1224 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 1225 | "requires": { 1226 | "node-fetch": "2.6.7" 1227 | } 1228 | }, 1229 | "debug": { 1230 | "version": "4.3.3", 1231 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1232 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1233 | "requires": { 1234 | "ms": "2.1.2" 1235 | } 1236 | }, 1237 | "defaults": { 1238 | "version": "1.0.3", 1239 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 1240 | "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", 1241 | "requires": { 1242 | "clone": "^1.0.2" 1243 | } 1244 | }, 1245 | "devtools-protocol": { 1246 | "version": "0.0.969999", 1247 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", 1248 | "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==" 1249 | }, 1250 | "eastasianwidth": { 1251 | "version": "0.2.0", 1252 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1253 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 1254 | }, 1255 | "emoji-regex": { 1256 | "version": "9.2.2", 1257 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1258 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 1259 | }, 1260 | "end-of-stream": { 1261 | "version": "1.4.4", 1262 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1263 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1264 | "requires": { 1265 | "once": "^1.4.0" 1266 | } 1267 | }, 1268 | "external-editor": { 1269 | "version": "3.1.0", 1270 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1271 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1272 | "requires": { 1273 | "chardet": "^0.7.0", 1274 | "iconv-lite": "^0.4.24", 1275 | "tmp": "^0.0.33" 1276 | } 1277 | }, 1278 | "extract-zip": { 1279 | "version": "2.0.1", 1280 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 1281 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 1282 | "requires": { 1283 | "@types/yauzl": "^2.9.1", 1284 | "debug": "^4.1.1", 1285 | "get-stream": "^5.1.0", 1286 | "yauzl": "^2.10.0" 1287 | } 1288 | }, 1289 | "fd-slicer": { 1290 | "version": "1.1.0", 1291 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1292 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 1293 | "requires": { 1294 | "pend": "~1.2.0" 1295 | } 1296 | }, 1297 | "figures": { 1298 | "version": "4.0.1", 1299 | "resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz", 1300 | "integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==", 1301 | "requires": { 1302 | "escape-string-regexp": "^5.0.0", 1303 | "is-unicode-supported": "^1.2.0" 1304 | }, 1305 | "dependencies": { 1306 | "escape-string-regexp": { 1307 | "version": "5.0.0", 1308 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 1309 | "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" 1310 | } 1311 | } 1312 | }, 1313 | "find-up": { 1314 | "version": "4.1.0", 1315 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1316 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1317 | "requires": { 1318 | "locate-path": "^5.0.0", 1319 | "path-exists": "^4.0.0" 1320 | } 1321 | }, 1322 | "fs-constants": { 1323 | "version": "1.0.0", 1324 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1325 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 1326 | }, 1327 | "fs.realpath": { 1328 | "version": "1.0.0", 1329 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1330 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1331 | }, 1332 | "get-chrome": { 1333 | "version": "0.0.2", 1334 | "resolved": "https://registry.npmjs.org/get-chrome/-/get-chrome-0.0.2.tgz", 1335 | "integrity": "sha512-OSPmQqTS6l6JndHoxZ1F6IPbeUMGsbL1qTjj5xY0Tl718wjgb8A/0sxIDk28OfJKvlpAz3M8jz1ZVrdI8+QDcw==", 1336 | "requires": { 1337 | "is-wsl": "^1.1.0", 1338 | "lighthouse-logger": "^1.0.1" 1339 | } 1340 | }, 1341 | "get-stream": { 1342 | "version": "5.2.0", 1343 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1344 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1345 | "requires": { 1346 | "pump": "^3.0.0" 1347 | } 1348 | }, 1349 | "glob": { 1350 | "version": "7.2.0", 1351 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1352 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1353 | "requires": { 1354 | "fs.realpath": "^1.0.0", 1355 | "inflight": "^1.0.4", 1356 | "inherits": "2", 1357 | "minimatch": "^3.0.4", 1358 | "once": "^1.3.0", 1359 | "path-is-absolute": "^1.0.0" 1360 | } 1361 | }, 1362 | "https-proxy-agent": { 1363 | "version": "5.0.0", 1364 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1365 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1366 | "requires": { 1367 | "agent-base": "6", 1368 | "debug": "4" 1369 | } 1370 | }, 1371 | "iconv-lite": { 1372 | "version": "0.4.24", 1373 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1374 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1375 | "requires": { 1376 | "safer-buffer": ">= 2.1.2 < 3" 1377 | } 1378 | }, 1379 | "ieee754": { 1380 | "version": "1.2.1", 1381 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1382 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1383 | }, 1384 | "inflight": { 1385 | "version": "1.0.6", 1386 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1387 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1388 | "requires": { 1389 | "once": "^1.3.0", 1390 | "wrappy": "1" 1391 | } 1392 | }, 1393 | "inherits": { 1394 | "version": "2.0.4", 1395 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1396 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1397 | }, 1398 | "inquirer": { 1399 | "version": "9.1.0", 1400 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.0.tgz", 1401 | "integrity": "sha512-eukdjrBljg9t55ZnvJjvGi1OyYEzVBFsO/8o5d2MV3mc28u3x4X2kS4eJ/+9U10KiREfPkEBSeCrU/S2G/uRtw==", 1402 | "requires": { 1403 | "ansi-escapes": "^5.0.0", 1404 | "chalk": "^5.0.1", 1405 | "cli-cursor": "^4.0.0", 1406 | "cli-width": "^4.0.0", 1407 | "external-editor": "^3.0.3", 1408 | "figures": "^4.0.1", 1409 | "lodash": "^4.17.21", 1410 | "mute-stream": "0.0.8", 1411 | "ora": "^6.1.2", 1412 | "run-async": "^2.4.0", 1413 | "rxjs": "^7.5.6", 1414 | "string-width": "^5.1.2", 1415 | "strip-ansi": "^7.0.1", 1416 | "through": "^2.3.6", 1417 | "wrap-ansi": "^8.0.1" 1418 | } 1419 | }, 1420 | "is-interactive": { 1421 | "version": "2.0.0", 1422 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", 1423 | "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" 1424 | }, 1425 | "is-unicode-supported": { 1426 | "version": "1.2.0", 1427 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.2.0.tgz", 1428 | "integrity": "sha512-wH+U77omcRzevfIG8dDhTS0V9zZyweakfD01FULl97+0EHiJTTZtJqxPSkIIo/SDPv/i07k/C9jAPY+jwLLeUQ==" 1429 | }, 1430 | "is-wsl": { 1431 | "version": "1.1.0", 1432 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 1433 | "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" 1434 | }, 1435 | "lighthouse-logger": { 1436 | "version": "1.3.0", 1437 | "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", 1438 | "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", 1439 | "requires": { 1440 | "debug": "^2.6.9", 1441 | "marky": "^1.2.2" 1442 | }, 1443 | "dependencies": { 1444 | "debug": { 1445 | "version": "2.6.9", 1446 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1447 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1448 | "requires": { 1449 | "ms": "2.0.0" 1450 | } 1451 | }, 1452 | "ms": { 1453 | "version": "2.0.0", 1454 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1455 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1456 | } 1457 | } 1458 | }, 1459 | "locate-path": { 1460 | "version": "5.0.0", 1461 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1462 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1463 | "requires": { 1464 | "p-locate": "^4.1.0" 1465 | } 1466 | }, 1467 | "lodash": { 1468 | "version": "4.17.21", 1469 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1470 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1471 | }, 1472 | "log-symbols": { 1473 | "version": "5.1.0", 1474 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", 1475 | "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", 1476 | "requires": { 1477 | "chalk": "^5.0.0", 1478 | "is-unicode-supported": "^1.1.0" 1479 | } 1480 | }, 1481 | "marky": { 1482 | "version": "1.2.5", 1483 | "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", 1484 | "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==" 1485 | }, 1486 | "mimic-fn": { 1487 | "version": "2.1.0", 1488 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1489 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1490 | }, 1491 | "minimatch": { 1492 | "version": "3.1.2", 1493 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1494 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1495 | "requires": { 1496 | "brace-expansion": "^1.1.7" 1497 | } 1498 | }, 1499 | "mkdirp-classic": { 1500 | "version": "0.5.3", 1501 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1502 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1503 | }, 1504 | "ms": { 1505 | "version": "2.1.2", 1506 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1507 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1508 | }, 1509 | "mute-stream": { 1510 | "version": "0.0.8", 1511 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1512 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 1513 | }, 1514 | "node-fetch": { 1515 | "version": "2.6.7", 1516 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1517 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1518 | "requires": { 1519 | "whatwg-url": "^5.0.0" 1520 | } 1521 | }, 1522 | "once": { 1523 | "version": "1.4.0", 1524 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1525 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1526 | "requires": { 1527 | "wrappy": "1" 1528 | } 1529 | }, 1530 | "onetime": { 1531 | "version": "5.1.2", 1532 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1533 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1534 | "requires": { 1535 | "mimic-fn": "^2.1.0" 1536 | } 1537 | }, 1538 | "ora": { 1539 | "version": "6.1.2", 1540 | "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", 1541 | "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", 1542 | "requires": { 1543 | "bl": "^5.0.0", 1544 | "chalk": "^5.0.0", 1545 | "cli-cursor": "^4.0.0", 1546 | "cli-spinners": "^2.6.1", 1547 | "is-interactive": "^2.0.0", 1548 | "is-unicode-supported": "^1.1.0", 1549 | "log-symbols": "^5.1.0", 1550 | "strip-ansi": "^7.0.1", 1551 | "wcwidth": "^1.0.1" 1552 | }, 1553 | "dependencies": { 1554 | "bl": { 1555 | "version": "5.0.0", 1556 | "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", 1557 | "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", 1558 | "requires": { 1559 | "buffer": "^6.0.3", 1560 | "inherits": "^2.0.4", 1561 | "readable-stream": "^3.4.0" 1562 | } 1563 | }, 1564 | "buffer": { 1565 | "version": "6.0.3", 1566 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1567 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1568 | "requires": { 1569 | "base64-js": "^1.3.1", 1570 | "ieee754": "^1.2.1" 1571 | } 1572 | } 1573 | } 1574 | }, 1575 | "os-tmpdir": { 1576 | "version": "1.0.2", 1577 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1578 | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" 1579 | }, 1580 | "p-limit": { 1581 | "version": "2.3.0", 1582 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1583 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1584 | "requires": { 1585 | "p-try": "^2.0.0" 1586 | } 1587 | }, 1588 | "p-locate": { 1589 | "version": "4.1.0", 1590 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1591 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1592 | "requires": { 1593 | "p-limit": "^2.2.0" 1594 | } 1595 | }, 1596 | "p-try": { 1597 | "version": "2.2.0", 1598 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1599 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1600 | }, 1601 | "path-exists": { 1602 | "version": "4.0.0", 1603 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1604 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1605 | }, 1606 | "path-is-absolute": { 1607 | "version": "1.0.1", 1608 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1609 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1610 | }, 1611 | "pend": { 1612 | "version": "1.2.0", 1613 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1614 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 1615 | }, 1616 | "pkg-dir": { 1617 | "version": "4.2.0", 1618 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1619 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1620 | "requires": { 1621 | "find-up": "^4.0.0" 1622 | } 1623 | }, 1624 | "progress": { 1625 | "version": "2.0.3", 1626 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1627 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1628 | }, 1629 | "proxy-from-env": { 1630 | "version": "1.1.0", 1631 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1632 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1633 | }, 1634 | "pump": { 1635 | "version": "3.0.0", 1636 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1637 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1638 | "requires": { 1639 | "end-of-stream": "^1.1.0", 1640 | "once": "^1.3.1" 1641 | } 1642 | }, 1643 | "puppeteer": { 1644 | "version": "13.5.1", 1645 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.5.1.tgz", 1646 | "integrity": "sha512-wWxO//vMiqxlvuzHMAJ0pRJeDHvDtM7DQpW1GKdStz2nZo2G42kOXBDgkmQ+zqjwMCFofKGesBeeKxIkX9BO+w==", 1647 | "requires": { 1648 | "cross-fetch": "3.1.5", 1649 | "debug": "4.3.3", 1650 | "devtools-protocol": "0.0.969999", 1651 | "extract-zip": "2.0.1", 1652 | "https-proxy-agent": "5.0.0", 1653 | "pkg-dir": "4.2.0", 1654 | "progress": "2.0.3", 1655 | "proxy-from-env": "1.1.0", 1656 | "rimraf": "3.0.2", 1657 | "tar-fs": "2.1.1", 1658 | "unbzip2-stream": "1.4.3", 1659 | "ws": "8.5.0" 1660 | } 1661 | }, 1662 | "readable-stream": { 1663 | "version": "3.6.0", 1664 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1665 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1666 | "requires": { 1667 | "inherits": "^2.0.3", 1668 | "string_decoder": "^1.1.1", 1669 | "util-deprecate": "^1.0.1" 1670 | } 1671 | }, 1672 | "restore-cursor": { 1673 | "version": "4.0.0", 1674 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 1675 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 1676 | "requires": { 1677 | "onetime": "^5.1.0", 1678 | "signal-exit": "^3.0.2" 1679 | } 1680 | }, 1681 | "rimraf": { 1682 | "version": "3.0.2", 1683 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1684 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1685 | "requires": { 1686 | "glob": "^7.1.3" 1687 | } 1688 | }, 1689 | "run-async": { 1690 | "version": "2.4.1", 1691 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1692 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" 1693 | }, 1694 | "rxjs": { 1695 | "version": "7.5.6", 1696 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", 1697 | "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", 1698 | "requires": { 1699 | "tslib": "^2.1.0" 1700 | } 1701 | }, 1702 | "safe-buffer": { 1703 | "version": "5.2.1", 1704 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1705 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1706 | }, 1707 | "safer-buffer": { 1708 | "version": "2.1.2", 1709 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1710 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1711 | }, 1712 | "signal-exit": { 1713 | "version": "3.0.7", 1714 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1715 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1716 | }, 1717 | "string_decoder": { 1718 | "version": "1.3.0", 1719 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1720 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1721 | "requires": { 1722 | "safe-buffer": "~5.2.0" 1723 | } 1724 | }, 1725 | "string-width": { 1726 | "version": "5.1.2", 1727 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1728 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1729 | "requires": { 1730 | "eastasianwidth": "^0.2.0", 1731 | "emoji-regex": "^9.2.2", 1732 | "strip-ansi": "^7.0.1" 1733 | } 1734 | }, 1735 | "strip-ansi": { 1736 | "version": "7.0.1", 1737 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 1738 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1739 | "requires": { 1740 | "ansi-regex": "^6.0.1" 1741 | } 1742 | }, 1743 | "tar-fs": { 1744 | "version": "2.1.1", 1745 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1746 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1747 | "requires": { 1748 | "chownr": "^1.1.1", 1749 | "mkdirp-classic": "^0.5.2", 1750 | "pump": "^3.0.0", 1751 | "tar-stream": "^2.1.4" 1752 | } 1753 | }, 1754 | "tar-stream": { 1755 | "version": "2.2.0", 1756 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1757 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1758 | "requires": { 1759 | "bl": "^4.0.3", 1760 | "end-of-stream": "^1.4.1", 1761 | "fs-constants": "^1.0.0", 1762 | "inherits": "^2.0.3", 1763 | "readable-stream": "^3.1.1" 1764 | } 1765 | }, 1766 | "through": { 1767 | "version": "2.3.8", 1768 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1769 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1770 | }, 1771 | "tmp": { 1772 | "version": "0.0.33", 1773 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1774 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1775 | "requires": { 1776 | "os-tmpdir": "~1.0.2" 1777 | } 1778 | }, 1779 | "tr46": { 1780 | "version": "0.0.3", 1781 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1782 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1783 | }, 1784 | "tslib": { 1785 | "version": "2.4.0", 1786 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1787 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 1788 | }, 1789 | "type-fest": { 1790 | "version": "1.4.0", 1791 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 1792 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" 1793 | }, 1794 | "unbzip2-stream": { 1795 | "version": "1.4.3", 1796 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1797 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1798 | "requires": { 1799 | "buffer": "^5.2.1", 1800 | "through": "^2.3.8" 1801 | } 1802 | }, 1803 | "util-deprecate": { 1804 | "version": "1.0.2", 1805 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1806 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1807 | }, 1808 | "wcwidth": { 1809 | "version": "1.0.1", 1810 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 1811 | "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", 1812 | "requires": { 1813 | "defaults": "^1.0.3" 1814 | } 1815 | }, 1816 | "webidl-conversions": { 1817 | "version": "3.0.1", 1818 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1819 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1820 | }, 1821 | "whatwg-url": { 1822 | "version": "5.0.0", 1823 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1824 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1825 | "requires": { 1826 | "tr46": "~0.0.3", 1827 | "webidl-conversions": "^3.0.0" 1828 | } 1829 | }, 1830 | "wrap-ansi": { 1831 | "version": "8.0.1", 1832 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", 1833 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", 1834 | "requires": { 1835 | "ansi-styles": "^6.1.0", 1836 | "string-width": "^5.0.1", 1837 | "strip-ansi": "^7.0.1" 1838 | }, 1839 | "dependencies": { 1840 | "ansi-styles": { 1841 | "version": "6.1.0", 1842 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", 1843 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" 1844 | } 1845 | } 1846 | }, 1847 | "wrappy": { 1848 | "version": "1.0.2", 1849 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1850 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1851 | }, 1852 | "ws": { 1853 | "version": "8.5.0", 1854 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", 1855 | "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", 1856 | "requires": {} 1857 | }, 1858 | "yauzl": { 1859 | "version": "2.10.0", 1860 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1861 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 1862 | "requires": { 1863 | "buffer-crc32": "~0.2.3", 1864 | "fd-slicer": "~1.1.0" 1865 | } 1866 | } 1867 | } 1868 | } 1869 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autorambler", 3 | "version": "1.2.0", 4 | "description": "", 5 | "main": "src/index.js", 6 | "type": "module", 7 | "dependencies": { 8 | "chalk": "^5.0.1", 9 | "get-chrome": "^0.0.2", 10 | "inquirer": "^9.1.0", 11 | "puppeteer": "^13.5.1" 12 | }, 13 | "scripts": { 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "author": "", 17 | "license": "ISC" 18 | } -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | import c from 'chalk'; 2 | import fs from 'fs'; 3 | import log from './log.js'; 4 | import Ask from './ask.js'; 5 | import Chrome from './chrome.js'; 6 | import Registration from './registration.js'; 7 | 8 | class App { 9 | constructor() { 10 | this.ask = new Ask(); 11 | this.chrome = new Chrome(); 12 | } 13 | 14 | async run() { 15 | this.chromePath = await this.chrome.getPath(); 16 | 17 | if(fs.existsSync(this.chromePath)) { 18 | log(c.green(`Found Chrome: "${this.chromePath}"`)); 19 | } else { 20 | log(c.red(`Chrome not found (path: "${this.chromePath}"). Exiting...`)); 21 | return; 22 | } 23 | 24 | this.reg = new Registration(this.chromePath); 25 | let regMode = await this.ask.askRegMode(); 26 | 27 | if(regMode == 'Load data from file') { 28 | await this.reg.byFile(); 29 | } else { 30 | await this.reg.byGenerate(); 31 | } 32 | } 33 | } 34 | 35 | export default App; -------------------------------------------------------------------------------- /src/ask.js: -------------------------------------------------------------------------------- 1 | import inquirer from 'inquirer'; 2 | 3 | class Ask { 4 | async askToStartRegistration() { 5 | const questions = 6 | [{ 7 | name: 'continue', 8 | type: 'confirm', 9 | message: 'Are you sure you want to start registration?' 10 | }]; 11 | 12 | const answers = await inquirer.prompt(questions); 13 | return answers.continue; 14 | } 15 | 16 | async askToContinue() { 17 | const questions = 18 | [{ 19 | name: 'continue', 20 | type: 'confirm', 21 | message: 'Are you sure you want to continue?' 22 | }]; 23 | 24 | const answers = await inquirer.prompt(questions); 25 | return answers.continue; 26 | } 27 | 28 | async askRegMode() { 29 | const questions = 30 | [{ 31 | name: 'regMode', 32 | type: 'list', 33 | message: 'Select registration mode:', 34 | choices: ['Load data from file', 'Enter login, email count and generate passwords'] 35 | }]; 36 | 37 | const answers = await inquirer.prompt(questions); 38 | return answers.regMode; 39 | } 40 | 41 | async askMailStartValue(login) { 42 | const questions = 43 | [{ 44 | name: 'startValue', 45 | type: 'number', 46 | message: `Enter the initial value in the login name (default is 1, i.e. ${login}1@rambler.ru, ${login}2@rambler.ru...):`, 47 | default() { 48 | return 1; 49 | } 50 | }]; 51 | 52 | const answers = await inquirer.prompt(questions); 53 | return answers.startValue; 54 | } 55 | 56 | async askToEnableIMAP() { 57 | const questions = 58 | [{ 59 | name: 'imap', 60 | type: 'confirm', 61 | message: 'Do you want to enable IMAP for emails?' 62 | }]; 63 | 64 | const answers = await inquirer.prompt(questions); 65 | return answers.imap; 66 | } 67 | 68 | async ask() { 69 | const questions = 70 | [{ 71 | name: 'mailLogin', 72 | type: 'input', 73 | message: 'Enter mail login (before @):' 74 | }, { 75 | name: 'domain', 76 | type: 'list', 77 | message: 'Choose mail domain (after @):', 78 | choices: [ 79 | 'autorambler.ru', 80 | 'lenta.ru', 81 | 'myrambler.ru', 82 | 'rambler.ru', 83 | 'rambler.ua', 84 | 'ro.ua', 85 | 'soyuzmultfilm.ru' 86 | ] 87 | }, { 88 | name: 'mailPassword', 89 | type: 'input', 90 | message: 'Enter mail password:' 91 | }, { 92 | name: 'emailsCount', 93 | type: 'number', 94 | message: 'Enter count of mails to register (1 by default):', 95 | default() { 96 | return 1; 97 | } 98 | }, { 99 | name: 'code', 100 | type: 'input', 101 | message: 'Enter security code (123456 by default):', 102 | default() { 103 | return '123456'; 104 | } 105 | }]; 106 | 107 | const answers = await inquirer.prompt(questions); 108 | answers.passLength = 15; 109 | return answers; 110 | } 111 | } 112 | 113 | export default Ask; -------------------------------------------------------------------------------- /src/chrome.js: -------------------------------------------------------------------------------- 1 | import puppeteer from 'puppeteer'; 2 | import getChrome from 'get-chrome'; 3 | 4 | class Chrome { 5 | constructor(chromePath = '') { 6 | this.browser = null; 7 | this.chromePath = chromePath; 8 | } 9 | 10 | async launch() { 11 | this.browser = await puppeteer.launch({ 12 | executablePath: this.chromePath, 13 | headless: false, 14 | args:[ 15 | '--start-maximized' 16 | ], 17 | defaultViewport: null 18 | }); 19 | } 20 | 21 | async close() { 22 | this.browser.close(); 23 | } 24 | 25 | getBrowser() { 26 | return this.browser; 27 | } 28 | 29 | async getPath() { 30 | return getChrome(); 31 | } 32 | 33 | setPath(path) { 34 | this.chromePath = path; 35 | } 36 | 37 | async deleteCookies(page) { 38 | const client = await page.target().createCDPSession(); 39 | await client.send('Network.clearBrowserCookies'); 40 | } 41 | } 42 | 43 | export default Chrome; -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import App from './app.js'; 2 | 3 | setInterval(() => {}, 100000); 4 | 5 | const app = new App(); 6 | app.run(); -------------------------------------------------------------------------------- /src/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://id.rambler.ru/login-20/mail-registration?rname=mail&session=false&back=https%3A%2F%2Fmail.rambler.ru¶m=embed&iframeOrigin=https%3A%2F%2Fmail.rambler.ru", 3 | "readyPage": "https://id.rambler.ru/login-20/mail-registration/completion" 4 | } -------------------------------------------------------------------------------- /src/log.js: -------------------------------------------------------------------------------- 1 | import c from 'chalk'; 2 | 3 | const logo = ` 4 | █████╗ ██╗ ██╗████████╗ ██████╗ ██████╗ ███████╗ ██████╗ 5 | ██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗ ██╔══██╗██╔════╝██╔════╝ 6 | ███████║██║ ██║ ██║ ██║ ██║ ██████╔╝█████╗ ██║ ███╗ 7 | ██╔══██║██║ ██║ ██║ ██║ ██║ ██╔══██╗██╔══╝ ██║ ██║ 8 | ██║ ██║╚██████╔╝ ██║ ╚██████╔╝ ██║ ██║███████╗╚██████╔╝ 9 | ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ 10 | (Rambler)\n`; 11 | 12 | const version = `v1.2.0`; 13 | const by = 'By NightStranger\n'; 14 | 15 | setTerminalTitle('RamblerAutoReg by NightStranger'); 16 | printLogo(); 17 | 18 | function setTerminalTitle(title) { 19 | process.stdout.write( 20 | String.fromCharCode(27) + "]0;" + title + String.fromCharCode(7) 21 | ); 22 | } 23 | 24 | function printLogo() { 25 | console.log(`\x1b[5m${logo}\x1b[0m`); 26 | console.log(c.cyan(version)); 27 | console.log(c.magenta(by)); 28 | } 29 | 30 | function log(msg, err = false) { 31 | const date = new Date(); 32 | 33 | let day = date.getDate(); 34 | let month = date.getMonth() + 1; 35 | let year = date.getFullYear(); 36 | let hour = date.getHours(); 37 | let minute = date.getMinutes(); 38 | let second = date.getSeconds(); 39 | 40 | if(day.toString().length == 1) 41 | day = `0${day}`; 42 | if(month.toString().length == 1) 43 | month = `0${month}`; 44 | if(hour.toString().length == 1) 45 | hour = `0${hour}`; 46 | if(minute.toString().length == 1) 47 | minute = `0${minute}`; 48 | if(second.toString().length == 1) 49 | second = `0${second}`; 50 | 51 | const dateString = `[${day}.${month}.${year}]`; 52 | const timeString = `[${hour}:${minute}:${second}]`; 53 | const logText = `${c.yellow('>')} ${c.cyan(dateString)} ${c.cyan(timeString)}: ${msg}`; 54 | 55 | if(!err) { 56 | console.log(logText); 57 | } else { 58 | console.error(logText); 59 | } 60 | 61 | if(typeof msg == 'object') 62 | console.log(msg); 63 | } 64 | 65 | export default log; -------------------------------------------------------------------------------- /src/password.js: -------------------------------------------------------------------------------- 1 | class Password { 2 | generate(length) { 3 | const upper = "ABCDEFGHJKLMNOPQRSTUVWXYZ"; 4 | const lower = "abcdefghijkmnopqrstuvwxyz"; 5 | const numbers = "0123456789"; 6 | 7 | let symbols = upper + lower + numbers; 8 | let password = ""; 9 | 10 | for (let i = 0; i < length; i++) { 11 | password += symbols.charAt(this.rand(symbols.length)); 12 | } 13 | 14 | if(length >= 6) { 15 | for (let i = 0; i < 2; i++) { 16 | password = this.replaceAt(password, upper.charAt(this.rand(upper.length)), this.rand(password.length)); 17 | } 18 | for (let i = 0; i < 2; i++) { 19 | password = this.replaceAt(password, lower.charAt(this.rand(lower.length)), this.rand(password.length)); 20 | } 21 | for (let i = 0; i < 3; i++) { 22 | password = this.replaceAt(password, numbers.charAt(this.rand(numbers.length)), this.rand(password.length)); 23 | } 24 | } 25 | 26 | return password; 27 | } 28 | 29 | replaceAt(string, replacement, index) { 30 | return string.substr(0, index) + replacement + string.substr(index + replacement.length); 31 | } 32 | 33 | rand(to) { 34 | return Math.floor(Math.random() * to); 35 | } 36 | } 37 | 38 | export default Password; -------------------------------------------------------------------------------- /src/registration.js: -------------------------------------------------------------------------------- 1 | import c from 'chalk'; 2 | import fs from 'fs'; 3 | import Storage from './storage.js'; 4 | import Ask from './ask.js'; 5 | import Password from './password.js'; 6 | import Chrome from './chrome.js'; 7 | import log from './log.js'; 8 | 9 | class Registration { 10 | constructor(chromePath) { 11 | this.chromePath = chromePath; 12 | 13 | this.ask = new Ask(); 14 | this.chrome = new Chrome(this.chromePath); 15 | this.storage = new Storage(); 16 | 17 | this.settings = this.storage.loadSettings(); 18 | this.links = this.storage.load('./src/links.json'); 19 | 20 | this.selectors = { 21 | mail: "#login", 22 | domainButton: ".rui-Select-arrow", 23 | domainMenu: ".rui-Menu-content", 24 | pass: "#newPassword", 25 | passVerify: "#confirmPassword", 26 | questionType: 'input[placeholder="Выберите вопрос"][tabindex="0"]', 27 | questionSelect: "div[data-cerber-id*='Почтовый индекс ваших родителей']", 28 | questionAnswer: "#answer", 29 | hCapcha: "#checkbox", 30 | submit: "button[type=submit]", 31 | submitImapChange: 'button.MailAppsChange-submitButton-S7', 32 | closePopup: "button.rui-Popup-close" 33 | }; 34 | } 35 | 36 | async byFile() { 37 | if(!fs.existsSync(this.settings.mailsFile)) { 38 | fs.writeFileSync(this.settings.mailsFile, 'mail@rambler.ua:password:recoveryCode'); 39 | log(`${c.cyan(`File ${this.settings.mailsFile} created. Fill it with mail data in the format:`)} ${c.green('mail@rambler.ua:password:recoveryCode')} ${c.cyan('Each mail on a new line. Then restart the program.')}`); 40 | return; 41 | } 42 | 43 | log(c.green(`File ${this.settings.mailsFile} found`)); 44 | 45 | const imap = await this.ask.askToEnableIMAP(); 46 | 47 | const mails = this.storage.parseMailsFile(); 48 | if(!mails || ! mails.length) return; 49 | log(`Loaded ${mails.length} mails`); 50 | 51 | const toStart = await this.ask.askToStartRegistration(); 52 | if(!toStart) return; 53 | 54 | this.regMails(mails, 'move', imap); 55 | } 56 | 57 | async byGenerate() { 58 | let answers = await this.ask.ask(); 59 | let login = answers.mailLogin; 60 | let domain = answers.domain; 61 | let pass = answers.mailPassword; 62 | let passLength = +answers.passLength; 63 | let emailsCount = +answers.emailsCount; 64 | let code = answers.code; 65 | let startValue = 1; 66 | 67 | if(emailsCount > 1) { 68 | startValue = await this.ask.askMailStartValue(login); 69 | } 70 | 71 | if(passLength == 0) { 72 | passLength = 15; 73 | } 74 | 75 | if(emailsCount == 0) { 76 | emailsCount = 1; 77 | } 78 | 79 | if(startValue == 0) { 80 | startValue = 1; 81 | } 82 | 83 | const imap = await this.ask.askToEnableIMAP(); 84 | 85 | const mails = await this.generateAccounts(login, domain, pass, passLength, emailsCount, startValue, code); 86 | const toStart = await this.ask.askToStartRegistration(); 87 | if(!toStart) return; 88 | 89 | this.regMails(mails, 'add', imap); 90 | } 91 | 92 | async regMails(mails, toFile, imap = false) { 93 | let registered = 0; 94 | await this.chrome.launch(); 95 | 96 | for(let i = 0; i < mails.length; i++) { 97 | const mail = mails[i]; 98 | 99 | log(c.cyan(`[${(i + 1)}] Registering ${mail.login}...`)); 100 | const res = await this.reg(mail.login, mail.domain, mail.pass, mail.code, imap); 101 | 102 | if(res) { 103 | log(`${c.green(`[${(i + 1)}] Mail`)} ${c.magenta(mail.email)} ${c.green(`successfully registered:`)}`); 104 | log(mail.email); 105 | log(mail.pass); 106 | 107 | if(toFile == 'move') { 108 | await this.storage.moveMailToRegisteredFile(mail.email); 109 | } 110 | 111 | if(toFile == 'add') { 112 | await this.storage.addMailToRegisteredFile(mail); 113 | } 114 | registered++; 115 | } else { 116 | log(c.red(`Failed to register mail ${mail.email}`)); 117 | const toContinue = await this.ask.askToContinue(); 118 | 119 | if(!toContinue) break; 120 | } 121 | } 122 | 123 | await this.chrome.close(); 124 | log(c.green(`Successfully registered ${c.yellowBright(registered)} accounts.`)); 125 | } 126 | 127 | async reg(login, domain, pass, code, imap) { 128 | let result = false; 129 | 130 | try { 131 | const browser = this.chrome.getBrowser(); 132 | const pages = await browser.pages(); 133 | const page = pages[0]; 134 | await page.goto(this.links.url); 135 | 136 | await page.waitForSelector(this.selectors.mail); 137 | await page.type(this.selectors.mail, login, {delay: 20}); 138 | 139 | await page.evaluate(() => { 140 | return new Promise((resolve, reject) => { 141 | document.querySelector('.rui-Select-arrow').click(); 142 | resolve(true); 143 | }); 144 | }); 145 | 146 | await page.waitForSelector(this.selectors.domainMenu); 147 | await page.evaluate((domainId) => { 148 | return new Promise((resolve, reject) => { 149 | document.querySelector('.rui-Menu-content').children[domainId].click(); 150 | resolve(true); 151 | }); 152 | }, this.getDomainNumber(domain)); 153 | 154 | await page.type(this.selectors.pass, pass, {delay: 20}); 155 | 156 | await page.type(this.selectors.passVerify, pass, {delay: 20}); 157 | 158 | await page.click(this.selectors.questionType); 159 | 160 | await page.waitForSelector(this.selectors.questionSelect); 161 | await this.sleep(100); 162 | await page.click(this.selectors.questionSelect); 163 | 164 | await page.type(this.selectors.questionAnswer, code, {delay: 20}); 165 | await page.evaluate('window.scrollTo(0, document.body.scrollHeight)'); 166 | 167 | const iframeHandle = await page.$('iframe'); 168 | const iframe = await iframeHandle.contentFrame(); 169 | 170 | await iframe.evaluate(() => { 171 | return new Promise((resolve, reject) => { 172 | const checkbox = document.querySelector('div#checkbox'); 173 | checkbox.click(); 174 | resolve(); 175 | }); 176 | }); 177 | 178 | await page.evaluate(() => { 179 | return new Promise((resolve, reject) => { 180 | setInterval(() => { 181 | const element = document.querySelector('iframe'); 182 | const capchaResp = element.dataset.hcaptchaResponse; 183 | console.log(capchaResp); 184 | if(!capchaResp || capchaResp == "") return; 185 | resolve(capchaResp); 186 | }, 200); 187 | }); 188 | }); 189 | 190 | await page.click(this.selectors.submit); 191 | 192 | while(!(await page.target()._targetInfo.url).includes(this.links.readyPage)) { 193 | await this.sleep(500); 194 | } 195 | 196 | if(imap) { 197 | await page.goto('https://mail.rambler.ru/settings/mailapps/change'); 198 | await page.waitForSelector(this.selectors.submitImapChange); 199 | 200 | await page.evaluate((closePopup) => { 201 | return new Promise((resolve, reject) => { 202 | let elements = []; 203 | 204 | while (!elements || elements.length < 2) { 205 | elements = document.querySelectorAll(closePopup); 206 | 207 | } 208 | 209 | const lastElement = elements[elements.length - 1]; 210 | lastElement.click(); 211 | resolve(); 212 | }); 213 | }, this.selectors.closePopup); 214 | 215 | await page.goto('https://mail.rambler.ru/settings/mailapps/change'); 216 | await page.waitForSelector(this.selectors.submitImapChange); 217 | 218 | await page.evaluate((submitImapChange) => { 219 | return new Promise((resolve, reject) => { 220 | setInterval(() => { 221 | const element = document.querySelector(submitImapChange); 222 | console.log(element.disabled); 223 | if(!element || element.disabled == true) return; 224 | resolve(); 225 | }, 200); 226 | }); 227 | }, this.selectors.submitImapChange); 228 | 229 | await page.click(this.selectors.submitImapChange); 230 | } 231 | 232 | await this.chrome.deleteCookies(page); 233 | 234 | result = { 235 | login: `${login}@${domain}`, 236 | pass: pass, 237 | code: code 238 | }; 239 | } catch (err) { 240 | log(c.red(`Error while registering mail: ${err}`)); 241 | } 242 | 243 | return result; 244 | } 245 | 246 | generateAccounts(login, domain, pass, passLength, emailsCount, startValue, code) { 247 | let accounts = []; 248 | let password = new Password(); 249 | 250 | for(let i = startValue; i < emailsCount + startValue; i++) { 251 | let currentLogin = login; 252 | let currentPass = pass; 253 | 254 | if(emailsCount != 1) { 255 | currentLogin = `${login}${i}`; 256 | currentPass = `${pass}${i}`; 257 | } 258 | 259 | const email = `${currentLogin}@${domain}`; 260 | if (!currentPass || currentPass == "") 261 | currentPass = password.generate(passLength); 262 | 263 | accounts[accounts.length] = { 264 | login: currentLogin, 265 | domain: domain, 266 | email: email, 267 | pass: currentPass, 268 | code: code 269 | }; 270 | } 271 | 272 | return accounts; 273 | } 274 | 275 | async sleep(timeout) { 276 | return new Promise((resolve) => { 277 | setTimeout(resolve, timeout); 278 | }); 279 | } 280 | 281 | getDomainNumber(domain) { 282 | switch(domain) { 283 | case 'autorambler.ru': return 0; 284 | case 'myrambler.ru': return 1; 285 | case 'rambler.ru': return 2; 286 | case 'rambler.ua': return 3; 287 | case 'ro.ru': return 4; 288 | default: return 2; 289 | } 290 | } 291 | } 292 | 293 | export default Registration; -------------------------------------------------------------------------------- /src/storage.js: -------------------------------------------------------------------------------- 1 | import c from 'chalk'; 2 | import fs from 'fs'; 3 | import { fileURLToPath } from 'url'; 4 | import { dirname } from 'path'; 5 | import log from './log.js'; 6 | 7 | const _filename = fileURLToPath(import.meta.url); 8 | const _dirname = dirname(_filename); 9 | 10 | class Storage { 11 | constructor() { 12 | this.settings = this.loadSettings(); 13 | } 14 | 15 | load(uri) { 16 | let result = false; 17 | try { 18 | uri = `${_dirname}/../${uri}`; 19 | 20 | if(!fs.existsSync(uri)) { 21 | fs.writeFileSync(uri, ''); 22 | return ''; 23 | } 24 | 25 | const rawdata = fs.readFileSync(uri); 26 | result = JSON.parse(rawdata); 27 | } catch (err) { 28 | console.log(`Ошибка при загрузке файла: ${err}`); 29 | } 30 | return result; 31 | } 32 | 33 | loadSettings() { 34 | const uri = `${_dirname}/../settings.json`; 35 | let data = null; 36 | 37 | if(!fs.existsSync(uri)) { 38 | data = { 39 | mailsFile: "mails.txt", 40 | registeredMailsFile: "registeredMails.txt" 41 | }; 42 | 43 | fs.writeFileSync(uri, JSON.stringify(data, null, 4)); 44 | return data; 45 | } 46 | 47 | data = fs.readFileSync(uri); 48 | const result = JSON.parse(data); 49 | 50 | return result; 51 | } 52 | 53 | parseMailsFile() { 54 | const mailsFile = fs.readFileSync(this.settings.mailsFile); 55 | let mailsData = mailsFile.toString().split('\r\n'); 56 | let mails = []; 57 | 58 | for(let i = 0; i < mailsData.length; i++) { 59 | if(!mailsData[i] || mailsData[i] == '') continue; 60 | 61 | let mail = mailsData[i].split(':'); 62 | const email = mail[0]; 63 | const pass = mail[1]; 64 | const code = mail[2]; 65 | const login = mail[0].split('@')[0]; 66 | const domain = mail[0].split('@')[1]; 67 | let error = false; 68 | 69 | if(!email || email == '') { 70 | log(c.red(`Failed to parse mail: mail cant be empty.`)); 71 | error = true; 72 | } 73 | 74 | if(!email.includes('@')) { 75 | log(c.red(`Failed to parse mail: mail must contain "@" symbol.`)); 76 | error = true; 77 | } 78 | 79 | if(login.length < 3 || login.length > 32) { 80 | log(c.red(`Failed to parse mail: login must be at least 3 characters and not more than 32 characters.`)); 81 | error = true; 82 | } 83 | 84 | if(domain != 'rambler.ru' && domain != 'lenta.ru' && domain != 'autorambler.ru' && domain != 'myrambler.ru' && domain != 'ro.ru' && domain != 'rambler.ua') { 85 | log(c.red(`Failed to parse mail: domain ${domain} is not supported. Use rambler.ru, lenta.ru, autorambler.ru, myrambler.ru, ro.ru or rambler.ua instead.`)); 86 | error = true; 87 | } 88 | 89 | if(pass.length < 9) { 90 | log(c.red(`Failed to parse mail: pass must contain at least 9 characters.`)); 91 | error = true; 92 | } 93 | 94 | if(!code || code == '' || isNaN(code)) { 95 | log(c.red(`Failed to parse mail: code must be a number.`)); 96 | error = true; 97 | } 98 | 99 | mail = { 100 | login: login, 101 | domain: domain, 102 | email: email, 103 | pass: pass, 104 | code: code 105 | } 106 | 107 | if(error) { 108 | log(mail); 109 | return; 110 | } 111 | 112 | mails.push(mail); 113 | log(`Parsing ${email}... ${c.green('OK')}`); 114 | } 115 | 116 | return mails; 117 | } 118 | 119 | async moveMailToRegisteredFile(email) { 120 | if(!fs.existsSync(this.settings.mailsFile)) { 121 | log(c.red(`Cant find ${this.settings.mailsFile}`)); 122 | return; 123 | } 124 | 125 | if(!fs.existsSync(this.settings.registeredMailsFile)) { 126 | fs.writeFileSync(this.settings.registeredMailsFile, ''); 127 | log(c.green(`File ${this.settings.registeredMailsFile} created`)); 128 | } 129 | 130 | const mailsFile = fs.readFileSync(this.settings.mailsFile); 131 | let mailsData = mailsFile.toString().split('\r\n'); 132 | const registeredMailsFile = fs.readFileSync(this.settings.registeredMailsFile); 133 | 134 | let mailString = ''; 135 | 136 | for(let i = 0; i < mailsData.length; i++) { 137 | if(mailsData[i].includes(email)) { 138 | mailString = mailsData[i]; 139 | mailsData.splice(i, 1); 140 | break; 141 | } 142 | } 143 | 144 | const newRegisteredMailsFile = registeredMailsFile.toString() + mailString + '\r\n'; 145 | fs.writeFileSync(this.settings.registeredMailsFile, newRegisteredMailsFile); 146 | 147 | mailsData = mailsData.join('\r\n'); 148 | fs.writeFileSync(this.settings.mailsFile, mailsData); 149 | } 150 | 151 | async addMailToRegisteredFile(mail) { 152 | if(!fs.existsSync(this.settings.registeredMailsFile)) { 153 | fs.writeFileSync(this.settings.registeredMailsFile, ''); 154 | log(c.green(`File ${this.settings.registeredMailsFile} created`)); 155 | } 156 | 157 | const mailString = `${mail.email}:${mail.pass}:${mail.code}`; 158 | const registeredMailsFile = fs.readFileSync(this.settings.registeredMailsFile); 159 | const newRegisteredMailsFile = registeredMailsFile.toString() + mailString + '\r\n'; 160 | fs.writeFileSync(this.settings.registeredMailsFile, newRegisteredMailsFile); 161 | } 162 | } 163 | 164 | export default Storage; --------------------------------------------------------------------------------