podcast manager

refactoring messages in prep for RTC signalling messages

+2561 -54
+1 -1
eslint.config.js
··· 45 45 // undef is handled by typecheck 46 46 // for typechecking we want to allow unused vars like `import * as preact_types from 'preact'` 47 47 'no-undef': ['off'], 48 - 'no-unused-vars': ['warn', { varsIgnorePattern: '_types' }], 48 + 'no-unused-vars': ['warn', { varsIgnorePattern: '(?:^_)|(?:_types$)' }], 49 49 50 50 // preferences 51 51 'max-len': ['warn', { code: 100 }],
+2358
package-lock.json
··· 51 51 "typescript-eslint-language-service": "^5.0.5", 52 52 "vite": "^6.3.5", 53 53 "vite-plugin-checker": "^0.9.3", 54 + "webtorrent": "^2.6.8", 54 55 "wireit": "^0.14.12", 55 56 "zod-schema-faker": "^2.0.0-beta.5" 56 57 } ··· 2676 2677 "win32" 2677 2678 ] 2678 2679 }, 2680 + "node_modules/@silentbot1/nat-api": { 2681 + "version": "0.4.8", 2682 + "resolved": "https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.8.tgz", 2683 + "integrity": "sha512-DBz/1gGzaYIbUdGTBQ7l4NrI7a+DFZgdZShmjmBGgJR4PvQ64wKNMwle2rrW8pdiOesN+DV6/8ZN/PLuksNyTg==", 2684 + "dev": true, 2685 + "license": "MIT", 2686 + "dependencies": { 2687 + "chrome-dgram": "^3.0.6", 2688 + "cross-fetch-ponyfill": "^1.0.3", 2689 + "debug": "^4.4.0", 2690 + "default-gateway": "^7.2.2", 2691 + "unordered-array-remove": "^1.0.2", 2692 + "xml2js": "^0.6.2" 2693 + }, 2694 + "engines": { 2695 + "node": ">=10.0.0" 2696 + } 2697 + }, 2679 2698 "node_modules/@sinclair/typebox": { 2680 2699 "version": "0.34.35", 2681 2700 "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz", ··· 2867 2886 }, 2868 2887 "peerDependencies": { 2869 2888 "preact": ">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0" 2889 + } 2890 + }, 2891 + "node_modules/@thaunknown/simple-peer": { 2892 + "version": "10.0.11", 2893 + "resolved": "https://registry.npmjs.org/@thaunknown/simple-peer/-/simple-peer-10.0.11.tgz", 2894 + "integrity": "sha512-A5MdmtZ6HUzRa4gwPOS4jG+09HvpTv2rFo4kk7Vwveo2ELm+WmbO124ZrJrQnZc2D7z2Q3AWKSitjl9OKXO88g==", 2895 + "dev": true, 2896 + "license": "MIT", 2897 + "dependencies": { 2898 + "debug": "^4.3.7", 2899 + "err-code": "^3.0.1", 2900 + "streamx": "^2.20.1", 2901 + "uint8-util": "^2.2.5", 2902 + "webrtc-polyfill": "^1.1.10" 2903 + } 2904 + }, 2905 + "node_modules/@thaunknown/simple-websocket": { 2906 + "version": "9.1.3", 2907 + "resolved": "https://registry.npmjs.org/@thaunknown/simple-websocket/-/simple-websocket-9.1.3.tgz", 2908 + "integrity": "sha512-pf/FCJsgWtLJiJmIpiSI7acOZVq3bIQCpnNo222UFc8Ph1lOUOTpe6LoYhhiOSKB9GUaWJEVUtZ+sK1/aBgU5Q==", 2909 + "dev": true, 2910 + "license": "MIT", 2911 + "dependencies": { 2912 + "debug": "^4.3.5", 2913 + "queue-microtask": "^1.2.3", 2914 + "streamx": "^2.17.0", 2915 + "uint8-util": "^2.2.5", 2916 + "ws": "^8.17.1" 2917 + } 2918 + }, 2919 + "node_modules/@thaunknown/thirty-two": { 2920 + "version": "1.0.5", 2921 + "resolved": "https://registry.npmjs.org/@thaunknown/thirty-two/-/thirty-two-1.0.5.tgz", 2922 + "integrity": "sha512-Q53KyCXweV1CS62EfqtPDqfpksn5keQ59PGqzzkK+g8Vif1jB4inoBCcs/BUSdsqddhE3G+2Fn+4RX3S6RqT0A==", 2923 + "dev": true, 2924 + "license": "MIT", 2925 + "dependencies": { 2926 + "uint8-util": "^2.2.5" 2927 + }, 2928 + "engines": { 2929 + "node": ">=0.2.6" 2870 2930 } 2871 2931 }, 2872 2932 "node_modules/@tybys/wasm-util": { ··· 3850 3910 "win32" 3851 3911 ] 3852 3912 }, 3913 + "node_modules/@webtorrent/http-node": { 3914 + "version": "1.3.0", 3915 + "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz", 3916 + "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==", 3917 + "dev": true, 3918 + "license": "MIT", 3919 + "dependencies": { 3920 + "freelist": "^1.0.3", 3921 + "http-parser-js": "^0.4.3" 3922 + } 3923 + }, 3853 3924 "node_modules/@zod/core": { 3854 3925 "version": "0.11.6", 3855 3926 "resolved": "https://registry.npmjs.org/@zod/core/-/core-0.11.6.tgz", ··· 3861 3932 "url": "https://github.com/sponsors/colinhacks" 3862 3933 } 3863 3934 }, 3935 + "node_modules/abort-controller": { 3936 + "version": "3.0.0", 3937 + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 3938 + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 3939 + "dev": true, 3940 + "license": "MIT", 3941 + "dependencies": { 3942 + "event-target-shim": "^5.0.0" 3943 + }, 3944 + "engines": { 3945 + "node": ">=6.5" 3946 + } 3947 + }, 3864 3948 "node_modules/accepts": { 3865 3949 "version": "2.0.0", 3866 3950 "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", ··· 3895 3979 "license": "MIT", 3896 3980 "peerDependencies": { 3897 3981 "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 3982 + } 3983 + }, 3984 + "node_modules/addr-to-ip-port": { 3985 + "version": "2.0.0", 3986 + "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-2.0.0.tgz", 3987 + "integrity": "sha512-9bYbtjamtdLHZSqVIUXhilOryNPiL+x+Q5J/Unpg4VY3ZIkK3fT52UoErj1NdUeVm3J1t2iBEAur4Ywbl/bahw==", 3988 + "dev": true, 3989 + "license": "MIT", 3990 + "engines": { 3991 + "node": ">=12.20.0" 3898 3992 } 3899 3993 }, 3900 3994 "node_modules/agent-base": { ··· 4181 4275 "url": "https://github.com/sponsors/ljharb" 4182 4276 } 4183 4277 }, 4278 + "node_modules/b4a": { 4279 + "version": "1.6.7", 4280 + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", 4281 + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", 4282 + "dev": true, 4283 + "license": "Apache-2.0" 4284 + }, 4184 4285 "node_modules/babel-jest": { 4185 4286 "version": "30.0.0", 4186 4287 "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.0.tgz", ··· 4296 4397 "dev": true, 4297 4398 "license": "MIT" 4298 4399 }, 4400 + "node_modules/bare-addon-resolve": { 4401 + "version": "1.9.4", 4402 + "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", 4403 + "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", 4404 + "dev": true, 4405 + "license": "Apache-2.0", 4406 + "optional": true, 4407 + "dependencies": { 4408 + "bare-module-resolve": "^1.10.0", 4409 + "bare-semver": "^1.0.0" 4410 + }, 4411 + "peerDependencies": { 4412 + "bare-url": "*" 4413 + }, 4414 + "peerDependenciesMeta": { 4415 + "bare-url": { 4416 + "optional": true 4417 + } 4418 + } 4419 + }, 4420 + "node_modules/bare-events": { 4421 + "version": "2.5.4", 4422 + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", 4423 + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", 4424 + "dev": true, 4425 + "license": "Apache-2.0" 4426 + }, 4427 + "node_modules/bare-fs": { 4428 + "version": "4.1.5", 4429 + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", 4430 + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", 4431 + "dev": true, 4432 + "license": "Apache-2.0", 4433 + "dependencies": { 4434 + "bare-events": "^2.5.4", 4435 + "bare-path": "^3.0.0", 4436 + "bare-stream": "^2.6.4" 4437 + }, 4438 + "engines": { 4439 + "bare": ">=1.16.0" 4440 + }, 4441 + "peerDependencies": { 4442 + "bare-buffer": "*" 4443 + }, 4444 + "peerDependenciesMeta": { 4445 + "bare-buffer": { 4446 + "optional": true 4447 + } 4448 + } 4449 + }, 4450 + "node_modules/bare-module-resolve": { 4451 + "version": "1.11.1", 4452 + "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.11.1.tgz", 4453 + "integrity": "sha512-DCxeT9i8sTs3vUMA3w321OX/oXtNEu5EjObQOnTmCdNp5RXHBAvAaBDHvAi9ta0q/948QPz+co6SsGi6aQMYRg==", 4454 + "dev": true, 4455 + "license": "Apache-2.0", 4456 + "optional": true, 4457 + "dependencies": { 4458 + "bare-semver": "^1.0.0" 4459 + }, 4460 + "peerDependencies": { 4461 + "bare-url": "*" 4462 + }, 4463 + "peerDependenciesMeta": { 4464 + "bare-url": { 4465 + "optional": true 4466 + } 4467 + } 4468 + }, 4469 + "node_modules/bare-os": { 4470 + "version": "3.6.1", 4471 + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", 4472 + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", 4473 + "dev": true, 4474 + "license": "Apache-2.0", 4475 + "engines": { 4476 + "bare": ">=1.14.0" 4477 + } 4478 + }, 4479 + "node_modules/bare-path": { 4480 + "version": "3.0.0", 4481 + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", 4482 + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", 4483 + "dev": true, 4484 + "license": "Apache-2.0", 4485 + "dependencies": { 4486 + "bare-os": "^3.0.1" 4487 + } 4488 + }, 4489 + "node_modules/bare-semver": { 4490 + "version": "1.0.1", 4491 + "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", 4492 + "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", 4493 + "dev": true, 4494 + "license": "Apache-2.0", 4495 + "optional": true 4496 + }, 4497 + "node_modules/bare-stream": { 4498 + "version": "2.6.5", 4499 + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", 4500 + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", 4501 + "dev": true, 4502 + "license": "Apache-2.0", 4503 + "dependencies": { 4504 + "streamx": "^2.21.0" 4505 + }, 4506 + "peerDependencies": { 4507 + "bare-buffer": "*", 4508 + "bare-events": "*" 4509 + }, 4510 + "peerDependenciesMeta": { 4511 + "bare-buffer": { 4512 + "optional": true 4513 + }, 4514 + "bare-events": { 4515 + "optional": true 4516 + } 4517 + } 4518 + }, 4519 + "node_modules/bare-url": { 4520 + "version": "2.1.6", 4521 + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.6.tgz", 4522 + "integrity": "sha512-FgjDeR+/yDH34By4I0qB5NxAoWv7dOTYcOXwn73kr+c93HyC2lU6tnjifqUe33LKMJcDyCYPQjEAqgOQiXkE2Q==", 4523 + "dev": true, 4524 + "license": "Apache-2.0", 4525 + "optional": true, 4526 + "dependencies": { 4527 + "bare-path": "^3.0.0" 4528 + } 4529 + }, 4530 + "node_modules/base64-arraybuffer": { 4531 + "version": "1.0.2", 4532 + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", 4533 + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", 4534 + "dev": true, 4535 + "license": "MIT", 4536 + "engines": { 4537 + "node": ">= 0.6.0" 4538 + } 4539 + }, 4540 + "node_modules/base64-js": { 4541 + "version": "1.5.1", 4542 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 4543 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 4544 + "dev": true, 4545 + "funding": [ 4546 + { 4547 + "type": "github", 4548 + "url": "https://github.com/sponsors/feross" 4549 + }, 4550 + { 4551 + "type": "patreon", 4552 + "url": "https://www.patreon.com/feross" 4553 + }, 4554 + { 4555 + "type": "consulting", 4556 + "url": "https://feross.org/support" 4557 + } 4558 + ], 4559 + "license": "MIT" 4560 + }, 4561 + "node_modules/bencode": { 4562 + "version": "4.0.0", 4563 + "resolved": "https://registry.npmjs.org/bencode/-/bencode-4.0.0.tgz", 4564 + "integrity": "sha512-AERXw18df0pF3ziGOCyUjqKZBVNH8HV3lBxnx5w0qtgMIk4a1wb9BkcCQbkp9Zstfrn/dzRwl7MmUHHocX3sRQ==", 4565 + "dev": true, 4566 + "license": "MIT", 4567 + "dependencies": { 4568 + "uint8-util": "^2.2.2" 4569 + }, 4570 + "engines": { 4571 + "node": ">=12.20.0" 4572 + } 4573 + }, 4574 + "node_modules/bep53-range": { 4575 + "version": "2.0.0", 4576 + "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz", 4577 + "integrity": "sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==", 4578 + "dev": true, 4579 + "license": "MIT", 4580 + "engines": { 4581 + "node": ">=12.20.0" 4582 + } 4583 + }, 4299 4584 "node_modules/binary-extensions": { 4300 4585 "version": "2.3.0", 4301 4586 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", ··· 4309 4594 "url": "https://github.com/sponsors/sindresorhus" 4310 4595 } 4311 4596 }, 4597 + "node_modules/bitfield": { 4598 + "version": "4.2.0", 4599 + "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.2.0.tgz", 4600 + "integrity": "sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==", 4601 + "dev": true, 4602 + "license": "MIT", 4603 + "engines": { 4604 + "node": ">=8" 4605 + }, 4606 + "funding": { 4607 + "url": "https://github.com/sponsors/fb55" 4608 + } 4609 + }, 4610 + "node_modules/bittorrent-dht": { 4611 + "version": "11.0.10", 4612 + "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-11.0.10.tgz", 4613 + "integrity": "sha512-/Xlruvh+nT5IZcDYiCjvDinJy2X5532zJ8vJpVYh4f52IPw29FnjqYAcLenLludupXmFHj/pxntu8KkP7jAbUg==", 4614 + "dev": true, 4615 + "funding": [ 4616 + { 4617 + "type": "github", 4618 + "url": "https://github.com/sponsors/feross" 4619 + }, 4620 + { 4621 + "type": "patreon", 4622 + "url": "https://www.patreon.com/feross" 4623 + }, 4624 + { 4625 + "type": "consulting", 4626 + "url": "https://feross.org/support" 4627 + } 4628 + ], 4629 + "license": "MIT", 4630 + "dependencies": { 4631 + "bencode": "^4.0.0", 4632 + "debug": "^4.4.1", 4633 + "k-bucket": "^5.1.0", 4634 + "k-rpc": "^5.1.0", 4635 + "last-one-wins": "^1.0.4", 4636 + "lru": "^3.1.0", 4637 + "randombytes": "^2.1.0", 4638 + "record-cache": "^1.2.0" 4639 + }, 4640 + "engines": { 4641 + "node": ">=12.20.0" 4642 + } 4643 + }, 4644 + "node_modules/bittorrent-lsd": { 4645 + "version": "2.0.0", 4646 + "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-2.0.0.tgz", 4647 + "integrity": "sha512-jV+SMTGNY1iGWjf5cPA2HMeA6axuMQRWwWELtsuZ1FmQmZwC74we92nwtDTfv1WMnLx+oqEjWRri42IHjZitSQ==", 4648 + "dev": true, 4649 + "funding": [ 4650 + { 4651 + "type": "github", 4652 + "url": "https://github.com/sponsors/feross" 4653 + }, 4654 + { 4655 + "type": "patreon", 4656 + "url": "https://www.patreon.com/feross" 4657 + }, 4658 + { 4659 + "type": "consulting", 4660 + "url": "https://feross.org/support" 4661 + } 4662 + ], 4663 + "license": "MIT", 4664 + "dependencies": { 4665 + "chrome-dgram": "^3.0.6", 4666 + "debug": "^4.2.0" 4667 + }, 4668 + "engines": { 4669 + "node": ">=12.20.0" 4670 + } 4671 + }, 4672 + "node_modules/bittorrent-peerid": { 4673 + "version": "1.3.6", 4674 + "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.6.tgz", 4675 + "integrity": "sha512-VyLcUjVMEOdSpHaCG/7odvCdLbAB1y3l9A2V6WIje24uV7FkJPrQrH/RrlFmKxP89pFVDEnE+YlHaFujlFIZsg==", 4676 + "dev": true, 4677 + "funding": [ 4678 + { 4679 + "type": "github", 4680 + "url": "https://github.com/sponsors/feross" 4681 + }, 4682 + { 4683 + "type": "patreon", 4684 + "url": "https://www.patreon.com/feross" 4685 + }, 4686 + { 4687 + "type": "consulting", 4688 + "url": "https://feross.org/support" 4689 + } 4690 + ], 4691 + "license": "MIT" 4692 + }, 4693 + "node_modules/bittorrent-protocol": { 4694 + "version": "4.1.16", 4695 + "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-4.1.16.tgz", 4696 + "integrity": "sha512-93t8h77uAyD8BGSpBo8SqxYyKBA/xgv9N8+WghnXpH2I+JmlmJmddUt8nugPRgj/LNuL1VrWJ26jhYhiVWpRaQ==", 4697 + "dev": true, 4698 + "funding": [ 4699 + { 4700 + "type": "github", 4701 + "url": "https://github.com/sponsors/feross" 4702 + }, 4703 + { 4704 + "type": "patreon", 4705 + "url": "https://www.patreon.com/feross" 4706 + }, 4707 + { 4708 + "type": "consulting", 4709 + "url": "https://feross.org/support" 4710 + } 4711 + ], 4712 + "license": "MIT", 4713 + "dependencies": { 4714 + "bencode": "^4.0.0", 4715 + "bitfield": "^4.1.0", 4716 + "debug": "^4.4.0", 4717 + "rc4": "^0.1.5", 4718 + "streamx": "^2.15.1", 4719 + "throughput": "^1.0.1", 4720 + "uint8-util": "^2.2.5", 4721 + "unordered-array-remove": "^1.0.2" 4722 + }, 4723 + "engines": { 4724 + "node": ">=12.20.0" 4725 + } 4726 + }, 4727 + "node_modules/bittorrent-tracker": { 4728 + "version": "11.2.1", 4729 + "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-11.2.1.tgz", 4730 + "integrity": "sha512-SffBgHzNrhn+HBwdRD2st+TYJOs2LhF3ljJFPCYGv592LpGtPxw41UZHTUeY5muWnQl+wopcU8qXM9UEk2WKrA==", 4731 + "dev": true, 4732 + "funding": [ 4733 + { 4734 + "type": "github", 4735 + "url": "https://github.com/sponsors/feross" 4736 + }, 4737 + { 4738 + "type": "patreon", 4739 + "url": "https://www.patreon.com/feross" 4740 + }, 4741 + { 4742 + "type": "consulting", 4743 + "url": "https://feross.org/support" 4744 + } 4745 + ], 4746 + "license": "MIT", 4747 + "dependencies": { 4748 + "@thaunknown/simple-peer": "^10.0.8", 4749 + "@thaunknown/simple-websocket": "^9.1.3", 4750 + "bencode": "^4.0.0", 4751 + "bittorrent-peerid": "^1.3.6", 4752 + "chrome-dgram": "^3.0.6", 4753 + "compact2string": "^1.4.1", 4754 + "cross-fetch-ponyfill": "^1.0.3", 4755 + "debug": "^4.3.4", 4756 + "ip": "^2.0.1", 4757 + "lru": "^3.1.0", 4758 + "minimist": "^1.2.8", 4759 + "once": "^1.4.0", 4760 + "queue-microtask": "^1.2.3", 4761 + "random-iterate": "^1.0.1", 4762 + "run-parallel": "^1.2.0", 4763 + "run-series": "^1.1.9", 4764 + "socks": "^2.8.3", 4765 + "string2compact": "^2.0.1", 4766 + "uint8-util": "^2.2.5", 4767 + "unordered-array-remove": "^1.0.2", 4768 + "ws": "^8.17.0" 4769 + }, 4770 + "bin": { 4771 + "bittorrent-tracker": "bin/cmd.js" 4772 + }, 4773 + "engines": { 4774 + "node": ">=16.0.0" 4775 + }, 4776 + "optionalDependencies": { 4777 + "bufferutil": "^4.0.8", 4778 + "utf-8-validate": "^6.0.4" 4779 + } 4780 + }, 4781 + "node_modules/bl": { 4782 + "version": "4.1.0", 4783 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 4784 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 4785 + "dev": true, 4786 + "license": "MIT", 4787 + "dependencies": { 4788 + "buffer": "^5.5.0", 4789 + "inherits": "^2.0.4", 4790 + "readable-stream": "^3.4.0" 4791 + } 4792 + }, 4793 + "node_modules/block-iterator": { 4794 + "version": "1.1.1", 4795 + "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.1.1.tgz", 4796 + "integrity": "sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==", 4797 + "dev": true, 4798 + "license": "MIT" 4799 + }, 4312 4800 "node_modules/bluebird": { 4313 4801 "version": "3.7.2", 4314 4802 "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", ··· 4422 4910 "node-int64": "^0.4.0" 4423 4911 } 4424 4912 }, 4913 + "node_modules/buffer": { 4914 + "version": "5.7.1", 4915 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 4916 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 4917 + "dev": true, 4918 + "funding": [ 4919 + { 4920 + "type": "github", 4921 + "url": "https://github.com/sponsors/feross" 4922 + }, 4923 + { 4924 + "type": "patreon", 4925 + "url": "https://www.patreon.com/feross" 4926 + }, 4927 + { 4928 + "type": "consulting", 4929 + "url": "https://feross.org/support" 4930 + } 4931 + ], 4932 + "license": "MIT", 4933 + "dependencies": { 4934 + "base64-js": "^1.3.1", 4935 + "ieee754": "^1.1.13" 4936 + } 4937 + }, 4425 4938 "node_modules/buffer-from": { 4426 4939 "version": "1.1.2", 4427 4940 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", ··· 4429 4942 "dev": true, 4430 4943 "license": "MIT" 4431 4944 }, 4945 + "node_modules/bufferutil": { 4946 + "version": "4.0.9", 4947 + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", 4948 + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", 4949 + "hasInstallScript": true, 4950 + "license": "MIT", 4951 + "optional": true, 4952 + "dependencies": { 4953 + "node-gyp-build": "^4.3.0" 4954 + }, 4955 + "engines": { 4956 + "node": ">=6.14.2" 4957 + } 4958 + }, 4432 4959 "node_modules/bytes": { 4433 4960 "version": "3.1.2", 4434 4961 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", ··· 4436 4963 "license": "MIT", 4437 4964 "engines": { 4438 4965 "node": ">= 0.8" 4966 + } 4967 + }, 4968 + "node_modules/cache-chunk-store": { 4969 + "version": "3.2.2", 4970 + "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz", 4971 + "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==", 4972 + "dev": true, 4973 + "funding": [ 4974 + { 4975 + "type": "github", 4976 + "url": "https://github.com/sponsors/feross" 4977 + }, 4978 + { 4979 + "type": "patreon", 4980 + "url": "https://www.patreon.com/feross" 4981 + }, 4982 + { 4983 + "type": "consulting", 4984 + "url": "https://feross.org/support" 4985 + } 4986 + ], 4987 + "license": "MIT", 4988 + "dependencies": { 4989 + "lru": "^3.1.0", 4990 + "queue-microtask": "^1.2.3" 4439 4991 } 4440 4992 }, 4441 4993 "node_modules/call-bind": { ··· 4605 5157 "url": "https://paulmillr.com/funding/" 4606 5158 } 4607 5159 }, 5160 + "node_modules/chownr": { 5161 + "version": "1.1.4", 5162 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 5163 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 5164 + "dev": true, 5165 + "license": "ISC" 5166 + }, 5167 + "node_modules/chrome-dgram": { 5168 + "version": "3.0.6", 5169 + "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", 5170 + "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", 5171 + "dev": true, 5172 + "funding": [ 5173 + { 5174 + "type": "github", 5175 + "url": "https://github.com/sponsors/feross" 5176 + }, 5177 + { 5178 + "type": "patreon", 5179 + "url": "https://www.patreon.com/feross" 5180 + }, 5181 + { 5182 + "type": "consulting", 5183 + "url": "https://feross.org/support" 5184 + } 5185 + ], 5186 + "license": "MIT", 5187 + "dependencies": { 5188 + "inherits": "^2.0.4", 5189 + "run-series": "^1.1.9" 5190 + } 5191 + }, 5192 + "node_modules/chrome-dns": { 5193 + "version": "1.0.1", 5194 + "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz", 5195 + "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==", 5196 + "dev": true, 5197 + "license": "MIT", 5198 + "dependencies": { 5199 + "chrome-net": "^3.3.2" 5200 + } 5201 + }, 5202 + "node_modules/chrome-net": { 5203 + "version": "3.3.4", 5204 + "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz", 5205 + "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==", 5206 + "dev": true, 5207 + "funding": [ 5208 + { 5209 + "type": "github", 5210 + "url": "https://github.com/sponsors/feross" 5211 + }, 5212 + { 5213 + "type": "patreon", 5214 + "url": "https://www.patreon.com/feross" 5215 + }, 5216 + { 5217 + "type": "consulting", 5218 + "url": "https://feross.org/support" 5219 + } 5220 + ], 5221 + "license": "MIT", 5222 + "dependencies": { 5223 + "inherits": "^2.0.1" 5224 + } 5225 + }, 5226 + "node_modules/chunk-store-iterator": { 5227 + "version": "1.0.4", 5228 + "resolved": "https://registry.npmjs.org/chunk-store-iterator/-/chunk-store-iterator-1.0.4.tgz", 5229 + "integrity": "sha512-LGjzJNmk7W1mrdaBoJNztPumT2ACmgjHmI1AMm8aeGYOl4+LKaYC/yfnx27i++LiAtoe/dR+3jC8HRzb6gW4/A==", 5230 + "dev": true, 5231 + "license": "MIT", 5232 + "dependencies": { 5233 + "block-iterator": "^1.1.1" 5234 + } 5235 + }, 4608 5236 "node_modules/ci-info": { 4609 5237 "version": "4.2.0", 4610 5238 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", ··· 4754 5382 "node": ">= 12.0.0" 4755 5383 } 4756 5384 }, 5385 + "node_modules/compact2string": { 5386 + "version": "1.4.1", 5387 + "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", 5388 + "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", 5389 + "dev": true, 5390 + "license": "BSD", 5391 + "dependencies": { 5392 + "ipaddr.js": ">= 0.1.5" 5393 + } 5394 + }, 4757 5395 "node_modules/concat-map": { 4758 5396 "version": "0.0.1", 4759 5397 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", ··· 4814 5452 "node": ">=6.6.0" 4815 5453 } 4816 5454 }, 5455 + "node_modules/cpus": { 5456 + "version": "1.0.3", 5457 + "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz", 5458 + "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==", 5459 + "dev": true, 5460 + "funding": [ 5461 + { 5462 + "type": "github", 5463 + "url": "https://github.com/sponsors/feross" 5464 + }, 5465 + { 5466 + "type": "patreon", 5467 + "url": "https://www.patreon.com/feross" 5468 + }, 5469 + { 5470 + "type": "consulting", 5471 + "url": "https://feross.org/support" 5472 + } 5473 + ], 5474 + "license": "MIT" 5475 + }, 5476 + "node_modules/create-torrent": { 5477 + "version": "6.1.0", 5478 + "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-6.1.0.tgz", 5479 + "integrity": "sha512-War593HCsg4TotHgMGWTJqnDHN0pmEU2RM13xUzzSZ78TpRNOC2bbcsC5yMO3pqIkedHEWFzYNqH1yhwuuBYTg==", 5480 + "dev": true, 5481 + "funding": [ 5482 + { 5483 + "type": "github", 5484 + "url": "https://github.com/sponsors/feross" 5485 + }, 5486 + { 5487 + "type": "patreon", 5488 + "url": "https://www.patreon.com/feross" 5489 + }, 5490 + { 5491 + "type": "consulting", 5492 + "url": "https://feross.org/support" 5493 + } 5494 + ], 5495 + "license": "MIT", 5496 + "dependencies": { 5497 + "bencode": "^4.0.0", 5498 + "block-iterator": "^1.1.1", 5499 + "fast-readable-async-iterator": "^2.0.0", 5500 + "is-file": "^1.0.0", 5501 + "join-async-iterator": "^1.1.1", 5502 + "junk": "^4.0.1", 5503 + "minimist": "^1.2.8", 5504 + "once": "^1.4.0", 5505 + "piece-length": "^2.0.1", 5506 + "queue-microtask": "^1.2.3", 5507 + "run-parallel": "^1.2.0", 5508 + "uint8-util": "^2.2.5" 5509 + }, 5510 + "bin": { 5511 + "create-torrent": "bin/cmd.js" 5512 + }, 5513 + "engines": { 5514 + "node": ">=12" 5515 + } 5516 + }, 5517 + "node_modules/cross-fetch-ponyfill": { 5518 + "version": "1.0.3", 5519 + "resolved": "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz", 5520 + "integrity": "sha512-uOBkDhUAGAbx/FEzNKkOfx3w57H8xReBBXoZvUnOKTI0FW0Xvrj3GrYv2iZXUqlffC1LMGfQzhmBM/ke+6eTDA==", 5521 + "dev": true, 5522 + "license": "MIT", 5523 + "dependencies": { 5524 + "abort-controller": "^3.0.0", 5525 + "node-fetch": "^3.3.0" 5526 + } 5527 + }, 4817 5528 "node_modules/cross-spawn": { 4818 5529 "version": "7.0.6", 4819 5530 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", ··· 4880 5591 "node": ">=18" 4881 5592 } 4882 5593 }, 5594 + "node_modules/data-uri-to-buffer": { 5595 + "version": "4.0.1", 5596 + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", 5597 + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", 5598 + "dev": true, 5599 + "license": "MIT", 5600 + "engines": { 5601 + "node": ">= 12" 5602 + } 5603 + }, 4883 5604 "node_modules/data-urls": { 4884 5605 "version": "5.0.0", 4885 5606 "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", ··· 4986 5707 "url": "https://github.com/sponsors/wooorm" 4987 5708 } 4988 5709 }, 5710 + "node_modules/decompress-response": { 5711 + "version": "6.0.0", 5712 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 5713 + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 5714 + "dev": true, 5715 + "license": "MIT", 5716 + "dependencies": { 5717 + "mimic-response": "^3.1.0" 5718 + }, 5719 + "engines": { 5720 + "node": ">=10" 5721 + }, 5722 + "funding": { 5723 + "url": "https://github.com/sponsors/sindresorhus" 5724 + } 5725 + }, 4989 5726 "node_modules/dedent": { 4990 5727 "version": "1.6.0", 4991 5728 "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", ··· 5034 5771 "url": "https://github.com/sponsors/ljharb" 5035 5772 } 5036 5773 }, 5774 + "node_modules/deep-extend": { 5775 + "version": "0.6.0", 5776 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 5777 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 5778 + "dev": true, 5779 + "license": "MIT", 5780 + "engines": { 5781 + "node": ">=4.0.0" 5782 + } 5783 + }, 5037 5784 "node_modules/deep-is": { 5038 5785 "version": "0.1.4", 5039 5786 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", ··· 5049 5796 "license": "MIT", 5050 5797 "engines": { 5051 5798 "node": ">=0.10.0" 5799 + } 5800 + }, 5801 + "node_modules/default-gateway": { 5802 + "version": "7.2.2", 5803 + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", 5804 + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", 5805 + "dev": true, 5806 + "license": "BSD-2-Clause", 5807 + "dependencies": { 5808 + "execa": "^7.1.1" 5809 + }, 5810 + "engines": { 5811 + "node": ">= 16" 5812 + } 5813 + }, 5814 + "node_modules/default-gateway/node_modules/execa": { 5815 + "version": "7.2.0", 5816 + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", 5817 + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", 5818 + "dev": true, 5819 + "license": "MIT", 5820 + "dependencies": { 5821 + "cross-spawn": "^7.0.3", 5822 + "get-stream": "^6.0.1", 5823 + "human-signals": "^4.3.0", 5824 + "is-stream": "^3.0.0", 5825 + "merge-stream": "^2.0.0", 5826 + "npm-run-path": "^5.1.0", 5827 + "onetime": "^6.0.0", 5828 + "signal-exit": "^3.0.7", 5829 + "strip-final-newline": "^3.0.0" 5830 + }, 5831 + "engines": { 5832 + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" 5833 + }, 5834 + "funding": { 5835 + "url": "https://github.com/sindresorhus/execa?sponsor=1" 5836 + } 5837 + }, 5838 + "node_modules/default-gateway/node_modules/human-signals": { 5839 + "version": "4.3.1", 5840 + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", 5841 + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", 5842 + "dev": true, 5843 + "license": "Apache-2.0", 5844 + "engines": { 5845 + "node": ">=14.18.0" 5846 + } 5847 + }, 5848 + "node_modules/default-gateway/node_modules/is-stream": { 5849 + "version": "3.0.0", 5850 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 5851 + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 5852 + "dev": true, 5853 + "license": "MIT", 5854 + "engines": { 5855 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 5856 + }, 5857 + "funding": { 5858 + "url": "https://github.com/sponsors/sindresorhus" 5859 + } 5860 + }, 5861 + "node_modules/default-gateway/node_modules/mimic-fn": { 5862 + "version": "4.0.0", 5863 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 5864 + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 5865 + "dev": true, 5866 + "license": "MIT", 5867 + "engines": { 5868 + "node": ">=12" 5869 + }, 5870 + "funding": { 5871 + "url": "https://github.com/sponsors/sindresorhus" 5872 + } 5873 + }, 5874 + "node_modules/default-gateway/node_modules/npm-run-path": { 5875 + "version": "5.3.0", 5876 + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", 5877 + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", 5878 + "dev": true, 5879 + "license": "MIT", 5880 + "dependencies": { 5881 + "path-key": "^4.0.0" 5882 + }, 5883 + "engines": { 5884 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 5885 + }, 5886 + "funding": { 5887 + "url": "https://github.com/sponsors/sindresorhus" 5888 + } 5889 + }, 5890 + "node_modules/default-gateway/node_modules/onetime": { 5891 + "version": "6.0.0", 5892 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", 5893 + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 5894 + "dev": true, 5895 + "license": "MIT", 5896 + "dependencies": { 5897 + "mimic-fn": "^4.0.0" 5898 + }, 5899 + "engines": { 5900 + "node": ">=12" 5901 + }, 5902 + "funding": { 5903 + "url": "https://github.com/sponsors/sindresorhus" 5904 + } 5905 + }, 5906 + "node_modules/default-gateway/node_modules/path-key": { 5907 + "version": "4.0.0", 5908 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", 5909 + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 5910 + "dev": true, 5911 + "license": "MIT", 5912 + "engines": { 5913 + "node": ">=12" 5914 + }, 5915 + "funding": { 5916 + "url": "https://github.com/sponsors/sindresorhus" 5917 + } 5918 + }, 5919 + "node_modules/default-gateway/node_modules/signal-exit": { 5920 + "version": "3.0.7", 5921 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 5922 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 5923 + "dev": true, 5924 + "license": "ISC" 5925 + }, 5926 + "node_modules/default-gateway/node_modules/strip-final-newline": { 5927 + "version": "3.0.0", 5928 + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", 5929 + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 5930 + "dev": true, 5931 + "license": "MIT", 5932 + "engines": { 5933 + "node": ">=12" 5934 + }, 5935 + "funding": { 5936 + "url": "https://github.com/sponsors/sindresorhus" 5052 5937 } 5053 5938 }, 5054 5939 "node_modules/define-data-property": { ··· 5106 5991 "node": ">=6" 5107 5992 } 5108 5993 }, 5994 + "node_modules/detect-libc": { 5995 + "version": "2.0.4", 5996 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", 5997 + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", 5998 + "dev": true, 5999 + "license": "Apache-2.0", 6000 + "engines": { 6001 + "node": ">=8" 6002 + } 6003 + }, 5109 6004 "node_modules/detect-newline": { 5110 6005 "version": "3.1.0", 5111 6006 "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", ··· 5308 6203 "node": ">= 0.8" 5309 6204 } 5310 6205 }, 6206 + "node_modules/end-of-stream": { 6207 + "version": "1.4.5", 6208 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", 6209 + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", 6210 + "dev": true, 6211 + "license": "MIT", 6212 + "dependencies": { 6213 + "once": "^1.4.0" 6214 + } 6215 + }, 5311 6216 "node_modules/entities": { 5312 6217 "version": "4.5.0", 5313 6218 "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", ··· 5320 6225 "funding": { 5321 6226 "url": "https://github.com/fb55/entities?sponsor=1" 5322 6227 } 6228 + }, 6229 + "node_modules/err-code": { 6230 + "version": "3.0.1", 6231 + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", 6232 + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", 6233 + "dev": true, 6234 + "license": "MIT" 5323 6235 }, 5324 6236 "node_modules/error-ex": { 5325 6237 "version": "1.3.2", ··· 5913 6825 "node": ">= 0.6" 5914 6826 } 5915 6827 }, 6828 + "node_modules/event-target-shim": { 6829 + "version": "5.0.1", 6830 + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 6831 + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 6832 + "dev": true, 6833 + "license": "MIT", 6834 + "engines": { 6835 + "node": ">=6" 6836 + } 6837 + }, 5916 6838 "node_modules/execa": { 5917 6839 "version": "5.1.1", 5918 6840 "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", ··· 5952 6874 "license": "MIT", 5953 6875 "engines": { 5954 6876 "node": ">= 0.8.0" 6877 + } 6878 + }, 6879 + "node_modules/expand-template": { 6880 + "version": "2.0.3", 6881 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 6882 + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 6883 + "dev": true, 6884 + "license": "(MIT OR WTFPL)", 6885 + "engines": { 6886 + "node": ">=6" 5955 6887 } 5956 6888 }, 5957 6889 "node_modules/expect": { ··· 6021 6953 "dev": true, 6022 6954 "license": "MIT" 6023 6955 }, 6956 + "node_modules/fast-fifo": { 6957 + "version": "1.3.2", 6958 + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", 6959 + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", 6960 + "dev": true, 6961 + "license": "MIT" 6962 + }, 6024 6963 "node_modules/fast-glob": { 6025 6964 "version": "3.3.3", 6026 6965 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", ··· 6065 7004 "dev": true, 6066 7005 "license": "MIT" 6067 7006 }, 7007 + "node_modules/fast-readable-async-iterator": { 7008 + "version": "2.0.0", 7009 + "resolved": "https://registry.npmjs.org/fast-readable-async-iterator/-/fast-readable-async-iterator-2.0.0.tgz", 7010 + "integrity": "sha512-8Sld+DuyWRIftl86ZguJxR2oXCBccOiJxrY/Rj9/7ZBynW8pYMWzIcqxFL1da+25jaWJZVa+HHX/8SsA21JdTA==", 7011 + "dev": true, 7012 + "license": "MIT" 7013 + }, 6068 7014 "node_modules/fastq": { 6069 7015 "version": "1.19.1", 6070 7016 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", ··· 6099 7045 "bser": "2.1.1" 6100 7046 } 6101 7047 }, 7048 + "node_modules/fetch-blob": { 7049 + "version": "3.2.0", 7050 + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 7051 + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 7052 + "dev": true, 7053 + "funding": [ 7054 + { 7055 + "type": "github", 7056 + "url": "https://github.com/sponsors/jimmywarting" 7057 + }, 7058 + { 7059 + "type": "paypal", 7060 + "url": "https://paypal.me/jimmywarting" 7061 + } 7062 + ], 7063 + "license": "MIT", 7064 + "dependencies": { 7065 + "node-domexception": "^1.0.0", 7066 + "web-streams-polyfill": "^3.0.3" 7067 + }, 7068 + "engines": { 7069 + "node": "^12.20 || >= 14.13" 7070 + } 7071 + }, 6102 7072 "node_modules/file-entry-cache": { 6103 7073 "version": "8.0.0", 6104 7074 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", ··· 6133 7103 }, 6134 7104 "engines": { 6135 7105 "node": ">=10" 7106 + } 7107 + }, 7108 + "node_modules/filename-reserved-regex": { 7109 + "version": "3.0.0", 7110 + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", 7111 + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", 7112 + "dev": true, 7113 + "license": "MIT", 7114 + "engines": { 7115 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 7116 + }, 7117 + "funding": { 7118 + "url": "https://github.com/sponsors/sindresorhus" 6136 7119 } 6137 7120 }, 6138 7121 "node_modules/fill-range": { ··· 6243 7226 "dev": true, 6244 7227 "engines": { 6245 7228 "node": ">=0.4.x" 7229 + } 7230 + }, 7231 + "node_modules/formdata-polyfill": { 7232 + "version": "4.0.10", 7233 + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 7234 + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 7235 + "dev": true, 7236 + "license": "MIT", 7237 + "dependencies": { 7238 + "fetch-blob": "^3.1.2" 7239 + }, 7240 + "engines": { 7241 + "node": ">=12.20.0" 6246 7242 } 6247 7243 }, 6248 7244 "node_modules/forwarded": { ··· 6254 7250 "node": ">= 0.6" 6255 7251 } 6256 7252 }, 7253 + "node_modules/freelist": { 7254 + "version": "1.0.3", 7255 + "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz", 7256 + "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg==", 7257 + "dev": true, 7258 + "license": "MIT" 7259 + }, 6257 7260 "node_modules/fresh": { 6258 7261 "version": "2.0.0", 6259 7262 "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", ··· 6263 7266 "node": ">= 0.8" 6264 7267 } 6265 7268 }, 7269 + "node_modules/fs-chunk-store": { 7270 + "version": "4.1.0", 7271 + "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-4.1.0.tgz", 7272 + "integrity": "sha512-8apaYPaENIVUjVGqjo+Yg5/Hv7qL2fijWV+XGMCs3MR07o9DZZVMpF7dclxdjYotSjLdUGVPhqaJn+eAx6NLYQ==", 7273 + "dev": true, 7274 + "funding": [ 7275 + { 7276 + "type": "github", 7277 + "url": "https://github.com/sponsors/feross" 7278 + }, 7279 + { 7280 + "type": "patreon", 7281 + "url": "https://www.patreon.com/feross" 7282 + }, 7283 + { 7284 + "type": "consulting", 7285 + "url": "https://feross.org/support" 7286 + } 7287 + ], 7288 + "license": "MIT", 7289 + "dependencies": { 7290 + "filename-reserved-regex": "^3.0.0", 7291 + "queue-microtask": "^1.2.2", 7292 + "random-access-file": "^4.0.0", 7293 + "randombytes": "^2.0.3", 7294 + "run-parallel": "^1.1.2", 7295 + "thunky": "^1.0.1" 7296 + }, 7297 + "engines": { 7298 + "node": ">=12.20.0" 7299 + } 7300 + }, 7301 + "node_modules/fs-constants": { 7302 + "version": "1.0.0", 7303 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 7304 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 7305 + "dev": true, 7306 + "license": "MIT" 7307 + }, 7308 + "node_modules/fs-native-extensions": { 7309 + "version": "1.4.2", 7310 + "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.2.tgz", 7311 + "integrity": "sha512-QoQqYdHJTtfHUUO/ylyKSrt3dtPDyXCAjzveqCxPsV3hpIMNt455ua470+iTKJ8lFZ94pLC6Dv1TBbwOFLiV5w==", 7312 + "dev": true, 7313 + "license": "Apache-2.0", 7314 + "optional": true, 7315 + "dependencies": { 7316 + "require-addon": "^1.1.0", 7317 + "which-runtime": "^1.2.0" 7318 + } 7319 + }, 6266 7320 "node_modules/fs.realpath": { 6267 7321 "version": "1.0.0", 6268 7322 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 6269 7323 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 6270 7324 "dev": true, 6271 7325 "license": "ISC" 7326 + }, 7327 + "node_modules/fsa-chunk-store": { 7328 + "version": "1.3.0", 7329 + "resolved": "https://registry.npmjs.org/fsa-chunk-store/-/fsa-chunk-store-1.3.0.tgz", 7330 + "integrity": "sha512-0WCfuxqqSB6Tz/g7Ar/nwAxMoigXaIXuvfrnLIEFYIA9uc6w9eNaHuBGzU1X3lyM4cpLKCOTUmKAA/gCiTvzMQ==", 7331 + "dev": true, 7332 + "license": "MIT", 7333 + "dependencies": { 7334 + "filename-reserved-regex": "^3.0.0" 7335 + } 6272 7336 }, 6273 7337 "node_modules/fsevents": { 6274 7338 "version": "2.3.3", ··· 6392 7456 "node": ">= 0.4" 6393 7457 } 6394 7458 }, 7459 + "node_modules/get-stdin": { 7460 + "version": "9.0.0", 7461 + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", 7462 + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", 7463 + "dev": true, 7464 + "license": "MIT", 7465 + "engines": { 7466 + "node": ">=12" 7467 + }, 7468 + "funding": { 7469 + "url": "https://github.com/sponsors/sindresorhus" 7470 + } 7471 + }, 6395 7472 "node_modules/get-stream": { 6396 7473 "version": "6.0.1", 6397 7474 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", ··· 6422 7499 "funding": { 6423 7500 "url": "https://github.com/sponsors/ljharb" 6424 7501 } 7502 + }, 7503 + "node_modules/github-from-package": { 7504 + "version": "0.0.0", 7505 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 7506 + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 7507 + "dev": true, 7508 + "license": "MIT" 6425 7509 }, 6426 7510 "node_modules/glob": { 6427 7511 "version": "10.4.5", ··· 6667 7751 "node": ">= 0.8" 6668 7752 } 6669 7753 }, 7754 + "node_modules/http-parser-js": { 7755 + "version": "0.4.13", 7756 + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", 7757 + "integrity": "sha512-u8u5ZaG0Tr/VvHlucK2ufMuOp4/5bvwgneXle+y228K5rMbJOlVjThONcaAw3ikAy8b2OO9RfEucdMHFz3UWMA==", 7758 + "dev": true, 7759 + "license": "MIT" 7760 + }, 6670 7761 "node_modules/http-proxy-agent": { 6671 7762 "version": "7.0.2", 6672 7763 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", ··· 6730 7821 "node": ">=4" 6731 7822 } 6732 7823 }, 7824 + "node_modules/ieee754": { 7825 + "version": "1.2.1", 7826 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 7827 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 7828 + "dev": true, 7829 + "funding": [ 7830 + { 7831 + "type": "github", 7832 + "url": "https://github.com/sponsors/feross" 7833 + }, 7834 + { 7835 + "type": "patreon", 7836 + "url": "https://www.patreon.com/feross" 7837 + }, 7838 + { 7839 + "type": "consulting", 7840 + "url": "https://feross.org/support" 7841 + } 7842 + ], 7843 + "license": "BSD-3-Clause" 7844 + }, 6733 7845 "node_modules/ignore": { 6734 7846 "version": "5.3.2", 6735 7847 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", ··· 6738 7850 "license": "MIT", 6739 7851 "engines": { 6740 7852 "node": ">= 4" 7853 + } 7854 + }, 7855 + "node_modules/immediate-chunk-store": { 7856 + "version": "2.2.0", 7857 + "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz", 7858 + "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==", 7859 + "dev": true, 7860 + "funding": [ 7861 + { 7862 + "type": "github", 7863 + "url": "https://github.com/sponsors/feross" 7864 + }, 7865 + { 7866 + "type": "patreon", 7867 + "url": "https://www.patreon.com/feross" 7868 + }, 7869 + { 7870 + "type": "consulting", 7871 + "url": "https://feross.org/support" 7872 + } 7873 + ], 7874 + "license": "MIT", 7875 + "dependencies": { 7876 + "queue-microtask": "^1.2.3" 6741 7877 } 6742 7878 }, 6743 7879 "node_modules/import-fresh": { ··· 6813 7949 "version": "2.0.4", 6814 7950 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 6815 7951 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 7952 + "license": "ISC" 7953 + }, 7954 + "node_modules/ini": { 7955 + "version": "1.3.8", 7956 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 7957 + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 7958 + "dev": true, 6816 7959 "license": "ISC" 6817 7960 }, 6818 7961 "node_modules/internal-slot": { ··· 6830 7973 "node": ">= 0.4" 6831 7974 } 6832 7975 }, 7976 + "node_modules/ip": { 7977 + "version": "2.0.1", 7978 + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", 7979 + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", 7980 + "dev": true, 7981 + "license": "MIT" 7982 + }, 7983 + "node_modules/ip-address": { 7984 + "version": "9.0.5", 7985 + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", 7986 + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", 7987 + "dev": true, 7988 + "license": "MIT", 7989 + "dependencies": { 7990 + "jsbn": "1.1.0", 7991 + "sprintf-js": "^1.1.3" 7992 + }, 7993 + "engines": { 7994 + "node": ">= 12" 7995 + } 7996 + }, 7997 + "node_modules/ip-address/node_modules/sprintf-js": { 7998 + "version": "1.1.3", 7999 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 8000 + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", 8001 + "dev": true, 8002 + "license": "BSD-3-Clause" 8003 + }, 8004 + "node_modules/ip-set": { 8005 + "version": "2.2.0", 8006 + "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.2.0.tgz", 8007 + "integrity": "sha512-NmmY3BfY4pejh6GOqNcNWRsBNdR+I7pUVtXRgZlkZdcnLtlG4X6HNtu2FZoCGyvGRzyroP1fJ+SJZBZ65JJl/Q==", 8008 + "dev": true, 8009 + "license": "MIT", 8010 + "dependencies": { 8011 + "ip": "^2.0.1" 8012 + } 8013 + }, 6833 8014 "node_modules/ipaddr.js": { 6834 8015 "version": "1.9.1", 6835 8016 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", ··· 7020 8201 "engines": { 7021 8202 "node": ">=0.10.0" 7022 8203 } 8204 + }, 8205 + "node_modules/is-file": { 8206 + "version": "1.0.0", 8207 + "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", 8208 + "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ==", 8209 + "dev": true, 8210 + "license": "MIT" 7023 8211 }, 7024 8212 "node_modules/is-finalizationregistry": { 7025 8213 "version": "1.1.1", ··· 8129 9317 "url": "https://github.com/chalk/supports-color?sponsor=1" 8130 9318 } 8131 9319 }, 9320 + "node_modules/join-async-iterator": { 9321 + "version": "1.1.1", 9322 + "resolved": "https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz", 9323 + "integrity": "sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ==", 9324 + "dev": true, 9325 + "license": "MIT" 9326 + }, 8132 9327 "node_modules/jose": { 8133 9328 "version": "6.0.11", 8134 9329 "resolved": "https://registry.npmjs.org/jose/-/jose-6.0.11.tgz", ··· 8167 9362 "dependencies": { 8168 9363 "xmlcreate": "^2.0.4" 8169 9364 } 9365 + }, 9366 + "node_modules/jsbn": { 9367 + "version": "1.1.0", 9368 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", 9369 + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", 9370 + "dev": true, 9371 + "license": "MIT" 8170 9372 }, 8171 9373 "node_modules/jsdoc": { 8172 9374 "version": "4.0.4", ··· 8335 9537 "node": ">=4.0" 8336 9538 } 8337 9539 }, 9540 + "node_modules/junk": { 9541 + "version": "4.0.1", 9542 + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", 9543 + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", 9544 + "dev": true, 9545 + "license": "MIT", 9546 + "engines": { 9547 + "node": ">=12.20" 9548 + }, 9549 + "funding": { 9550 + "url": "https://github.com/sponsors/sindresorhus" 9551 + } 9552 + }, 9553 + "node_modules/k-bucket": { 9554 + "version": "5.1.0", 9555 + "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", 9556 + "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", 9557 + "dev": true, 9558 + "license": "MIT", 9559 + "dependencies": { 9560 + "randombytes": "^2.1.0" 9561 + } 9562 + }, 9563 + "node_modules/k-rpc": { 9564 + "version": "5.1.0", 9565 + "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz", 9566 + "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==", 9567 + "dev": true, 9568 + "license": "MIT", 9569 + "dependencies": { 9570 + "k-bucket": "^5.0.0", 9571 + "k-rpc-socket": "^1.7.2", 9572 + "randombytes": "^2.0.5" 9573 + } 9574 + }, 9575 + "node_modules/k-rpc-socket": { 9576 + "version": "1.11.1", 9577 + "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz", 9578 + "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==", 9579 + "dev": true, 9580 + "license": "MIT", 9581 + "dependencies": { 9582 + "bencode": "^2.0.0", 9583 + "chrome-dgram": "^3.0.2", 9584 + "chrome-dns": "^1.0.0", 9585 + "chrome-net": "^3.3.2" 9586 + } 9587 + }, 9588 + "node_modules/k-rpc-socket/node_modules/bencode": { 9589 + "version": "2.0.3", 9590 + "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", 9591 + "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==", 9592 + "dev": true, 9593 + "license": "MIT" 9594 + }, 8338 9595 "node_modules/keyv": { 8339 9596 "version": "4.5.4", 8340 9597 "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", ··· 8362 9619 "dev": true, 8363 9620 "license": "MIT" 8364 9621 }, 9622 + "node_modules/last-one-wins": { 9623 + "version": "1.0.4", 9624 + "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz", 9625 + "integrity": "sha512-t+KLJFkHPQk8lfN6WBOiGkiUXoub+gnb2XTYI2P3aiISL+94xgZ1vgz1SXN/N4hthuOoLXarXfBZPUruyjQtfA==", 9626 + "dev": true, 9627 + "license": "MIT" 9628 + }, 8365 9629 "node_modules/leven": { 8366 9630 "version": "3.1.0", 8367 9631 "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", ··· 8386 9650 "node": ">= 0.8.0" 8387 9651 } 8388 9652 }, 9653 + "node_modules/limiter": { 9654 + "version": "1.1.5", 9655 + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 9656 + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", 9657 + "dev": true 9658 + }, 8389 9659 "node_modules/lines-and-columns": { 8390 9660 "version": "1.2.4", 8391 9661 "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", ··· 8403 9673 "uc.micro": "^2.0.0" 8404 9674 } 8405 9675 }, 9676 + "node_modules/load-ip-set": { 9677 + "version": "3.0.1", 9678 + "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-3.0.1.tgz", 9679 + "integrity": "sha512-ZFZt1g4Exq01SFtKjffqau+L4Qibt+51utymHHiWo8Iu/W7LYSqE7fiZ/iAZ6dIqbmeU6ICSIK02IizSScBkLQ==", 9680 + "dev": true, 9681 + "funding": [ 9682 + { 9683 + "type": "github", 9684 + "url": "https://github.com/sponsors/feross" 9685 + }, 9686 + { 9687 + "type": "patreon", 9688 + "url": "https://www.patreon.com/feross" 9689 + }, 9690 + { 9691 + "type": "consulting", 9692 + "url": "https://feross.org/support" 9693 + } 9694 + ], 9695 + "license": "MIT", 9696 + "dependencies": { 9697 + "cross-fetch-ponyfill": "^1.0.1", 9698 + "ip-set": "^2.1.0", 9699 + "netmask": "^2.0.1", 9700 + "once": "^1.4.0", 9701 + "queue-microtask": "^1.2.3", 9702 + "split": "^1.0.1" 9703 + }, 9704 + "engines": { 9705 + "node": ">=12.20.0" 9706 + } 9707 + }, 8406 9708 "node_modules/locate-path": { 8407 9709 "version": "6.0.0", 8408 9710 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", ··· 8464 9766 "loose-envify": "cli.js" 8465 9767 } 8466 9768 }, 9769 + "node_modules/lru": { 9770 + "version": "3.1.0", 9771 + "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", 9772 + "integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==", 9773 + "dev": true, 9774 + "license": "MIT", 9775 + "dependencies": { 9776 + "inherits": "^2.0.1" 9777 + }, 9778 + "engines": { 9779 + "node": ">= 0.4.0" 9780 + } 9781 + }, 8467 9782 "node_modules/lru-cache": { 8468 9783 "version": "5.1.1", 8469 9784 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", ··· 8474 9789 "yallist": "^3.0.2" 8475 9790 } 8476 9791 }, 9792 + "node_modules/lt_donthave": { 9793 + "version": "2.0.5", 9794 + "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-2.0.5.tgz", 9795 + "integrity": "sha512-DNsR7PIG4c8Tfg9tdx5yPKQ8/Z7leB82iTvemqfadPplooTil9MUvrqjkty/YD6FI5ZG3ZdHDtVd948SNg8Q7Q==", 9796 + "dev": true, 9797 + "funding": [ 9798 + { 9799 + "type": "github", 9800 + "url": "https://github.com/sponsors/feross" 9801 + }, 9802 + { 9803 + "type": "patreon", 9804 + "url": "https://www.patreon.com/feross" 9805 + }, 9806 + { 9807 + "type": "consulting", 9808 + "url": "https://feross.org/support" 9809 + } 9810 + ], 9811 + "license": "MIT", 9812 + "dependencies": { 9813 + "debug": "^4.2.0", 9814 + "unordered-array-remove": "^1.0.2" 9815 + }, 9816 + "engines": { 9817 + "node": ">=12.20.0" 9818 + } 9819 + }, 8477 9820 "node_modules/lz-string": { 8478 9821 "version": "1.5.0", 8479 9822 "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", ··· 8492 9835 "license": "MIT", 8493 9836 "dependencies": { 8494 9837 "@jridgewell/sourcemap-codec": "^1.5.0" 9838 + } 9839 + }, 9840 + "node_modules/magnet-uri": { 9841 + "version": "7.0.7", 9842 + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.7.tgz", 9843 + "integrity": "sha512-z/+dB2NQsXaDuxVBjoPLpZT8ePaacUmoontoFheRBl++nALHYs4qV9MmhTur9e4SaMbkCR/uPX43UMzEOoeyaw==", 9844 + "dev": true, 9845 + "funding": [ 9846 + { 9847 + "type": "github", 9848 + "url": "https://github.com/sponsors/feross" 9849 + }, 9850 + { 9851 + "type": "patreon", 9852 + "url": "https://www.patreon.com/feross" 9853 + }, 9854 + { 9855 + "type": "consulting", 9856 + "url": "https://feross.org/support" 9857 + } 9858 + ], 9859 + "license": "MIT", 9860 + "dependencies": { 9861 + "@thaunknown/thirty-two": "^1.0.5", 9862 + "bep53-range": "^2.0.0", 9863 + "uint8-util": "^2.2.5" 9864 + }, 9865 + "engines": { 9866 + "node": ">=12.20.0" 8495 9867 } 8496 9868 }, 8497 9869 "node_modules/make-dir": { ··· 8868 10240 "license": "MIT", 8869 10241 "engines": { 8870 10242 "node": ">= 0.8" 10243 + } 10244 + }, 10245 + "node_modules/memory-chunk-store": { 10246 + "version": "1.3.5", 10247 + "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz", 10248 + "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==", 10249 + "dev": true, 10250 + "license": "MIT", 10251 + "dependencies": { 10252 + "queue-microtask": "^1.2.3" 8871 10253 } 8872 10254 }, 8873 10255 "node_modules/merge-descriptors": { ··· 9521 10903 "node": ">=8.6" 9522 10904 } 9523 10905 }, 10906 + "node_modules/mime": { 10907 + "version": "3.0.0", 10908 + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 10909 + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 10910 + "dev": true, 10911 + "license": "MIT", 10912 + "bin": { 10913 + "mime": "cli.js" 10914 + }, 10915 + "engines": { 10916 + "node": ">=10.0.0" 10917 + } 10918 + }, 9524 10919 "node_modules/mime-db": { 9525 10920 "version": "1.54.0", 9526 10921 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", ··· 9552 10947 "node": ">=6" 9553 10948 } 9554 10949 }, 10950 + "node_modules/mimic-response": { 10951 + "version": "3.1.0", 10952 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 10953 + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 10954 + "dev": true, 10955 + "license": "MIT", 10956 + "engines": { 10957 + "node": ">=10" 10958 + }, 10959 + "funding": { 10960 + "url": "https://github.com/sponsors/sindresorhus" 10961 + } 10962 + }, 9555 10963 "node_modules/min-indent": { 9556 10964 "version": "1.0.1", 9557 10965 "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", ··· 9578 10986 "url": "https://github.com/sponsors/isaacs" 9579 10987 } 9580 10988 }, 10989 + "node_modules/minimist": { 10990 + "version": "1.2.8", 10991 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 10992 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 10993 + "dev": true, 10994 + "license": "MIT", 10995 + "funding": { 10996 + "url": "https://github.com/sponsors/ljharb" 10997 + } 10998 + }, 9581 10999 "node_modules/minipass": { 9582 11000 "version": "7.1.2", 9583 11001 "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", ··· 9601 11019 "node": ">=10" 9602 11020 } 9603 11021 }, 11022 + "node_modules/mkdirp-classic": { 11023 + "version": "0.5.3", 11024 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 11025 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 11026 + "dev": true, 11027 + "license": "MIT" 11028 + }, 9604 11029 "node_modules/ms": { 9605 11030 "version": "2.1.3", 9606 11031 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", ··· 9625 11050 "node": "^18 || >=20" 9626 11051 } 9627 11052 }, 11053 + "node_modules/napi-build-utils": { 11054 + "version": "2.0.0", 11055 + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", 11056 + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", 11057 + "dev": true, 11058 + "license": "MIT" 11059 + }, 11060 + "node_modules/napi-macros": { 11061 + "version": "2.2.2", 11062 + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", 11063 + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", 11064 + "dev": true, 11065 + "license": "MIT", 11066 + "optional": true 11067 + }, 9628 11068 "node_modules/napi-postinstall": { 9629 11069 "version": "0.2.4", 9630 11070 "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", ··· 9657 11097 "node": ">= 0.6" 9658 11098 } 9659 11099 }, 11100 + "node_modules/netmask": { 11101 + "version": "2.0.2", 11102 + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", 11103 + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", 11104 + "dev": true, 11105 + "license": "MIT", 11106 + "engines": { 11107 + "node": ">= 0.4.0" 11108 + } 11109 + }, 11110 + "node_modules/node-abi": { 11111 + "version": "3.75.0", 11112 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", 11113 + "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", 11114 + "dev": true, 11115 + "license": "MIT", 11116 + "dependencies": { 11117 + "semver": "^7.3.5" 11118 + }, 11119 + "engines": { 11120 + "node": ">=10" 11121 + } 11122 + }, 11123 + "node_modules/node-abi/node_modules/semver": { 11124 + "version": "7.7.2", 11125 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", 11126 + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", 11127 + "dev": true, 11128 + "license": "ISC", 11129 + "bin": { 11130 + "semver": "bin/semver.js" 11131 + }, 11132 + "engines": { 11133 + "node": ">=10" 11134 + } 11135 + }, 11136 + "node_modules/node-datachannel": { 11137 + "version": "0.12.0", 11138 + "resolved": "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.12.0.tgz", 11139 + "integrity": "sha512-pZ9FsVZpHdUKqyWynuCc9IBLkZPJMpDzpNk4YNPCizbIXHYifpYeWqSF35REHGIWi9JMCf11QzapsyQGo/Y4Ig==", 11140 + "dev": true, 11141 + "hasInstallScript": true, 11142 + "license": "MPL 2.0", 11143 + "dependencies": { 11144 + "node-domexception": "^2.0.1", 11145 + "prebuild-install": "^7.0.1" 11146 + }, 11147 + "engines": { 11148 + "node": ">=16.0.0" 11149 + } 11150 + }, 11151 + "node_modules/node-datachannel/node_modules/node-domexception": { 11152 + "version": "2.0.2", 11153 + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.2.tgz", 11154 + "integrity": "sha512-Qf9vHK9c5MGgUXj8SnucCIS4oEPuUstjRaMplLGeZpbWMfNV1rvEcXuwoXfN51dUfD1b4muPHPQtCx/5Dj/QAA==", 11155 + "deprecated": "Use your platform's native DOMException instead", 11156 + "dev": true, 11157 + "funding": [ 11158 + { 11159 + "type": "github", 11160 + "url": "https://github.com/sponsors/jimmywarting" 11161 + }, 11162 + { 11163 + "type": "github", 11164 + "url": "https://paypal.me/jimmywarting" 11165 + } 11166 + ], 11167 + "license": "MIT", 11168 + "engines": { 11169 + "node": ">=16" 11170 + } 11171 + }, 11172 + "node_modules/node-domexception": { 11173 + "version": "1.0.0", 11174 + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 11175 + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 11176 + "deprecated": "Use your platform's native DOMException instead", 11177 + "dev": true, 11178 + "funding": [ 11179 + { 11180 + "type": "github", 11181 + "url": "https://github.com/sponsors/jimmywarting" 11182 + }, 11183 + { 11184 + "type": "github", 11185 + "url": "https://paypal.me/jimmywarting" 11186 + } 11187 + ], 11188 + "license": "MIT", 11189 + "engines": { 11190 + "node": ">=10.5.0" 11191 + } 11192 + }, 11193 + "node_modules/node-fetch": { 11194 + "version": "3.3.2", 11195 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", 11196 + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", 11197 + "dev": true, 11198 + "license": "MIT", 11199 + "dependencies": { 11200 + "data-uri-to-buffer": "^4.0.0", 11201 + "fetch-blob": "^3.1.4", 11202 + "formdata-polyfill": "^4.0.10" 11203 + }, 11204 + "engines": { 11205 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 11206 + }, 11207 + "funding": { 11208 + "type": "opencollective", 11209 + "url": "https://opencollective.com/node-fetch" 11210 + } 11211 + }, 11212 + "node_modules/node-gyp-build": { 11213 + "version": "4.8.4", 11214 + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", 11215 + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", 11216 + "license": "MIT", 11217 + "optional": true, 11218 + "bin": { 11219 + "node-gyp-build": "bin.js", 11220 + "node-gyp-build-optional": "optional.js", 11221 + "node-gyp-build-test": "build-test.js" 11222 + } 11223 + }, 9660 11224 "node_modules/node-html-parser": { 9661 11225 "version": "6.1.13", 9662 11226 "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", ··· 10030 11594 "dev": true, 10031 11595 "license": "MIT" 10032 11596 }, 11597 + "node_modules/parse-torrent": { 11598 + "version": "11.0.18", 11599 + "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-11.0.18.tgz", 11600 + "integrity": "sha512-C1igbmTrQQuKlspAfP1wcLaOPlvtu5qi4pMdPoCCfepHmxDOk8iArJ2J1yblLx11UefZJUaKEPSxIwMdG11SuA==", 11601 + "dev": true, 11602 + "funding": [ 11603 + { 11604 + "type": "github", 11605 + "url": "https://github.com/sponsors/feross" 11606 + }, 11607 + { 11608 + "type": "patreon", 11609 + "url": "https://www.patreon.com/feross" 11610 + }, 11611 + { 11612 + "type": "consulting", 11613 + "url": "https://feross.org/support" 11614 + } 11615 + ], 11616 + "license": "MIT", 11617 + "dependencies": { 11618 + "bencode": "^4.0.0", 11619 + "cross-fetch-ponyfill": "^1.0.3", 11620 + "get-stdin": "^9.0.0", 11621 + "magnet-uri": "^7.0.7", 11622 + "queue-microtask": "^1.2.3", 11623 + "uint8-util": "^2.2.5" 11624 + }, 11625 + "bin": { 11626 + "parse-torrent": "bin/cmd.js" 11627 + }, 11628 + "engines": { 11629 + "node": ">=12.20.0" 11630 + } 11631 + }, 10033 11632 "node_modules/parse5": { 10034 11633 "version": "7.3.0", 10035 11634 "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", ··· 10154 11753 "funding": { 10155 11754 "url": "https://github.com/sponsors/jonschlinkert" 10156 11755 } 11756 + }, 11757 + "node_modules/piece-length": { 11758 + "version": "2.0.1", 11759 + "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz", 11760 + "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug==", 11761 + "dev": true, 11762 + "license": "MIT" 10157 11763 }, 10158 11764 "node_modules/pirates": { 10159 11765 "version": "4.0.7", ··· 10302 11908 "url": "https://opencollective.com/preact" 10303 11909 } 10304 11910 }, 11911 + "node_modules/prebuild-install": { 11912 + "version": "7.1.3", 11913 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", 11914 + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", 11915 + "dev": true, 11916 + "license": "MIT", 11917 + "dependencies": { 11918 + "detect-libc": "^2.0.0", 11919 + "expand-template": "^2.0.3", 11920 + "github-from-package": "0.0.0", 11921 + "minimist": "^1.2.3", 11922 + "mkdirp-classic": "^0.5.3", 11923 + "napi-build-utils": "^2.0.0", 11924 + "node-abi": "^3.3.0", 11925 + "pump": "^3.0.0", 11926 + "rc": "^1.2.7", 11927 + "simple-get": "^4.0.0", 11928 + "tar-fs": "^2.0.0", 11929 + "tunnel-agent": "^0.6.0" 11930 + }, 11931 + "bin": { 11932 + "prebuild-install": "bin.js" 11933 + }, 11934 + "engines": { 11935 + "node": ">=10" 11936 + } 11937 + }, 10305 11938 "node_modules/prelude-ls": { 10306 11939 "version": "1.2.1", 10307 11940 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", ··· 10391 12024 "node": ">= 0.10" 10392 12025 } 10393 12026 }, 12027 + "node_modules/pump": { 12028 + "version": "3.0.3", 12029 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", 12030 + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", 12031 + "dev": true, 12032 + "license": "MIT", 12033 + "dependencies": { 12034 + "end-of-stream": "^1.1.0", 12035 + "once": "^1.3.1" 12036 + } 12037 + }, 10394 12038 "node_modules/punycode": { 10395 12039 "version": "2.3.1", 10396 12040 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", ··· 10464 12108 ], 10465 12109 "license": "MIT" 10466 12110 }, 12111 + "node_modules/queue-tick": { 12112 + "version": "1.0.1", 12113 + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", 12114 + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", 12115 + "dev": true, 12116 + "license": "MIT" 12117 + }, 10467 12118 "node_modules/randexp": { 10468 12119 "version": "0.5.3", 10469 12120 "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", ··· 10478 12129 "node": ">=4" 10479 12130 } 10480 12131 }, 12132 + "node_modules/random-access-file": { 12133 + "version": "4.1.2", 12134 + "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-4.1.2.tgz", 12135 + "integrity": "sha512-GQM6R78DceZDcQod8KxlDFwXIiUvlvuy1EOzxTDsjuDjW5NlnlZi0MOk6iI4itAj/2vcvdqcEExYbVpC/dJcEw==", 12136 + "dev": true, 12137 + "license": "MIT", 12138 + "dependencies": { 12139 + "bare-fs": "^4.0.1", 12140 + "bare-path": "^3.0.0", 12141 + "random-access-storage": "^3.0.0" 12142 + }, 12143 + "optionalDependencies": { 12144 + "fs-native-extensions": "^1.3.1" 12145 + } 12146 + }, 12147 + "node_modules/random-access-storage": { 12148 + "version": "3.0.2", 12149 + "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-3.0.2.tgz", 12150 + "integrity": "sha512-Es9maUyWdJXWKckKy9s1+vT+DEgAt+PBb9lxPaake/0EDUsHehloKGv9v1zimS2V3gpFAcQXubvc1Rgci2sDPQ==", 12151 + "dev": true, 12152 + "license": "MIT", 12153 + "dependencies": { 12154 + "bare-events": "^2.2.0", 12155 + "queue-tick": "^1.0.0" 12156 + } 12157 + }, 12158 + "node_modules/random-iterate": { 12159 + "version": "1.0.1", 12160 + "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", 12161 + "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==", 12162 + "dev": true, 12163 + "license": "MIT" 12164 + }, 12165 + "node_modules/randombytes": { 12166 + "version": "2.1.0", 12167 + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 12168 + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 12169 + "dev": true, 12170 + "license": "MIT", 12171 + "dependencies": { 12172 + "safe-buffer": "^5.1.0" 12173 + } 12174 + }, 10481 12175 "node_modules/range-parser": { 10482 12176 "version": "1.2.1", 10483 12177 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", ··· 10502 12196 "node": ">= 0.8" 10503 12197 } 10504 12198 }, 12199 + "node_modules/rc": { 12200 + "version": "1.2.8", 12201 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 12202 + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 12203 + "dev": true, 12204 + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", 12205 + "dependencies": { 12206 + "deep-extend": "^0.6.0", 12207 + "ini": "~1.3.0", 12208 + "minimist": "^1.2.0", 12209 + "strip-json-comments": "~2.0.1" 12210 + }, 12211 + "bin": { 12212 + "rc": "cli.js" 12213 + } 12214 + }, 12215 + "node_modules/rc/node_modules/strip-json-comments": { 12216 + "version": "2.0.1", 12217 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 12218 + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 12219 + "dev": true, 12220 + "license": "MIT", 12221 + "engines": { 12222 + "node": ">=0.10.0" 12223 + } 12224 + }, 12225 + "node_modules/rc4": { 12226 + "version": "0.1.5", 12227 + "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz", 12228 + "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==", 12229 + "dev": true, 12230 + "license": "MIT", 12231 + "engines": { 12232 + "node": ">=0.10.0" 12233 + } 12234 + }, 10505 12235 "node_modules/react-is": { 10506 12236 "version": "18.3.1", 10507 12237 "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", ··· 10509 12239 "dev": true, 10510 12240 "license": "MIT" 10511 12241 }, 12242 + "node_modules/readable-stream": { 12243 + "version": "3.6.2", 12244 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 12245 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 12246 + "dev": true, 12247 + "license": "MIT", 12248 + "dependencies": { 12249 + "inherits": "^2.0.3", 12250 + "string_decoder": "^1.1.1", 12251 + "util-deprecate": "^1.0.1" 12252 + }, 12253 + "engines": { 12254 + "node": ">= 6" 12255 + } 12256 + }, 10512 12257 "node_modules/readdirp": { 10513 12258 "version": "4.1.2", 10514 12259 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", ··· 10521 12266 "funding": { 10522 12267 "type": "individual", 10523 12268 "url": "https://paulmillr.com/funding/" 12269 + } 12270 + }, 12271 + "node_modules/record-cache": { 12272 + "version": "1.2.0", 12273 + "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz", 12274 + "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==", 12275 + "dev": true, 12276 + "license": "MIT", 12277 + "dependencies": { 12278 + "b4a": "^1.3.1" 10524 12279 } 10525 12280 }, 10526 12281 "node_modules/redent": { ··· 10581 12336 "url": "https://github.com/sponsors/ljharb" 10582 12337 } 10583 12338 }, 12339 + "node_modules/require-addon": { 12340 + "version": "1.1.0", 12341 + "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", 12342 + "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", 12343 + "dev": true, 12344 + "license": "Apache-2.0", 12345 + "optional": true, 12346 + "dependencies": { 12347 + "bare-addon-resolve": "^1.3.0", 12348 + "bare-url": "^2.1.0" 12349 + }, 12350 + "engines": { 12351 + "bare": ">=1.10.0" 12352 + } 12353 + }, 10584 12354 "node_modules/require-directory": { 10585 12355 "version": "2.1.1", 10586 12356 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", ··· 10777 12547 "queue-microtask": "^1.2.2" 10778 12548 } 10779 12549 }, 12550 + "node_modules/run-parallel-limit": { 12551 + "version": "1.1.0", 12552 + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", 12553 + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", 12554 + "dev": true, 12555 + "funding": [ 12556 + { 12557 + "type": "github", 12558 + "url": "https://github.com/sponsors/feross" 12559 + }, 12560 + { 12561 + "type": "patreon", 12562 + "url": "https://www.patreon.com/feross" 12563 + }, 12564 + { 12565 + "type": "consulting", 12566 + "url": "https://feross.org/support" 12567 + } 12568 + ], 12569 + "license": "MIT", 12570 + "dependencies": { 12571 + "queue-microtask": "^1.2.2" 12572 + } 12573 + }, 12574 + "node_modules/run-series": { 12575 + "version": "1.1.9", 12576 + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", 12577 + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", 12578 + "dev": true, 12579 + "funding": [ 12580 + { 12581 + "type": "github", 12582 + "url": "https://github.com/sponsors/feross" 12583 + }, 12584 + { 12585 + "type": "patreon", 12586 + "url": "https://www.patreon.com/feross" 12587 + }, 12588 + { 12589 + "type": "consulting", 12590 + "url": "https://feross.org/support" 12591 + } 12592 + ], 12593 + "license": "MIT" 12594 + }, 10780 12595 "node_modules/safe-array-concat": { 10781 12596 "version": "1.1.3", 10782 12597 "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", ··· 10857 12672 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 10858 12673 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 10859 12674 "license": "MIT" 12675 + }, 12676 + "node_modules/sax": { 12677 + "version": "1.4.1", 12678 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", 12679 + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", 12680 + "dev": true, 12681 + "license": "ISC" 10860 12682 }, 10861 12683 "node_modules/saxes": { 10862 12684 "version": "6.0.0", ··· 11091 12913 "kolorist": "^1.6.0" 11092 12914 } 11093 12915 }, 12916 + "node_modules/simple-concat": { 12917 + "version": "1.0.1", 12918 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 12919 + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 12920 + "dev": true, 12921 + "funding": [ 12922 + { 12923 + "type": "github", 12924 + "url": "https://github.com/sponsors/feross" 12925 + }, 12926 + { 12927 + "type": "patreon", 12928 + "url": "https://www.patreon.com/feross" 12929 + }, 12930 + { 12931 + "type": "consulting", 12932 + "url": "https://feross.org/support" 12933 + } 12934 + ], 12935 + "license": "MIT" 12936 + }, 12937 + "node_modules/simple-get": { 12938 + "version": "4.0.1", 12939 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 12940 + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 12941 + "dev": true, 12942 + "funding": [ 12943 + { 12944 + "type": "github", 12945 + "url": "https://github.com/sponsors/feross" 12946 + }, 12947 + { 12948 + "type": "patreon", 12949 + "url": "https://www.patreon.com/feross" 12950 + }, 12951 + { 12952 + "type": "consulting", 12953 + "url": "https://feross.org/support" 12954 + } 12955 + ], 12956 + "license": "MIT", 12957 + "dependencies": { 12958 + "decompress-response": "^6.0.0", 12959 + "once": "^1.3.1", 12960 + "simple-concat": "^1.0.0" 12961 + } 12962 + }, 11094 12963 "node_modules/slash": { 11095 12964 "version": "3.0.0", 11096 12965 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", ··· 11101 12970 "node": ">=8" 11102 12971 } 11103 12972 }, 12973 + "node_modules/smart-buffer": { 12974 + "version": "4.2.0", 12975 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 12976 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 12977 + "dev": true, 12978 + "license": "MIT", 12979 + "engines": { 12980 + "node": ">= 6.0.0", 12981 + "npm": ">= 3.0.0" 12982 + } 12983 + }, 12984 + "node_modules/socks": { 12985 + "version": "2.8.5", 12986 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", 12987 + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", 12988 + "dev": true, 12989 + "license": "MIT", 12990 + "dependencies": { 12991 + "ip-address": "^9.0.5", 12992 + "smart-buffer": "^4.2.0" 12993 + }, 12994 + "engines": { 12995 + "node": ">= 10.0.0", 12996 + "npm": ">= 3.0.0" 12997 + } 12998 + }, 11104 12999 "node_modules/source-map": { 11105 13000 "version": "0.6.1", 11106 13001 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", ··· 11157 13052 "dev": true, 11158 13053 "license": "CC0-1.0" 11159 13054 }, 13055 + "node_modules/speed-limiter": { 13056 + "version": "1.0.2", 13057 + "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz", 13058 + "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==", 13059 + "dev": true, 13060 + "license": "MIT", 13061 + "dependencies": { 13062 + "limiter": "^1.1.5", 13063 + "streamx": "^2.10.3" 13064 + } 13065 + }, 13066 + "node_modules/split": { 13067 + "version": "1.0.1", 13068 + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 13069 + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 13070 + "dev": true, 13071 + "license": "MIT", 13072 + "dependencies": { 13073 + "through": "2" 13074 + }, 13075 + "engines": { 13076 + "node": "*" 13077 + } 13078 + }, 11160 13079 "node_modules/sprintf-js": { 11161 13080 "version": "1.0.3", 11162 13081 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", ··· 11218 13137 }, 11219 13138 "engines": { 11220 13139 "node": ">= 0.4" 13140 + } 13141 + }, 13142 + "node_modules/streamx": { 13143 + "version": "2.22.0", 13144 + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", 13145 + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", 13146 + "dev": true, 13147 + "license": "MIT", 13148 + "dependencies": { 13149 + "fast-fifo": "^1.3.2", 13150 + "text-decoder": "^1.1.0" 13151 + }, 13152 + "optionalDependencies": { 13153 + "bare-events": "^2.2.0" 13154 + } 13155 + }, 13156 + "node_modules/string_decoder": { 13157 + "version": "1.3.0", 13158 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 13159 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 13160 + "dev": true, 13161 + "license": "MIT", 13162 + "dependencies": { 13163 + "safe-buffer": "~5.2.0" 11221 13164 } 11222 13165 }, 11223 13166 "node_modules/string-length": { ··· 11419 13362 "url": "https://github.com/sponsors/ljharb" 11420 13363 } 11421 13364 }, 13365 + "node_modules/string2compact": { 13366 + "version": "2.0.1", 13367 + "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-2.0.1.tgz", 13368 + "integrity": "sha512-Bm/T8lHMTRXw+u83LE+OW7fXmC/wM+Mbccfdo533ajSBNxddDHlRrvxE49NdciGHgXkUQM5WYskJ7uTkbBUI0A==", 13369 + "dev": true, 13370 + "license": "MIT", 13371 + "dependencies": { 13372 + "addr-to-ip-port": "^2.0.0", 13373 + "ipaddr.js": "^2.0.0" 13374 + }, 13375 + "engines": { 13376 + "node": ">=12.20.0" 13377 + } 13378 + }, 13379 + "node_modules/string2compact/node_modules/ipaddr.js": { 13380 + "version": "2.2.0", 13381 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", 13382 + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", 13383 + "dev": true, 13384 + "license": "MIT", 13385 + "engines": { 13386 + "node": ">= 10" 13387 + } 13388 + }, 11422 13389 "node_modules/strip-ansi": { 11423 13390 "version": "7.1.0", 11424 13391 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", ··· 11561 13528 "dev": true, 11562 13529 "license": "BSD-2-Clause" 11563 13530 }, 13531 + "node_modules/tar-fs": { 13532 + "version": "2.1.3", 13533 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", 13534 + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", 13535 + "dev": true, 13536 + "license": "MIT", 13537 + "dependencies": { 13538 + "chownr": "^1.1.1", 13539 + "mkdirp-classic": "^0.5.2", 13540 + "pump": "^3.0.0", 13541 + "tar-stream": "^2.1.4" 13542 + } 13543 + }, 13544 + "node_modules/tar-stream": { 13545 + "version": "2.2.0", 13546 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 13547 + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 13548 + "dev": true, 13549 + "license": "MIT", 13550 + "dependencies": { 13551 + "bl": "^4.0.3", 13552 + "end-of-stream": "^1.4.1", 13553 + "fs-constants": "^1.0.0", 13554 + "inherits": "^2.0.3", 13555 + "readable-stream": "^3.1.1" 13556 + }, 13557 + "engines": { 13558 + "node": ">=6" 13559 + } 13560 + }, 11564 13561 "node_modules/test-exclude": { 11565 13562 "version": "6.0.0", 11566 13563 "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", ··· 11621 13618 "engines": { 11622 13619 "node": "*" 11623 13620 } 13621 + }, 13622 + "node_modules/text-decoder": { 13623 + "version": "1.2.3", 13624 + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", 13625 + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", 13626 + "dev": true, 13627 + "license": "Apache-2.0", 13628 + "dependencies": { 13629 + "b4a": "^1.6.4" 13630 + } 13631 + }, 13632 + "node_modules/through": { 13633 + "version": "2.3.8", 13634 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 13635 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 13636 + "dev": true, 13637 + "license": "MIT" 13638 + }, 13639 + "node_modules/throughput": { 13640 + "version": "1.0.1", 13641 + "resolved": "https://registry.npmjs.org/throughput/-/throughput-1.0.1.tgz", 13642 + "integrity": "sha512-4Mvv5P4xyVz6RM07wS3tGyZ/kPAiKtLeqznq3hK4pxDiTUSyQ5xeFlBiWxflCWexvSnxo2aAfedzKajJqihz4Q==", 13643 + "dev": true, 13644 + "license": "MIT" 13645 + }, 13646 + "node_modules/thunky": { 13647 + "version": "1.1.0", 13648 + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", 13649 + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", 13650 + "dev": true, 13651 + "license": "MIT" 11624 13652 }, 11625 13653 "node_modules/tidy-jsdoc-fork": { 11626 13654 "version": "1.4.1", ··· 11741 13769 "dev": true, 11742 13770 "license": "MIT" 11743 13771 }, 13772 + "node_modules/timeout-refresh": { 13773 + "version": "1.0.3", 13774 + "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz", 13775 + "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==", 13776 + "dev": true, 13777 + "license": "MIT", 13778 + "optional": true 13779 + }, 11744 13780 "node_modules/tiny-invariant": { 11745 13781 "version": "1.3.3", 11746 13782 "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", ··· 11842 13878 "node": ">=0.6" 11843 13879 } 11844 13880 }, 13881 + "node_modules/torrent-discovery": { 13882 + "version": "11.0.17", 13883 + "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-11.0.17.tgz", 13884 + "integrity": "sha512-lOvw61g93GYrafHuHx8HkHCsX0nB7AoDUTVoQsLDlpjc2QPwld1HMALz9q6Q3BX9m87X8DI9+TrCGnT7QgOR3A==", 13885 + "dev": true, 13886 + "funding": [ 13887 + { 13888 + "type": "github", 13889 + "url": "https://github.com/sponsors/feross" 13890 + }, 13891 + { 13892 + "type": "patreon", 13893 + "url": "https://www.patreon.com/feross" 13894 + }, 13895 + { 13896 + "type": "consulting", 13897 + "url": "https://feross.org/support" 13898 + } 13899 + ], 13900 + "license": "MIT", 13901 + "dependencies": { 13902 + "bittorrent-dht": "^11.0.10", 13903 + "bittorrent-lsd": "^2.0.0", 13904 + "bittorrent-tracker": "^11.2.1", 13905 + "debug": "^4.4.1", 13906 + "run-parallel": "^1.2.0" 13907 + }, 13908 + "engines": { 13909 + "node": ">=16.0.0" 13910 + } 13911 + }, 13912 + "node_modules/torrent-piece": { 13913 + "version": "3.0.1", 13914 + "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-3.0.1.tgz", 13915 + "integrity": "sha512-EvCqfOkNm3PXqgaGPVVmp0JlGC8fDpH+8Yt5uUiF4oCrAqy3htyUFxK1DJpneWfg1fFdeTKsstxLxQUrHpmocA==", 13916 + "dev": true, 13917 + "funding": [ 13918 + { 13919 + "type": "github", 13920 + "url": "https://github.com/sponsors/feross" 13921 + }, 13922 + { 13923 + "type": "patreon", 13924 + "url": "https://www.patreon.com/feross" 13925 + }, 13926 + { 13927 + "type": "consulting", 13928 + "url": "https://feross.org/support" 13929 + } 13930 + ], 13931 + "license": "MIT", 13932 + "dependencies": { 13933 + "uint8-util": "^2.1.9" 13934 + }, 13935 + "engines": { 13936 + "node": ">=12.20.0" 13937 + } 13938 + }, 11845 13939 "node_modules/tough-cookie": { 11846 13940 "version": "5.1.2", 11847 13941 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", ··· 11968 14062 "license": "0BSD", 11969 14063 "optional": true 11970 14064 }, 14065 + "node_modules/tunnel-agent": { 14066 + "version": "0.6.0", 14067 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 14068 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 14069 + "dev": true, 14070 + "license": "Apache-2.0", 14071 + "dependencies": { 14072 + "safe-buffer": "^5.0.1" 14073 + }, 14074 + "engines": { 14075 + "node": "*" 14076 + } 14077 + }, 11971 14078 "node_modules/type-check": { 11972 14079 "version": "0.4.0", 11973 14080 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", ··· 12129 14236 "dev": true, 12130 14237 "license": "MIT" 12131 14238 }, 14239 + "node_modules/uint8-util": { 14240 + "version": "2.2.5", 14241 + "resolved": "https://registry.npmjs.org/uint8-util/-/uint8-util-2.2.5.tgz", 14242 + "integrity": "sha512-/QxVQD7CttWpVUKVPz9znO+3Dd4BdTSnFQ7pv/4drVhC9m4BaL2LFHTkJn6EsYoxT79VDq/2Gg8L0H22PrzyMw==", 14243 + "dev": true, 14244 + "license": "MIT", 14245 + "dependencies": { 14246 + "base64-arraybuffer": "^1.0.2" 14247 + } 14248 + }, 12132 14249 "node_modules/unbox-primitive": { 12133 14250 "version": "1.1.0", 12134 14251 "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", ··· 12234 14351 "url": "https://opencollective.com/unified" 12235 14352 } 12236 14353 }, 14354 + "node_modules/unordered-array-remove": { 14355 + "version": "1.0.2", 14356 + "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", 14357 + "integrity": "sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw==", 14358 + "dev": true, 14359 + "license": "MIT" 14360 + }, 14361 + "node_modules/unordered-set": { 14362 + "version": "2.0.1", 14363 + "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", 14364 + "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", 14365 + "dev": true, 14366 + "license": "MIT", 14367 + "optional": true 14368 + }, 12237 14369 "node_modules/unpipe": { 12238 14370 "version": "1.0.0", 12239 14371 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", ··· 12319 14451 "punycode": "^2.1.0" 12320 14452 } 12321 14453 }, 14454 + "node_modules/ut_metadata": { 14455 + "version": "4.0.3", 14456 + "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-4.0.3.tgz", 14457 + "integrity": "sha512-2tovup0VDYpT8t8+EhhhKBmbgIyiYyJQZ+Hf+/61+SvjuRS2MEeA5CiSARP4q+9/83Wu09OsGrUre/Zv6OI5NA==", 14458 + "dev": true, 14459 + "funding": [ 14460 + { 14461 + "type": "github", 14462 + "url": "https://github.com/sponsors/feross" 14463 + }, 14464 + { 14465 + "type": "patreon", 14466 + "url": "https://www.patreon.com/feross" 14467 + }, 14468 + { 14469 + "type": "consulting", 14470 + "url": "https://feross.org/support" 14471 + } 14472 + ], 14473 + "license": "MIT", 14474 + "dependencies": { 14475 + "bencode": "^4.0.0", 14476 + "bitfield": "^4.0.0", 14477 + "debug": "^4.2.0", 14478 + "uint8-util": "^2.1.3" 14479 + }, 14480 + "engines": { 14481 + "node": ">=12.20.0" 14482 + } 14483 + }, 14484 + "node_modules/ut_pex": { 14485 + "version": "4.0.4", 14486 + "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-4.0.4.tgz", 14487 + "integrity": "sha512-isVTbp2TKGoMOu+4Zh/i6ijpYr0VG83xjRPgCXaUjKzgXXndjCMWg32/9kZjubD+kxEXcmXMkoS8IttS9FZE8g==", 14488 + "dev": true, 14489 + "funding": [ 14490 + { 14491 + "type": "github", 14492 + "url": "https://github.com/sponsors/feross" 14493 + }, 14494 + { 14495 + "type": "patreon", 14496 + "url": "https://www.patreon.com/feross" 14497 + }, 14498 + { 14499 + "type": "consulting", 14500 + "url": "https://feross.org/support" 14501 + } 14502 + ], 14503 + "license": "MIT", 14504 + "dependencies": { 14505 + "bencode": "^4.0.0", 14506 + "compact2string": "^1.4.1", 14507 + "string2compact": "^2.0.1" 14508 + }, 14509 + "engines": { 14510 + "node": ">=12.20.0" 14511 + } 14512 + }, 14513 + "node_modules/utf-8-validate": { 14514 + "version": "6.0.5", 14515 + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.5.tgz", 14516 + "integrity": "sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==", 14517 + "hasInstallScript": true, 14518 + "license": "MIT", 14519 + "optional": true, 14520 + "dependencies": { 14521 + "node-gyp-build": "^4.3.0" 14522 + }, 14523 + "engines": { 14524 + "node": ">=6.14.2" 14525 + } 14526 + }, 12322 14527 "node_modules/util": { 12323 14528 "version": "0.10.4", 12324 14529 "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", ··· 12329 14534 "inherits": "2.0.3" 12330 14535 } 12331 14536 }, 14537 + "node_modules/util-deprecate": { 14538 + "version": "1.0.2", 14539 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 14540 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 14541 + "dev": true, 14542 + "license": "MIT" 14543 + }, 12332 14544 "node_modules/util/node_modules/inherits": { 12333 14545 "version": "2.0.3", 12334 14546 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 12335 14547 "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 12336 14548 "dev": true, 12337 14549 "license": "ISC" 14550 + }, 14551 + "node_modules/utp-native": { 14552 + "version": "2.5.3", 14553 + "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz", 14554 + "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==", 14555 + "dev": true, 14556 + "hasInstallScript": true, 14557 + "license": "MIT", 14558 + "optional": true, 14559 + "dependencies": { 14560 + "napi-macros": "^2.0.0", 14561 + "node-gyp-build": "^4.2.0", 14562 + "readable-stream": "^3.0.2", 14563 + "timeout-refresh": "^1.0.0", 14564 + "unordered-set": "^2.0.1" 14565 + }, 14566 + "bin": { 14567 + "ucat": "ucat.js" 14568 + }, 14569 + "engines": { 14570 + "node": ">=8.12" 14571 + } 12338 14572 }, 12339 14573 "node_modules/v8-to-istanbul": { 12340 14574 "version": "9.3.0", ··· 12626 14860 "makeerror": "1.0.12" 12627 14861 } 12628 14862 }, 14863 + "node_modules/web-streams-polyfill": { 14864 + "version": "3.3.3", 14865 + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", 14866 + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", 14867 + "dev": true, 14868 + "license": "MIT", 14869 + "engines": { 14870 + "node": ">= 8" 14871 + } 14872 + }, 12629 14873 "node_modules/webidl-conversions": { 12630 14874 "version": "7.0.0", 12631 14875 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", ··· 12636 14880 "node": ">=12" 12637 14881 } 12638 14882 }, 14883 + "node_modules/webrtc-polyfill": { 14884 + "version": "1.1.10", 14885 + "resolved": "https://registry.npmjs.org/webrtc-polyfill/-/webrtc-polyfill-1.1.10.tgz", 14886 + "integrity": "sha512-sOn0bj3/noUdzQX7rvk0jFbBurqWDGGo2ipl+WfgoOe/x3cxbGLk/ZUY+WHCISSlLaIeBumi1X3wxQZnUESExQ==", 14887 + "dev": true, 14888 + "license": "MIT", 14889 + "dependencies": { 14890 + "node-datachannel": "^v0.12.0", 14891 + "node-domexception": "^1.0.0" 14892 + }, 14893 + "engines": { 14894 + "node": ">=16.0.0" 14895 + } 14896 + }, 14897 + "node_modules/webtorrent": { 14898 + "version": "2.6.8", 14899 + "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-2.6.8.tgz", 14900 + "integrity": "sha512-ZflZwJOmLPa7v5VXCJUV5FW/5CvOxlbRbfgXaHNEkQvBwt0aP7djXLo1e76LyqR+e+/CL6nG9ff8gySjJ4UqnA==", 14901 + "dev": true, 14902 + "funding": [ 14903 + { 14904 + "type": "github", 14905 + "url": "https://github.com/sponsors/feross" 14906 + }, 14907 + { 14908 + "type": "patreon", 14909 + "url": "https://www.patreon.com/feross" 14910 + }, 14911 + { 14912 + "type": "consulting", 14913 + "url": "https://feross.org/support" 14914 + } 14915 + ], 14916 + "license": "MIT", 14917 + "dependencies": { 14918 + "@silentbot1/nat-api": "^0.4.8", 14919 + "@thaunknown/simple-peer": "^10.0.11", 14920 + "@webtorrent/http-node": "^1.3.0", 14921 + "addr-to-ip-port": "^2.0.0", 14922 + "bitfield": "^4.2.0", 14923 + "bittorrent-dht": "^11.0.10", 14924 + "bittorrent-protocol": "^4.1.16", 14925 + "cache-chunk-store": "^3.2.2", 14926 + "chunk-store-iterator": "^1.0.4", 14927 + "cpus": "^1.0.3", 14928 + "create-torrent": "^6.1.0", 14929 + "cross-fetch-ponyfill": "^1.0.3", 14930 + "debug": "^4.4.1", 14931 + "escape-html": "^1.0.3", 14932 + "fs-chunk-store": "^4.1.0", 14933 + "fsa-chunk-store": "^1.3.0", 14934 + "immediate-chunk-store": "^2.2.0", 14935 + "join-async-iterator": "^1.1.1", 14936 + "load-ip-set": "^3.0.1", 14937 + "lt_donthave": "^2.0.5", 14938 + "memory-chunk-store": "^1.3.5", 14939 + "mime": "^3.0.0", 14940 + "once": "^1.4.0", 14941 + "parse-torrent": "^11.0.18", 14942 + "pump": "^3.0.2", 14943 + "queue-microtask": "^1.2.3", 14944 + "random-iterate": "^1.0.1", 14945 + "range-parser": "^1.2.1", 14946 + "run-parallel": "^1.2.0", 14947 + "run-parallel-limit": "^1.1.0", 14948 + "speed-limiter": "^1.0.2", 14949 + "streamx": "2.22.0", 14950 + "throughput": "^1.0.1", 14951 + "torrent-discovery": "^11.0.17", 14952 + "torrent-piece": "^3.0.1", 14953 + "uint8-util": "^2.2.5", 14954 + "unordered-array-remove": "^1.0.2", 14955 + "ut_metadata": "^4.0.3", 14956 + "ut_pex": "^4.0.4" 14957 + }, 14958 + "engines": { 14959 + "node": ">=16" 14960 + }, 14961 + "optionalDependencies": { 14962 + "utp-native": "^2.5.3" 14963 + } 14964 + }, 12639 14965 "node_modules/whatwg-encoding": { 12640 14966 "version": "3.1.1", 12641 14967 "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", ··· 12755 15081 "funding": { 12756 15082 "url": "https://github.com/sponsors/ljharb" 12757 15083 } 15084 + }, 15085 + "node_modules/which-runtime": { 15086 + "version": "1.3.0", 15087 + "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.3.0.tgz", 15088 + "integrity": "sha512-mQrEBUe15PdEuJvrBlvy3tika6sxQrkblI7JQ9kXeg8Lcby9FwmKvAYrCT3wLh91k6ltost7AVM7qYhjC8N0Zg==", 15089 + "dev": true, 15090 + "license": "Apache-2.0", 15091 + "optional": true 12758 15092 }, 12759 15093 "node_modules/which-typed-array": { 12760 15094 "version": "1.1.19", ··· 13030 15364 "license": "Apache-2.0", 13031 15365 "engines": { 13032 15366 "node": ">=18" 15367 + } 15368 + }, 15369 + "node_modules/xml2js": { 15370 + "version": "0.6.2", 15371 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", 15372 + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", 15373 + "dev": true, 15374 + "license": "MIT", 15375 + "dependencies": { 15376 + "sax": ">=0.6.0", 15377 + "xmlbuilder": "~11.0.0" 15378 + }, 15379 + "engines": { 15380 + "node": ">=4.0.0" 15381 + } 15382 + }, 15383 + "node_modules/xmlbuilder": { 15384 + "version": "11.0.1", 15385 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 15386 + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 15387 + "dev": true, 15388 + "license": "MIT", 15389 + "engines": { 15390 + "node": ">=4.0" 13033 15391 } 13034 15392 }, 13035 15393 "node_modules/xmlchars": {
+1
package.json
··· 62 62 "typescript-eslint-language-service": "^5.0.5", 63 63 "vite": "^6.3.5", 64 64 "vite-plugin-checker": "^0.9.3", 65 + "webtorrent": "^2.6.8", 65 66 "wireit": "^0.14.12", 66 67 "zod-schema-faker": "^2.0.0-beta.5" 67 68 },
+18 -49
src/common/protocol.js
··· 1 1 /** @module common/protocol */ 2 2 3 + export * from './protocol/brands.js' 4 + export * from './protocol/messages.js' 5 + export * from './protocol/messages-preauth.js' 6 + export * from './protocol/messages-realm.js' 7 + 3 8 import { z } from 'zod/v4' 4 - import { jwkSchema } from '#common/crypto/jwks.js' 5 - import { Brand } from '#common/schema/brand.js' 6 9 7 - export const IdentBrand = new Brand('ident') 8 - /** @typedef {z.infer<typeof IdentBrand.schema>} IdentID */ 9 - 10 - export const RealmBrand = new Brand('realm') 11 - /** @typedef {z.infer<typeof RealmBrand.schema>} RealmID */ 12 - 13 - /** zod schema for `preauth.authn` message */ 14 - export const preauthRegisterMessageSchema = z.object({ 15 - msg: z.literal('preauth.register'), 16 - pubkey: jwkSchema, 17 - }) 10 + /** 11 + * A zod transformer for parsing Json 12 + * 13 + * @type {z.ZodTransform<object, string>} 14 + */ 15 + export const parseJson = z.transform((input, ctx) => { 16 + try { 17 + return JSON.parse(input) 18 + } 19 + catch { 20 + ctx.issues.push({ code: 'custom', input, message: 'input could not be parsed as JSON' }) 18 21 19 - /** zod schema for `preauth.authn` message */ 20 - export const preauthAuthnMessageSchema = z.object({ 21 - msg: z.literal('preauth.authn'), 22 + return z.NEVER 23 + } 22 24 }) 23 - 24 - /** zod schema for any `preauth` messages */ 25 - export const preauthMessageSchema = z.discriminatedUnion('msg', [ 26 - preauthRegisterMessageSchema, 27 - preauthAuthnMessageSchema, 28 - ]) 29 - 30 - //// 31 - 32 - /** zod schema for `realm.status` message */ 33 - export const realmStatusMessageSchema = z.object({ 34 - msg: z.literal('realm.status'), 35 - }) 36 - 37 - /** zod schema for `realm.status` response */ 38 - export const realmStatusResponseSchema = z.object({ 39 - msg: z.literal('realm.status'), 40 - realm: RealmBrand.schema, 41 - identities: z.array(IdentBrand.schema), 42 - }) 43 - 44 - /** zod schema for `realm.broadcast` message */ 45 - export const realmBroadcastMessageSchema = z.object({ 46 - msg: z.literal('realm.broadcast'), 47 - recipients: z.array(IdentBrand.schema), 48 - payload: z.any(), 49 - }) 50 - 51 - /** zod schema for any `realm` messages */ 52 - export const realmMessageSchema = z.discriminatedUnion('msg', [ 53 - realmStatusMessageSchema, 54 - realmBroadcastMessageSchema, 55 - ])
+8
src/common/protocol/brands.js
··· 1 + import { z as z_types } from 'zod/v4' 2 + import { Brand } from '#common/schema/brand.js' 3 + 4 + export const IdentBrand = new Brand('ident') 5 + /** @typedef {z_types.infer<typeof IdentBrand.schema>} IdentID */ 6 + 7 + export const RealmBrand = new Brand('realm') 8 + /** @typedef {z_types.infer<typeof RealmBrand.schema>} RealmID */
+24
src/common/protocol/messages-preauth.js
··· 1 + /** @module common/protocol */ 2 + 3 + import { z } from 'zod/v4' 4 + import { jwkSchema } from '#common/crypto/jwks.js' 5 + 6 + /** zod schema for `preauth.authn` message */ 7 + export const preauthRegisterMessageSchema = z.object({ 8 + msg: z.literal('preauth.register'), 9 + pubkey: jwkSchema, 10 + }) 11 + /** @typedef {z.infer<typeof preauthRegisterMessageSchema>} PreauthRegisterMessage */ 12 + 13 + /** zod schema for `preauth.authn` message */ 14 + export const preauthAuthnMessageSchema = z.object({ 15 + msg: z.literal('preauth.authn'), 16 + }) 17 + /** @typedef {z.infer<typeof preauthAuthnMessageSchema>} PreauthAuthnMessage */ 18 + 19 + /** zod schema for any `preauth` messages */ 20 + export const preauthMessageSchema = z.discriminatedUnion('msg', [ 21 + preauthRegisterMessageSchema, 22 + preauthAuthnMessageSchema, 23 + ]) 24 + /** @typedef {z.infer<typeof preauthMessageSchema>} PreauthMessage */
+39
src/common/protocol/messages-realm.js
··· 1 + import { z } from 'zod/v4' 2 + import { IdentBrand, RealmBrand } from './brands.js' 3 + import { okResponseSchema } from './messages.js' 4 + 5 + /** zod schema for `realm.status` message */ 6 + export const realmStatusMessageSchema = z.object({ 7 + msg: z.literal('realm.status'), 8 + }) 9 + /** @typedef {z.infer<typeof realmStatusMessageSchema>} RealmStatusMessage */ 10 + 11 + /** zod schema for `realm.status` response */ 12 + export const realmStatusResponseSchema = okResponseSchema.extend({ 13 + msg: z.literal('realm.status'), 14 + realm: RealmBrand.schema, 15 + identities: z.array(IdentBrand.schema), 16 + }) 17 + /** @typedef {z.infer<typeof realmStatusResponseSchema>} RealmStatusResponse */ 18 + 19 + /** zod schema for `realm.broadcast` message */ 20 + export const realmBroadcastMessageSchema = z.object({ 21 + msg: z.literal('realm.broadcast'), 22 + payload: z.any(), 23 + recipients: z.array(IdentBrand.schema).optional(), 24 + }) 25 + /** @typedef {z.infer<typeof realmBroadcastMessageSchema>} RealmBroadcastMessage */ 26 + 27 + /** zod schema for `realm.broadcast` message */ 28 + export const realmBroadcastResponseSchema = okResponseSchema.extend({ 29 + msg: z.literal('realm.broadcast'), 30 + sender: IdentBrand.schema, 31 + payload: z.any(), 32 + }) 33 + /** @typedef {z.infer<typeof realmBroadcastResponseSchema>} RealmBroadcastResponse */ 34 + 35 + /** zod schema for any `realm` messages */ 36 + export const realmMessageSchema = z.discriminatedUnion('msg', [ 37 + realmStatusMessageSchema, 38 + realmBroadcastMessageSchema, 39 + ])
+15
src/common/protocol/messages.js
··· 1 + import { z } from 'zod/v4' 2 + 3 + /** zod schema for `ok` message */ 4 + export const okResponseSchema = z.object({ 5 + ok: z.literal(true), 6 + }) 7 + /** @typedef {z.infer<typeof okResponseSchema>} OkResponse */ 8 + 9 + /** zod schema for `error` message */ 10 + export const errorResponseSchema = z.object({ 11 + ok: z.literal(false), 12 + status: z.number(), 13 + message: z.string(), 14 + }) 15 + /** @typedef {z.infer<typeof errorResponseSchema>} ErrorResponse */
+12
src/common/socket.js
··· 6 6 import { Breaker } from '#common/breaker.js' 7 7 import { ProtocolError } from '#common/errors.js' 8 8 9 + import * as protocol_types from './protocol.js' 10 + 11 + /** 12 + * Send some data in JSON format down the wire. 13 + * 14 + * @param {WebSocket} ws the socket to send on 15 + * @param {protocol_types.OkResponse | protocol_types.ErrorResponse} data the data to send 16 + */ 17 + export function sendSocket(ws, data) { 18 + ws.send(JSON.stringify(data)) 19 + } 20 + 9 21 /** 10 22 * Given a websocket, wait and take a single message off and return it. 11 23 *
+85 -4
src/server/routes-socket/handler-realm.js
··· 1 - import { streamSocket } from '#common/socket.js' 1 + import { normalizeProtocolError, ProtocolError } from '#common/errors.js' 2 + import { realmMessageSchema, parseJson } from '#common/protocol.js' 3 + import { sendSocket, streamSocket } from '#common/socket.js' 4 + import { format } from 'node:util' 5 + 6 + import * as protocol_types from '#common/protocol.js' 2 7 import * as realm_types from '#server/routes-socket/state.js' 3 8 4 9 /** ··· 10 15 * @param {AbortSignal} [signal] an optional signal to abort the blocking loop 11 16 */ 12 17 export async function realmHandler(ws, auth, signal) { 13 - ws.send(`welcome ${auth.identid} to ${auth.realmid}`) 14 - for await (const message of streamSocket(ws, { signal })) { 15 - ws.send(`you said: ${message}`) 18 + respondWithRealmStatus(ws, auth) 19 + broadcastToRealm(undefined, { ok: true, msg: 'welcome', ident: auth.identid }, auth) 20 + 21 + for await (const data of streamSocket(ws, { signal })) { 22 + try { 23 + const msg = await parseJson.pipe(realmMessageSchema).parseAsync(data) 24 + switch (msg.msg) { 25 + case 'realm.status': 26 + respondWithRealmStatus(ws, auth) 27 + continue 28 + 29 + case 'realm.broadcast': 30 + broadcastToRealm(msg.recipients, msg.payload, auth) 31 + continue 32 + 33 + default: 34 + throw new ProtocolError('unknown message type: ${msg.msg}', 400) 35 + } 36 + } 37 + catch (exc) { 38 + const error = normalizeProtocolError(exc) 39 + if (error.status >= 500) throw error 40 + 41 + if (ws.readyState === ws.OPEN) { 42 + /** @type {protocol_types.ErrorResponse} */ 43 + const resp = { 44 + ok: false, 45 + message: format('Error: %s', error.message), 46 + status: error.status, 47 + } 48 + 49 + sendSocket(ws, resp) 50 + } 51 + } 52 + } 53 + } 54 + 55 + /** 56 + * @private 57 + * @param {WebSocket} ws the socket to communicate on 58 + * @param {realm_types.AuthenticatedConnection} auth the current identity 59 + */ 60 + function respondWithRealmStatus(ws, auth) { 61 + /** @type {protocol_types.RealmStatusResponse} */ 62 + const resp = { 63 + ok: true, 64 + msg: 'realm.status', 65 + realm: auth.realmid, 66 + identities: Array.from(auth.realm.identities.keys()), 67 + } 68 + 69 + sendSocket(ws, resp) 70 + } 71 + 72 + /** 73 + * @private 74 + * @param {protocol_types.IdentID[] | undefined} recipients array of recips, or undef to send all 75 + * @param {unknown} payload the payload to send 76 + * @param {realm_types.AuthenticatedConnection} auth the current identity 77 + */ 78 + function broadcastToRealm(recipients, payload, auth) { 79 + /** @type {protocol_types.RealmBroadcastResponse} */ 80 + const resp = { 81 + ok: true, 82 + msg: 'realm.broadcast', 83 + sender: auth.identid, 84 + payload: payload, 85 + } 86 + 87 + recipients ??= Array.from(auth.realm.identities.keys()) 88 + for (const recip of recipients) { 89 + if (recip === auth.identid) continue 90 + 91 + const sockets = auth.realm.sockets.get(recip) 92 + if (sockets == null) continue 93 + 94 + for (const socket of sockets) { 95 + sendSocket(socket, resp) 96 + } 16 97 } 17 98 }