├── .env.example
├── .eslintrc.js
├── .gitignore
├── .yarn
└── releases
│ └── yarn-4.1.0.cjs
├── .yarnrc.yml
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── public
├── audio-processor.js
├── index.html
├── index.js
├── reset.css
└── styles.css
├── server.js
├── tokenGenerator.js
└── yarn.lock
/.env.example:
--------------------------------------------------------------------------------
1 | ASSEMBLYAI_API_KEY=YOUR_API_KEY
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | commonjs: true,
5 | es2021: true,
6 | },
7 | extends: "eslint:recommended",
8 | overrides: [
9 | {
10 | env: {
11 | node: true,
12 | },
13 | files: [".eslintrc.{js,cjs}"],
14 | parserOptions: {
15 | sourceType: "script",
16 | },
17 | },
18 | ],
19 | parserOptions: {
20 | ecmaVersion: "latest",
21 | },
22 | rules: {},
23 | };
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .yarn/*
2 | !.yarn/cache
3 | !.yarn/patches
4 | !.yarn/plugins
5 | !.yarn/releases
6 | !.yarn/sdks
7 | !.yarn/versions.yarn
8 | .env
9 | node_modules
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | nodeLinker: node-modules
2 |
3 | yarnPath: .yarn/releases/yarn-4.1.0.cjs
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 AssemblyAI
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AssemblyAI Real-Time Transcription Browser Example
2 |
3 | This open-source repo provided by AssemblyAI displays how to use our real-time API in the browser!
4 |
5 | In this app, we grab an audio stream from the user's computer and then send that over a WebSocket to AssemblyAI for real-time transcription. Once AssemblyAI begins transcribing, we display the text in the browser. This is accomplished using Express for our backend and the AudioWorklet to process the raw audio.
6 |
7 | ## How To Install and Run the Project
8 |
9 | ##### ❗Important❗
10 |
11 | - Before running this app, you need to upgrade your AssemblyAI account. The real-time API is only available to upgraded accounts at this time.
12 | - Running the app before upgrading will cause an **error with a 402 status code.** ⚠️
13 | - To upgrade your account you need to add a card. You can do that in your dashboard [here](https://app.assemblyai.com/)!
14 |
15 | ##### Instructions
16 |
17 | 1. Clone the repo to your local machine.
18 | 2. Open a terminal in the main directory housing the project. In this case `realtime-transcription-browser-js-example`.
19 | 3. Run `yarn install` to ensure all dependencies are installed.
20 | 4. Create a .env file and set your AssemblyAI API key. Use the [.env.example](./.env.example) as a reference.
21 | 5. Start the application with the command `yarn serve` (will run on port 8000).
22 |
23 | ## Further Documentation
24 |
25 | - [AssemblyAI Real-Time Documentation](https://www.assemblyai.com/docs/speech-to-text/real-time)
26 | - [MDN AudioWorklet](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Using_AudioWorklet)
27 | - [Express](https://expressjs.com/)
28 |
29 | ## Contact Us
30 |
31 | If you have any questions, please feel free to reach out to our Support team - support@assemblyai.com!
32 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "assemblyai-realtime-js-demo",
3 | "version": "3.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "assemblyai-realtime-js-demo",
9 | "version": "3.0.0",
10 | "dependencies": {
11 | "assemblyai": "^4.2.2",
12 | "axios": "^1.9.0",
13 | "cors": "^2.8.5",
14 | "dotenv": "^16.4.1",
15 | "eslint": "^8.56.0",
16 | "express": "^4.18.2",
17 | "prettier": "^3.2.5"
18 | }
19 | },
20 | "node_modules/@aashutoshrathi/word-wrap": {
21 | "version": "1.2.6",
22 | "license": "MIT",
23 | "engines": {
24 | "node": ">=0.10.0"
25 | }
26 | },
27 | "node_modules/@eslint-community/eslint-utils": {
28 | "version": "4.4.0",
29 | "license": "MIT",
30 | "dependencies": {
31 | "eslint-visitor-keys": "^3.3.0"
32 | },
33 | "engines": {
34 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
35 | },
36 | "peerDependencies": {
37 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
38 | }
39 | },
40 | "node_modules/@eslint-community/regexpp": {
41 | "version": "4.10.0",
42 | "license": "MIT",
43 | "engines": {
44 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
45 | }
46 | },
47 | "node_modules/@eslint/eslintrc": {
48 | "version": "2.1.4",
49 | "license": "MIT",
50 | "dependencies": {
51 | "ajv": "^6.12.4",
52 | "debug": "^4.3.2",
53 | "espree": "^9.6.0",
54 | "globals": "^13.19.0",
55 | "ignore": "^5.2.0",
56 | "import-fresh": "^3.2.1",
57 | "js-yaml": "^4.1.0",
58 | "minimatch": "^3.1.2",
59 | "strip-json-comments": "^3.1.1"
60 | },
61 | "engines": {
62 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
63 | },
64 | "funding": {
65 | "url": "https://opencollective.com/eslint"
66 | }
67 | },
68 | "node_modules/@eslint/eslintrc/node_modules/debug": {
69 | "version": "4.3.4",
70 | "license": "MIT",
71 | "dependencies": {
72 | "ms": "2.1.2"
73 | },
74 | "engines": {
75 | "node": ">=6.0"
76 | },
77 | "peerDependenciesMeta": {
78 | "supports-color": {
79 | "optional": true
80 | }
81 | }
82 | },
83 | "node_modules/@eslint/js": {
84 | "version": "8.56.0",
85 | "license": "MIT",
86 | "engines": {
87 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
88 | }
89 | },
90 | "node_modules/@humanwhocodes/config-array": {
91 | "version": "0.11.14",
92 | "license": "Apache-2.0",
93 | "dependencies": {
94 | "@humanwhocodes/object-schema": "^2.0.2",
95 | "debug": "^4.3.1",
96 | "minimatch": "^3.0.5"
97 | },
98 | "engines": {
99 | "node": ">=10.10.0"
100 | }
101 | },
102 | "node_modules/@humanwhocodes/config-array/node_modules/debug": {
103 | "version": "4.3.4",
104 | "license": "MIT",
105 | "dependencies": {
106 | "ms": "2.1.2"
107 | },
108 | "engines": {
109 | "node": ">=6.0"
110 | },
111 | "peerDependenciesMeta": {
112 | "supports-color": {
113 | "optional": true
114 | }
115 | }
116 | },
117 | "node_modules/@humanwhocodes/module-importer": {
118 | "version": "1.0.1",
119 | "license": "Apache-2.0",
120 | "engines": {
121 | "node": ">=12.22"
122 | },
123 | "funding": {
124 | "type": "github",
125 | "url": "https://github.com/sponsors/nzakas"
126 | }
127 | },
128 | "node_modules/@humanwhocodes/object-schema": {
129 | "version": "2.0.2",
130 | "license": "BSD-3-Clause"
131 | },
132 | "node_modules/@nodelib/fs.scandir": {
133 | "version": "2.1.5",
134 | "license": "MIT",
135 | "dependencies": {
136 | "@nodelib/fs.stat": "2.0.5",
137 | "run-parallel": "^1.1.9"
138 | },
139 | "engines": {
140 | "node": ">= 8"
141 | }
142 | },
143 | "node_modules/@nodelib/fs.stat": {
144 | "version": "2.0.5",
145 | "license": "MIT",
146 | "engines": {
147 | "node": ">= 8"
148 | }
149 | },
150 | "node_modules/@nodelib/fs.walk": {
151 | "version": "1.2.8",
152 | "license": "MIT",
153 | "dependencies": {
154 | "@nodelib/fs.scandir": "2.1.5",
155 | "fastq": "^1.6.0"
156 | },
157 | "engines": {
158 | "node": ">= 8"
159 | }
160 | },
161 | "node_modules/@ungap/structured-clone": {
162 | "version": "1.2.0",
163 | "license": "ISC"
164 | },
165 | "node_modules/accepts": {
166 | "version": "1.3.8",
167 | "license": "MIT",
168 | "dependencies": {
169 | "mime-types": "~2.1.34",
170 | "negotiator": "0.6.3"
171 | },
172 | "engines": {
173 | "node": ">= 0.6"
174 | }
175 | },
176 | "node_modules/acorn": {
177 | "version": "8.11.3",
178 | "license": "MIT",
179 | "bin": {
180 | "acorn": "bin/acorn"
181 | },
182 | "engines": {
183 | "node": ">=0.4.0"
184 | }
185 | },
186 | "node_modules/acorn-jsx": {
187 | "version": "5.3.2",
188 | "license": "MIT",
189 | "peerDependencies": {
190 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
191 | }
192 | },
193 | "node_modules/ajv": {
194 | "version": "6.12.6",
195 | "license": "MIT",
196 | "dependencies": {
197 | "fast-deep-equal": "^3.1.1",
198 | "fast-json-stable-stringify": "^2.0.0",
199 | "json-schema-traverse": "^0.4.1",
200 | "uri-js": "^4.2.2"
201 | },
202 | "funding": {
203 | "type": "github",
204 | "url": "https://github.com/sponsors/epoberezkin"
205 | }
206 | },
207 | "node_modules/ansi-regex": {
208 | "version": "5.0.1",
209 | "license": "MIT",
210 | "engines": {
211 | "node": ">=8"
212 | }
213 | },
214 | "node_modules/ansi-styles": {
215 | "version": "4.3.0",
216 | "license": "MIT",
217 | "dependencies": {
218 | "color-convert": "^2.0.1"
219 | },
220 | "engines": {
221 | "node": ">=8"
222 | },
223 | "funding": {
224 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
225 | }
226 | },
227 | "node_modules/argparse": {
228 | "version": "2.0.1",
229 | "license": "Python-2.0"
230 | },
231 | "node_modules/array-flatten": {
232 | "version": "1.1.1",
233 | "license": "MIT"
234 | },
235 | "node_modules/assemblyai": {
236 | "version": "4.2.2",
237 | "license": "MIT",
238 | "dependencies": {
239 | "ws": "^8.13.0"
240 | },
241 | "engines": {
242 | "node": ">=18"
243 | }
244 | },
245 | "node_modules/asynckit": {
246 | "version": "0.4.0",
247 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
248 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
249 | },
250 | "node_modules/axios": {
251 | "version": "1.9.0",
252 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
253 | "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
254 | "dependencies": {
255 | "follow-redirects": "^1.15.6",
256 | "form-data": "^4.0.0",
257 | "proxy-from-env": "^1.1.0"
258 | }
259 | },
260 | "node_modules/balanced-match": {
261 | "version": "1.0.2",
262 | "license": "MIT"
263 | },
264 | "node_modules/body-parser": {
265 | "version": "1.20.1",
266 | "license": "MIT",
267 | "dependencies": {
268 | "bytes": "3.1.2",
269 | "content-type": "~1.0.4",
270 | "debug": "2.6.9",
271 | "depd": "2.0.0",
272 | "destroy": "1.2.0",
273 | "http-errors": "2.0.0",
274 | "iconv-lite": "0.4.24",
275 | "on-finished": "2.4.1",
276 | "qs": "6.11.0",
277 | "raw-body": "2.5.1",
278 | "type-is": "~1.6.18",
279 | "unpipe": "1.0.0"
280 | },
281 | "engines": {
282 | "node": ">= 0.8",
283 | "npm": "1.2.8000 || >= 1.4.16"
284 | }
285 | },
286 | "node_modules/brace-expansion": {
287 | "version": "1.1.11",
288 | "license": "MIT",
289 | "dependencies": {
290 | "balanced-match": "^1.0.0",
291 | "concat-map": "0.0.1"
292 | }
293 | },
294 | "node_modules/bytes": {
295 | "version": "3.1.2",
296 | "license": "MIT",
297 | "engines": {
298 | "node": ">= 0.8"
299 | }
300 | },
301 | "node_modules/call-bind": {
302 | "version": "1.0.5",
303 | "license": "MIT",
304 | "dependencies": {
305 | "function-bind": "^1.1.2",
306 | "get-intrinsic": "^1.2.1",
307 | "set-function-length": "^1.1.1"
308 | },
309 | "funding": {
310 | "url": "https://github.com/sponsors/ljharb"
311 | }
312 | },
313 | "node_modules/call-bind-apply-helpers": {
314 | "version": "1.0.2",
315 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
316 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
317 | "dependencies": {
318 | "es-errors": "^1.3.0",
319 | "function-bind": "^1.1.2"
320 | },
321 | "engines": {
322 | "node": ">= 0.4"
323 | }
324 | },
325 | "node_modules/callsites": {
326 | "version": "3.1.0",
327 | "license": "MIT",
328 | "engines": {
329 | "node": ">=6"
330 | }
331 | },
332 | "node_modules/chalk": {
333 | "version": "4.1.2",
334 | "license": "MIT",
335 | "dependencies": {
336 | "ansi-styles": "^4.1.0",
337 | "supports-color": "^7.1.0"
338 | },
339 | "engines": {
340 | "node": ">=10"
341 | },
342 | "funding": {
343 | "url": "https://github.com/chalk/chalk?sponsor=1"
344 | }
345 | },
346 | "node_modules/color-convert": {
347 | "version": "2.0.1",
348 | "license": "MIT",
349 | "dependencies": {
350 | "color-name": "~1.1.4"
351 | },
352 | "engines": {
353 | "node": ">=7.0.0"
354 | }
355 | },
356 | "node_modules/color-name": {
357 | "version": "1.1.4",
358 | "license": "MIT"
359 | },
360 | "node_modules/combined-stream": {
361 | "version": "1.0.8",
362 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
363 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
364 | "dependencies": {
365 | "delayed-stream": "~1.0.0"
366 | },
367 | "engines": {
368 | "node": ">= 0.8"
369 | }
370 | },
371 | "node_modules/concat-map": {
372 | "version": "0.0.1",
373 | "license": "MIT"
374 | },
375 | "node_modules/content-disposition": {
376 | "version": "0.5.4",
377 | "license": "MIT",
378 | "dependencies": {
379 | "safe-buffer": "5.2.1"
380 | },
381 | "engines": {
382 | "node": ">= 0.6"
383 | }
384 | },
385 | "node_modules/content-type": {
386 | "version": "1.0.5",
387 | "license": "MIT",
388 | "engines": {
389 | "node": ">= 0.6"
390 | }
391 | },
392 | "node_modules/cookie": {
393 | "version": "0.5.0",
394 | "license": "MIT",
395 | "engines": {
396 | "node": ">= 0.6"
397 | }
398 | },
399 | "node_modules/cookie-signature": {
400 | "version": "1.0.6",
401 | "license": "MIT"
402 | },
403 | "node_modules/cors": {
404 | "version": "2.8.5",
405 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
406 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
407 | "dependencies": {
408 | "object-assign": "^4",
409 | "vary": "^1"
410 | },
411 | "engines": {
412 | "node": ">= 0.10"
413 | }
414 | },
415 | "node_modules/cross-spawn": {
416 | "version": "7.0.3",
417 | "license": "MIT",
418 | "dependencies": {
419 | "path-key": "^3.1.0",
420 | "shebang-command": "^2.0.0",
421 | "which": "^2.0.1"
422 | },
423 | "engines": {
424 | "node": ">= 8"
425 | }
426 | },
427 | "node_modules/debug": {
428 | "version": "2.6.9",
429 | "license": "MIT",
430 | "dependencies": {
431 | "ms": "2.0.0"
432 | }
433 | },
434 | "node_modules/debug/node_modules/ms": {
435 | "version": "2.0.0",
436 | "license": "MIT"
437 | },
438 | "node_modules/deep-is": {
439 | "version": "0.1.4",
440 | "license": "MIT"
441 | },
442 | "node_modules/define-data-property": {
443 | "version": "1.1.1",
444 | "license": "MIT",
445 | "dependencies": {
446 | "get-intrinsic": "^1.2.1",
447 | "gopd": "^1.0.1",
448 | "has-property-descriptors": "^1.0.0"
449 | },
450 | "engines": {
451 | "node": ">= 0.4"
452 | }
453 | },
454 | "node_modules/delayed-stream": {
455 | "version": "1.0.0",
456 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
457 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
458 | "engines": {
459 | "node": ">=0.4.0"
460 | }
461 | },
462 | "node_modules/depd": {
463 | "version": "2.0.0",
464 | "license": "MIT",
465 | "engines": {
466 | "node": ">= 0.8"
467 | }
468 | },
469 | "node_modules/destroy": {
470 | "version": "1.2.0",
471 | "license": "MIT",
472 | "engines": {
473 | "node": ">= 0.8",
474 | "npm": "1.2.8000 || >= 1.4.16"
475 | }
476 | },
477 | "node_modules/doctrine": {
478 | "version": "3.0.0",
479 | "license": "Apache-2.0",
480 | "dependencies": {
481 | "esutils": "^2.0.2"
482 | },
483 | "engines": {
484 | "node": ">=6.0.0"
485 | }
486 | },
487 | "node_modules/dotenv": {
488 | "version": "16.4.1",
489 | "license": "BSD-2-Clause",
490 | "engines": {
491 | "node": ">=12"
492 | },
493 | "funding": {
494 | "url": "https://github.com/motdotla/dotenv?sponsor=1"
495 | }
496 | },
497 | "node_modules/dunder-proto": {
498 | "version": "1.0.1",
499 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
500 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
501 | "dependencies": {
502 | "call-bind-apply-helpers": "^1.0.1",
503 | "es-errors": "^1.3.0",
504 | "gopd": "^1.2.0"
505 | },
506 | "engines": {
507 | "node": ">= 0.4"
508 | }
509 | },
510 | "node_modules/ee-first": {
511 | "version": "1.1.1",
512 | "license": "MIT"
513 | },
514 | "node_modules/encodeurl": {
515 | "version": "1.0.2",
516 | "license": "MIT",
517 | "engines": {
518 | "node": ">= 0.8"
519 | }
520 | },
521 | "node_modules/es-define-property": {
522 | "version": "1.0.1",
523 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
524 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
525 | "engines": {
526 | "node": ">= 0.4"
527 | }
528 | },
529 | "node_modules/es-errors": {
530 | "version": "1.3.0",
531 | "license": "MIT",
532 | "engines": {
533 | "node": ">= 0.4"
534 | }
535 | },
536 | "node_modules/es-object-atoms": {
537 | "version": "1.1.1",
538 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
539 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
540 | "dependencies": {
541 | "es-errors": "^1.3.0"
542 | },
543 | "engines": {
544 | "node": ">= 0.4"
545 | }
546 | },
547 | "node_modules/es-set-tostringtag": {
548 | "version": "2.1.0",
549 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
550 | "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
551 | "dependencies": {
552 | "es-errors": "^1.3.0",
553 | "get-intrinsic": "^1.2.6",
554 | "has-tostringtag": "^1.0.2",
555 | "hasown": "^2.0.2"
556 | },
557 | "engines": {
558 | "node": ">= 0.4"
559 | }
560 | },
561 | "node_modules/escape-html": {
562 | "version": "1.0.3",
563 | "license": "MIT"
564 | },
565 | "node_modules/escape-string-regexp": {
566 | "version": "4.0.0",
567 | "license": "MIT",
568 | "engines": {
569 | "node": ">=10"
570 | },
571 | "funding": {
572 | "url": "https://github.com/sponsors/sindresorhus"
573 | }
574 | },
575 | "node_modules/eslint": {
576 | "version": "8.56.0",
577 | "license": "MIT",
578 | "dependencies": {
579 | "@eslint-community/eslint-utils": "^4.2.0",
580 | "@eslint-community/regexpp": "^4.6.1",
581 | "@eslint/eslintrc": "^2.1.4",
582 | "@eslint/js": "8.56.0",
583 | "@humanwhocodes/config-array": "^0.11.13",
584 | "@humanwhocodes/module-importer": "^1.0.1",
585 | "@nodelib/fs.walk": "^1.2.8",
586 | "@ungap/structured-clone": "^1.2.0",
587 | "ajv": "^6.12.4",
588 | "chalk": "^4.0.0",
589 | "cross-spawn": "^7.0.2",
590 | "debug": "^4.3.2",
591 | "doctrine": "^3.0.0",
592 | "escape-string-regexp": "^4.0.0",
593 | "eslint-scope": "^7.2.2",
594 | "eslint-visitor-keys": "^3.4.3",
595 | "espree": "^9.6.1",
596 | "esquery": "^1.4.2",
597 | "esutils": "^2.0.2",
598 | "fast-deep-equal": "^3.1.3",
599 | "file-entry-cache": "^6.0.1",
600 | "find-up": "^5.0.0",
601 | "glob-parent": "^6.0.2",
602 | "globals": "^13.19.0",
603 | "graphemer": "^1.4.0",
604 | "ignore": "^5.2.0",
605 | "imurmurhash": "^0.1.4",
606 | "is-glob": "^4.0.0",
607 | "is-path-inside": "^3.0.3",
608 | "js-yaml": "^4.1.0",
609 | "json-stable-stringify-without-jsonify": "^1.0.1",
610 | "levn": "^0.4.1",
611 | "lodash.merge": "^4.6.2",
612 | "minimatch": "^3.1.2",
613 | "natural-compare": "^1.4.0",
614 | "optionator": "^0.9.3",
615 | "strip-ansi": "^6.0.1",
616 | "text-table": "^0.2.0"
617 | },
618 | "bin": {
619 | "eslint": "bin/eslint.js"
620 | },
621 | "engines": {
622 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
623 | },
624 | "funding": {
625 | "url": "https://opencollective.com/eslint"
626 | }
627 | },
628 | "node_modules/eslint-scope": {
629 | "version": "7.2.2",
630 | "license": "BSD-2-Clause",
631 | "dependencies": {
632 | "esrecurse": "^4.3.0",
633 | "estraverse": "^5.2.0"
634 | },
635 | "engines": {
636 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
637 | },
638 | "funding": {
639 | "url": "https://opencollective.com/eslint"
640 | }
641 | },
642 | "node_modules/eslint-visitor-keys": {
643 | "version": "3.4.3",
644 | "license": "Apache-2.0",
645 | "engines": {
646 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
647 | },
648 | "funding": {
649 | "url": "https://opencollective.com/eslint"
650 | }
651 | },
652 | "node_modules/eslint/node_modules/debug": {
653 | "version": "4.3.4",
654 | "license": "MIT",
655 | "dependencies": {
656 | "ms": "2.1.2"
657 | },
658 | "engines": {
659 | "node": ">=6.0"
660 | },
661 | "peerDependenciesMeta": {
662 | "supports-color": {
663 | "optional": true
664 | }
665 | }
666 | },
667 | "node_modules/espree": {
668 | "version": "9.6.1",
669 | "license": "BSD-2-Clause",
670 | "dependencies": {
671 | "acorn": "^8.9.0",
672 | "acorn-jsx": "^5.3.2",
673 | "eslint-visitor-keys": "^3.4.1"
674 | },
675 | "engines": {
676 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
677 | },
678 | "funding": {
679 | "url": "https://opencollective.com/eslint"
680 | }
681 | },
682 | "node_modules/esquery": {
683 | "version": "1.5.0",
684 | "license": "BSD-3-Clause",
685 | "dependencies": {
686 | "estraverse": "^5.1.0"
687 | },
688 | "engines": {
689 | "node": ">=0.10"
690 | }
691 | },
692 | "node_modules/esrecurse": {
693 | "version": "4.3.0",
694 | "license": "BSD-2-Clause",
695 | "dependencies": {
696 | "estraverse": "^5.2.0"
697 | },
698 | "engines": {
699 | "node": ">=4.0"
700 | }
701 | },
702 | "node_modules/estraverse": {
703 | "version": "5.3.0",
704 | "license": "BSD-2-Clause",
705 | "engines": {
706 | "node": ">=4.0"
707 | }
708 | },
709 | "node_modules/esutils": {
710 | "version": "2.0.3",
711 | "license": "BSD-2-Clause",
712 | "engines": {
713 | "node": ">=0.10.0"
714 | }
715 | },
716 | "node_modules/etag": {
717 | "version": "1.8.1",
718 | "license": "MIT",
719 | "engines": {
720 | "node": ">= 0.6"
721 | }
722 | },
723 | "node_modules/express": {
724 | "version": "4.18.2",
725 | "license": "MIT",
726 | "dependencies": {
727 | "accepts": "~1.3.8",
728 | "array-flatten": "1.1.1",
729 | "body-parser": "1.20.1",
730 | "content-disposition": "0.5.4",
731 | "content-type": "~1.0.4",
732 | "cookie": "0.5.0",
733 | "cookie-signature": "1.0.6",
734 | "debug": "2.6.9",
735 | "depd": "2.0.0",
736 | "encodeurl": "~1.0.2",
737 | "escape-html": "~1.0.3",
738 | "etag": "~1.8.1",
739 | "finalhandler": "1.2.0",
740 | "fresh": "0.5.2",
741 | "http-errors": "2.0.0",
742 | "merge-descriptors": "1.0.1",
743 | "methods": "~1.1.2",
744 | "on-finished": "2.4.1",
745 | "parseurl": "~1.3.3",
746 | "path-to-regexp": "0.1.7",
747 | "proxy-addr": "~2.0.7",
748 | "qs": "6.11.0",
749 | "range-parser": "~1.2.1",
750 | "safe-buffer": "5.2.1",
751 | "send": "0.18.0",
752 | "serve-static": "1.15.0",
753 | "setprototypeof": "1.2.0",
754 | "statuses": "2.0.1",
755 | "type-is": "~1.6.18",
756 | "utils-merge": "1.0.1",
757 | "vary": "~1.1.2"
758 | },
759 | "engines": {
760 | "node": ">= 0.10.0"
761 | }
762 | },
763 | "node_modules/fast-deep-equal": {
764 | "version": "3.1.3",
765 | "license": "MIT"
766 | },
767 | "node_modules/fast-json-stable-stringify": {
768 | "version": "2.1.0",
769 | "license": "MIT"
770 | },
771 | "node_modules/fast-levenshtein": {
772 | "version": "2.0.6",
773 | "license": "MIT"
774 | },
775 | "node_modules/fastq": {
776 | "version": "1.17.1",
777 | "license": "ISC",
778 | "dependencies": {
779 | "reusify": "^1.0.4"
780 | }
781 | },
782 | "node_modules/file-entry-cache": {
783 | "version": "6.0.1",
784 | "license": "MIT",
785 | "dependencies": {
786 | "flat-cache": "^3.0.4"
787 | },
788 | "engines": {
789 | "node": "^10.12.0 || >=12.0.0"
790 | }
791 | },
792 | "node_modules/finalhandler": {
793 | "version": "1.2.0",
794 | "license": "MIT",
795 | "dependencies": {
796 | "debug": "2.6.9",
797 | "encodeurl": "~1.0.2",
798 | "escape-html": "~1.0.3",
799 | "on-finished": "2.4.1",
800 | "parseurl": "~1.3.3",
801 | "statuses": "2.0.1",
802 | "unpipe": "~1.0.0"
803 | },
804 | "engines": {
805 | "node": ">= 0.8"
806 | }
807 | },
808 | "node_modules/find-up": {
809 | "version": "5.0.0",
810 | "license": "MIT",
811 | "dependencies": {
812 | "locate-path": "^6.0.0",
813 | "path-exists": "^4.0.0"
814 | },
815 | "engines": {
816 | "node": ">=10"
817 | },
818 | "funding": {
819 | "url": "https://github.com/sponsors/sindresorhus"
820 | }
821 | },
822 | "node_modules/flat-cache": {
823 | "version": "3.2.0",
824 | "license": "MIT",
825 | "dependencies": {
826 | "flatted": "^3.2.9",
827 | "keyv": "^4.5.3",
828 | "rimraf": "^3.0.2"
829 | },
830 | "engines": {
831 | "node": "^10.12.0 || >=12.0.0"
832 | }
833 | },
834 | "node_modules/flatted": {
835 | "version": "3.2.9",
836 | "license": "ISC"
837 | },
838 | "node_modules/follow-redirects": {
839 | "version": "1.15.9",
840 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
841 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
842 | "funding": [
843 | {
844 | "type": "individual",
845 | "url": "https://github.com/sponsors/RubenVerborgh"
846 | }
847 | ],
848 | "engines": {
849 | "node": ">=4.0"
850 | },
851 | "peerDependenciesMeta": {
852 | "debug": {
853 | "optional": true
854 | }
855 | }
856 | },
857 | "node_modules/form-data": {
858 | "version": "4.0.2",
859 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
860 | "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
861 | "dependencies": {
862 | "asynckit": "^0.4.0",
863 | "combined-stream": "^1.0.8",
864 | "es-set-tostringtag": "^2.1.0",
865 | "mime-types": "^2.1.12"
866 | },
867 | "engines": {
868 | "node": ">= 6"
869 | }
870 | },
871 | "node_modules/forwarded": {
872 | "version": "0.2.0",
873 | "license": "MIT",
874 | "engines": {
875 | "node": ">= 0.6"
876 | }
877 | },
878 | "node_modules/fresh": {
879 | "version": "0.5.2",
880 | "license": "MIT",
881 | "engines": {
882 | "node": ">= 0.6"
883 | }
884 | },
885 | "node_modules/fs.realpath": {
886 | "version": "1.0.0",
887 | "license": "ISC"
888 | },
889 | "node_modules/function-bind": {
890 | "version": "1.1.2",
891 | "license": "MIT",
892 | "funding": {
893 | "url": "https://github.com/sponsors/ljharb"
894 | }
895 | },
896 | "node_modules/get-intrinsic": {
897 | "version": "1.3.0",
898 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
899 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
900 | "dependencies": {
901 | "call-bind-apply-helpers": "^1.0.2",
902 | "es-define-property": "^1.0.1",
903 | "es-errors": "^1.3.0",
904 | "es-object-atoms": "^1.1.1",
905 | "function-bind": "^1.1.2",
906 | "get-proto": "^1.0.1",
907 | "gopd": "^1.2.0",
908 | "has-symbols": "^1.1.0",
909 | "hasown": "^2.0.2",
910 | "math-intrinsics": "^1.1.0"
911 | },
912 | "engines": {
913 | "node": ">= 0.4"
914 | },
915 | "funding": {
916 | "url": "https://github.com/sponsors/ljharb"
917 | }
918 | },
919 | "node_modules/get-proto": {
920 | "version": "1.0.1",
921 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
922 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
923 | "dependencies": {
924 | "dunder-proto": "^1.0.1",
925 | "es-object-atoms": "^1.0.0"
926 | },
927 | "engines": {
928 | "node": ">= 0.4"
929 | }
930 | },
931 | "node_modules/glob": {
932 | "version": "7.2.3",
933 | "license": "ISC",
934 | "dependencies": {
935 | "fs.realpath": "^1.0.0",
936 | "inflight": "^1.0.4",
937 | "inherits": "2",
938 | "minimatch": "^3.1.1",
939 | "once": "^1.3.0",
940 | "path-is-absolute": "^1.0.0"
941 | },
942 | "engines": {
943 | "node": "*"
944 | },
945 | "funding": {
946 | "url": "https://github.com/sponsors/isaacs"
947 | }
948 | },
949 | "node_modules/glob-parent": {
950 | "version": "6.0.2",
951 | "license": "ISC",
952 | "dependencies": {
953 | "is-glob": "^4.0.3"
954 | },
955 | "engines": {
956 | "node": ">=10.13.0"
957 | }
958 | },
959 | "node_modules/globals": {
960 | "version": "13.24.0",
961 | "license": "MIT",
962 | "dependencies": {
963 | "type-fest": "^0.20.2"
964 | },
965 | "engines": {
966 | "node": ">=8"
967 | },
968 | "funding": {
969 | "url": "https://github.com/sponsors/sindresorhus"
970 | }
971 | },
972 | "node_modules/gopd": {
973 | "version": "1.2.0",
974 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
975 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
976 | "engines": {
977 | "node": ">= 0.4"
978 | },
979 | "funding": {
980 | "url": "https://github.com/sponsors/ljharb"
981 | }
982 | },
983 | "node_modules/graphemer": {
984 | "version": "1.4.0",
985 | "license": "MIT"
986 | },
987 | "node_modules/has-flag": {
988 | "version": "4.0.0",
989 | "license": "MIT",
990 | "engines": {
991 | "node": ">=8"
992 | }
993 | },
994 | "node_modules/has-property-descriptors": {
995 | "version": "1.0.1",
996 | "license": "MIT",
997 | "dependencies": {
998 | "get-intrinsic": "^1.2.2"
999 | },
1000 | "funding": {
1001 | "url": "https://github.com/sponsors/ljharb"
1002 | }
1003 | },
1004 | "node_modules/has-symbols": {
1005 | "version": "1.1.0",
1006 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1007 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
1008 | "engines": {
1009 | "node": ">= 0.4"
1010 | },
1011 | "funding": {
1012 | "url": "https://github.com/sponsors/ljharb"
1013 | }
1014 | },
1015 | "node_modules/has-tostringtag": {
1016 | "version": "1.0.2",
1017 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
1018 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
1019 | "dependencies": {
1020 | "has-symbols": "^1.0.3"
1021 | },
1022 | "engines": {
1023 | "node": ">= 0.4"
1024 | },
1025 | "funding": {
1026 | "url": "https://github.com/sponsors/ljharb"
1027 | }
1028 | },
1029 | "node_modules/hasown": {
1030 | "version": "2.0.2",
1031 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1032 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1033 | "dependencies": {
1034 | "function-bind": "^1.1.2"
1035 | },
1036 | "engines": {
1037 | "node": ">= 0.4"
1038 | }
1039 | },
1040 | "node_modules/http-errors": {
1041 | "version": "2.0.0",
1042 | "license": "MIT",
1043 | "dependencies": {
1044 | "depd": "2.0.0",
1045 | "inherits": "2.0.4",
1046 | "setprototypeof": "1.2.0",
1047 | "statuses": "2.0.1",
1048 | "toidentifier": "1.0.1"
1049 | },
1050 | "engines": {
1051 | "node": ">= 0.8"
1052 | }
1053 | },
1054 | "node_modules/iconv-lite": {
1055 | "version": "0.4.24",
1056 | "license": "MIT",
1057 | "dependencies": {
1058 | "safer-buffer": ">= 2.1.2 < 3"
1059 | },
1060 | "engines": {
1061 | "node": ">=0.10.0"
1062 | }
1063 | },
1064 | "node_modules/ignore": {
1065 | "version": "5.3.1",
1066 | "license": "MIT",
1067 | "engines": {
1068 | "node": ">= 4"
1069 | }
1070 | },
1071 | "node_modules/import-fresh": {
1072 | "version": "3.3.0",
1073 | "license": "MIT",
1074 | "dependencies": {
1075 | "parent-module": "^1.0.0",
1076 | "resolve-from": "^4.0.0"
1077 | },
1078 | "engines": {
1079 | "node": ">=6"
1080 | },
1081 | "funding": {
1082 | "url": "https://github.com/sponsors/sindresorhus"
1083 | }
1084 | },
1085 | "node_modules/imurmurhash": {
1086 | "version": "0.1.4",
1087 | "license": "MIT",
1088 | "engines": {
1089 | "node": ">=0.8.19"
1090 | }
1091 | },
1092 | "node_modules/inflight": {
1093 | "version": "1.0.6",
1094 | "license": "ISC",
1095 | "dependencies": {
1096 | "once": "^1.3.0",
1097 | "wrappy": "1"
1098 | }
1099 | },
1100 | "node_modules/inherits": {
1101 | "version": "2.0.4",
1102 | "license": "ISC"
1103 | },
1104 | "node_modules/ipaddr.js": {
1105 | "version": "1.9.1",
1106 | "license": "MIT",
1107 | "engines": {
1108 | "node": ">= 0.10"
1109 | }
1110 | },
1111 | "node_modules/is-extglob": {
1112 | "version": "2.1.1",
1113 | "license": "MIT",
1114 | "engines": {
1115 | "node": ">=0.10.0"
1116 | }
1117 | },
1118 | "node_modules/is-glob": {
1119 | "version": "4.0.3",
1120 | "license": "MIT",
1121 | "dependencies": {
1122 | "is-extglob": "^2.1.1"
1123 | },
1124 | "engines": {
1125 | "node": ">=0.10.0"
1126 | }
1127 | },
1128 | "node_modules/is-path-inside": {
1129 | "version": "3.0.3",
1130 | "license": "MIT",
1131 | "engines": {
1132 | "node": ">=8"
1133 | }
1134 | },
1135 | "node_modules/isexe": {
1136 | "version": "2.0.0",
1137 | "license": "ISC"
1138 | },
1139 | "node_modules/js-yaml": {
1140 | "version": "4.1.0",
1141 | "license": "MIT",
1142 | "dependencies": {
1143 | "argparse": "^2.0.1"
1144 | },
1145 | "bin": {
1146 | "js-yaml": "bin/js-yaml.js"
1147 | }
1148 | },
1149 | "node_modules/json-buffer": {
1150 | "version": "3.0.1",
1151 | "license": "MIT"
1152 | },
1153 | "node_modules/json-schema-traverse": {
1154 | "version": "0.4.1",
1155 | "license": "MIT"
1156 | },
1157 | "node_modules/json-stable-stringify-without-jsonify": {
1158 | "version": "1.0.1",
1159 | "license": "MIT"
1160 | },
1161 | "node_modules/keyv": {
1162 | "version": "4.5.4",
1163 | "license": "MIT",
1164 | "dependencies": {
1165 | "json-buffer": "3.0.1"
1166 | }
1167 | },
1168 | "node_modules/levn": {
1169 | "version": "0.4.1",
1170 | "license": "MIT",
1171 | "dependencies": {
1172 | "prelude-ls": "^1.2.1",
1173 | "type-check": "~0.4.0"
1174 | },
1175 | "engines": {
1176 | "node": ">= 0.8.0"
1177 | }
1178 | },
1179 | "node_modules/locate-path": {
1180 | "version": "6.0.0",
1181 | "license": "MIT",
1182 | "dependencies": {
1183 | "p-locate": "^5.0.0"
1184 | },
1185 | "engines": {
1186 | "node": ">=10"
1187 | },
1188 | "funding": {
1189 | "url": "https://github.com/sponsors/sindresorhus"
1190 | }
1191 | },
1192 | "node_modules/lodash.merge": {
1193 | "version": "4.6.2",
1194 | "license": "MIT"
1195 | },
1196 | "node_modules/math-intrinsics": {
1197 | "version": "1.1.0",
1198 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1199 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
1200 | "engines": {
1201 | "node": ">= 0.4"
1202 | }
1203 | },
1204 | "node_modules/media-typer": {
1205 | "version": "0.3.0",
1206 | "license": "MIT",
1207 | "engines": {
1208 | "node": ">= 0.6"
1209 | }
1210 | },
1211 | "node_modules/merge-descriptors": {
1212 | "version": "1.0.1",
1213 | "license": "MIT"
1214 | },
1215 | "node_modules/methods": {
1216 | "version": "1.1.2",
1217 | "license": "MIT",
1218 | "engines": {
1219 | "node": ">= 0.6"
1220 | }
1221 | },
1222 | "node_modules/mime": {
1223 | "version": "1.6.0",
1224 | "license": "MIT",
1225 | "bin": {
1226 | "mime": "cli.js"
1227 | },
1228 | "engines": {
1229 | "node": ">=4"
1230 | }
1231 | },
1232 | "node_modules/mime-db": {
1233 | "version": "1.52.0",
1234 | "license": "MIT",
1235 | "engines": {
1236 | "node": ">= 0.6"
1237 | }
1238 | },
1239 | "node_modules/mime-types": {
1240 | "version": "2.1.35",
1241 | "license": "MIT",
1242 | "dependencies": {
1243 | "mime-db": "1.52.0"
1244 | },
1245 | "engines": {
1246 | "node": ">= 0.6"
1247 | }
1248 | },
1249 | "node_modules/minimatch": {
1250 | "version": "3.1.2",
1251 | "license": "ISC",
1252 | "dependencies": {
1253 | "brace-expansion": "^1.1.7"
1254 | },
1255 | "engines": {
1256 | "node": "*"
1257 | }
1258 | },
1259 | "node_modules/ms": {
1260 | "version": "2.1.2",
1261 | "license": "MIT"
1262 | },
1263 | "node_modules/natural-compare": {
1264 | "version": "1.4.0",
1265 | "license": "MIT"
1266 | },
1267 | "node_modules/negotiator": {
1268 | "version": "0.6.3",
1269 | "license": "MIT",
1270 | "engines": {
1271 | "node": ">= 0.6"
1272 | }
1273 | },
1274 | "node_modules/object-assign": {
1275 | "version": "4.1.1",
1276 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1277 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1278 | "engines": {
1279 | "node": ">=0.10.0"
1280 | }
1281 | },
1282 | "node_modules/object-inspect": {
1283 | "version": "1.13.1",
1284 | "license": "MIT",
1285 | "funding": {
1286 | "url": "https://github.com/sponsors/ljharb"
1287 | }
1288 | },
1289 | "node_modules/on-finished": {
1290 | "version": "2.4.1",
1291 | "license": "MIT",
1292 | "dependencies": {
1293 | "ee-first": "1.1.1"
1294 | },
1295 | "engines": {
1296 | "node": ">= 0.8"
1297 | }
1298 | },
1299 | "node_modules/once": {
1300 | "version": "1.4.0",
1301 | "license": "ISC",
1302 | "dependencies": {
1303 | "wrappy": "1"
1304 | }
1305 | },
1306 | "node_modules/optionator": {
1307 | "version": "0.9.3",
1308 | "license": "MIT",
1309 | "dependencies": {
1310 | "@aashutoshrathi/word-wrap": "^1.2.3",
1311 | "deep-is": "^0.1.3",
1312 | "fast-levenshtein": "^2.0.6",
1313 | "levn": "^0.4.1",
1314 | "prelude-ls": "^1.2.1",
1315 | "type-check": "^0.4.0"
1316 | },
1317 | "engines": {
1318 | "node": ">= 0.8.0"
1319 | }
1320 | },
1321 | "node_modules/p-limit": {
1322 | "version": "3.1.0",
1323 | "license": "MIT",
1324 | "dependencies": {
1325 | "yocto-queue": "^0.1.0"
1326 | },
1327 | "engines": {
1328 | "node": ">=10"
1329 | },
1330 | "funding": {
1331 | "url": "https://github.com/sponsors/sindresorhus"
1332 | }
1333 | },
1334 | "node_modules/p-locate": {
1335 | "version": "5.0.0",
1336 | "license": "MIT",
1337 | "dependencies": {
1338 | "p-limit": "^3.0.2"
1339 | },
1340 | "engines": {
1341 | "node": ">=10"
1342 | },
1343 | "funding": {
1344 | "url": "https://github.com/sponsors/sindresorhus"
1345 | }
1346 | },
1347 | "node_modules/parent-module": {
1348 | "version": "1.0.1",
1349 | "license": "MIT",
1350 | "dependencies": {
1351 | "callsites": "^3.0.0"
1352 | },
1353 | "engines": {
1354 | "node": ">=6"
1355 | }
1356 | },
1357 | "node_modules/parseurl": {
1358 | "version": "1.3.3",
1359 | "license": "MIT",
1360 | "engines": {
1361 | "node": ">= 0.8"
1362 | }
1363 | },
1364 | "node_modules/path-exists": {
1365 | "version": "4.0.0",
1366 | "license": "MIT",
1367 | "engines": {
1368 | "node": ">=8"
1369 | }
1370 | },
1371 | "node_modules/path-is-absolute": {
1372 | "version": "1.0.1",
1373 | "license": "MIT",
1374 | "engines": {
1375 | "node": ">=0.10.0"
1376 | }
1377 | },
1378 | "node_modules/path-key": {
1379 | "version": "3.1.1",
1380 | "license": "MIT",
1381 | "engines": {
1382 | "node": ">=8"
1383 | }
1384 | },
1385 | "node_modules/path-to-regexp": {
1386 | "version": "0.1.7",
1387 | "license": "MIT"
1388 | },
1389 | "node_modules/prelude-ls": {
1390 | "version": "1.2.1",
1391 | "license": "MIT",
1392 | "engines": {
1393 | "node": ">= 0.8.0"
1394 | }
1395 | },
1396 | "node_modules/prettier": {
1397 | "version": "3.2.5",
1398 | "license": "MIT",
1399 | "bin": {
1400 | "prettier": "bin/prettier.cjs"
1401 | },
1402 | "engines": {
1403 | "node": ">=14"
1404 | },
1405 | "funding": {
1406 | "url": "https://github.com/prettier/prettier?sponsor=1"
1407 | }
1408 | },
1409 | "node_modules/proxy-addr": {
1410 | "version": "2.0.7",
1411 | "license": "MIT",
1412 | "dependencies": {
1413 | "forwarded": "0.2.0",
1414 | "ipaddr.js": "1.9.1"
1415 | },
1416 | "engines": {
1417 | "node": ">= 0.10"
1418 | }
1419 | },
1420 | "node_modules/proxy-from-env": {
1421 | "version": "1.1.0",
1422 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1423 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
1424 | },
1425 | "node_modules/punycode": {
1426 | "version": "2.3.1",
1427 | "license": "MIT",
1428 | "engines": {
1429 | "node": ">=6"
1430 | }
1431 | },
1432 | "node_modules/qs": {
1433 | "version": "6.11.0",
1434 | "license": "BSD-3-Clause",
1435 | "dependencies": {
1436 | "side-channel": "^1.0.4"
1437 | },
1438 | "engines": {
1439 | "node": ">=0.6"
1440 | },
1441 | "funding": {
1442 | "url": "https://github.com/sponsors/ljharb"
1443 | }
1444 | },
1445 | "node_modules/queue-microtask": {
1446 | "version": "1.2.3",
1447 | "funding": [
1448 | {
1449 | "type": "github",
1450 | "url": "https://github.com/sponsors/feross"
1451 | },
1452 | {
1453 | "type": "patreon",
1454 | "url": "https://www.patreon.com/feross"
1455 | },
1456 | {
1457 | "type": "consulting",
1458 | "url": "https://feross.org/support"
1459 | }
1460 | ],
1461 | "license": "MIT"
1462 | },
1463 | "node_modules/range-parser": {
1464 | "version": "1.2.1",
1465 | "license": "MIT",
1466 | "engines": {
1467 | "node": ">= 0.6"
1468 | }
1469 | },
1470 | "node_modules/raw-body": {
1471 | "version": "2.5.1",
1472 | "license": "MIT",
1473 | "dependencies": {
1474 | "bytes": "3.1.2",
1475 | "http-errors": "2.0.0",
1476 | "iconv-lite": "0.4.24",
1477 | "unpipe": "1.0.0"
1478 | },
1479 | "engines": {
1480 | "node": ">= 0.8"
1481 | }
1482 | },
1483 | "node_modules/resolve-from": {
1484 | "version": "4.0.0",
1485 | "license": "MIT",
1486 | "engines": {
1487 | "node": ">=4"
1488 | }
1489 | },
1490 | "node_modules/reusify": {
1491 | "version": "1.0.4",
1492 | "license": "MIT",
1493 | "engines": {
1494 | "iojs": ">=1.0.0",
1495 | "node": ">=0.10.0"
1496 | }
1497 | },
1498 | "node_modules/rimraf": {
1499 | "version": "3.0.2",
1500 | "license": "ISC",
1501 | "dependencies": {
1502 | "glob": "^7.1.3"
1503 | },
1504 | "bin": {
1505 | "rimraf": "bin.js"
1506 | },
1507 | "funding": {
1508 | "url": "https://github.com/sponsors/isaacs"
1509 | }
1510 | },
1511 | "node_modules/run-parallel": {
1512 | "version": "1.2.0",
1513 | "funding": [
1514 | {
1515 | "type": "github",
1516 | "url": "https://github.com/sponsors/feross"
1517 | },
1518 | {
1519 | "type": "patreon",
1520 | "url": "https://www.patreon.com/feross"
1521 | },
1522 | {
1523 | "type": "consulting",
1524 | "url": "https://feross.org/support"
1525 | }
1526 | ],
1527 | "license": "MIT",
1528 | "dependencies": {
1529 | "queue-microtask": "^1.2.2"
1530 | }
1531 | },
1532 | "node_modules/safe-buffer": {
1533 | "version": "5.2.1",
1534 | "funding": [
1535 | {
1536 | "type": "github",
1537 | "url": "https://github.com/sponsors/feross"
1538 | },
1539 | {
1540 | "type": "patreon",
1541 | "url": "https://www.patreon.com/feross"
1542 | },
1543 | {
1544 | "type": "consulting",
1545 | "url": "https://feross.org/support"
1546 | }
1547 | ],
1548 | "license": "MIT"
1549 | },
1550 | "node_modules/safer-buffer": {
1551 | "version": "2.1.2",
1552 | "license": "MIT"
1553 | },
1554 | "node_modules/send": {
1555 | "version": "0.18.0",
1556 | "license": "MIT",
1557 | "dependencies": {
1558 | "debug": "2.6.9",
1559 | "depd": "2.0.0",
1560 | "destroy": "1.2.0",
1561 | "encodeurl": "~1.0.2",
1562 | "escape-html": "~1.0.3",
1563 | "etag": "~1.8.1",
1564 | "fresh": "0.5.2",
1565 | "http-errors": "2.0.0",
1566 | "mime": "1.6.0",
1567 | "ms": "2.1.3",
1568 | "on-finished": "2.4.1",
1569 | "range-parser": "~1.2.1",
1570 | "statuses": "2.0.1"
1571 | },
1572 | "engines": {
1573 | "node": ">= 0.8.0"
1574 | }
1575 | },
1576 | "node_modules/send/node_modules/ms": {
1577 | "version": "2.1.3",
1578 | "license": "MIT"
1579 | },
1580 | "node_modules/serve-static": {
1581 | "version": "1.15.0",
1582 | "license": "MIT",
1583 | "dependencies": {
1584 | "encodeurl": "~1.0.2",
1585 | "escape-html": "~1.0.3",
1586 | "parseurl": "~1.3.3",
1587 | "send": "0.18.0"
1588 | },
1589 | "engines": {
1590 | "node": ">= 0.8.0"
1591 | }
1592 | },
1593 | "node_modules/set-function-length": {
1594 | "version": "1.2.0",
1595 | "license": "MIT",
1596 | "dependencies": {
1597 | "define-data-property": "^1.1.1",
1598 | "function-bind": "^1.1.2",
1599 | "get-intrinsic": "^1.2.2",
1600 | "gopd": "^1.0.1",
1601 | "has-property-descriptors": "^1.0.1"
1602 | },
1603 | "engines": {
1604 | "node": ">= 0.4"
1605 | }
1606 | },
1607 | "node_modules/setprototypeof": {
1608 | "version": "1.2.0",
1609 | "license": "ISC"
1610 | },
1611 | "node_modules/shebang-command": {
1612 | "version": "2.0.0",
1613 | "license": "MIT",
1614 | "dependencies": {
1615 | "shebang-regex": "^3.0.0"
1616 | },
1617 | "engines": {
1618 | "node": ">=8"
1619 | }
1620 | },
1621 | "node_modules/shebang-regex": {
1622 | "version": "3.0.0",
1623 | "license": "MIT",
1624 | "engines": {
1625 | "node": ">=8"
1626 | }
1627 | },
1628 | "node_modules/side-channel": {
1629 | "version": "1.0.4",
1630 | "license": "MIT",
1631 | "dependencies": {
1632 | "call-bind": "^1.0.0",
1633 | "get-intrinsic": "^1.0.2",
1634 | "object-inspect": "^1.9.0"
1635 | },
1636 | "funding": {
1637 | "url": "https://github.com/sponsors/ljharb"
1638 | }
1639 | },
1640 | "node_modules/statuses": {
1641 | "version": "2.0.1",
1642 | "license": "MIT",
1643 | "engines": {
1644 | "node": ">= 0.8"
1645 | }
1646 | },
1647 | "node_modules/strip-ansi": {
1648 | "version": "6.0.1",
1649 | "license": "MIT",
1650 | "dependencies": {
1651 | "ansi-regex": "^5.0.1"
1652 | },
1653 | "engines": {
1654 | "node": ">=8"
1655 | }
1656 | },
1657 | "node_modules/strip-json-comments": {
1658 | "version": "3.1.1",
1659 | "license": "MIT",
1660 | "engines": {
1661 | "node": ">=8"
1662 | },
1663 | "funding": {
1664 | "url": "https://github.com/sponsors/sindresorhus"
1665 | }
1666 | },
1667 | "node_modules/supports-color": {
1668 | "version": "7.2.0",
1669 | "license": "MIT",
1670 | "dependencies": {
1671 | "has-flag": "^4.0.0"
1672 | },
1673 | "engines": {
1674 | "node": ">=8"
1675 | }
1676 | },
1677 | "node_modules/text-table": {
1678 | "version": "0.2.0",
1679 | "license": "MIT"
1680 | },
1681 | "node_modules/toidentifier": {
1682 | "version": "1.0.1",
1683 | "license": "MIT",
1684 | "engines": {
1685 | "node": ">=0.6"
1686 | }
1687 | },
1688 | "node_modules/type-check": {
1689 | "version": "0.4.0",
1690 | "license": "MIT",
1691 | "dependencies": {
1692 | "prelude-ls": "^1.2.1"
1693 | },
1694 | "engines": {
1695 | "node": ">= 0.8.0"
1696 | }
1697 | },
1698 | "node_modules/type-fest": {
1699 | "version": "0.20.2",
1700 | "license": "(MIT OR CC0-1.0)",
1701 | "engines": {
1702 | "node": ">=10"
1703 | },
1704 | "funding": {
1705 | "url": "https://github.com/sponsors/sindresorhus"
1706 | }
1707 | },
1708 | "node_modules/type-is": {
1709 | "version": "1.6.18",
1710 | "license": "MIT",
1711 | "dependencies": {
1712 | "media-typer": "0.3.0",
1713 | "mime-types": "~2.1.24"
1714 | },
1715 | "engines": {
1716 | "node": ">= 0.6"
1717 | }
1718 | },
1719 | "node_modules/unpipe": {
1720 | "version": "1.0.0",
1721 | "license": "MIT",
1722 | "engines": {
1723 | "node": ">= 0.8"
1724 | }
1725 | },
1726 | "node_modules/uri-js": {
1727 | "version": "4.4.1",
1728 | "license": "BSD-2-Clause",
1729 | "dependencies": {
1730 | "punycode": "^2.1.0"
1731 | }
1732 | },
1733 | "node_modules/utils-merge": {
1734 | "version": "1.0.1",
1735 | "license": "MIT",
1736 | "engines": {
1737 | "node": ">= 0.4.0"
1738 | }
1739 | },
1740 | "node_modules/vary": {
1741 | "version": "1.1.2",
1742 | "license": "MIT",
1743 | "engines": {
1744 | "node": ">= 0.8"
1745 | }
1746 | },
1747 | "node_modules/which": {
1748 | "version": "2.0.2",
1749 | "license": "ISC",
1750 | "dependencies": {
1751 | "isexe": "^2.0.0"
1752 | },
1753 | "bin": {
1754 | "node-which": "bin/node-which"
1755 | },
1756 | "engines": {
1757 | "node": ">= 8"
1758 | }
1759 | },
1760 | "node_modules/wrappy": {
1761 | "version": "1.0.2",
1762 | "license": "ISC"
1763 | },
1764 | "node_modules/ws": {
1765 | "version": "8.16.0",
1766 | "license": "MIT",
1767 | "engines": {
1768 | "node": ">=10.0.0"
1769 | },
1770 | "peerDependencies": {
1771 | "bufferutil": "^4.0.1",
1772 | "utf-8-validate": ">=5.0.2"
1773 | },
1774 | "peerDependenciesMeta": {
1775 | "bufferutil": {
1776 | "optional": true
1777 | },
1778 | "utf-8-validate": {
1779 | "optional": true
1780 | }
1781 | }
1782 | },
1783 | "node_modules/yocto-queue": {
1784 | "version": "0.1.0",
1785 | "license": "MIT",
1786 | "engines": {
1787 | "node": ">=10"
1788 | },
1789 | "funding": {
1790 | "url": "https://github.com/sponsors/sindresorhus"
1791 | }
1792 | }
1793 | }
1794 | }
1795 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "assemblyai-realtime-js-demo",
3 | "version": "3.0.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "node server.js"
7 | },
8 | "dependencies": {
9 | "axios": "^1.9.0",
10 | "dotenv": "^16.4.1",
11 | "eslint": "^8.56.0",
12 | "express": "^4.18.2",
13 | "prettier": "^3.2.5"
14 | },
15 | "browserslist": {
16 | "production": [
17 | ">0.2%",
18 | "not dead",
19 | "not op_mini all"
20 | ],
21 | "development": [
22 | "last 1 chrome version",
23 | "last 1 firefox version",
24 | "last 1 safari version"
25 | ]
26 | },
27 | "packageManager": "yarn@4.1.0"
28 | }
29 |
--------------------------------------------------------------------------------
/public/audio-processor.js:
--------------------------------------------------------------------------------
1 | const MAX_16BIT_INT = 32767
2 |
3 | class AudioProcessor extends AudioWorkletProcessor {
4 | process(inputs) {
5 | try {
6 | const input = inputs[0]
7 | if (!input) throw new Error('No input')
8 |
9 | const channelData = input[0]
10 | if (!channelData) throw new Error('No channelData')
11 |
12 | const float32Array = Float32Array.from(channelData)
13 | const int16Array = Int16Array.from(
14 | float32Array.map((n) => n * MAX_16BIT_INT)
15 | )
16 | const buffer = int16Array.buffer
17 | this.port.postMessage({ audio_data: buffer })
18 |
19 | return true
20 | } catch (error) {
21 | console.error(error)
22 | return false
23 | }
24 | }
25 | }
26 |
27 | registerProcessor('audio-processor', AudioProcessor)
28 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 | Click start to begin recording!
21 |
22 |
Start
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/public/index.js:
--------------------------------------------------------------------------------
1 | // DOM elements
2 | const buttonEl = document.getElementById("button");
3 | const messageEl = document.getElementById("message");
4 | const titleEl = document.getElementById("real-time-title");
5 |
6 | let isRecording = false;
7 | let ws;
8 | let microphone;
9 |
10 | messageEl.style.display = "none";
11 |
12 | function createMicrophone() {
13 | let stream;
14 | let audioContext;
15 | let audioWorkletNode;
16 | let source;
17 | let audioBufferQueue = new Int16Array(0);
18 |
19 | return {
20 | async requestPermission() {
21 | stream = await navigator.mediaDevices.getUserMedia({ audio: true });
22 | },
23 | async startRecording(onAudioCallback) {
24 | if (!stream) stream = await navigator.mediaDevices.getUserMedia({ audio: true });
25 |
26 | audioContext = new AudioContext({
27 | sampleRate: 16000,
28 | latencyHint: 'balanced'
29 | });
30 |
31 | source = audioContext.createMediaStreamSource(stream);
32 | await audioContext.audioWorklet.addModule('audio-processor.js');
33 |
34 | audioWorkletNode = new AudioWorkletNode(audioContext, 'audio-processor');
35 | source.connect(audioWorkletNode);
36 | audioWorkletNode.connect(audioContext.destination);
37 |
38 | audioWorkletNode.port.onmessage = (event) => {
39 | const currentBuffer = new Int16Array(event.data.audio_data);
40 | audioBufferQueue = mergeBuffers(audioBufferQueue, currentBuffer);
41 |
42 | const bufferDuration = (audioBufferQueue.length / audioContext.sampleRate) * 1000;
43 |
44 | if (bufferDuration >= 100) {
45 | const totalSamples = Math.floor(audioContext.sampleRate * 0.1);
46 | const finalBuffer = new Uint8Array(audioBufferQueue.subarray(0, totalSamples).buffer);
47 | audioBufferQueue = audioBufferQueue.subarray(totalSamples);
48 |
49 | if (onAudioCallback) onAudioCallback(finalBuffer);
50 | }
51 | };
52 | },
53 | stopRecording() {
54 | stream?.getTracks().forEach((track) => track.stop());
55 | audioContext?.close();
56 | audioBufferQueue = new Int16Array(0);
57 | }
58 | };
59 | }
60 |
61 | function mergeBuffers(lhs, rhs) {
62 | const merged = new Int16Array(lhs.length + rhs.length);
63 | merged.set(lhs, 0);
64 | merged.set(rhs, lhs.length);
65 | return merged;
66 | }
67 |
68 | async function run() {
69 | if (isRecording) {
70 | if (ws) {
71 | ws.send(JSON.stringify({ type: "Terminate" }));
72 | ws.close();
73 | ws = null;
74 | }
75 | if (microphone) {
76 | microphone.stopRecording();
77 | microphone = null;
78 | }
79 | } else {
80 | microphone = createMicrophone();
81 | await microphone.requestPermission();
82 |
83 | const response = await fetch("http://localhost:8000/token");
84 | const data = await response.json();
85 | if (data.error || !data.token) {
86 | alert("Failed to get temp token");
87 | return;
88 | }
89 |
90 | const endpoint = `wss://streaming.assemblyai.com/v3/ws?sample_rate=16000&formatted_finals=true&token=${data.token}`;
91 | ws = new WebSocket(endpoint);
92 |
93 | const turns = {}; // keyed by turn_order
94 |
95 | ws.onopen = () => {
96 | console.log("WebSocket connected!");
97 | messageEl.style.display = "";
98 | microphone.startRecording((audioChunk) => {
99 | if (ws.readyState === WebSocket.OPEN) {
100 | ws.send(audioChunk);
101 | }
102 | });
103 | };
104 |
105 | ws.onmessage = (event) => {
106 | const msg = JSON.parse(event.data);
107 | if (msg.type === "Turn") {
108 | const { turn_order, transcript } = msg;
109 | turns[turn_order] = transcript;
110 |
111 | const orderedTurns = Object.keys(turns)
112 | .sort((a, b) => Number(a) - Number(b))
113 | .map((k) => turns[k])
114 | .join(" ");
115 |
116 | messageEl.innerText = orderedTurns;
117 | }
118 | };
119 |
120 | ws.onerror = (err) => {
121 | console.error("WebSocket error:", err);
122 | alert("WebSocket error, check the console.");
123 | };
124 |
125 | ws.onclose = () => {
126 | console.log("WebSocket closed");
127 | };
128 | }
129 |
130 | isRecording = !isRecording;
131 | buttonEl.innerText = isRecording ? "Stop" : "Record";
132 | titleEl.innerText = isRecording
133 | ? "Click stop to end recording!"
134 | : "Click start to begin recording!";
135 | }
136 |
137 | buttonEl.addEventListener("click", () => run());
138 |
139 |
--------------------------------------------------------------------------------
/public/reset.css:
--------------------------------------------------------------------------------
1 | /* http://meyerweb.com/eric/tools/css/reset/
2 | v2.0 | 20110126
3 | License: none (public domain)
4 | */
5 |
6 | html,
7 | body,
8 | div,
9 | span,
10 | applet,
11 | object,
12 | iframe,
13 | h1,
14 | h2,
15 | h3,
16 | h4,
17 | h5,
18 | h6,
19 | p,
20 | blockquote,
21 | pre,
22 | a,
23 | abbr,
24 | acronym,
25 | address,
26 | big,
27 | cite,
28 | code,
29 | del,
30 | dfn,
31 | em,
32 | img,
33 | ins,
34 | kbd,
35 | q,
36 | s,
37 | samp,
38 | small,
39 | strike,
40 | strong,
41 | sub,
42 | sup,
43 | tt,
44 | var,
45 | b,
46 | u,
47 | i,
48 | center,
49 | dl,
50 | dt,
51 | dd,
52 | ol,
53 | ul,
54 | li,
55 | fieldset,
56 | form,
57 | label,
58 | legend,
59 | table,
60 | caption,
61 | tbody,
62 | tfoot,
63 | thead,
64 | tr,
65 | th,
66 | td,
67 | article,
68 | aside,
69 | canvas,
70 | details,
71 | embed,
72 | figure,
73 | figcaption,
74 | footer,
75 | header,
76 | hgroup,
77 | menu,
78 | nav,
79 | output,
80 | ruby,
81 | section,
82 | summary,
83 | time,
84 | mark,
85 | audio,
86 | video {
87 | margin: 0;
88 | padding: 0;
89 | border: 0;
90 | font-size: 100%;
91 | font: inherit;
92 | vertical-align: baseline;
93 | }
94 | /* HTML5 display-role reset for older browsers */
95 | article,
96 | aside,
97 | details,
98 | figcaption,
99 | figure,
100 | footer,
101 | header,
102 | hgroup,
103 | menu,
104 | nav,
105 | section {
106 | display: block;
107 | }
108 | body {
109 | line-height: 1;
110 | }
111 | ol,
112 | ul {
113 | list-style: none;
114 | }
115 | blockquote,
116 | q {
117 | quotes: none;
118 | }
119 | blockquote:before,
120 | blockquote:after,
121 | q:before,
122 | q:after {
123 | content: "";
124 | content: none;
125 | }
126 | table {
127 | border-collapse: collapse;
128 | border-spacing: 0;
129 | }
130 |
--------------------------------------------------------------------------------
/public/styles.css:
--------------------------------------------------------------------------------
1 | header {
2 | background: #09032f;
3 | color: white;
4 | height: 20vh;
5 | display: flex;
6 | flex-direction: column;
7 | justify-content: center;
8 | padding-left: 2.5%;
9 | box-shadow: 0 0 32px 0 rgb(0 0 0 / 16%);
10 | }
11 |
12 | .header__title {
13 | font-size: 35px;
14 | font-weight: 400;
15 | margin-bottom: 0.2em;
16 | }
17 |
18 | .header__sub-title {
19 | font-size: 18px;
20 | font-weight: 200;
21 | }
22 |
23 | .real-time-interface {
24 | padding: 1.25% 0 0 2.5%;
25 | }
26 |
27 | .real-time-interface__button {
28 | display: flex;
29 | padding: 0.5em;
30 | border-radius: 0.5rem;
31 | justify-content: center;
32 | cursor: pointer;
33 | background: #6b2bd6;
34 | color: white;
35 | width: 5%;
36 | font-size: 18px;
37 | }
38 |
39 | .real-time-interface__title {
40 | margin-bottom: 0.5em;
41 | font-size: 18px;
42 | font-weight: 525;
43 | }
44 |
45 | .real-time-interface__message {
46 | text-align: left;
47 | width: 95%;
48 | margin-top: 0.5em;
49 | font-size: 19px;
50 | font-weight: 400;
51 | box-shadow: 0 0 32px 0 rgb(0 0 0 / 16%);
52 | padding: 1em;
53 | transition: 0.5s ease-in;
54 | }
55 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const path = require("path");
3 | const { generateTempToken } = require("./tokenGenerator"); // your previously written function
4 |
5 | const app = express();
6 | const PORT = 8000;
7 |
8 | app.use(express.static(path.join(__dirname, "public")));
9 |
10 | app.get("/token", async (req, res) => {
11 | try {
12 | const token = await generateTempToken(60); // Max value 600
13 | res.json({ token });
14 | } catch (error) {
15 | res.status(500).json({ error: "Failed to generate token" });
16 | }
17 | });
18 |
19 | app.listen(PORT, () => {
20 | console.log(`Server is running at http://localhost:${PORT}`);
21 | });
22 |
--------------------------------------------------------------------------------
/tokenGenerator.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios');
2 | require("dotenv").config();
3 |
4 | async function generateTempToken(expiresInSeconds) {
5 | const url = `https://streaming.assemblyai.com/v3/token?expires_in_seconds=${expiresInSeconds}`;
6 |
7 | try {
8 | const response = await axios.get(url, {
9 | headers: {
10 | Authorization: process.env.ASSEMBLYAI_API_KEY,
11 | },
12 | });
13 | return response.data.token;
14 | } catch (error) {
15 | console.error("Error generating temp token:", error.response?.data || error.message);
16 | throw error;
17 | }
18 | }
19 |
20 | module.exports = { generateTempToken };
21 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # This file is generated by running "yarn install" inside your project.
2 | # Manual changes might be lost - proceed with caution!
3 |
4 | __metadata:
5 | version: 8
6 | cacheKey: 10c0
7 |
8 | "@eslint-community/eslint-utils@npm:^4.2.0":
9 | version: 4.7.0
10 | resolution: "@eslint-community/eslint-utils@npm:4.7.0"
11 | dependencies:
12 | eslint-visitor-keys: "npm:^3.4.3"
13 | peerDependencies:
14 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
15 | checksum: 10c0/c0f4f2bd73b7b7a9de74b716a664873d08ab71ab439e51befe77d61915af41a81ecec93b408778b3a7856185244c34c2c8ee28912072ec14def84ba2dec70adf
16 | languageName: node
17 | linkType: hard
18 |
19 | "@eslint-community/regexpp@npm:^4.6.1":
20 | version: 4.12.1
21 | resolution: "@eslint-community/regexpp@npm:4.12.1"
22 | checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6
23 | languageName: node
24 | linkType: hard
25 |
26 | "@eslint/eslintrc@npm:^2.1.4":
27 | version: 2.1.4
28 | resolution: "@eslint/eslintrc@npm:2.1.4"
29 | dependencies:
30 | ajv: "npm:^6.12.4"
31 | debug: "npm:^4.3.2"
32 | espree: "npm:^9.6.0"
33 | globals: "npm:^13.19.0"
34 | ignore: "npm:^5.2.0"
35 | import-fresh: "npm:^3.2.1"
36 | js-yaml: "npm:^4.1.0"
37 | minimatch: "npm:^3.1.2"
38 | strip-json-comments: "npm:^3.1.1"
39 | checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573
40 | languageName: node
41 | linkType: hard
42 |
43 | "@eslint/js@npm:8.57.1":
44 | version: 8.57.1
45 | resolution: "@eslint/js@npm:8.57.1"
46 | checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223
47 | languageName: node
48 | linkType: hard
49 |
50 | "@humanwhocodes/config-array@npm:^0.13.0":
51 | version: 0.13.0
52 | resolution: "@humanwhocodes/config-array@npm:0.13.0"
53 | dependencies:
54 | "@humanwhocodes/object-schema": "npm:^2.0.3"
55 | debug: "npm:^4.3.1"
56 | minimatch: "npm:^3.0.5"
57 | checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e
58 | languageName: node
59 | linkType: hard
60 |
61 | "@humanwhocodes/module-importer@npm:^1.0.1":
62 | version: 1.0.1
63 | resolution: "@humanwhocodes/module-importer@npm:1.0.1"
64 | checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
65 | languageName: node
66 | linkType: hard
67 |
68 | "@humanwhocodes/object-schema@npm:^2.0.3":
69 | version: 2.0.3
70 | resolution: "@humanwhocodes/object-schema@npm:2.0.3"
71 | checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c
72 | languageName: node
73 | linkType: hard
74 |
75 | "@nodelib/fs.scandir@npm:2.1.5":
76 | version: 2.1.5
77 | resolution: "@nodelib/fs.scandir@npm:2.1.5"
78 | dependencies:
79 | "@nodelib/fs.stat": "npm:2.0.5"
80 | run-parallel: "npm:^1.1.9"
81 | checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
82 | languageName: node
83 | linkType: hard
84 |
85 | "@nodelib/fs.stat@npm:2.0.5":
86 | version: 2.0.5
87 | resolution: "@nodelib/fs.stat@npm:2.0.5"
88 | checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
89 | languageName: node
90 | linkType: hard
91 |
92 | "@nodelib/fs.walk@npm:^1.2.8":
93 | version: 1.2.8
94 | resolution: "@nodelib/fs.walk@npm:1.2.8"
95 | dependencies:
96 | "@nodelib/fs.scandir": "npm:2.1.5"
97 | fastq: "npm:^1.6.0"
98 | checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
99 | languageName: node
100 | linkType: hard
101 |
102 | "@ungap/structured-clone@npm:^1.2.0":
103 | version: 1.3.0
104 | resolution: "@ungap/structured-clone@npm:1.3.0"
105 | checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
106 | languageName: node
107 | linkType: hard
108 |
109 | "accepts@npm:~1.3.8":
110 | version: 1.3.8
111 | resolution: "accepts@npm:1.3.8"
112 | dependencies:
113 | mime-types: "npm:~2.1.34"
114 | negotiator: "npm:0.6.3"
115 | checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362
116 | languageName: node
117 | linkType: hard
118 |
119 | "acorn-jsx@npm:^5.3.2":
120 | version: 5.3.2
121 | resolution: "acorn-jsx@npm:5.3.2"
122 | peerDependencies:
123 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
124 | checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
125 | languageName: node
126 | linkType: hard
127 |
128 | "acorn@npm:^8.9.0":
129 | version: 8.14.1
130 | resolution: "acorn@npm:8.14.1"
131 | bin:
132 | acorn: bin/acorn
133 | checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123
134 | languageName: node
135 | linkType: hard
136 |
137 | "ajv@npm:^6.12.4":
138 | version: 6.12.6
139 | resolution: "ajv@npm:6.12.6"
140 | dependencies:
141 | fast-deep-equal: "npm:^3.1.1"
142 | fast-json-stable-stringify: "npm:^2.0.0"
143 | json-schema-traverse: "npm:^0.4.1"
144 | uri-js: "npm:^4.2.2"
145 | checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71
146 | languageName: node
147 | linkType: hard
148 |
149 | "ansi-regex@npm:^5.0.1":
150 | version: 5.0.1
151 | resolution: "ansi-regex@npm:5.0.1"
152 | checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
153 | languageName: node
154 | linkType: hard
155 |
156 | "ansi-styles@npm:^4.1.0":
157 | version: 4.3.0
158 | resolution: "ansi-styles@npm:4.3.0"
159 | dependencies:
160 | color-convert: "npm:^2.0.1"
161 | checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
162 | languageName: node
163 | linkType: hard
164 |
165 | "argparse@npm:^2.0.1":
166 | version: 2.0.1
167 | resolution: "argparse@npm:2.0.1"
168 | checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
169 | languageName: node
170 | linkType: hard
171 |
172 | "array-flatten@npm:1.1.1":
173 | version: 1.1.1
174 | resolution: "array-flatten@npm:1.1.1"
175 | checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91
176 | languageName: node
177 | linkType: hard
178 |
179 | "assemblyai-realtime-js-demo@workspace:.":
180 | version: 0.0.0-use.local
181 | resolution: "assemblyai-realtime-js-demo@workspace:."
182 | dependencies:
183 | axios: "npm:^1.9.0"
184 | dotenv: "npm:^16.4.1"
185 | eslint: "npm:^8.56.0"
186 | express: "npm:^4.18.2"
187 | prettier: "npm:^3.2.5"
188 | languageName: unknown
189 | linkType: soft
190 |
191 | "asynckit@npm:^0.4.0":
192 | version: 0.4.0
193 | resolution: "asynckit@npm:0.4.0"
194 | checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d
195 | languageName: node
196 | linkType: hard
197 |
198 | "axios@npm:^1.9.0":
199 | version: 1.9.0
200 | resolution: "axios@npm:1.9.0"
201 | dependencies:
202 | follow-redirects: "npm:^1.15.6"
203 | form-data: "npm:^4.0.0"
204 | proxy-from-env: "npm:^1.1.0"
205 | checksum: 10c0/9371a56886c2e43e4ff5647b5c2c3c046ed0a3d13482ef1d0135b994a628c41fbad459796f101c655e62f0c161d03883454474d2e435b2e021b1924d9f24994c
206 | languageName: node
207 | linkType: hard
208 |
209 | "balanced-match@npm:^1.0.0":
210 | version: 1.0.2
211 | resolution: "balanced-match@npm:1.0.2"
212 | checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
213 | languageName: node
214 | linkType: hard
215 |
216 | "body-parser@npm:1.20.3":
217 | version: 1.20.3
218 | resolution: "body-parser@npm:1.20.3"
219 | dependencies:
220 | bytes: "npm:3.1.2"
221 | content-type: "npm:~1.0.5"
222 | debug: "npm:2.6.9"
223 | depd: "npm:2.0.0"
224 | destroy: "npm:1.2.0"
225 | http-errors: "npm:2.0.0"
226 | iconv-lite: "npm:0.4.24"
227 | on-finished: "npm:2.4.1"
228 | qs: "npm:6.13.0"
229 | raw-body: "npm:2.5.2"
230 | type-is: "npm:~1.6.18"
231 | unpipe: "npm:1.0.0"
232 | checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310
233 | languageName: node
234 | linkType: hard
235 |
236 | "brace-expansion@npm:^1.1.7":
237 | version: 1.1.11
238 | resolution: "brace-expansion@npm:1.1.11"
239 | dependencies:
240 | balanced-match: "npm:^1.0.0"
241 | concat-map: "npm:0.0.1"
242 | checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668
243 | languageName: node
244 | linkType: hard
245 |
246 | "bytes@npm:3.1.2":
247 | version: 3.1.2
248 | resolution: "bytes@npm:3.1.2"
249 | checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e
250 | languageName: node
251 | linkType: hard
252 |
253 | "call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
254 | version: 1.0.2
255 | resolution: "call-bind-apply-helpers@npm:1.0.2"
256 | dependencies:
257 | es-errors: "npm:^1.3.0"
258 | function-bind: "npm:^1.1.2"
259 | checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938
260 | languageName: node
261 | linkType: hard
262 |
263 | "call-bound@npm:^1.0.2":
264 | version: 1.0.4
265 | resolution: "call-bound@npm:1.0.4"
266 | dependencies:
267 | call-bind-apply-helpers: "npm:^1.0.2"
268 | get-intrinsic: "npm:^1.3.0"
269 | checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644
270 | languageName: node
271 | linkType: hard
272 |
273 | "callsites@npm:^3.0.0":
274 | version: 3.1.0
275 | resolution: "callsites@npm:3.1.0"
276 | checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
277 | languageName: node
278 | linkType: hard
279 |
280 | "chalk@npm:^4.0.0":
281 | version: 4.1.2
282 | resolution: "chalk@npm:4.1.2"
283 | dependencies:
284 | ansi-styles: "npm:^4.1.0"
285 | supports-color: "npm:^7.1.0"
286 | checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
287 | languageName: node
288 | linkType: hard
289 |
290 | "color-convert@npm:^2.0.1":
291 | version: 2.0.1
292 | resolution: "color-convert@npm:2.0.1"
293 | dependencies:
294 | color-name: "npm:~1.1.4"
295 | checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
296 | languageName: node
297 | linkType: hard
298 |
299 | "color-name@npm:~1.1.4":
300 | version: 1.1.4
301 | resolution: "color-name@npm:1.1.4"
302 | checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
303 | languageName: node
304 | linkType: hard
305 |
306 | "combined-stream@npm:^1.0.8":
307 | version: 1.0.8
308 | resolution: "combined-stream@npm:1.0.8"
309 | dependencies:
310 | delayed-stream: "npm:~1.0.0"
311 | checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5
312 | languageName: node
313 | linkType: hard
314 |
315 | "concat-map@npm:0.0.1":
316 | version: 0.0.1
317 | resolution: "concat-map@npm:0.0.1"
318 | checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
319 | languageName: node
320 | linkType: hard
321 |
322 | "content-disposition@npm:0.5.4":
323 | version: 0.5.4
324 | resolution: "content-disposition@npm:0.5.4"
325 | dependencies:
326 | safe-buffer: "npm:5.2.1"
327 | checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb
328 | languageName: node
329 | linkType: hard
330 |
331 | "content-type@npm:~1.0.4, content-type@npm:~1.0.5":
332 | version: 1.0.5
333 | resolution: "content-type@npm:1.0.5"
334 | checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af
335 | languageName: node
336 | linkType: hard
337 |
338 | "cookie-signature@npm:1.0.6":
339 | version: 1.0.6
340 | resolution: "cookie-signature@npm:1.0.6"
341 | checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221
342 | languageName: node
343 | linkType: hard
344 |
345 | "cookie@npm:0.7.1":
346 | version: 0.7.1
347 | resolution: "cookie@npm:0.7.1"
348 | checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde
349 | languageName: node
350 | linkType: hard
351 |
352 | "cross-spawn@npm:^7.0.2":
353 | version: 7.0.6
354 | resolution: "cross-spawn@npm:7.0.6"
355 | dependencies:
356 | path-key: "npm:^3.1.0"
357 | shebang-command: "npm:^2.0.0"
358 | which: "npm:^2.0.1"
359 | checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1
360 | languageName: node
361 | linkType: hard
362 |
363 | "debug@npm:2.6.9":
364 | version: 2.6.9
365 | resolution: "debug@npm:2.6.9"
366 | dependencies:
367 | ms: "npm:2.0.0"
368 | checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589
369 | languageName: node
370 | linkType: hard
371 |
372 | "debug@npm:^4.3.1, debug@npm:^4.3.2":
373 | version: 4.4.1
374 | resolution: "debug@npm:4.4.1"
375 | dependencies:
376 | ms: "npm:^2.1.3"
377 | peerDependenciesMeta:
378 | supports-color:
379 | optional: true
380 | checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55
381 | languageName: node
382 | linkType: hard
383 |
384 | "deep-is@npm:^0.1.3":
385 | version: 0.1.4
386 | resolution: "deep-is@npm:0.1.4"
387 | checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
388 | languageName: node
389 | linkType: hard
390 |
391 | "delayed-stream@npm:~1.0.0":
392 | version: 1.0.0
393 | resolution: "delayed-stream@npm:1.0.0"
394 | checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19
395 | languageName: node
396 | linkType: hard
397 |
398 | "depd@npm:2.0.0":
399 | version: 2.0.0
400 | resolution: "depd@npm:2.0.0"
401 | checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c
402 | languageName: node
403 | linkType: hard
404 |
405 | "destroy@npm:1.2.0":
406 | version: 1.2.0
407 | resolution: "destroy@npm:1.2.0"
408 | checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643
409 | languageName: node
410 | linkType: hard
411 |
412 | "doctrine@npm:^3.0.0":
413 | version: 3.0.0
414 | resolution: "doctrine@npm:3.0.0"
415 | dependencies:
416 | esutils: "npm:^2.0.2"
417 | checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520
418 | languageName: node
419 | linkType: hard
420 |
421 | "dotenv@npm:^16.4.1":
422 | version: 16.5.0
423 | resolution: "dotenv@npm:16.5.0"
424 | checksum: 10c0/5bc94c919fbd955bf0ba44d33922a1e93d1078e64a1db5c30faeded1d996e7a83c55332cb8ea4fae5a9ca4d0be44cbceb95c5811e70f9f095298df09d1997dd9
425 | languageName: node
426 | linkType: hard
427 |
428 | "dunder-proto@npm:^1.0.1":
429 | version: 1.0.1
430 | resolution: "dunder-proto@npm:1.0.1"
431 | dependencies:
432 | call-bind-apply-helpers: "npm:^1.0.1"
433 | es-errors: "npm:^1.3.0"
434 | gopd: "npm:^1.2.0"
435 | checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031
436 | languageName: node
437 | linkType: hard
438 |
439 | "ee-first@npm:1.1.1":
440 | version: 1.1.1
441 | resolution: "ee-first@npm:1.1.1"
442 | checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7
443 | languageName: node
444 | linkType: hard
445 |
446 | "encodeurl@npm:~1.0.2":
447 | version: 1.0.2
448 | resolution: "encodeurl@npm:1.0.2"
449 | checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec
450 | languageName: node
451 | linkType: hard
452 |
453 | "encodeurl@npm:~2.0.0":
454 | version: 2.0.0
455 | resolution: "encodeurl@npm:2.0.0"
456 | checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb
457 | languageName: node
458 | linkType: hard
459 |
460 | "es-define-property@npm:^1.0.1":
461 | version: 1.0.1
462 | resolution: "es-define-property@npm:1.0.1"
463 | checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c
464 | languageName: node
465 | linkType: hard
466 |
467 | "es-errors@npm:^1.3.0":
468 | version: 1.3.0
469 | resolution: "es-errors@npm:1.3.0"
470 | checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85
471 | languageName: node
472 | linkType: hard
473 |
474 | "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
475 | version: 1.1.1
476 | resolution: "es-object-atoms@npm:1.1.1"
477 | dependencies:
478 | es-errors: "npm:^1.3.0"
479 | checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c
480 | languageName: node
481 | linkType: hard
482 |
483 | "es-set-tostringtag@npm:^2.1.0":
484 | version: 2.1.0
485 | resolution: "es-set-tostringtag@npm:2.1.0"
486 | dependencies:
487 | es-errors: "npm:^1.3.0"
488 | get-intrinsic: "npm:^1.2.6"
489 | has-tostringtag: "npm:^1.0.2"
490 | hasown: "npm:^2.0.2"
491 | checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af
492 | languageName: node
493 | linkType: hard
494 |
495 | "escape-html@npm:~1.0.3":
496 | version: 1.0.3
497 | resolution: "escape-html@npm:1.0.3"
498 | checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3
499 | languageName: node
500 | linkType: hard
501 |
502 | "escape-string-regexp@npm:^4.0.0":
503 | version: 4.0.0
504 | resolution: "escape-string-regexp@npm:4.0.0"
505 | checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9
506 | languageName: node
507 | linkType: hard
508 |
509 | "eslint-scope@npm:^7.2.2":
510 | version: 7.2.2
511 | resolution: "eslint-scope@npm:7.2.2"
512 | dependencies:
513 | esrecurse: "npm:^4.3.0"
514 | estraverse: "npm:^5.2.0"
515 | checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116
516 | languageName: node
517 | linkType: hard
518 |
519 | "eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
520 | version: 3.4.3
521 | resolution: "eslint-visitor-keys@npm:3.4.3"
522 | checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
523 | languageName: node
524 | linkType: hard
525 |
526 | "eslint@npm:^8.56.0":
527 | version: 8.57.1
528 | resolution: "eslint@npm:8.57.1"
529 | dependencies:
530 | "@eslint-community/eslint-utils": "npm:^4.2.0"
531 | "@eslint-community/regexpp": "npm:^4.6.1"
532 | "@eslint/eslintrc": "npm:^2.1.4"
533 | "@eslint/js": "npm:8.57.1"
534 | "@humanwhocodes/config-array": "npm:^0.13.0"
535 | "@humanwhocodes/module-importer": "npm:^1.0.1"
536 | "@nodelib/fs.walk": "npm:^1.2.8"
537 | "@ungap/structured-clone": "npm:^1.2.0"
538 | ajv: "npm:^6.12.4"
539 | chalk: "npm:^4.0.0"
540 | cross-spawn: "npm:^7.0.2"
541 | debug: "npm:^4.3.2"
542 | doctrine: "npm:^3.0.0"
543 | escape-string-regexp: "npm:^4.0.0"
544 | eslint-scope: "npm:^7.2.2"
545 | eslint-visitor-keys: "npm:^3.4.3"
546 | espree: "npm:^9.6.1"
547 | esquery: "npm:^1.4.2"
548 | esutils: "npm:^2.0.2"
549 | fast-deep-equal: "npm:^3.1.3"
550 | file-entry-cache: "npm:^6.0.1"
551 | find-up: "npm:^5.0.0"
552 | glob-parent: "npm:^6.0.2"
553 | globals: "npm:^13.19.0"
554 | graphemer: "npm:^1.4.0"
555 | ignore: "npm:^5.2.0"
556 | imurmurhash: "npm:^0.1.4"
557 | is-glob: "npm:^4.0.0"
558 | is-path-inside: "npm:^3.0.3"
559 | js-yaml: "npm:^4.1.0"
560 | json-stable-stringify-without-jsonify: "npm:^1.0.1"
561 | levn: "npm:^0.4.1"
562 | lodash.merge: "npm:^4.6.2"
563 | minimatch: "npm:^3.1.2"
564 | natural-compare: "npm:^1.4.0"
565 | optionator: "npm:^0.9.3"
566 | strip-ansi: "npm:^6.0.1"
567 | text-table: "npm:^0.2.0"
568 | bin:
569 | eslint: bin/eslint.js
570 | checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1
571 | languageName: node
572 | linkType: hard
573 |
574 | "espree@npm:^9.6.0, espree@npm:^9.6.1":
575 | version: 9.6.1
576 | resolution: "espree@npm:9.6.1"
577 | dependencies:
578 | acorn: "npm:^8.9.0"
579 | acorn-jsx: "npm:^5.3.2"
580 | eslint-visitor-keys: "npm:^3.4.1"
581 | checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460
582 | languageName: node
583 | linkType: hard
584 |
585 | "esquery@npm:^1.4.2":
586 | version: 1.6.0
587 | resolution: "esquery@npm:1.6.0"
588 | dependencies:
589 | estraverse: "npm:^5.1.0"
590 | checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2
591 | languageName: node
592 | linkType: hard
593 |
594 | "esrecurse@npm:^4.3.0":
595 | version: 4.3.0
596 | resolution: "esrecurse@npm:4.3.0"
597 | dependencies:
598 | estraverse: "npm:^5.2.0"
599 | checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
600 | languageName: node
601 | linkType: hard
602 |
603 | "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
604 | version: 5.3.0
605 | resolution: "estraverse@npm:5.3.0"
606 | checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
607 | languageName: node
608 | linkType: hard
609 |
610 | "esutils@npm:^2.0.2":
611 | version: 2.0.3
612 | resolution: "esutils@npm:2.0.3"
613 | checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7
614 | languageName: node
615 | linkType: hard
616 |
617 | "etag@npm:~1.8.1":
618 | version: 1.8.1
619 | resolution: "etag@npm:1.8.1"
620 | checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84
621 | languageName: node
622 | linkType: hard
623 |
624 | "express@npm:^4.18.2":
625 | version: 4.21.2
626 | resolution: "express@npm:4.21.2"
627 | dependencies:
628 | accepts: "npm:~1.3.8"
629 | array-flatten: "npm:1.1.1"
630 | body-parser: "npm:1.20.3"
631 | content-disposition: "npm:0.5.4"
632 | content-type: "npm:~1.0.4"
633 | cookie: "npm:0.7.1"
634 | cookie-signature: "npm:1.0.6"
635 | debug: "npm:2.6.9"
636 | depd: "npm:2.0.0"
637 | encodeurl: "npm:~2.0.0"
638 | escape-html: "npm:~1.0.3"
639 | etag: "npm:~1.8.1"
640 | finalhandler: "npm:1.3.1"
641 | fresh: "npm:0.5.2"
642 | http-errors: "npm:2.0.0"
643 | merge-descriptors: "npm:1.0.3"
644 | methods: "npm:~1.1.2"
645 | on-finished: "npm:2.4.1"
646 | parseurl: "npm:~1.3.3"
647 | path-to-regexp: "npm:0.1.12"
648 | proxy-addr: "npm:~2.0.7"
649 | qs: "npm:6.13.0"
650 | range-parser: "npm:~1.2.1"
651 | safe-buffer: "npm:5.2.1"
652 | send: "npm:0.19.0"
653 | serve-static: "npm:1.16.2"
654 | setprototypeof: "npm:1.2.0"
655 | statuses: "npm:2.0.1"
656 | type-is: "npm:~1.6.18"
657 | utils-merge: "npm:1.0.1"
658 | vary: "npm:~1.1.2"
659 | checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f
660 | languageName: node
661 | linkType: hard
662 |
663 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
664 | version: 3.1.3
665 | resolution: "fast-deep-equal@npm:3.1.3"
666 | checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
667 | languageName: node
668 | linkType: hard
669 |
670 | "fast-json-stable-stringify@npm:^2.0.0":
671 | version: 2.1.0
672 | resolution: "fast-json-stable-stringify@npm:2.1.0"
673 | checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
674 | languageName: node
675 | linkType: hard
676 |
677 | "fast-levenshtein@npm:^2.0.6":
678 | version: 2.0.6
679 | resolution: "fast-levenshtein@npm:2.0.6"
680 | checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
681 | languageName: node
682 | linkType: hard
683 |
684 | "fastq@npm:^1.6.0":
685 | version: 1.19.1
686 | resolution: "fastq@npm:1.19.1"
687 | dependencies:
688 | reusify: "npm:^1.0.4"
689 | checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630
690 | languageName: node
691 | linkType: hard
692 |
693 | "file-entry-cache@npm:^6.0.1":
694 | version: 6.0.1
695 | resolution: "file-entry-cache@npm:6.0.1"
696 | dependencies:
697 | flat-cache: "npm:^3.0.4"
698 | checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd
699 | languageName: node
700 | linkType: hard
701 |
702 | "finalhandler@npm:1.3.1":
703 | version: 1.3.1
704 | resolution: "finalhandler@npm:1.3.1"
705 | dependencies:
706 | debug: "npm:2.6.9"
707 | encodeurl: "npm:~2.0.0"
708 | escape-html: "npm:~1.0.3"
709 | on-finished: "npm:2.4.1"
710 | parseurl: "npm:~1.3.3"
711 | statuses: "npm:2.0.1"
712 | unpipe: "npm:~1.0.0"
713 | checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f
714 | languageName: node
715 | linkType: hard
716 |
717 | "find-up@npm:^5.0.0":
718 | version: 5.0.0
719 | resolution: "find-up@npm:5.0.0"
720 | dependencies:
721 | locate-path: "npm:^6.0.0"
722 | path-exists: "npm:^4.0.0"
723 | checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
724 | languageName: node
725 | linkType: hard
726 |
727 | "flat-cache@npm:^3.0.4":
728 | version: 3.2.0
729 | resolution: "flat-cache@npm:3.2.0"
730 | dependencies:
731 | flatted: "npm:^3.2.9"
732 | keyv: "npm:^4.5.3"
733 | rimraf: "npm:^3.0.2"
734 | checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75
735 | languageName: node
736 | linkType: hard
737 |
738 | "flatted@npm:^3.2.9":
739 | version: 3.3.3
740 | resolution: "flatted@npm:3.3.3"
741 | checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538
742 | languageName: node
743 | linkType: hard
744 |
745 | "follow-redirects@npm:^1.15.6":
746 | version: 1.15.9
747 | resolution: "follow-redirects@npm:1.15.9"
748 | peerDependenciesMeta:
749 | debug:
750 | optional: true
751 | checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f
752 | languageName: node
753 | linkType: hard
754 |
755 | "form-data@npm:^4.0.0":
756 | version: 4.0.2
757 | resolution: "form-data@npm:4.0.2"
758 | dependencies:
759 | asynckit: "npm:^0.4.0"
760 | combined-stream: "npm:^1.0.8"
761 | es-set-tostringtag: "npm:^2.1.0"
762 | mime-types: "npm:^2.1.12"
763 | checksum: 10c0/e534b0cf025c831a0929bf4b9bbe1a9a6b03e273a8161f9947286b9b13bf8fb279c6944aae0070c4c311100c6d6dbb815cd955dc217728caf73fad8dc5b8ee9c
764 | languageName: node
765 | linkType: hard
766 |
767 | "forwarded@npm:0.2.0":
768 | version: 0.2.0
769 | resolution: "forwarded@npm:0.2.0"
770 | checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33
771 | languageName: node
772 | linkType: hard
773 |
774 | "fresh@npm:0.5.2":
775 | version: 0.5.2
776 | resolution: "fresh@npm:0.5.2"
777 | checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a
778 | languageName: node
779 | linkType: hard
780 |
781 | "fs.realpath@npm:^1.0.0":
782 | version: 1.0.0
783 | resolution: "fs.realpath@npm:1.0.0"
784 | checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948
785 | languageName: node
786 | linkType: hard
787 |
788 | "function-bind@npm:^1.1.2":
789 | version: 1.1.2
790 | resolution: "function-bind@npm:1.1.2"
791 | checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
792 | languageName: node
793 | linkType: hard
794 |
795 | "get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0":
796 | version: 1.3.0
797 | resolution: "get-intrinsic@npm:1.3.0"
798 | dependencies:
799 | call-bind-apply-helpers: "npm:^1.0.2"
800 | es-define-property: "npm:^1.0.1"
801 | es-errors: "npm:^1.3.0"
802 | es-object-atoms: "npm:^1.1.1"
803 | function-bind: "npm:^1.1.2"
804 | get-proto: "npm:^1.0.1"
805 | gopd: "npm:^1.2.0"
806 | has-symbols: "npm:^1.1.0"
807 | hasown: "npm:^2.0.2"
808 | math-intrinsics: "npm:^1.1.0"
809 | checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a
810 | languageName: node
811 | linkType: hard
812 |
813 | "get-proto@npm:^1.0.1":
814 | version: 1.0.1
815 | resolution: "get-proto@npm:1.0.1"
816 | dependencies:
817 | dunder-proto: "npm:^1.0.1"
818 | es-object-atoms: "npm:^1.0.0"
819 | checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c
820 | languageName: node
821 | linkType: hard
822 |
823 | "glob-parent@npm:^6.0.2":
824 | version: 6.0.2
825 | resolution: "glob-parent@npm:6.0.2"
826 | dependencies:
827 | is-glob: "npm:^4.0.3"
828 | checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
829 | languageName: node
830 | linkType: hard
831 |
832 | "glob@npm:^7.1.3":
833 | version: 7.2.3
834 | resolution: "glob@npm:7.2.3"
835 | dependencies:
836 | fs.realpath: "npm:^1.0.0"
837 | inflight: "npm:^1.0.4"
838 | inherits: "npm:2"
839 | minimatch: "npm:^3.1.1"
840 | once: "npm:^1.3.0"
841 | path-is-absolute: "npm:^1.0.0"
842 | checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe
843 | languageName: node
844 | linkType: hard
845 |
846 | "globals@npm:^13.19.0":
847 | version: 13.24.0
848 | resolution: "globals@npm:13.24.0"
849 | dependencies:
850 | type-fest: "npm:^0.20.2"
851 | checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd
852 | languageName: node
853 | linkType: hard
854 |
855 | "gopd@npm:^1.2.0":
856 | version: 1.2.0
857 | resolution: "gopd@npm:1.2.0"
858 | checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead
859 | languageName: node
860 | linkType: hard
861 |
862 | "graphemer@npm:^1.4.0":
863 | version: 1.4.0
864 | resolution: "graphemer@npm:1.4.0"
865 | checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31
866 | languageName: node
867 | linkType: hard
868 |
869 | "has-flag@npm:^4.0.0":
870 | version: 4.0.0
871 | resolution: "has-flag@npm:4.0.0"
872 | checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
873 | languageName: node
874 | linkType: hard
875 |
876 | "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
877 | version: 1.1.0
878 | resolution: "has-symbols@npm:1.1.0"
879 | checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e
880 | languageName: node
881 | linkType: hard
882 |
883 | "has-tostringtag@npm:^1.0.2":
884 | version: 1.0.2
885 | resolution: "has-tostringtag@npm:1.0.2"
886 | dependencies:
887 | has-symbols: "npm:^1.0.3"
888 | checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c
889 | languageName: node
890 | linkType: hard
891 |
892 | "hasown@npm:^2.0.2":
893 | version: 2.0.2
894 | resolution: "hasown@npm:2.0.2"
895 | dependencies:
896 | function-bind: "npm:^1.1.2"
897 | checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9
898 | languageName: node
899 | linkType: hard
900 |
901 | "http-errors@npm:2.0.0":
902 | version: 2.0.0
903 | resolution: "http-errors@npm:2.0.0"
904 | dependencies:
905 | depd: "npm:2.0.0"
906 | inherits: "npm:2.0.4"
907 | setprototypeof: "npm:1.2.0"
908 | statuses: "npm:2.0.1"
909 | toidentifier: "npm:1.0.1"
910 | checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19
911 | languageName: node
912 | linkType: hard
913 |
914 | "iconv-lite@npm:0.4.24":
915 | version: 0.4.24
916 | resolution: "iconv-lite@npm:0.4.24"
917 | dependencies:
918 | safer-buffer: "npm:>= 2.1.2 < 3"
919 | checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4
920 | languageName: node
921 | linkType: hard
922 |
923 | "ignore@npm:^5.2.0":
924 | version: 5.3.2
925 | resolution: "ignore@npm:5.3.2"
926 | checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337
927 | languageName: node
928 | linkType: hard
929 |
930 | "import-fresh@npm:^3.2.1":
931 | version: 3.3.1
932 | resolution: "import-fresh@npm:3.3.1"
933 | dependencies:
934 | parent-module: "npm:^1.0.0"
935 | resolve-from: "npm:^4.0.0"
936 | checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec
937 | languageName: node
938 | linkType: hard
939 |
940 | "imurmurhash@npm:^0.1.4":
941 | version: 0.1.4
942 | resolution: "imurmurhash@npm:0.1.4"
943 | checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
944 | languageName: node
945 | linkType: hard
946 |
947 | "inflight@npm:^1.0.4":
948 | version: 1.0.6
949 | resolution: "inflight@npm:1.0.6"
950 | dependencies:
951 | once: "npm:^1.3.0"
952 | wrappy: "npm:1"
953 | checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2
954 | languageName: node
955 | linkType: hard
956 |
957 | "inherits@npm:2, inherits@npm:2.0.4":
958 | version: 2.0.4
959 | resolution: "inherits@npm:2.0.4"
960 | checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2
961 | languageName: node
962 | linkType: hard
963 |
964 | "ipaddr.js@npm:1.9.1":
965 | version: 1.9.1
966 | resolution: "ipaddr.js@npm:1.9.1"
967 | checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a
968 | languageName: node
969 | linkType: hard
970 |
971 | "is-extglob@npm:^2.1.1":
972 | version: 2.1.1
973 | resolution: "is-extglob@npm:2.1.1"
974 | checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
975 | languageName: node
976 | linkType: hard
977 |
978 | "is-glob@npm:^4.0.0, is-glob@npm:^4.0.3":
979 | version: 4.0.3
980 | resolution: "is-glob@npm:4.0.3"
981 | dependencies:
982 | is-extglob: "npm:^2.1.1"
983 | checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
984 | languageName: node
985 | linkType: hard
986 |
987 | "is-path-inside@npm:^3.0.3":
988 | version: 3.0.3
989 | resolution: "is-path-inside@npm:3.0.3"
990 | checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
991 | languageName: node
992 | linkType: hard
993 |
994 | "isexe@npm:^2.0.0":
995 | version: 2.0.0
996 | resolution: "isexe@npm:2.0.0"
997 | checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
998 | languageName: node
999 | linkType: hard
1000 |
1001 | "js-yaml@npm:^4.1.0":
1002 | version: 4.1.0
1003 | resolution: "js-yaml@npm:4.1.0"
1004 | dependencies:
1005 | argparse: "npm:^2.0.1"
1006 | bin:
1007 | js-yaml: bin/js-yaml.js
1008 | checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
1009 | languageName: node
1010 | linkType: hard
1011 |
1012 | "json-buffer@npm:3.0.1":
1013 | version: 3.0.1
1014 | resolution: "json-buffer@npm:3.0.1"
1015 | checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
1016 | languageName: node
1017 | linkType: hard
1018 |
1019 | "json-schema-traverse@npm:^0.4.1":
1020 | version: 0.4.1
1021 | resolution: "json-schema-traverse@npm:0.4.1"
1022 | checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
1023 | languageName: node
1024 | linkType: hard
1025 |
1026 | "json-stable-stringify-without-jsonify@npm:^1.0.1":
1027 | version: 1.0.1
1028 | resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
1029 | checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
1030 | languageName: node
1031 | linkType: hard
1032 |
1033 | "keyv@npm:^4.5.3":
1034 | version: 4.5.4
1035 | resolution: "keyv@npm:4.5.4"
1036 | dependencies:
1037 | json-buffer: "npm:3.0.1"
1038 | checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
1039 | languageName: node
1040 | linkType: hard
1041 |
1042 | "levn@npm:^0.4.1":
1043 | version: 0.4.1
1044 | resolution: "levn@npm:0.4.1"
1045 | dependencies:
1046 | prelude-ls: "npm:^1.2.1"
1047 | type-check: "npm:~0.4.0"
1048 | checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
1049 | languageName: node
1050 | linkType: hard
1051 |
1052 | "locate-path@npm:^6.0.0":
1053 | version: 6.0.0
1054 | resolution: "locate-path@npm:6.0.0"
1055 | dependencies:
1056 | p-locate: "npm:^5.0.0"
1057 | checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
1058 | languageName: node
1059 | linkType: hard
1060 |
1061 | "lodash.merge@npm:^4.6.2":
1062 | version: 4.6.2
1063 | resolution: "lodash.merge@npm:4.6.2"
1064 | checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
1065 | languageName: node
1066 | linkType: hard
1067 |
1068 | "math-intrinsics@npm:^1.1.0":
1069 | version: 1.1.0
1070 | resolution: "math-intrinsics@npm:1.1.0"
1071 | checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f
1072 | languageName: node
1073 | linkType: hard
1074 |
1075 | "media-typer@npm:0.3.0":
1076 | version: 0.3.0
1077 | resolution: "media-typer@npm:0.3.0"
1078 | checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928
1079 | languageName: node
1080 | linkType: hard
1081 |
1082 | "merge-descriptors@npm:1.0.3":
1083 | version: 1.0.3
1084 | resolution: "merge-descriptors@npm:1.0.3"
1085 | checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93
1086 | languageName: node
1087 | linkType: hard
1088 |
1089 | "methods@npm:~1.1.2":
1090 | version: 1.1.2
1091 | resolution: "methods@npm:1.1.2"
1092 | checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2
1093 | languageName: node
1094 | linkType: hard
1095 |
1096 | "mime-db@npm:1.52.0":
1097 | version: 1.52.0
1098 | resolution: "mime-db@npm:1.52.0"
1099 | checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa
1100 | languageName: node
1101 | linkType: hard
1102 |
1103 | "mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
1104 | version: 2.1.35
1105 | resolution: "mime-types@npm:2.1.35"
1106 | dependencies:
1107 | mime-db: "npm:1.52.0"
1108 | checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2
1109 | languageName: node
1110 | linkType: hard
1111 |
1112 | "mime@npm:1.6.0":
1113 | version: 1.6.0
1114 | resolution: "mime@npm:1.6.0"
1115 | bin:
1116 | mime: cli.js
1117 | checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0
1118 | languageName: node
1119 | linkType: hard
1120 |
1121 | "minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
1122 | version: 3.1.2
1123 | resolution: "minimatch@npm:3.1.2"
1124 | dependencies:
1125 | brace-expansion: "npm:^1.1.7"
1126 | checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
1127 | languageName: node
1128 | linkType: hard
1129 |
1130 | "ms@npm:2.0.0":
1131 | version: 2.0.0
1132 | resolution: "ms@npm:2.0.0"
1133 | checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d
1134 | languageName: node
1135 | linkType: hard
1136 |
1137 | "ms@npm:2.1.3, ms@npm:^2.1.3":
1138 | version: 2.1.3
1139 | resolution: "ms@npm:2.1.3"
1140 | checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
1141 | languageName: node
1142 | linkType: hard
1143 |
1144 | "natural-compare@npm:^1.4.0":
1145 | version: 1.4.0
1146 | resolution: "natural-compare@npm:1.4.0"
1147 | checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
1148 | languageName: node
1149 | linkType: hard
1150 |
1151 | "negotiator@npm:0.6.3":
1152 | version: 0.6.3
1153 | resolution: "negotiator@npm:0.6.3"
1154 | checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2
1155 | languageName: node
1156 | linkType: hard
1157 |
1158 | "object-inspect@npm:^1.13.3":
1159 | version: 1.13.4
1160 | resolution: "object-inspect@npm:1.13.4"
1161 | checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692
1162 | languageName: node
1163 | linkType: hard
1164 |
1165 | "on-finished@npm:2.4.1":
1166 | version: 2.4.1
1167 | resolution: "on-finished@npm:2.4.1"
1168 | dependencies:
1169 | ee-first: "npm:1.1.1"
1170 | checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4
1171 | languageName: node
1172 | linkType: hard
1173 |
1174 | "once@npm:^1.3.0":
1175 | version: 1.4.0
1176 | resolution: "once@npm:1.4.0"
1177 | dependencies:
1178 | wrappy: "npm:1"
1179 | checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0
1180 | languageName: node
1181 | linkType: hard
1182 |
1183 | "optionator@npm:^0.9.3":
1184 | version: 0.9.4
1185 | resolution: "optionator@npm:0.9.4"
1186 | dependencies:
1187 | deep-is: "npm:^0.1.3"
1188 | fast-levenshtein: "npm:^2.0.6"
1189 | levn: "npm:^0.4.1"
1190 | prelude-ls: "npm:^1.2.1"
1191 | type-check: "npm:^0.4.0"
1192 | word-wrap: "npm:^1.2.5"
1193 | checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
1194 | languageName: node
1195 | linkType: hard
1196 |
1197 | "p-limit@npm:^3.0.2":
1198 | version: 3.1.0
1199 | resolution: "p-limit@npm:3.1.0"
1200 | dependencies:
1201 | yocto-queue: "npm:^0.1.0"
1202 | checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
1203 | languageName: node
1204 | linkType: hard
1205 |
1206 | "p-locate@npm:^5.0.0":
1207 | version: 5.0.0
1208 | resolution: "p-locate@npm:5.0.0"
1209 | dependencies:
1210 | p-limit: "npm:^3.0.2"
1211 | checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
1212 | languageName: node
1213 | linkType: hard
1214 |
1215 | "parent-module@npm:^1.0.0":
1216 | version: 1.0.1
1217 | resolution: "parent-module@npm:1.0.1"
1218 | dependencies:
1219 | callsites: "npm:^3.0.0"
1220 | checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556
1221 | languageName: node
1222 | linkType: hard
1223 |
1224 | "parseurl@npm:~1.3.3":
1225 | version: 1.3.3
1226 | resolution: "parseurl@npm:1.3.3"
1227 | checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5
1228 | languageName: node
1229 | linkType: hard
1230 |
1231 | "path-exists@npm:^4.0.0":
1232 | version: 4.0.0
1233 | resolution: "path-exists@npm:4.0.0"
1234 | checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
1235 | languageName: node
1236 | linkType: hard
1237 |
1238 | "path-is-absolute@npm:^1.0.0":
1239 | version: 1.0.1
1240 | resolution: "path-is-absolute@npm:1.0.1"
1241 | checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078
1242 | languageName: node
1243 | linkType: hard
1244 |
1245 | "path-key@npm:^3.1.0":
1246 | version: 3.1.1
1247 | resolution: "path-key@npm:3.1.1"
1248 | checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
1249 | languageName: node
1250 | linkType: hard
1251 |
1252 | "path-to-regexp@npm:0.1.12":
1253 | version: 0.1.12
1254 | resolution: "path-to-regexp@npm:0.1.12"
1255 | checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b
1256 | languageName: node
1257 | linkType: hard
1258 |
1259 | "prelude-ls@npm:^1.2.1":
1260 | version: 1.2.1
1261 | resolution: "prelude-ls@npm:1.2.1"
1262 | checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
1263 | languageName: node
1264 | linkType: hard
1265 |
1266 | "prettier@npm:^3.2.5":
1267 | version: 3.5.3
1268 | resolution: "prettier@npm:3.5.3"
1269 | bin:
1270 | prettier: bin/prettier.cjs
1271 | checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877
1272 | languageName: node
1273 | linkType: hard
1274 |
1275 | "proxy-addr@npm:~2.0.7":
1276 | version: 2.0.7
1277 | resolution: "proxy-addr@npm:2.0.7"
1278 | dependencies:
1279 | forwarded: "npm:0.2.0"
1280 | ipaddr.js: "npm:1.9.1"
1281 | checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210
1282 | languageName: node
1283 | linkType: hard
1284 |
1285 | "proxy-from-env@npm:^1.1.0":
1286 | version: 1.1.0
1287 | resolution: "proxy-from-env@npm:1.1.0"
1288 | checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b
1289 | languageName: node
1290 | linkType: hard
1291 |
1292 | "punycode@npm:^2.1.0":
1293 | version: 2.3.1
1294 | resolution: "punycode@npm:2.3.1"
1295 | checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9
1296 | languageName: node
1297 | linkType: hard
1298 |
1299 | "qs@npm:6.13.0":
1300 | version: 6.13.0
1301 | resolution: "qs@npm:6.13.0"
1302 | dependencies:
1303 | side-channel: "npm:^1.0.6"
1304 | checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860
1305 | languageName: node
1306 | linkType: hard
1307 |
1308 | "queue-microtask@npm:^1.2.2":
1309 | version: 1.2.3
1310 | resolution: "queue-microtask@npm:1.2.3"
1311 | checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
1312 | languageName: node
1313 | linkType: hard
1314 |
1315 | "range-parser@npm:~1.2.1":
1316 | version: 1.2.1
1317 | resolution: "range-parser@npm:1.2.1"
1318 | checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0
1319 | languageName: node
1320 | linkType: hard
1321 |
1322 | "raw-body@npm:2.5.2":
1323 | version: 2.5.2
1324 | resolution: "raw-body@npm:2.5.2"
1325 | dependencies:
1326 | bytes: "npm:3.1.2"
1327 | http-errors: "npm:2.0.0"
1328 | iconv-lite: "npm:0.4.24"
1329 | unpipe: "npm:1.0.0"
1330 | checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4
1331 | languageName: node
1332 | linkType: hard
1333 |
1334 | "resolve-from@npm:^4.0.0":
1335 | version: 4.0.0
1336 | resolution: "resolve-from@npm:4.0.0"
1337 | checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
1338 | languageName: node
1339 | linkType: hard
1340 |
1341 | "reusify@npm:^1.0.4":
1342 | version: 1.1.0
1343 | resolution: "reusify@npm:1.1.0"
1344 | checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa
1345 | languageName: node
1346 | linkType: hard
1347 |
1348 | "rimraf@npm:^3.0.2":
1349 | version: 3.0.2
1350 | resolution: "rimraf@npm:3.0.2"
1351 | dependencies:
1352 | glob: "npm:^7.1.3"
1353 | bin:
1354 | rimraf: bin.js
1355 | checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8
1356 | languageName: node
1357 | linkType: hard
1358 |
1359 | "run-parallel@npm:^1.1.9":
1360 | version: 1.2.0
1361 | resolution: "run-parallel@npm:1.2.0"
1362 | dependencies:
1363 | queue-microtask: "npm:^1.2.2"
1364 | checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
1365 | languageName: node
1366 | linkType: hard
1367 |
1368 | "safe-buffer@npm:5.2.1":
1369 | version: 5.2.1
1370 | resolution: "safe-buffer@npm:5.2.1"
1371 | checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3
1372 | languageName: node
1373 | linkType: hard
1374 |
1375 | "safer-buffer@npm:>= 2.1.2 < 3":
1376 | version: 2.1.2
1377 | resolution: "safer-buffer@npm:2.1.2"
1378 | checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
1379 | languageName: node
1380 | linkType: hard
1381 |
1382 | "send@npm:0.19.0":
1383 | version: 0.19.0
1384 | resolution: "send@npm:0.19.0"
1385 | dependencies:
1386 | debug: "npm:2.6.9"
1387 | depd: "npm:2.0.0"
1388 | destroy: "npm:1.2.0"
1389 | encodeurl: "npm:~1.0.2"
1390 | escape-html: "npm:~1.0.3"
1391 | etag: "npm:~1.8.1"
1392 | fresh: "npm:0.5.2"
1393 | http-errors: "npm:2.0.0"
1394 | mime: "npm:1.6.0"
1395 | ms: "npm:2.1.3"
1396 | on-finished: "npm:2.4.1"
1397 | range-parser: "npm:~1.2.1"
1398 | statuses: "npm:2.0.1"
1399 | checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3
1400 | languageName: node
1401 | linkType: hard
1402 |
1403 | "serve-static@npm:1.16.2":
1404 | version: 1.16.2
1405 | resolution: "serve-static@npm:1.16.2"
1406 | dependencies:
1407 | encodeurl: "npm:~2.0.0"
1408 | escape-html: "npm:~1.0.3"
1409 | parseurl: "npm:~1.3.3"
1410 | send: "npm:0.19.0"
1411 | checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f
1412 | languageName: node
1413 | linkType: hard
1414 |
1415 | "setprototypeof@npm:1.2.0":
1416 | version: 1.2.0
1417 | resolution: "setprototypeof@npm:1.2.0"
1418 | checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc
1419 | languageName: node
1420 | linkType: hard
1421 |
1422 | "shebang-command@npm:^2.0.0":
1423 | version: 2.0.0
1424 | resolution: "shebang-command@npm:2.0.0"
1425 | dependencies:
1426 | shebang-regex: "npm:^3.0.0"
1427 | checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
1428 | languageName: node
1429 | linkType: hard
1430 |
1431 | "shebang-regex@npm:^3.0.0":
1432 | version: 3.0.0
1433 | resolution: "shebang-regex@npm:3.0.0"
1434 | checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
1435 | languageName: node
1436 | linkType: hard
1437 |
1438 | "side-channel-list@npm:^1.0.0":
1439 | version: 1.0.0
1440 | resolution: "side-channel-list@npm:1.0.0"
1441 | dependencies:
1442 | es-errors: "npm:^1.3.0"
1443 | object-inspect: "npm:^1.13.3"
1444 | checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d
1445 | languageName: node
1446 | linkType: hard
1447 |
1448 | "side-channel-map@npm:^1.0.1":
1449 | version: 1.0.1
1450 | resolution: "side-channel-map@npm:1.0.1"
1451 | dependencies:
1452 | call-bound: "npm:^1.0.2"
1453 | es-errors: "npm:^1.3.0"
1454 | get-intrinsic: "npm:^1.2.5"
1455 | object-inspect: "npm:^1.13.3"
1456 | checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672
1457 | languageName: node
1458 | linkType: hard
1459 |
1460 | "side-channel-weakmap@npm:^1.0.2":
1461 | version: 1.0.2
1462 | resolution: "side-channel-weakmap@npm:1.0.2"
1463 | dependencies:
1464 | call-bound: "npm:^1.0.2"
1465 | es-errors: "npm:^1.3.0"
1466 | get-intrinsic: "npm:^1.2.5"
1467 | object-inspect: "npm:^1.13.3"
1468 | side-channel-map: "npm:^1.0.1"
1469 | checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185
1470 | languageName: node
1471 | linkType: hard
1472 |
1473 | "side-channel@npm:^1.0.6":
1474 | version: 1.1.0
1475 | resolution: "side-channel@npm:1.1.0"
1476 | dependencies:
1477 | es-errors: "npm:^1.3.0"
1478 | object-inspect: "npm:^1.13.3"
1479 | side-channel-list: "npm:^1.0.0"
1480 | side-channel-map: "npm:^1.0.1"
1481 | side-channel-weakmap: "npm:^1.0.2"
1482 | checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6
1483 | languageName: node
1484 | linkType: hard
1485 |
1486 | "statuses@npm:2.0.1":
1487 | version: 2.0.1
1488 | resolution: "statuses@npm:2.0.1"
1489 | checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0
1490 | languageName: node
1491 | linkType: hard
1492 |
1493 | "strip-ansi@npm:^6.0.1":
1494 | version: 6.0.1
1495 | resolution: "strip-ansi@npm:6.0.1"
1496 | dependencies:
1497 | ansi-regex: "npm:^5.0.1"
1498 | checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
1499 | languageName: node
1500 | linkType: hard
1501 |
1502 | "strip-json-comments@npm:^3.1.1":
1503 | version: 3.1.1
1504 | resolution: "strip-json-comments@npm:3.1.1"
1505 | checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
1506 | languageName: node
1507 | linkType: hard
1508 |
1509 | "supports-color@npm:^7.1.0":
1510 | version: 7.2.0
1511 | resolution: "supports-color@npm:7.2.0"
1512 | dependencies:
1513 | has-flag: "npm:^4.0.0"
1514 | checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
1515 | languageName: node
1516 | linkType: hard
1517 |
1518 | "text-table@npm:^0.2.0":
1519 | version: 0.2.0
1520 | resolution: "text-table@npm:0.2.0"
1521 | checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c
1522 | languageName: node
1523 | linkType: hard
1524 |
1525 | "toidentifier@npm:1.0.1":
1526 | version: 1.0.1
1527 | resolution: "toidentifier@npm:1.0.1"
1528 | checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1
1529 | languageName: node
1530 | linkType: hard
1531 |
1532 | "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
1533 | version: 0.4.0
1534 | resolution: "type-check@npm:0.4.0"
1535 | dependencies:
1536 | prelude-ls: "npm:^1.2.1"
1537 | checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
1538 | languageName: node
1539 | linkType: hard
1540 |
1541 | "type-fest@npm:^0.20.2":
1542 | version: 0.20.2
1543 | resolution: "type-fest@npm:0.20.2"
1544 | checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3
1545 | languageName: node
1546 | linkType: hard
1547 |
1548 | "type-is@npm:~1.6.18":
1549 | version: 1.6.18
1550 | resolution: "type-is@npm:1.6.18"
1551 | dependencies:
1552 | media-typer: "npm:0.3.0"
1553 | mime-types: "npm:~2.1.24"
1554 | checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d
1555 | languageName: node
1556 | linkType: hard
1557 |
1558 | "unpipe@npm:1.0.0, unpipe@npm:~1.0.0":
1559 | version: 1.0.0
1560 | resolution: "unpipe@npm:1.0.0"
1561 | checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c
1562 | languageName: node
1563 | linkType: hard
1564 |
1565 | "uri-js@npm:^4.2.2":
1566 | version: 4.4.1
1567 | resolution: "uri-js@npm:4.4.1"
1568 | dependencies:
1569 | punycode: "npm:^2.1.0"
1570 | checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c
1571 | languageName: node
1572 | linkType: hard
1573 |
1574 | "utils-merge@npm:1.0.1":
1575 | version: 1.0.1
1576 | resolution: "utils-merge@npm:1.0.1"
1577 | checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672
1578 | languageName: node
1579 | linkType: hard
1580 |
1581 | "vary@npm:~1.1.2":
1582 | version: 1.1.2
1583 | resolution: "vary@npm:1.1.2"
1584 | checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f
1585 | languageName: node
1586 | linkType: hard
1587 |
1588 | "which@npm:^2.0.1":
1589 | version: 2.0.2
1590 | resolution: "which@npm:2.0.2"
1591 | dependencies:
1592 | isexe: "npm:^2.0.0"
1593 | bin:
1594 | node-which: ./bin/node-which
1595 | checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
1596 | languageName: node
1597 | linkType: hard
1598 |
1599 | "word-wrap@npm:^1.2.5":
1600 | version: 1.2.5
1601 | resolution: "word-wrap@npm:1.2.5"
1602 | checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
1603 | languageName: node
1604 | linkType: hard
1605 |
1606 | "wrappy@npm:1":
1607 | version: 1.0.2
1608 | resolution: "wrappy@npm:1.0.2"
1609 | checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0
1610 | languageName: node
1611 | linkType: hard
1612 |
1613 | "yocto-queue@npm:^0.1.0":
1614 | version: 0.1.0
1615 | resolution: "yocto-queue@npm:0.1.0"
1616 | checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
1617 | languageName: node
1618 | linkType: hard
1619 |
--------------------------------------------------------------------------------