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

Real-Time Transcription

14 |

15 | Try AssemblyAI's new real-time transcription endpoint! 16 |

17 |
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 | --------------------------------------------------------------------------------