├── .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 | 
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 | 
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;
--------------------------------------------------------------------------------