diff --git a/package-lock.json b/package-lock.json
index 36156d7..264ff42 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,9 +20,12 @@
"@types/node": "^18.6.5",
"@types/react": "^18.0.17",
"@types/react-dom": "^18.0.6",
+ "buffer": "^6.0.3",
"classnames": "^2.3.1",
+ "detectincognitojs": "^1.1.2",
"fast-memoize": "^2.5.2",
"fun-animal-names": "^0.1.1",
+ "idb-chunk-store": "^1.0.1",
"localforage": "^1.10.0",
"mui-markdown": "^0.5.5",
"react": "^18.2.0",
@@ -34,16 +37,20 @@
"react-syntax-highlighter": "^15.5.0",
"remark-gfm": "^3.0.1",
"sass": "^1.54.3",
+ "streamsaver": "^2.0.6",
"trystero": "github:jeremyckahn/trystero#bugfix/stream-metadata-type",
"typeface-public-sans": "^1.1.13",
"typeface-roboto": "^1.1.13",
"typescript": "^4.7.4",
"uuid": "^8.3.2",
- "web-vitals": "^2.1.4"
+ "web-vitals": "^2.1.4",
+ "webtorrent": "^1.9.3"
},
"devDependencies": {
"@types/react-syntax-highlighter": "^15.5.5",
+ "@types/streamsaver": "^2.0.1",
"@types/uuid": "^8.3.4",
+ "@types/webtorrent": "^0.109.3",
"@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0",
"autoprefixer": "^10.4.8",
@@ -60,6 +67,7 @@
"postcss": "^8.4.16",
"prettier": "^2.7.1",
"pretty-quick": "^3.1.3",
+ "serve": "^14.1.2",
"tailwindcss": "^3.1.8"
},
"engines": {
@@ -5231,6 +5239,15 @@
"@babel/types": "^7.3.0"
}
},
+ "node_modules/@types/bittorrent-protocol": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@types/bittorrent-protocol/-/bittorrent-protocol-3.1.2.tgz",
+ "integrity": "sha512-7k9nivNeG7Sc8wVuBs+XjBp2u7pH8tqW3BB93/SAg3xht/cZEK+Rqkj79xSyJqyj86eA0F6n85EKkkyGki8afg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/body-parser": {
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
@@ -5544,6 +5561,15 @@
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
+ "node_modules/@types/magnet-uri": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/@types/magnet-uri/-/magnet-uri-5.1.3.tgz",
+ "integrity": "sha512-FvJN1yYdLhvU6zWJ2YnWQ2GnpFLsA8bt+85WY0tLh6ehzGNrvBorjlcc53/zY43r/IKn+ctFs1nt7andwGnQCQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/mdast": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
@@ -5582,6 +5608,26 @@
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
+ "node_modules/@types/parse-torrent": {
+ "version": "5.8.4",
+ "resolved": "https://registry.npmjs.org/@types/parse-torrent/-/parse-torrent-5.8.4.tgz",
+ "integrity": "sha512-FdKs5yN5iYO5Cu9gVz1Zl30CbZe6HTsqloWmCf+LfbImgSzlsUkov2+npQWCQSQ3zi/a2G5C824K0UpZ2sRufA==",
+ "dev": true,
+ "dependencies": {
+ "@types/magnet-uri": "*",
+ "@types/node": "*",
+ "@types/parse-torrent-file": "*"
+ }
+ },
+ "node_modules/@types/parse-torrent-file": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/parse-torrent-file/-/parse-torrent-file-4.0.3.tgz",
+ "integrity": "sha512-dFkPnJPKiFWiGX+HXmyTVt2js3k0d9dThmUxX8nfGC22hbyZ5BTmetsEl45sQhHLcFo43njVrIKMXM3F1ahXRw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/prettier": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
@@ -5685,6 +5731,15 @@
"@types/node": "*"
}
},
+ "node_modules/@types/simple-peer": {
+ "version": "9.11.5",
+ "resolved": "https://registry.npmjs.org/@types/simple-peer/-/simple-peer-9.11.5.tgz",
+ "integrity": "sha512-haXgWcAa3Y3Sn+T8lzkE4ErQUpYzhW6Cz2lh00RhQTyWt+xZ3s87wJPztUxlqSdFRqGhe2MQIBd0XsyHP3No4w==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/sockjs": {
"version": "0.3.33",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
@@ -5698,6 +5753,12 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
},
+ "node_modules/@types/streamsaver": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/streamsaver/-/streamsaver-2.0.1.tgz",
+ "integrity": "sha512-I49NtT8w6syBI3Zg3ixCyygTHoTVMY0z2TMRcTgccdIsVd2MwlKk7ITLHLsJtgchUHcOd7QEARG9h0ifcA6l2Q==",
+ "dev": true
+ },
"node_modules/@types/testing-library__jest-dom": {
"version": "5.14.5",
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
@@ -5722,6 +5783,18 @@
"integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
"dev": true
},
+ "node_modules/@types/webtorrent": {
+ "version": "0.109.3",
+ "resolved": "https://registry.npmjs.org/@types/webtorrent/-/webtorrent-0.109.3.tgz",
+ "integrity": "sha512-EJLsxMEcEjPXHcBqL6TRAbUwIpxAul5ULrXHJ0zwig7Oe70FS6dAzCWLq4MBafX3QrQG1DzGAS0fS8iJEOjD0g==",
+ "dev": true,
+ "dependencies": {
+ "@types/bittorrent-protocol": "*",
+ "@types/node": "*",
+ "@types/parse-torrent": "*",
+ "@types/simple-peer": "*"
+ }
+ },
"node_modules/@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -6389,6 +6462,20 @@
"@xtuc/long": "4.2.2"
}
},
+ "node_modules/@webtorrent/http-node": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz",
+ "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==",
+ "dependencies": {
+ "freelist": "^1.0.3",
+ "http-parser-js": "^0.4.3"
+ }
+ },
+ "node_modules/@webtorrent/http-node/node_modules/http-parser-js": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+ "integrity": "sha512-u8u5ZaG0Tr/VvHlucK2ufMuOp4/5bvwgneXle+y228K5rMbJOlVjThONcaAw3ikAy8b2OO9RfEucdMHFz3UWMA=="
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -6399,6 +6486,12 @@
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
},
+ "node_modules/@zeit/schemas": {
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
+ "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
+ "dev": true
+ },
"node_modules/abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@@ -6530,8 +6623,7 @@
"node_modules/addr-to-ip-port": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz",
- "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg==",
- "dev": true
+ "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg=="
},
"node_modules/address": {
"version": "1.2.0",
@@ -6635,6 +6727,15 @@
"ajv": "^6.9.1"
}
},
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -6700,6 +6801,26 @@
"node": ">= 8"
}
},
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -6950,6 +7071,11 @@
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
},
+ "node_modules/b4a": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.1.tgz",
+ "integrity": "sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA=="
+ },
"node_modules/babel-jest": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
@@ -7295,8 +7421,12 @@
"node_modules/bencode": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz",
- "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==",
- "dev": true
+ "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w=="
+ },
+ "node_modules/bep53-range": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-1.1.1.tgz",
+ "integrity": "sha512-ct6s33iiwRCUPp9KXnJ4QMWDgHIgaw36caK/5XEQ9L8dCzSQlJt1Vk6VmHh1VD4AlGCAI4C2zmtfItifBBPrhQ=="
},
"node_modules/bfj": {
"version": "7.0.2",
@@ -7336,6 +7466,11 @@
"node": ">=8"
}
},
+ "node_modules/binary-search": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz",
+ "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA=="
+ },
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -7349,11 +7484,77 @@
"resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
"integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
},
+ "node_modules/bitfield": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.1.0.tgz",
+ "integrity": "sha512-6cEDG3K+PK9f+B7WyhWYjp09bqSa+uaAaecVA7Y5giFixyVe1s6HKGnvOqYNR4Mi4fBMjfDPLBpHkKvzzgP7kg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/bittorrent-dht": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-10.0.6.tgz",
+ "integrity": "sha512-Odmfmo36/vr0E4PWicans0fesjCfRib2daGaYfB8WHljPTO/U2820EFOA9HBhzdzekGBhBHlSPVi6Jf9vu7/yQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.3",
+ "debug": "^4.3.4",
+ "k-bucket": "^5.1.0",
+ "k-rpc": "^5.1.0",
+ "last-one-wins": "^1.0.4",
+ "lru": "^3.1.0",
+ "randombytes": "^2.1.0",
+ "record-cache": "^1.2.0",
+ "simple-sha1": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/bittorrent-lsd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-1.1.1.tgz",
+ "integrity": "sha512-dWxU2Mr2lU6jzIKgZrTsXgeXDCIcYpR1b6f2n89fn7juwPAYbNU04OgWjcQPLiNliY0filsX5CQAWntVErpk+Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "chrome-dgram": "^3.0.6",
+ "debug": "^4.2.0"
+ }
+ },
"node_modules/bittorrent-peerid": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.4.tgz",
"integrity": "sha512-Xzk1FJFHmsc9H8IKFtDUkfAZIT1HW8r6UqajfZBBxWmpA1v7FsPO8xPFtnFzCqcXlPN3yi8dDmlqZCemyB7P8w==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -7369,11 +7570,40 @@
}
]
},
+ "node_modules/bittorrent-protocol": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-3.5.5.tgz",
+ "integrity": "sha512-cfzO//WtJGNLHXS58a4exJCSq1U0dkP2DZCQxgADInYFPdOfV1EmtpEN9toLOluVCXJRYAdwW5H6Li/hrn697A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.2",
+ "bitfield": "^4.0.0",
+ "debug": "^4.3.4",
+ "randombytes": "^2.1.0",
+ "rc4": "^0.1.5",
+ "readable-stream": "^3.6.0",
+ "simple-sha1": "^3.1.0",
+ "speedometer": "^1.1.0",
+ "unordered-array-remove": "^1.0.2"
+ }
+ },
"node_modules/bittorrent-tracker": {
"version": "9.19.0",
"resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-9.19.0.tgz",
"integrity": "sha512-09d0aD2b+MC+zWvWajkUAKkYMynYW4tMbTKiRSthKtJZbafzEoNQSUHyND24SoCe3ZOb2fKfa6fu2INAESL9wA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -7427,8 +7657,7 @@
"node_modules/bittorrent-tracker/node_modules/bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
},
"node_modules/bl": {
"version": "5.0.0",
@@ -7440,6 +7669,25 @@
"readable-stream": "^3.4.0"
}
},
+ "node_modules/blob-to-buffer": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz",
+ "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/blob-to-it": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz",
@@ -7448,6 +7696,19 @@
"browser-readablestream-to-it": "^1.0.3"
}
},
+ "node_modules/block-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.0.1.tgz",
+ "integrity": "sha512-ral9Gh8BXqVkh4lnhLLL5QJ67+VMOBNzsHJZX4n+Pwer9bzcSM2ZOjTLMErkWWETvnis+ZP1a6EULebjEg3bTA=="
+ },
+ "node_modules/block-stream2": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz",
+ "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==",
+ "dependencies": {
+ "readable-stream": "^3.4.0"
+ }
+ },
"node_modules/blockstore-datastore-adapter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-1.0.0.tgz",
@@ -7542,6 +7803,137 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
+ "node_modules/boxen": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
+ "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/camelcase": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
+ "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/chalk": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+ "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -7577,6 +7969,11 @@
"resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz",
"integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw=="
},
+ "node_modules/browserify-package-json": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-package-json/-/browserify-package-json-1.0.1.tgz",
+ "integrity": "sha512-CikZxJGNyNOBERbeALo0NUUeJgHs5NyEvuYChX/PcsBV91TAvEq4hYDaWSenSieT8XwAutNnS3FGvyzIMOughQ=="
+ },
"node_modules/browserslist": {
"version": "4.21.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
@@ -7643,6 +8040,25 @@
"ieee754": "^1.2.1"
}
},
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -7680,6 +8096,29 @@
"node": ">= 0.8"
}
},
+ "node_modules/cache-chunk-store": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz",
+ "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "lru": "^3.1.0",
+ "queue-microtask": "^1.2.3"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -7805,6 +8244,91 @@
"node": ">=4"
}
},
+ "node_modules/chalk-template": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+ "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/chalk-template/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/chalk-template/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chalk-template/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -7886,7 +8410,6 @@
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz",
"integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -7906,6 +8429,36 @@
"run-series": "^1.1.9"
}
},
+ "node_modules/chrome-dns": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz",
+ "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==",
+ "dependencies": {
+ "chrome-net": "^3.3.2"
+ }
+ },
+ "node_modules/chrome-net": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz",
+ "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "inherits": "^2.0.1"
+ }
+ },
"node_modules/chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -7914,6 +8467,29 @@
"node": ">=6.0"
}
},
+ "node_modules/chunk-store-stream": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/chunk-store-stream/-/chunk-store-stream-4.3.0.tgz",
+ "integrity": "sha512-qby+/RXoiMoTVtPiylWZt7KFF1jy6M829TzMi2hxZtBIH9ptV19wxcft6zGiXLokJgCbuZPGNGab6DWHqiSEKw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "block-stream2": "^2.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
"node_modules/ci-info": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz",
@@ -7961,6 +8537,35 @@
"node": ">=6"
}
},
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clipboardy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
+ "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
+ "dev": true,
+ "dependencies": {
+ "arch": "^2.2.0",
+ "execa": "^5.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -7975,7 +8580,6 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true,
"engines": {
"node": ">=0.8"
}
@@ -8088,7 +8692,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz",
"integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==",
- "dev": true,
"dependencies": {
"ipaddr.js": ">= 0.1.5"
}
@@ -8301,6 +8904,63 @@
"node": ">=10"
}
},
+ "node_modules/cpus": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz",
+ "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/create-torrent": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-5.0.9.tgz",
+ "integrity": "sha512-WQ/bMe+aCBSa5EonIkgw7CTM/1JnJDQuLJhA78omSWvuEbXDwaUy0rG3a+IYt+EiO+rdTLxdsBwrsn/wfWOMQA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.3",
+ "block-iterator": "^1.0.1",
+ "fast-readable-async-iterator": "^1.1.1",
+ "is-file": "^1.0.0",
+ "join-async-iterator": "^1.1.1",
+ "junk": "^3.1.0",
+ "minimist": "^1.2.7",
+ "piece-length": "^2.0.1",
+ "queue-microtask": "^1.2.3",
+ "run-parallel": "^1.2.0",
+ "simple-sha1": "^3.1.0"
+ },
+ "bin": {
+ "create-torrent": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -8880,7 +9540,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
"dependencies": {
"mimic-response": "^3.1.0"
},
@@ -8896,6 +9555,15 @@
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
"integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="
},
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -9054,6 +9722,11 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/detectincognitojs": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/detectincognitojs/-/detectincognitojs-1.1.2.tgz",
+ "integrity": "sha512-7b+0/zJ76ZTeEtNl9MCPEKgFauEw/LerdlwnEnnrgYCFhp5FL+RJGD13EF/R9FYqrVxL7H5fgCyBdzJ6BtkPhg=="
+ },
"node_modules/detective": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
@@ -9263,6 +9936,12 @@
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -9384,7 +10063,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
"dependencies": {
"once": "^1.4.0"
}
@@ -10689,6 +11367,15 @@
"node >=0.6.0"
]
},
+ "node_modules/fast-blob-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fast-blob-stream/-/fast-blob-stream-1.1.1.tgz",
+ "integrity": "sha512-wdRazMMeM2pl8hq1lFG8fzix8p1VLAJunTTE2RADiFBwbUfZwybUm6IwPrmMS7qTthiayr166NoXeqWe3hfR5w==",
+ "dependencies": {
+ "fast-readable-async-iterator": "^1.1.1",
+ "streamx": "^2.12.4"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -10740,6 +11427,26 @@
"resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
"integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
},
+ "node_modules/fast-readable-async-iterator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fast-readable-async-iterator/-/fast-readable-async-iterator-1.1.1.tgz",
+ "integrity": "sha512-xEHkLUEmStETI+15zhglJLO9TjXxNkkp2ldEfYVZdcqxFhM172EfGl1irI6mVlTxXspYKH1/kjevnt/XSsPeFA=="
+ },
+ "node_modules/fast-url-parser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
+ "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^1.3.2"
+ }
+ },
+ "node_modules/fast-url-parser/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
"node_modules/fast-write-atomic": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz",
@@ -11211,6 +11918,11 @@
"url": "https://www.patreon.com/infusion"
}
},
+ "node_modules/freelist": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
+ "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg=="
+ },
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
@@ -11219,6 +11931,32 @@
"node": ">= 0.6"
}
},
+ "node_modules/fs-chunk-store": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-3.0.1.tgz",
+ "integrity": "sha512-YrOFuXtUJQBkOZ2QBXBoIrjLJ/TNTpEaGnxV+TmL1qaW5J4ah6lxMh/X9pb3To+hbaoT/pRuBXLkkqoavQoQFw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2",
+ "random-access-file": "^2.0.1",
+ "randombytes": "^2.0.3",
+ "run-parallel": "^1.1.2",
+ "thunky": "^1.0.1"
+ }
+ },
"node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -11350,6 +12088,17 @@
"node": ">=8.0.0"
}
},
+ "node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -12022,6 +12771,20 @@
"resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz",
"integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg=="
},
+ "node_modules/idb-chunk-store": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/idb-chunk-store/-/idb-chunk-store-1.0.1.tgz",
+ "integrity": "sha512-1OtzeUFLfvK/PSMPs6DJumwfgQgGDiYW2owxdAJpra44/EaXsGcrHzyvdTCTulzunS/xf22woZOIqyk2PfWWfA==",
+ "dependencies": {
+ "idb": "^6.1.2",
+ "queue-microtask": "^1.2.3"
+ }
+ },
+ "node_modules/idb-chunk-store/node_modules/idb": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz",
+ "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw=="
+ },
"node_modules/identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -12065,6 +12828,28 @@
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
+ "node_modules/immediate-chunk-store": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz",
+ "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.3"
+ }
+ },
"node_modules/immer": {
"version": "9.0.15",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
@@ -12230,8 +13015,7 @@
"node_modules/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
- "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
- "dev": true
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
},
"node_modules/ip-address": {
"version": "8.1.0",
@@ -12258,6 +13042,14 @@
"node": ">=8"
}
},
+ "node_modules/ip-set": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.1.0.tgz",
+ "integrity": "sha512-JdHz4tSMx1IeFj8yEcQU0i58qiSkOlmZXkZ8+HJ0ROV5KcgLRDO9F703oJ1GeZCvqggrcCbmagD/V7hghY62wA==",
+ "dependencies": {
+ "ip": "^1.1.5"
+ }
+ },
"node_modules/ipaddr.js": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
@@ -12672,6 +13464,11 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
+ "node_modules/is-ascii": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-ascii/-/is-ascii-1.0.0.tgz",
+ "integrity": "sha512-CXMaB/+EWCSGlLPs7ZlXRBpaPRRSRnrOfq0N3+RGeCZfqQaHQtiDLlkPCn63+LCkRUc1iRE0AXiI+sm2/Hi3qQ=="
+ },
"node_modules/is-bigint": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
@@ -12813,6 +13610,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
+ "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ=="
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -12946,6 +13748,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-port-reachable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
+ "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -15345,6 +16159,11 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/join-async-iterator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz",
+ "integrity": "sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ=="
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -15537,6 +16356,14 @@
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/junk": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
+ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/just-debounce-it": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.5.0.tgz",
@@ -15560,6 +16387,27 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/k-rpc": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz",
+ "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==",
+ "dependencies": {
+ "k-bucket": "^5.0.0",
+ "k-rpc-socket": "^1.7.2",
+ "randombytes": "^2.0.5"
+ }
+ },
+ "node_modules/k-rpc-socket": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz",
+ "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==",
+ "dependencies": {
+ "bencode": "^2.0.0",
+ "chrome-dgram": "^3.0.2",
+ "chrome-dns": "^1.0.0",
+ "chrome-net": "^3.3.2"
+ }
+ },
"node_modules/keypair": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.4.tgz",
@@ -15602,6 +16450,11 @@
"language-subtag-registry": "~0.3.2"
}
},
+ "node_modules/last-one-wins": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz",
+ "integrity": "sha512-t+KLJFkHPQk8lfN6WBOiGkiUXoub+gnb2XTYI2P3aiISL+94xgZ1vgz1SXN/N4hthuOoLXarXfBZPUruyjQtfA=="
+ },
"node_modules/level": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/level/-/level-7.0.1.tgz",
@@ -16331,11 +17184,42 @@
"node": ">=10"
}
},
+ "node_modules/limiter": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
+ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
+ },
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
+ "node_modules/load-ip-set": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-2.2.1.tgz",
+ "integrity": "sha512-G3hQXehU2LTOp52e+lPffpK4EvidfjwbvHaGqmFcp4ptiZagR4xFdL+D08kMX906dxeqZyWhfonEjdUxrWcldg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "ip-set": "^2.1.0",
+ "netmask": "^2.0.1",
+ "once": "^1.4.0",
+ "simple-get": "^4.0.0",
+ "split": "^1.0.1"
+ }
+ },
"node_modules/loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -16482,7 +17366,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz",
"integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.1"
},
@@ -16501,6 +17384,29 @@
"node": ">=10"
}
},
+ "node_modules/lt_donthave": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-1.0.1.tgz",
+ "integrity": "sha512-PfOXfDN9GnUjlNHjjxKQuMxPC8s12iSrnmg+Ff1BU1uLn7S1BFAKzpZCu6Gwg3WsCUvTZrZoDSHvy6B/j+N4/Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "debug": "^4.2.0",
+ "unordered-array-remove": "^1.0.2"
+ }
+ },
"node_modules/ltgt": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
@@ -16530,6 +17436,29 @@
"sourcemap-codec": "^1.4.8"
}
},
+ "node_modules/magnet-uri": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-6.2.0.tgz",
+ "integrity": "sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bep53-range": "^1.1.0",
+ "thirty-two": "^1.0.2"
+ }
+ },
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -16797,6 +17726,30 @@
"node": ">= 0.6"
}
},
+ "node_modules/mediasource": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/mediasource/-/mediasource-2.4.0.tgz",
+ "integrity": "sha512-SKUMrbFMHgiCUZFOWZcL0aiF/KgHx9SPIKzxrl6+7nMUMDK/ZnOmJdY/9wKzYeM0g3mybt3ueg+W+/mrYfmeFQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "to-arraybuffer": "^1.0.1"
+ }
+ },
"node_modules/memfs": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
@@ -16808,6 +17761,14 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/memory-chunk-store": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz",
+ "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==",
+ "dependencies": {
+ "queue-microtask": "^1.2.3"
+ }
+ },
"node_modules/menoetius": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/menoetius/-/menoetius-0.0.2.tgz",
@@ -17471,7 +18432,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -17576,9 +18536,12 @@
}
},
"node_modules/minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/mkdirp": {
"version": "0.5.6",
@@ -17591,6 +18554,11 @@
"mkdirp": "bin/cmd.js"
}
},
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ },
"node_modules/mortice": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz",
@@ -17602,6 +18570,25 @@
"promise-timeout": "^1.3.0"
}
},
+ "node_modules/mp4-box-encoding": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mp4-box-encoding/-/mp4-box-encoding-1.4.1.tgz",
+ "integrity": "sha512-2/PRtGGiqPc/VEhbm7xAQ+gbb7yzHjjMAv6MpAifr5pCpbh3fQUdj93uNgwPiTppAGu8HFKe3PeU+OdRyAxStA==",
+ "dependencies": {
+ "uint64be": "^2.0.2"
+ }
+ },
+ "node_modules/mp4-stream": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/mp4-stream/-/mp4-stream-3.1.3.tgz",
+ "integrity": "sha512-DUT8f0x2jHbZjNMdqe9h6lZdt6RENWTTdGn8z3TXa4uEsoltuNY9lCCij84mdm0q7xcV0E2W25WRxlKBMo4hSw==",
+ "dependencies": {
+ "mp4-box-encoding": "^1.3.0",
+ "next-event": "^1.0.0",
+ "queue-microtask": "^1.2.2",
+ "readable-stream": "^3.0.6"
+ }
+ },
"node_modules/mprocs": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/mprocs/-/mprocs-0.6.3.tgz",
@@ -17808,6 +18795,11 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/next-event": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/next-event/-/next-event-1.0.0.tgz",
+ "integrity": "sha512-IXGPhl/yAiUU597gz+k5OYxYZkmLSWTcPPcpQjWABud9OK6m/ZNLrVdcEu4e7NgmOObFIhgZVg1jecPYT/6AoA=="
+ },
"node_modules/no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -18378,6 +19370,14 @@
"node": ">=6"
}
},
+ "node_modules/package-json-versionify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/package-json-versionify/-/package-json-versionify-1.0.4.tgz",
+ "integrity": "sha512-mtKKtCeSZMtWcc5hHJS6OlEGP7J9g7WN6vWCCZi2hCXFag/Zmjokh6WFFTQb9TuMnBcZpRjhhMQyOyglPCAahw==",
+ "dependencies": {
+ "browserify-package-json": "^1.0.0"
+ }
+ },
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
@@ -18451,6 +19451,37 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parse-torrent": {
+ "version": "9.1.5",
+ "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-9.1.5.tgz",
+ "integrity": "sha512-K8FXRwTOaZMI0/xuv0dpng1MVHZRtMJ0jRWBJ3qZWVNTrC1MzWUxm9QwaXDz/2qPhV2XC4UIHI92IGHwseAwaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.2",
+ "blob-to-buffer": "^1.2.9",
+ "get-stdin": "^8.0.0",
+ "magnet-uri": "^6.2.0",
+ "queue-microtask": "^1.2.3",
+ "simple-get": "^4.0.1",
+ "simple-sha1": "^3.1.0"
+ },
+ "bin": {
+ "parse-torrent": "bin/cmd.js"
+ }
+ },
"node_modules/parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
@@ -18489,6 +19520,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -18606,6 +19643,11 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/piece-length": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz",
+ "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug=="
+ },
"node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -20336,7 +21378,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -20397,6 +21438,11 @@
}
]
},
+ "node_modules/queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
+ },
"node_modules/quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
@@ -20432,11 +21478,29 @@
"performance-now": "^2.1.0"
}
},
+ "node_modules/random-access-file": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.2.1.tgz",
+ "integrity": "sha512-RGU0xmDqdOyEiynob1KYSeh8+9c9Td1MJ74GT1viMEYAn8SJ9oBtWCXLsYZukCF46yududHOdM449uRYbzBrZQ==",
+ "dependencies": {
+ "mkdirp-classic": "^0.5.2",
+ "random-access-storage": "^1.1.1"
+ }
+ },
+ "node_modules/random-access-storage": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.4.3.tgz",
+ "integrity": "sha512-D5e2iIC5dNENWyBxsjhEnNOMCwZZ64TARK6dyMN+3g4OTC4MJxyjh9hKLjTGoNhDOPrgjI+YlFEHFnrp/cSnzQ==",
+ "dependencies": {
+ "events": "^3.3.0",
+ "inherits": "^2.0.3",
+ "queue-tick": "^1.0.0"
+ }
+ },
"node_modules/random-iterate": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz",
- "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==",
- "dev": true
+ "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA=="
},
"node_modules/randombytes": {
"version": "2.1.0",
@@ -20454,6 +21518,14 @@
"node": ">= 0.6"
}
},
+ "node_modules/range-slice-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/range-slice-stream/-/range-slice-stream-2.0.0.tgz",
+ "integrity": "sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q==",
+ "dependencies": {
+ "readable-stream": "^3.0.2"
+ }
+ },
"node_modules/raw-body": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
@@ -20487,6 +21559,38 @@
"node": ">=0.10.0"
}
},
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rc4": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz",
+ "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -20883,6 +21987,14 @@
"ms": "^2.1.1"
}
},
+ "node_modules/record-cache": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz",
+ "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==",
+ "dependencies": {
+ "b4a": "^1.3.1"
+ }
+ },
"node_modules/recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
@@ -21016,6 +22128,28 @@
"node": ">=4"
}
},
+ "node_modules/registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "dependencies": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
+ "dev": true,
+ "dependencies": {
+ "rc": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/regjsgen": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
@@ -21092,6 +22226,32 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/render-media": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/render-media/-/render-media-4.1.0.tgz",
+ "integrity": "sha512-F5BMWDmgATEoyPCtKjmGNTGN1ghoZlfRQ3MJh8dS/MrvIUIxupiof/Y9uahChipXcqQ57twVbgMmyQmuO1vokw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "debug": "^4.2.0",
+ "is-ascii": "^1.0.0",
+ "mediasource": "^2.4.0",
+ "stream-to-blob-url": "^3.0.2",
+ "videostream": "^3.2.2"
+ }
+ },
"node_modules/renderkid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@@ -21449,7 +22609,6 @@
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz",
"integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21465,6 +22624,11 @@
}
]
},
+ "node_modules/rusha": {
+ "version": "0.8.14",
+ "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz",
+ "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA=="
+ },
"node_modules/sade": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
@@ -21699,6 +22863,92 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/serve": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz",
+ "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==",
+ "dev": true,
+ "dependencies": {
+ "@zeit/schemas": "2.21.0",
+ "ajv": "8.11.0",
+ "arg": "5.0.2",
+ "boxen": "7.0.0",
+ "chalk": "5.0.1",
+ "chalk-template": "0.4.0",
+ "clipboardy": "3.0.0",
+ "compression": "1.7.4",
+ "is-port-reachable": "4.0.0",
+ "serve-handler": "6.1.5",
+ "update-check": "1.5.4"
+ },
+ "bin": {
+ "serve": "build/main.js"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/serve-handler": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz",
+ "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "fast-url-parser": "1.1.3",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.2",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "2.2.1",
+ "range-parser": "1.2.0"
+ }
+ },
+ "node_modules/serve-handler/node_modules/content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-handler/node_modules/mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-handler/node_modules/mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "~1.33.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-handler/node_modules/path-to-regexp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
+ "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
+ "dev": true
+ },
+ "node_modules/serve-handler/node_modules/range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
@@ -21783,6 +23033,40 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/serve/node_modules/ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/serve/node_modules/chalk": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
+ "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/serve/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
"node_modules/set-delayed-interval": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz",
@@ -21844,7 +23128,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21864,7 +23147,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
"integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21889,7 +23171,6 @@
"version": "9.11.1",
"resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.11.1.tgz",
"integrity": "sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21919,11 +23200,19 @@
"resolved": "https://registry.npmjs.org/simple-peer-light/-/simple-peer-light-9.10.0.tgz",
"integrity": "sha512-E0INlXmVy2XvVkyMallKYQlcTAD8S0ov+goSVDGD2k9vwkjBCOyFmESoUsv0Pi7P3nSh6TuMIIi+S/YRok9WLg=="
},
+ "node_modules/simple-sha1": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-3.1.0.tgz",
+ "integrity": "sha512-ArTptMRC1v08H8ihPD6l0wesKvMfF9e8XL5rIHPanI7kGOsSsbY514MwVu6X1PITHCTB2F08zB7cyEbfc4wQjg==",
+ "dependencies": {
+ "queue-microtask": "^1.2.2",
+ "rusha": "^0.8.13"
+ }
+ },
"node_modules/simple-websocket": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.1.0.tgz",
"integrity": "sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -21963,7 +23252,6 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
@@ -22043,7 +23331,6 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
"integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
- "dev": true,
"dependencies": {
"ip": "^2.0.0",
"smart-buffer": "^4.2.0"
@@ -22056,8 +23343,7 @@
"node_modules/socks/node_modules/ip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
- "dev": true
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
"node_modules/sort-keys": {
"version": "4.2.0",
@@ -22186,6 +23472,31 @@
"wbuf": "^1.7.3"
}
},
+ "node_modules/speed-limiter": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz",
+ "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==",
+ "dependencies": {
+ "limiter": "^1.1.5",
+ "streamx": "^2.10.3"
+ }
+ },
+ "node_modules/speedometer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.1.0.tgz",
+ "integrity": "sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ=="
+ },
+ "node_modules/split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -22258,6 +23569,50 @@
"node": ">= 0.8"
}
},
+ "node_modules/stream-to-blob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-to-blob/-/stream-to-blob-2.0.1.tgz",
+ "integrity": "sha512-GXlqXt3svqwIVWoICenix5Poxi4KbCF0BdXXUbpU1X4vq1V8wmjiEIU3aFJzCGNFpKxfbnG0uoowS3nKUgSPYg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stream-to-blob-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-to-blob-url/-/stream-to-blob-url-3.0.2.tgz",
+ "integrity": "sha512-PS6wT2ZyyR38Cy+lE6PBEI1ZmO2HdzZoLeDGG0zZbYikCZd0dh8FUoSeFzgWLItpBYw1WJmPVRLpykRV+lAWLQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "stream-to-blob": "^2.0.0"
+ }
+ },
"node_modules/stream-to-it": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz",
@@ -22266,6 +23621,28 @@
"get-iterator": "^1.0.2"
}
},
+ "node_modules/stream-with-known-length-to-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.4.tgz",
+ "integrity": "sha512-ztP79ug6S+I7td0Nd2GBeIKCm+vA54c+e60FY87metz5n/l6ydPELd2lxsljz8OpIhsRM9HkIiAwz85+S5G5/A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
"node_modules/streaming-iterables": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.2.0.tgz",
@@ -22274,6 +23651,26 @@
"node": ">=10"
}
},
+ "node_modules/streamsaver": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/streamsaver/-/streamsaver-2.0.6.tgz",
+ "integrity": "sha512-LK4e7TfCV8HzuM0PKXuVUfKyCB1FtT9L0EGxsFk5Up8njj0bXK8pJM9+Wq2Nya7/jslmCQwRK39LFm55h7NBTw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ }
+ ]
+ },
+ "node_modules/streamx": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.12.5.tgz",
+ "integrity": "sha512-Y+nkFw57Z5JHT3zLlqFm3GccOy2FeYdUrrqita6Dd8kr/8enPn9GKa8IYf3/DmEKfZl/E2sWoSKUnd4qhonrgg==",
+ "dependencies": {
+ "fast-fifo": "^1.0.0",
+ "queue-tick": "^1.0.0"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -22384,7 +23781,6 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/string2compact/-/string2compact-1.3.2.tgz",
"integrity": "sha512-3XUxUgwhj7Eqh2djae35QHZZT4mN3fsO7kagZhSGmhhlrQagVvWSFuuFIWnpxFS0CdTB2PlQcaL16RDi14I8uw==",
- "dev": true,
"dependencies": {
"addr-to-ip-port": "^1.0.1",
"ipaddr.js": "^2.0.0"
@@ -22830,11 +24226,29 @@
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
},
+ "node_modules/thirty-two": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
+ "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==",
+ "engines": {
+ "node": ">=0.2.6"
+ }
+ },
"node_modules/throat": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
"integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
},
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "node_modules/throughput": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throughput/-/throughput-1.0.1.tgz",
+ "integrity": "sha512-4Mvv5P4xyVz6RM07wS3tGyZ/kPAiKtLeqznq3hK4pxDiTUSyQ5xeFlBiWxflCWexvSnxo2aAfedzKajJqihz4Q=="
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -22862,6 +24276,12 @@
"resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz",
"integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg=="
},
+ "node_modules/timeout-refresh": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz",
+ "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==",
+ "optional": true
+ },
"node_modules/timestamp-nano": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/timestamp-nano/-/timestamp-nano-1.0.0.tgz",
@@ -22886,6 +24306,11 @@
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
+ "node_modules/to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
+ },
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -22913,6 +24338,51 @@
"node": ">=0.6"
}
},
+ "node_modules/torrent-discovery": {
+ "version": "9.4.14",
+ "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-9.4.14.tgz",
+ "integrity": "sha512-IyzlrHctvqqKtN8Y2BMxNL3d2FLazs6pC2yzKOHJlXWYUFkLpZhZSaSZcAkfmZXgdjwq59N2umr1przsRDMzkA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bittorrent-dht": "^10.0.6",
+ "bittorrent-lsd": "^1.1.1",
+ "bittorrent-tracker": "^9.19.0",
+ "debug": "^4.3.4",
+ "run-parallel": "^1.2.0"
+ }
+ },
+ "node_modules/torrent-piece": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-2.0.1.tgz",
+ "integrity": "sha512-JLSOyvQVLI6JTWqioY4vFL0JkEUKQcaHQsU3loxkCvPTSttw8ePs2tFwsP4XIjw99Fz8EdOzt/4faykcbnPbCQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/tough-cookie": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
@@ -23128,6 +24598,14 @@
"node": ">=4.2.0"
}
},
+ "node_modules/uint64be": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-2.0.2.tgz",
+ "integrity": "sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ==",
+ "dependencies": {
+ "buffer-alloc": "^1.1.0"
+ }
+ },
"node_modules/uint8arrays": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz",
@@ -23320,6 +24798,12 @@
"resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz",
"integrity": "sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw=="
},
+ "node_modules/unordered-set": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz",
+ "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==",
+ "optional": true
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -23367,6 +24851,16 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-check": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
+ "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
+ "dev": true,
+ "dependencies": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -23388,6 +24882,55 @@
"node": ">=4"
}
},
+ "node_modules/ut_metadata": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-3.5.2.tgz",
+ "integrity": "sha512-3XZZuJSeoIUyMYSuDbTbVtP4KAVGHPfU8nmHFkr8LJc+THCaUXwnu/2AV+LCSLarET/hL9IlbNfYTGrt6fOVuQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.1",
+ "bitfield": "^4.0.0",
+ "debug": "^4.2.0",
+ "simple-sha1": "^3.0.1"
+ }
+ },
+ "node_modules/ut_pex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-3.0.2.tgz",
+ "integrity": "sha512-3xM88t+AVU5GR0sIY3tmRMLUS+YKiwStc7U7+ZFQ+UHQpX7BjVJOomhmtm0Bs+8R2n812Dt2ymXm01EqDrOOpQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "bencode": "^2.0.2",
+ "compact2string": "^1.4.1",
+ "string2compact": "^1.3.2"
+ }
+ },
"node_modules/utf-8-validate": {
"version": "5.0.9",
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz",
@@ -23438,6 +24981,26 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/utp-native": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz",
+ "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "napi-macros": "^2.0.0",
+ "node-gyp-build": "^4.2.0",
+ "readable-stream": "^3.0.2",
+ "timeout-refresh": "^1.0.0",
+ "unordered-set": "^2.0.1"
+ },
+ "bin": {
+ "ucat": "ucat.js"
+ },
+ "engines": {
+ "node": ">=8.12"
+ }
+ },
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -23565,6 +25128,33 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/videostream": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/videostream/-/videostream-3.2.2.tgz",
+ "integrity": "sha512-4tz23yGGeATmbzj/ZnUm6wgQ4E1lzmMXu2mUA/c0G6adtWKxm1Di5YejdZdRsK6SdkLjKjhplFFYT7r+UUDKvA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "binary-search": "^1.3.4",
+ "mediasource": "^2.2.2",
+ "mp4-box-encoding": "^1.3.0",
+ "mp4-stream": "^3.0.0",
+ "pump": "^3.0.0",
+ "range-slice-stream": "^2.0.0"
+ }
+ },
"node_modules/w3c-hr-time": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
@@ -23954,6 +25544,88 @@
"node": ">=0.8.0"
}
},
+ "node_modules/webtorrent": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-1.9.3.tgz",
+ "integrity": "sha512-+uXcRbaTJPkmG6lU9nitSq8uDRT3lb7f1r9H7gyrSu7r5alKAOdkggyYtwF/766NEyMqYIA02a2JbtMvrG9UxQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "@webtorrent/http-node": "^1.3.0",
+ "addr-to-ip-port": "^1.5.4",
+ "bitfield": "^4.1.0",
+ "bittorrent-dht": "^10.0.6",
+ "bittorrent-protocol": "^3.5.5",
+ "cache-chunk-store": "^3.2.2",
+ "chrome-net": "^3.3.4",
+ "chunk-store-stream": "^4.3.0",
+ "cpus": "^1.0.3",
+ "create-torrent": "^5.0.9",
+ "debug": "^4.3.4",
+ "end-of-stream": "^1.4.4",
+ "escape-html": "^1.0.3",
+ "fast-blob-stream": "^1.1.1",
+ "fs-chunk-store": "^3.0.1",
+ "immediate-chunk-store": "^2.2.0",
+ "join-async-iterator": "^1.1.1",
+ "load-ip-set": "^2.2.1",
+ "lt_donthave": "^1.0.1",
+ "memory-chunk-store": "^1.3.5",
+ "mime": "^3.0.0",
+ "package-json-versionify": "^1.0.4",
+ "parse-torrent": "^9.1.5",
+ "pump": "^3.0.0",
+ "queue-microtask": "^1.2.3",
+ "random-iterate": "^1.0.1",
+ "randombytes": "^2.1.0",
+ "range-parser": "^1.2.1",
+ "render-media": "^4.1.0",
+ "run-parallel": "^1.2.0",
+ "run-parallel-limit": "^1.1.0",
+ "simple-concat": "^1.0.1",
+ "simple-get": "^4.0.1",
+ "simple-peer": "^9.11.1",
+ "simple-sha1": "^3.1.0",
+ "speed-limiter": "^1.0.2",
+ "stream-with-known-length-to-buffer": "^1.0.4",
+ "streamx": "^2.12.5",
+ "throughput": "^1.0.1",
+ "torrent-discovery": "^9.4.14",
+ "torrent-piece": "^2.0.1",
+ "unordered-array-remove": "^1.0.2",
+ "ut_metadata": "^3.5.2",
+ "ut_pex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "optionalDependencies": {
+ "utp-native": "^2.5.3"
+ }
+ },
+ "node_modules/webtorrent/node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/whatwg-encoding": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
@@ -24037,6 +25709,65 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/widest-line/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -28247,6 +29978,15 @@
"@babel/types": "^7.3.0"
}
},
+ "@types/bittorrent-protocol": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@types/bittorrent-protocol/-/bittorrent-protocol-3.1.2.tgz",
+ "integrity": "sha512-7k9nivNeG7Sc8wVuBs+XjBp2u7pH8tqW3BB93/SAg3xht/cZEK+Rqkj79xSyJqyj86eA0F6n85EKkkyGki8afg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/body-parser": {
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
@@ -28522,6 +30262,15 @@
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
+ "@types/magnet-uri": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/@types/magnet-uri/-/magnet-uri-5.1.3.tgz",
+ "integrity": "sha512-FvJN1yYdLhvU6zWJ2YnWQ2GnpFLsA8bt+85WY0tLh6ehzGNrvBorjlcc53/zY43r/IKn+ctFs1nt7andwGnQCQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/mdast": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
@@ -28560,6 +30309,26 @@
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
+ "@types/parse-torrent": {
+ "version": "5.8.4",
+ "resolved": "https://registry.npmjs.org/@types/parse-torrent/-/parse-torrent-5.8.4.tgz",
+ "integrity": "sha512-FdKs5yN5iYO5Cu9gVz1Zl30CbZe6HTsqloWmCf+LfbImgSzlsUkov2+npQWCQSQ3zi/a2G5C824K0UpZ2sRufA==",
+ "dev": true,
+ "requires": {
+ "@types/magnet-uri": "*",
+ "@types/node": "*",
+ "@types/parse-torrent-file": "*"
+ }
+ },
+ "@types/parse-torrent-file": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/parse-torrent-file/-/parse-torrent-file-4.0.3.tgz",
+ "integrity": "sha512-dFkPnJPKiFWiGX+HXmyTVt2js3k0d9dThmUxX8nfGC22hbyZ5BTmetsEl45sQhHLcFo43njVrIKMXM3F1ahXRw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/prettier": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
@@ -28663,6 +30432,15 @@
"@types/node": "*"
}
},
+ "@types/simple-peer": {
+ "version": "9.11.5",
+ "resolved": "https://registry.npmjs.org/@types/simple-peer/-/simple-peer-9.11.5.tgz",
+ "integrity": "sha512-haXgWcAa3Y3Sn+T8lzkE4ErQUpYzhW6Cz2lh00RhQTyWt+xZ3s87wJPztUxlqSdFRqGhe2MQIBd0XsyHP3No4w==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/sockjs": {
"version": "0.3.33",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
@@ -28676,6 +30454,12 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
},
+ "@types/streamsaver": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/streamsaver/-/streamsaver-2.0.1.tgz",
+ "integrity": "sha512-I49NtT8w6syBI3Zg3ixCyygTHoTVMY0z2TMRcTgccdIsVd2MwlKk7ITLHLsJtgchUHcOd7QEARG9h0ifcA6l2Q==",
+ "dev": true
+ },
"@types/testing-library__jest-dom": {
"version": "5.14.5",
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
@@ -28700,6 +30484,18 @@
"integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
"dev": true
},
+ "@types/webtorrent": {
+ "version": "0.109.3",
+ "resolved": "https://registry.npmjs.org/@types/webtorrent/-/webtorrent-0.109.3.tgz",
+ "integrity": "sha512-EJLsxMEcEjPXHcBqL6TRAbUwIpxAul5ULrXHJ0zwig7Oe70FS6dAzCWLq4MBafX3QrQG1DzGAS0fS8iJEOjD0g==",
+ "dev": true,
+ "requires": {
+ "@types/bittorrent-protocol": "*",
+ "@types/node": "*",
+ "@types/parse-torrent": "*",
+ "@types/simple-peer": "*"
+ }
+ },
"@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -29139,6 +30935,22 @@
"@xtuc/long": "4.2.2"
}
},
+ "@webtorrent/http-node": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz",
+ "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==",
+ "requires": {
+ "freelist": "^1.0.3",
+ "http-parser-js": "^0.4.3"
+ },
+ "dependencies": {
+ "http-parser-js": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+ "integrity": "sha512-u8u5ZaG0Tr/VvHlucK2ufMuOp4/5bvwgneXle+y228K5rMbJOlVjThONcaAw3ikAy8b2OO9RfEucdMHFz3UWMA=="
+ }
+ }
+ },
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -29149,6 +30961,12 @@
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
},
+ "@zeit/schemas": {
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
+ "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
+ "dev": true
+ },
"abab": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@@ -29250,8 +31068,7 @@
"addr-to-ip-port": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz",
- "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg==",
- "dev": true
+ "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg=="
},
"address": {
"version": "1.2.0",
@@ -29327,6 +31144,15 @@
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"requires": {}
},
+ "ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.1.0"
+ }
+ },
"ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -29371,6 +31197,12 @@
"picomatch": "^2.0.4"
}
},
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true
+ },
"arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -29548,6 +31380,11 @@
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
},
+ "b4a": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.1.tgz",
+ "integrity": "sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA=="
+ },
"babel-jest": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
@@ -29804,8 +31641,12 @@
"bencode": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz",
- "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==",
- "dev": true
+ "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w=="
+ },
+ "bep53-range": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-1.1.1.tgz",
+ "integrity": "sha512-ct6s33iiwRCUPp9KXnJ4QMWDgHIgaw36caK/5XEQ9L8dCzSQlJt1Vk6VmHh1VD4AlGCAI4C2zmtfItifBBPrhQ=="
},
"bfj": {
"version": "7.0.2",
@@ -29833,6 +31674,11 @@
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
},
+ "binary-search": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz",
+ "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA=="
+ },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -29846,17 +31692,61 @@
"resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
"integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
},
+ "bitfield": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.1.0.tgz",
+ "integrity": "sha512-6cEDG3K+PK9f+B7WyhWYjp09bqSa+uaAaecVA7Y5giFixyVe1s6HKGnvOqYNR4Mi4fBMjfDPLBpHkKvzzgP7kg=="
+ },
+ "bittorrent-dht": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-10.0.6.tgz",
+ "integrity": "sha512-Odmfmo36/vr0E4PWicans0fesjCfRib2daGaYfB8WHljPTO/U2820EFOA9HBhzdzekGBhBHlSPVi6Jf9vu7/yQ==",
+ "requires": {
+ "bencode": "^2.0.3",
+ "debug": "^4.3.4",
+ "k-bucket": "^5.1.0",
+ "k-rpc": "^5.1.0",
+ "last-one-wins": "^1.0.4",
+ "lru": "^3.1.0",
+ "randombytes": "^2.1.0",
+ "record-cache": "^1.2.0",
+ "simple-sha1": "^3.1.0"
+ }
+ },
+ "bittorrent-lsd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-1.1.1.tgz",
+ "integrity": "sha512-dWxU2Mr2lU6jzIKgZrTsXgeXDCIcYpR1b6f2n89fn7juwPAYbNU04OgWjcQPLiNliY0filsX5CQAWntVErpk+Q==",
+ "requires": {
+ "chrome-dgram": "^3.0.6",
+ "debug": "^4.2.0"
+ }
+ },
"bittorrent-peerid": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.4.tgz",
- "integrity": "sha512-Xzk1FJFHmsc9H8IKFtDUkfAZIT1HW8r6UqajfZBBxWmpA1v7FsPO8xPFtnFzCqcXlPN3yi8dDmlqZCemyB7P8w==",
- "dev": true
+ "integrity": "sha512-Xzk1FJFHmsc9H8IKFtDUkfAZIT1HW8r6UqajfZBBxWmpA1v7FsPO8xPFtnFzCqcXlPN3yi8dDmlqZCemyB7P8w=="
+ },
+ "bittorrent-protocol": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-3.5.5.tgz",
+ "integrity": "sha512-cfzO//WtJGNLHXS58a4exJCSq1U0dkP2DZCQxgADInYFPdOfV1EmtpEN9toLOluVCXJRYAdwW5H6Li/hrn697A==",
+ "requires": {
+ "bencode": "^2.0.2",
+ "bitfield": "^4.0.0",
+ "debug": "^4.3.4",
+ "randombytes": "^2.1.0",
+ "rc4": "^0.1.5",
+ "readable-stream": "^3.6.0",
+ "simple-sha1": "^3.1.0",
+ "speedometer": "^1.1.0",
+ "unordered-array-remove": "^1.0.2"
+ }
},
"bittorrent-tracker": {
"version": "9.19.0",
"resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-9.19.0.tgz",
"integrity": "sha512-09d0aD2b+MC+zWvWajkUAKkYMynYW4tMbTKiRSthKtJZbafzEoNQSUHyND24SoCe3ZOb2fKfa6fu2INAESL9wA==",
- "dev": true,
"requires": {
"bencode": "^2.0.1",
"bittorrent-peerid": "^1.3.3",
@@ -29888,8 +31778,7 @@
"bn.js": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
}
}
},
@@ -29903,6 +31792,11 @@
"readable-stream": "^3.4.0"
}
},
+ "blob-to-buffer": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz",
+ "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA=="
+ },
"blob-to-it": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz",
@@ -29911,6 +31805,19 @@
"browser-readablestream-to-it": "^1.0.3"
}
},
+ "block-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.0.1.tgz",
+ "integrity": "sha512-ral9Gh8BXqVkh4lnhLLL5QJ67+VMOBNzsHJZX4n+Pwer9bzcSM2ZOjTLMErkWWETvnis+ZP1a6EULebjEg3bTA=="
+ },
+ "block-stream2": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz",
+ "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==",
+ "requires": {
+ "readable-stream": "^3.4.0"
+ }
+ },
"blockstore-datastore-adapter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-1.0.0.tgz",
@@ -29997,6 +31904,85 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
+ "boxen": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
+ "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
+ "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+ "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ },
+ "type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ }
+ }
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -30029,6 +32015,11 @@
"resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz",
"integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw=="
},
+ "browserify-package-json": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-package-json/-/browserify-package-json-1.0.1.tgz",
+ "integrity": "sha512-CikZxJGNyNOBERbeALo0NUUeJgHs5NyEvuYChX/PcsBV91TAvEq4hYDaWSenSieT8XwAutNnS3FGvyzIMOughQ=="
+ },
"browserslist": {
"version": "4.21.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
@@ -30062,6 +32053,25 @@
"ieee754": "^1.2.1"
}
},
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -30086,6 +32096,15 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
},
+ "cache-chunk-store": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz",
+ "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==",
+ "requires": {
+ "lru": "^3.1.0",
+ "queue-microtask": "^1.2.3"
+ }
+ },
"call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -30170,6 +32189,66 @@
"supports-color": "^5.3.0"
}
},
+ "chalk-template": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+ "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -30224,17 +32303,41 @@
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz",
"integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==",
- "dev": true,
"requires": {
"inherits": "^2.0.4",
"run-series": "^1.1.9"
}
},
+ "chrome-dns": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz",
+ "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==",
+ "requires": {
+ "chrome-net": "^3.3.2"
+ }
+ },
+ "chrome-net": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz",
+ "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==",
+ "requires": {
+ "inherits": "^2.0.1"
+ }
+ },
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
},
+ "chunk-store-stream": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/chunk-store-stream/-/chunk-store-stream-4.3.0.tgz",
+ "integrity": "sha512-qby+/RXoiMoTVtPiylWZt7KFF1jy6M829TzMi2hxZtBIH9ptV19wxcft6zGiXLokJgCbuZPGNGab6DWHqiSEKw==",
+ "requires": {
+ "block-stream2": "^2.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
"ci-info": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz",
@@ -30275,6 +32378,23 @@
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
},
+ "cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
+ "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.2.0",
+ "execa": "^5.1.1",
+ "is-wsl": "^2.2.0"
+ }
+ },
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -30288,8 +32408,7 @@
"clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
},
"clsx": {
"version": "1.2.1",
@@ -30376,7 +32495,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz",
"integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==",
- "dev": true,
"requires": {
"ipaddr.js": ">= 0.1.5"
}
@@ -30537,6 +32655,29 @@
"yaml": "^1.10.0"
}
},
+ "cpus": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz",
+ "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA=="
+ },
+ "create-torrent": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-5.0.9.tgz",
+ "integrity": "sha512-WQ/bMe+aCBSa5EonIkgw7CTM/1JnJDQuLJhA78omSWvuEbXDwaUy0rG3a+IYt+EiO+rdTLxdsBwrsn/wfWOMQA==",
+ "requires": {
+ "bencode": "^2.0.3",
+ "block-iterator": "^1.0.1",
+ "fast-readable-async-iterator": "^1.1.1",
+ "is-file": "^1.0.0",
+ "join-async-iterator": "^1.1.1",
+ "junk": "^3.1.0",
+ "minimist": "^1.2.7",
+ "piece-length": "^2.0.1",
+ "queue-microtask": "^1.2.3",
+ "run-parallel": "^1.2.0",
+ "simple-sha1": "^3.1.0"
+ }
+ },
"cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -30948,7 +33089,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
"requires": {
"mimic-response": "^3.1.0"
}
@@ -30958,6 +33098,12 @@
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
"integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="
},
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -31071,6 +33217,11 @@
}
}
},
+ "detectincognitojs": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/detectincognitojs/-/detectincognitojs-1.1.2.tgz",
+ "integrity": "sha512-7b+0/zJ76ZTeEtNl9MCPEKgFauEw/LerdlwnEnnrgYCFhp5FL+RJGD13EF/R9FYqrVxL7H5fgCyBdzJ6BtkPhg=="
+ },
"detective": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
@@ -31234,6 +33385,12 @@
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
},
+ "eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -31333,7 +33490,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
"requires": {
"once": "^1.4.0"
}
@@ -32276,6 +34432,15 @@
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
},
+ "fast-blob-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fast-blob-stream/-/fast-blob-stream-1.1.1.tgz",
+ "integrity": "sha512-wdRazMMeM2pl8hq1lFG8fzix8p1VLAJunTTE2RADiFBwbUfZwybUm6IwPrmMS7qTthiayr166NoXeqWe3hfR5w==",
+ "requires": {
+ "fast-readable-async-iterator": "^1.1.1",
+ "streamx": "^2.12.4"
+ }
+ },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -32323,6 +34488,28 @@
"resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
"integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
},
+ "fast-readable-async-iterator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fast-readable-async-iterator/-/fast-readable-async-iterator-1.1.1.tgz",
+ "integrity": "sha512-xEHkLUEmStETI+15zhglJLO9TjXxNkkp2ldEfYVZdcqxFhM172EfGl1irI6mVlTxXspYKH1/kjevnt/XSsPeFA=="
+ },
+ "fast-url-parser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
+ "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ }
+ }
+ },
"fast-write-atomic": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz",
@@ -32665,11 +34852,28 @@
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
},
+ "freelist": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz",
+ "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg=="
+ },
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
},
+ "fs-chunk-store": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-3.0.1.tgz",
+ "integrity": "sha512-YrOFuXtUJQBkOZ2QBXBoIrjLJ/TNTpEaGnxV+TmL1qaW5J4ah6lxMh/X9pb3To+hbaoT/pRuBXLkkqoavQoQFw==",
+ "requires": {
+ "queue-microtask": "^1.2.2",
+ "random-access-file": "^2.0.1",
+ "randombytes": "^2.0.3",
+ "run-parallel": "^1.1.2",
+ "thunky": "^1.0.1"
+ }
+ },
"fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -32767,6 +34971,11 @@
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
},
+ "get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg=="
+ },
"get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -33263,6 +35472,22 @@
"resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz",
"integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg=="
},
+ "idb-chunk-store": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/idb-chunk-store/-/idb-chunk-store-1.0.1.tgz",
+ "integrity": "sha512-1OtzeUFLfvK/PSMPs6DJumwfgQgGDiYW2owxdAJpra44/EaXsGcrHzyvdTCTulzunS/xf22woZOIqyk2PfWWfA==",
+ "requires": {
+ "idb": "^6.1.2",
+ "queue-microtask": "^1.2.3"
+ },
+ "dependencies": {
+ "idb": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz",
+ "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw=="
+ }
+ }
+ },
"identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -33286,6 +35511,14 @@
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
+ "immediate-chunk-store": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz",
+ "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==",
+ "requires": {
+ "queue-microtask": "^1.2.3"
+ }
+ },
"immer": {
"version": "9.0.15",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
@@ -33418,8 +35651,7 @@
"ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
- "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
- "dev": true
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
},
"ip-address": {
"version": "8.1.0",
@@ -33442,6 +35674,14 @@
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
"integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q=="
},
+ "ip-set": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.1.0.tgz",
+ "integrity": "sha512-JdHz4tSMx1IeFj8yEcQU0i58qiSkOlmZXkZ8+HJ0ROV5KcgLRDO9F703oJ1GeZCvqggrcCbmagD/V7hghY62wA==",
+ "requires": {
+ "ip": "^1.1.5"
+ }
+ },
"ipaddr.js": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
@@ -33819,6 +36059,11 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
+ "is-ascii": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-ascii/-/is-ascii-1.0.0.tgz",
+ "integrity": "sha512-CXMaB/+EWCSGlLPs7ZlXRBpaPRRSRnrOfq0N3+RGeCZfqQaHQtiDLlkPCn63+LCkRUc1iRE0AXiI+sm2/Hi3qQ=="
+ },
"is-bigint": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
@@ -33900,6 +36145,11 @@
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
},
+ "is-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
+ "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ=="
+ },
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -33991,6 +36241,12 @@
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
"integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
},
+ "is-port-reachable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
+ "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
+ "dev": true
+ },
"is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -35789,6 +38045,11 @@
}
}
},
+ "join-async-iterator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz",
+ "integrity": "sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ=="
+ },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -35946,6 +38207,11 @@
}
}
},
+ "junk": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
+ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ=="
+ },
"just-debounce-it": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.5.0.tgz",
@@ -35969,6 +38235,27 @@
"randombytes": "^2.1.0"
}
},
+ "k-rpc": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz",
+ "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==",
+ "requires": {
+ "k-bucket": "^5.0.0",
+ "k-rpc-socket": "^1.7.2",
+ "randombytes": "^2.0.5"
+ }
+ },
+ "k-rpc-socket": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz",
+ "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==",
+ "requires": {
+ "bencode": "^2.0.0",
+ "chrome-dgram": "^3.0.2",
+ "chrome-dns": "^1.0.0",
+ "chrome-net": "^3.3.2"
+ }
+ },
"keypair": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.4.tgz",
@@ -36002,6 +38289,11 @@
"language-subtag-registry": "~0.3.2"
}
},
+ "last-one-wins": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz",
+ "integrity": "sha512-t+KLJFkHPQk8lfN6WBOiGkiUXoub+gnb2XTYI2P3aiISL+94xgZ1vgz1SXN/N4hthuOoLXarXfBZPUruyjQtfA=="
+ },
"level": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/level/-/level-7.0.1.tgz",
@@ -36645,11 +38937,28 @@
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
"integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg=="
},
+ "limiter": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
+ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
+ },
"lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
+ "load-ip-set": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-2.2.1.tgz",
+ "integrity": "sha512-G3hQXehU2LTOp52e+lPffpK4EvidfjwbvHaGqmFcp4ptiZagR4xFdL+D08kMX906dxeqZyWhfonEjdUxrWcldg==",
+ "requires": {
+ "ip-set": "^2.1.0",
+ "netmask": "^2.0.1",
+ "once": "^1.4.0",
+ "simple-get": "^4.0.0",
+ "split": "^1.0.1"
+ }
+ },
"loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -36775,7 +39084,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz",
"integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==",
- "dev": true,
"requires": {
"inherits": "^2.0.1"
}
@@ -36788,6 +39096,15 @@
"yallist": "^4.0.0"
}
},
+ "lt_donthave": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-1.0.1.tgz",
+ "integrity": "sha512-PfOXfDN9GnUjlNHjjxKQuMxPC8s12iSrnmg+Ff1BU1uLn7S1BFAKzpZCu6Gwg3WsCUvTZrZoDSHvy6B/j+N4/Q==",
+ "requires": {
+ "debug": "^4.2.0",
+ "unordered-array-remove": "^1.0.2"
+ }
+ },
"ltgt": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
@@ -36814,6 +39131,15 @@
"sourcemap-codec": "^1.4.8"
}
},
+ "magnet-uri": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-6.2.0.tgz",
+ "integrity": "sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==",
+ "requires": {
+ "bep53-range": "^1.1.0",
+ "thirty-two": "^1.0.2"
+ }
+ },
"make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -37010,6 +39336,16 @@
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
},
+ "mediasource": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/mediasource/-/mediasource-2.4.0.tgz",
+ "integrity": "sha512-SKUMrbFMHgiCUZFOWZcL0aiF/KgHx9SPIKzxrl6+7nMUMDK/ZnOmJdY/9wKzYeM0g3mybt3ueg+W+/mrYfmeFQ==",
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "to-arraybuffer": "^1.0.1"
+ }
+ },
"memfs": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
@@ -37018,6 +39354,14 @@
"fs-monkey": "^1.0.3"
}
},
+ "memory-chunk-store": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz",
+ "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==",
+ "requires": {
+ "queue-microtask": "^1.2.3"
+ }
+ },
"menoetius": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/menoetius/-/menoetius-0.0.2.tgz",
@@ -37410,8 +39754,7 @@
"mimic-response": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
},
"min-indent": {
"version": "1.0.1",
@@ -37482,9 +39825,9 @@
}
},
"minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
},
"mkdirp": {
"version": "0.5.6",
@@ -37494,6 +39837,11 @@
"minimist": "^1.2.6"
}
},
+ "mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ },
"mortice": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz",
@@ -37505,6 +39853,25 @@
"promise-timeout": "^1.3.0"
}
},
+ "mp4-box-encoding": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mp4-box-encoding/-/mp4-box-encoding-1.4.1.tgz",
+ "integrity": "sha512-2/PRtGGiqPc/VEhbm7xAQ+gbb7yzHjjMAv6MpAifr5pCpbh3fQUdj93uNgwPiTppAGu8HFKe3PeU+OdRyAxStA==",
+ "requires": {
+ "uint64be": "^2.0.2"
+ }
+ },
+ "mp4-stream": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/mp4-stream/-/mp4-stream-3.1.3.tgz",
+ "integrity": "sha512-DUT8f0x2jHbZjNMdqe9h6lZdt6RENWTTdGn8z3TXa4uEsoltuNY9lCCij84mdm0q7xcV0E2W25WRxlKBMo4hSw==",
+ "requires": {
+ "mp4-box-encoding": "^1.3.0",
+ "next-event": "^1.0.0",
+ "queue-microtask": "^1.2.2",
+ "readable-stream": "^3.0.6"
+ }
+ },
"mprocs": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/mprocs/-/mprocs-0.6.3.tgz",
@@ -37669,6 +40036,11 @@
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
"integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
},
+ "next-event": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/next-event/-/next-event-1.0.0.tgz",
+ "integrity": "sha512-IXGPhl/yAiUU597gz+k5OYxYZkmLSWTcPPcpQjWABud9OK6m/ZNLrVdcEu4e7NgmOObFIhgZVg1jecPYT/6AoA=="
+ },
"no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -38062,6 +40434,14 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
+ "package-json-versionify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/package-json-versionify/-/package-json-versionify-1.0.4.tgz",
+ "integrity": "sha512-mtKKtCeSZMtWcc5hHJS6OlEGP7J9g7WN6vWCCZi2hCXFag/Zmjokh6WFFTQb9TuMnBcZpRjhhMQyOyglPCAahw==",
+ "requires": {
+ "browserify-package-json": "^1.0.0"
+ }
+ },
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
@@ -38120,6 +40500,20 @@
"lines-and-columns": "^1.1.6"
}
},
+ "parse-torrent": {
+ "version": "9.1.5",
+ "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-9.1.5.tgz",
+ "integrity": "sha512-K8FXRwTOaZMI0/xuv0dpng1MVHZRtMJ0jRWBJ3qZWVNTrC1MzWUxm9QwaXDz/2qPhV2XC4UIHI92IGHwseAwaA==",
+ "requires": {
+ "bencode": "^2.0.2",
+ "blob-to-buffer": "^1.2.9",
+ "get-stdin": "^8.0.0",
+ "magnet-uri": "^6.2.0",
+ "queue-microtask": "^1.2.3",
+ "simple-get": "^4.0.1",
+ "simple-sha1": "^3.1.0"
+ }
+ },
"parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
@@ -38149,6 +40543,12 @@
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -38238,6 +40638,11 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
},
+ "piece-length": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz",
+ "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug=="
+ },
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -39313,7 +41718,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -39347,6 +41751,11 @@
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
+ "queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
+ },
"quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
@@ -39373,11 +41782,29 @@
"performance-now": "^2.1.0"
}
},
+ "random-access-file": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.2.1.tgz",
+ "integrity": "sha512-RGU0xmDqdOyEiynob1KYSeh8+9c9Td1MJ74GT1viMEYAn8SJ9oBtWCXLsYZukCF46yududHOdM449uRYbzBrZQ==",
+ "requires": {
+ "mkdirp-classic": "^0.5.2",
+ "random-access-storage": "^1.1.1"
+ }
+ },
+ "random-access-storage": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.4.3.tgz",
+ "integrity": "sha512-D5e2iIC5dNENWyBxsjhEnNOMCwZZ64TARK6dyMN+3g4OTC4MJxyjh9hKLjTGoNhDOPrgjI+YlFEHFnrp/cSnzQ==",
+ "requires": {
+ "events": "^3.3.0",
+ "inherits": "^2.0.3",
+ "queue-tick": "^1.0.0"
+ }
+ },
"random-iterate": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz",
- "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==",
- "dev": true
+ "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA=="
},
"randombytes": {
"version": "2.1.0",
@@ -39392,6 +41819,14 @@
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
+ "range-slice-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/range-slice-stream/-/range-slice-stream-2.0.0.tgz",
+ "integrity": "sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q==",
+ "requires": {
+ "readable-stream": "^3.0.2"
+ }
+ },
"raw-body": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
@@ -39418,6 +41853,31 @@
}
}
},
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true
+ }
+ }
+ },
+ "rc4": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz",
+ "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA=="
+ },
"react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -39724,6 +42184,14 @@
"ms": "^2.1.1"
}
},
+ "record-cache": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz",
+ "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==",
+ "requires": {
+ "b4a": "^1.3.1"
+ }
+ },
"recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
@@ -39827,6 +42295,25 @@
"unicode-match-property-value-ecmascript": "^2.0.0"
}
},
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.0.1"
+ }
+ },
"regjsgen": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
@@ -39884,6 +42371,18 @@
"unified": "^10.0.0"
}
},
+ "render-media": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/render-media/-/render-media-4.1.0.tgz",
+ "integrity": "sha512-F5BMWDmgATEoyPCtKjmGNTGN1ghoZlfRQ3MJh8dS/MrvIUIxupiof/Y9uahChipXcqQ57twVbgMmyQmuO1vokw==",
+ "requires": {
+ "debug": "^4.2.0",
+ "is-ascii": "^1.0.0",
+ "mediasource": "^2.4.0",
+ "stream-to-blob-url": "^3.0.2",
+ "videostream": "^3.2.2"
+ }
+ },
"renderkid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
@@ -40124,8 +42623,12 @@
"run-series": {
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz",
- "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==",
- "dev": true
+ "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g=="
+ },
+ "rusha": {
+ "version": "0.8.14",
+ "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz",
+ "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA=="
},
"sade": {
"version": "1.8.1",
@@ -40299,6 +42802,102 @@
"randombytes": "^2.1.0"
}
},
+ "serve": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-14.1.2.tgz",
+ "integrity": "sha512-luwVfJwbeE7dhCKeRU0vIBpt4bXdbAfzwsWJIQ5eqrIW2e+4nLWXbSlZ0WzelSFHQq+FlueOW6dr90jEewS9zw==",
+ "dev": true,
+ "requires": {
+ "@zeit/schemas": "2.21.0",
+ "ajv": "8.11.0",
+ "arg": "5.0.2",
+ "boxen": "7.0.0",
+ "chalk": "5.0.1",
+ "chalk-template": "0.4.0",
+ "clipboardy": "3.0.0",
+ "compression": "1.7.4",
+ "is-port-reachable": "4.0.0",
+ "serve-handler": "6.1.5",
+ "update-check": "1.5.4"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+ "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "chalk": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
+ "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ }
+ }
+ },
+ "serve-handler": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz",
+ "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "fast-url-parser": "1.1.3",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.2",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "2.2.1",
+ "range-parser": "1.2.0"
+ },
+ "dependencies": {
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "path-to-regexp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
+ "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
+ "dev": true
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
+ "dev": true
+ }
+ }
+ },
"serve-index": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
@@ -40421,14 +43020,12 @@
"simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
},
"simple-get": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
"integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "dev": true,
"requires": {
"decompress-response": "^6.0.0",
"once": "^1.3.1",
@@ -40439,7 +43036,6 @@
"version": "9.11.1",
"resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.11.1.tgz",
"integrity": "sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==",
- "dev": true,
"requires": {
"buffer": "^6.0.3",
"debug": "^4.3.2",
@@ -40455,11 +43051,19 @@
"resolved": "https://registry.npmjs.org/simple-peer-light/-/simple-peer-light-9.10.0.tgz",
"integrity": "sha512-E0INlXmVy2XvVkyMallKYQlcTAD8S0ov+goSVDGD2k9vwkjBCOyFmESoUsv0Pi7P3nSh6TuMIIi+S/YRok9WLg=="
},
+ "simple-sha1": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-3.1.0.tgz",
+ "integrity": "sha512-ArTptMRC1v08H8ihPD6l0wesKvMfF9e8XL5rIHPanI7kGOsSsbY514MwVu6X1PITHCTB2F08zB7cyEbfc4wQjg==",
+ "requires": {
+ "queue-microtask": "^1.2.2",
+ "rusha": "^0.8.13"
+ }
+ },
"simple-websocket": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.1.0.tgz",
"integrity": "sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ==",
- "dev": true,
"requires": {
"debug": "^4.3.1",
"queue-microtask": "^1.2.2",
@@ -40481,8 +43085,7 @@
"smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
},
"socket.io": {
"version": "4.5.1",
@@ -40548,7 +43151,6 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz",
"integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==",
- "dev": true,
"requires": {
"ip": "^2.0.0",
"smart-buffer": "^4.2.0"
@@ -40557,8 +43159,7 @@
"ip": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
- "dev": true
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
}
}
},
@@ -40658,6 +43259,28 @@
"wbuf": "^1.7.3"
}
},
+ "speed-limiter": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz",
+ "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==",
+ "requires": {
+ "limiter": "^1.1.5",
+ "streamx": "^2.10.3"
+ }
+ },
+ "speedometer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.1.0.tgz",
+ "integrity": "sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ=="
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "requires": {
+ "through": "2"
+ }
+ },
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -40716,6 +43339,19 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
},
+ "stream-to-blob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-to-blob/-/stream-to-blob-2.0.1.tgz",
+ "integrity": "sha512-GXlqXt3svqwIVWoICenix5Poxi4KbCF0BdXXUbpU1X4vq1V8wmjiEIU3aFJzCGNFpKxfbnG0uoowS3nKUgSPYg=="
+ },
+ "stream-to-blob-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-to-blob-url/-/stream-to-blob-url-3.0.2.tgz",
+ "integrity": "sha512-PS6wT2ZyyR38Cy+lE6PBEI1ZmO2HdzZoLeDGG0zZbYikCZd0dh8FUoSeFzgWLItpBYw1WJmPVRLpykRV+lAWLQ==",
+ "requires": {
+ "stream-to-blob": "^2.0.0"
+ }
+ },
"stream-to-it": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz",
@@ -40724,11 +43360,33 @@
"get-iterator": "^1.0.2"
}
},
+ "stream-with-known-length-to-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.4.tgz",
+ "integrity": "sha512-ztP79ug6S+I7td0Nd2GBeIKCm+vA54c+e60FY87metz5n/l6ydPELd2lxsljz8OpIhsRM9HkIiAwz85+S5G5/A==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
"streaming-iterables": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.2.0.tgz",
"integrity": "sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA=="
},
+ "streamsaver": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/streamsaver/-/streamsaver-2.0.6.tgz",
+ "integrity": "sha512-LK4e7TfCV8HzuM0PKXuVUfKyCB1FtT9L0EGxsFk5Up8njj0bXK8pJM9+Wq2Nya7/jslmCQwRK39LFm55h7NBTw=="
+ },
+ "streamx": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.12.5.tgz",
+ "integrity": "sha512-Y+nkFw57Z5JHT3zLlqFm3GccOy2FeYdUrrqita6Dd8kr/8enPn9GKa8IYf3/DmEKfZl/E2sWoSKUnd4qhonrgg==",
+ "requires": {
+ "fast-fifo": "^1.0.0",
+ "queue-tick": "^1.0.0"
+ }
+ },
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -40814,7 +43472,6 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/string2compact/-/string2compact-1.3.2.tgz",
"integrity": "sha512-3XUxUgwhj7Eqh2djae35QHZZT4mN3fsO7kagZhSGmhhlrQagVvWSFuuFIWnpxFS0CdTB2PlQcaL16RDi14I8uw==",
- "dev": true,
"requires": {
"addr-to-ip-port": "^1.0.1",
"ipaddr.js": "^2.0.0"
@@ -41138,11 +43795,26 @@
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
},
+ "thirty-two": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
+ "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA=="
+ },
"throat": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
"integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w=="
},
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "throughput": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throughput/-/throughput-1.0.1.tgz",
+ "integrity": "sha512-4Mvv5P4xyVz6RM07wS3tGyZ/kPAiKtLeqznq3hK4pxDiTUSyQ5xeFlBiWxflCWexvSnxo2aAfedzKajJqihz4Q=="
+ },
"thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -41172,6 +43844,12 @@
}
}
},
+ "timeout-refresh": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz",
+ "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==",
+ "optional": true
+ },
"timestamp-nano": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/timestamp-nano/-/timestamp-nano-1.0.0.tgz",
@@ -41190,6 +43868,11 @@
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
+ },
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -41208,6 +43891,23 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
+ "torrent-discovery": {
+ "version": "9.4.14",
+ "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-9.4.14.tgz",
+ "integrity": "sha512-IyzlrHctvqqKtN8Y2BMxNL3d2FLazs6pC2yzKOHJlXWYUFkLpZhZSaSZcAkfmZXgdjwq59N2umr1przsRDMzkA==",
+ "requires": {
+ "bittorrent-dht": "^10.0.6",
+ "bittorrent-lsd": "^1.1.1",
+ "bittorrent-tracker": "^9.19.0",
+ "debug": "^4.3.4",
+ "run-parallel": "^1.2.0"
+ }
+ },
+ "torrent-piece": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-2.0.1.tgz",
+ "integrity": "sha512-JLSOyvQVLI6JTWqioY4vFL0JkEUKQcaHQsU3loxkCvPTSttw8ePs2tFwsP4XIjw99Fz8EdOzt/4faykcbnPbCQ=="
+ },
"tough-cookie": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
@@ -41374,6 +44074,14 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ=="
},
+ "uint64be": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-2.0.2.tgz",
+ "integrity": "sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ==",
+ "requires": {
+ "buffer-alloc": "^1.1.0"
+ }
+ },
"uint8arrays": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz",
@@ -41509,6 +44217,12 @@
"resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz",
"integrity": "sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw=="
},
+ "unordered-set": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz",
+ "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==",
+ "optional": true
+ },
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -41533,6 +44247,16 @@
"picocolors": "^1.0.0"
}
},
+ "update-check": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
+ "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
+ "dev": true,
+ "requires": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -41550,6 +44274,27 @@
"nan": "^2.14.2"
}
},
+ "ut_metadata": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-3.5.2.tgz",
+ "integrity": "sha512-3XZZuJSeoIUyMYSuDbTbVtP4KAVGHPfU8nmHFkr8LJc+THCaUXwnu/2AV+LCSLarET/hL9IlbNfYTGrt6fOVuQ==",
+ "requires": {
+ "bencode": "^2.0.1",
+ "bitfield": "^4.0.0",
+ "debug": "^4.2.0",
+ "simple-sha1": "^3.0.1"
+ }
+ },
+ "ut_pex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-3.0.2.tgz",
+ "integrity": "sha512-3xM88t+AVU5GR0sIY3tmRMLUS+YKiwStc7U7+ZFQ+UHQpX7BjVJOomhmtm0Bs+8R2n812Dt2ymXm01EqDrOOpQ==",
+ "requires": {
+ "bencode": "^2.0.2",
+ "compact2string": "^1.4.1",
+ "string2compact": "^1.3.2"
+ }
+ },
"utf-8-validate": {
"version": "5.0.9",
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz",
@@ -41590,6 +44335,19 @@
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
},
+ "utp-native": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz",
+ "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==",
+ "optional": true,
+ "requires": {
+ "napi-macros": "^2.0.0",
+ "node-gyp-build": "^4.2.0",
+ "readable-stream": "^3.0.2",
+ "timeout-refresh": "^1.0.0",
+ "unordered-set": "^2.0.1"
+ }
+ },
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -41690,6 +44448,19 @@
"unist-util-stringify-position": "^3.0.0"
}
},
+ "videostream": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/videostream/-/videostream-3.2.2.tgz",
+ "integrity": "sha512-4tz23yGGeATmbzj/ZnUm6wgQ4E1lzmMXu2mUA/c0G6adtWKxm1Di5YejdZdRsK6SdkLjKjhplFFYT7r+UUDKvA==",
+ "requires": {
+ "binary-search": "^1.3.4",
+ "mediasource": "^2.2.2",
+ "mp4-box-encoding": "^1.3.0",
+ "mp4-stream": "^3.0.0",
+ "pump": "^3.0.0",
+ "range-slice-stream": "^2.0.0"
+ }
+ },
"w3c-hr-time": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
@@ -41966,6 +44737,65 @@
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
},
+ "webtorrent": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-1.9.3.tgz",
+ "integrity": "sha512-+uXcRbaTJPkmG6lU9nitSq8uDRT3lb7f1r9H7gyrSu7r5alKAOdkggyYtwF/766NEyMqYIA02a2JbtMvrG9UxQ==",
+ "requires": {
+ "@webtorrent/http-node": "^1.3.0",
+ "addr-to-ip-port": "^1.5.4",
+ "bitfield": "^4.1.0",
+ "bittorrent-dht": "^10.0.6",
+ "bittorrent-protocol": "^3.5.5",
+ "cache-chunk-store": "^3.2.2",
+ "chrome-net": "^3.3.4",
+ "chunk-store-stream": "^4.3.0",
+ "cpus": "^1.0.3",
+ "create-torrent": "^5.0.9",
+ "debug": "^4.3.4",
+ "end-of-stream": "^1.4.4",
+ "escape-html": "^1.0.3",
+ "fast-blob-stream": "^1.1.1",
+ "fs-chunk-store": "^3.0.1",
+ "immediate-chunk-store": "^2.2.0",
+ "join-async-iterator": "^1.1.1",
+ "load-ip-set": "^2.2.1",
+ "lt_donthave": "^1.0.1",
+ "memory-chunk-store": "^1.3.5",
+ "mime": "^3.0.0",
+ "package-json-versionify": "^1.0.4",
+ "parse-torrent": "^9.1.5",
+ "pump": "^3.0.0",
+ "queue-microtask": "^1.2.3",
+ "random-iterate": "^1.0.1",
+ "randombytes": "^2.1.0",
+ "range-parser": "^1.2.1",
+ "render-media": "^4.1.0",
+ "run-parallel": "^1.2.0",
+ "run-parallel-limit": "^1.1.0",
+ "simple-concat": "^1.0.1",
+ "simple-get": "^4.0.1",
+ "simple-peer": "^9.11.1",
+ "simple-sha1": "^3.1.0",
+ "speed-limiter": "^1.0.2",
+ "stream-with-known-length-to-buffer": "^1.0.4",
+ "streamx": "^2.12.5",
+ "throughput": "^1.0.1",
+ "torrent-discovery": "^9.4.14",
+ "torrent-piece": "^2.0.1",
+ "unordered-array-remove": "^1.0.2",
+ "ut_metadata": "^3.5.2",
+ "ut_pex": "^3.0.2",
+ "utp-native": "^2.5.3"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="
+ }
+ }
+ },
"whatwg-encoding": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
@@ -42032,6 +44862,43 @@
"is-symbol": "^1.0.3"
}
},
+ "widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
+ "dev": true,
+ "requires": {
+ "string-width": "^5.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ }
+ }
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
diff --git a/package.json b/package.json
index 658550e..85ec77b 100644
--- a/package.json
+++ b/package.json
@@ -16,9 +16,12 @@
"@types/node": "^18.6.5",
"@types/react": "^18.0.17",
"@types/react-dom": "^18.0.6",
+ "buffer": "^6.0.3",
"classnames": "^2.3.1",
+ "detectincognitojs": "^1.1.2",
"fast-memoize": "^2.5.2",
"fun-animal-names": "^0.1.1",
+ "idb-chunk-store": "^1.0.1",
"localforage": "^1.10.0",
"mui-markdown": "^0.5.5",
"react": "^18.2.0",
@@ -30,17 +33,20 @@
"react-syntax-highlighter": "^15.5.0",
"remark-gfm": "^3.0.1",
"sass": "^1.54.3",
+ "streamsaver": "^2.0.6",
"trystero": "github:jeremyckahn/trystero#bugfix/stream-metadata-type",
"typeface-public-sans": "^1.1.13",
"typeface-roboto": "^1.1.13",
"typescript": "^4.7.4",
"uuid": "^8.3.2",
- "web-vitals": "^2.1.4"
+ "web-vitals": "^2.1.4",
+ "webtorrent": "^1.9.3"
},
"scripts": {
"start": "react-scripts start",
"start:tracker": "bittorrent-tracker",
- "dev": "mprocs \"npx cross-env REACT_APP_TRACKER_URL=\"ws://localhost:8000\" npm run start\" \"npm run start:tracker\"",
+ "start:streamsaver": "serve -p 3015 node_modules/streamsaver",
+ "dev": "mprocs \"npx cross-env REACT_APP_TRACKER_URL=\"ws://localhost:8000\" REACT_APP_STREAMSAVER_URL=\"http://localhost:3015/mitm.html\" npm run start\" \"npm run start:tracker\" \"npm run start:streamsaver\"",
"build": "react-scripts build",
"test": "react-scripts test",
"prepare": "husky install",
@@ -71,7 +77,9 @@
},
"devDependencies": {
"@types/react-syntax-highlighter": "^15.5.5",
+ "@types/streamsaver": "^2.0.1",
"@types/uuid": "^8.3.4",
+ "@types/webtorrent": "^0.109.3",
"@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0",
"autoprefixer": "^10.4.8",
@@ -88,6 +96,7 @@
"postcss": "^8.4.16",
"prettier": "^2.7.1",
"pretty-quick": "^3.1.3",
+ "serve": "^14.1.2",
"tailwindcss": "^3.1.8"
},
"jest": {
diff --git a/src/components/Room/Room.tsx b/src/components/Room/Room.tsx
index 451fa63..15b2f5a 100644
--- a/src/components/Room/Room.tsx
+++ b/src/components/Room/Room.tsx
@@ -16,6 +16,7 @@ import { useRoom } from './useRoom'
import { RoomAudioControls } from './RoomAudioControls'
import { RoomVideoControls } from './RoomVideoControls'
import { RoomScreenShareControls } from './RoomScreenShareControls'
+import { RoomFileUploadControls } from './RoomFileUploadControls'
import { RoomVideoDisplay } from './RoomVideoDisplay'
export interface RoomProps {
@@ -95,6 +96,7 @@ export function Room({
+
diff --git a/src/components/Room/RoomFileUploadControls.tsx b/src/components/Room/RoomFileUploadControls.tsx
new file mode 100644
index 0000000..cc6949c
--- /dev/null
+++ b/src/components/Room/RoomFileUploadControls.tsx
@@ -0,0 +1,90 @@
+import { ChangeEventHandler, useRef } from 'react'
+import Box from '@mui/material/Box'
+import UploadFile from '@mui/icons-material/UploadFile'
+import Cancel from '@mui/icons-material/Cancel'
+import Fab from '@mui/material/Fab'
+import Tooltip from '@mui/material/Tooltip'
+
+import { PeerRoom } from 'services/PeerRoom/PeerRoom'
+
+import { useRoomFileShare } from './useRoomFileShare'
+
+export interface RoomFileUploadControlsProps {
+ peerRoom: PeerRoom
+}
+
+export function RoomFileUploadControls({
+ peerRoom,
+}: RoomFileUploadControlsProps) {
+ const fileInputRef = useRef(null)
+
+ const {
+ isFileShareButtonEnabled,
+ isSharingFile,
+ handleFileShareStart,
+ handleFileShareStop,
+ sharedFiles,
+ } = useRoomFileShare({
+ peerRoom,
+ })
+
+ const handleToggleScreenShareButtonClick = () => {
+ const { current: fileInput } = fileInputRef
+
+ if (isSharingFile) {
+ handleFileShareStop()
+ } else {
+ if (!fileInput) return
+
+ fileInput.click()
+ }
+ }
+
+ const handleFileSelect: ChangeEventHandler = e => {
+ const { files } = e.target
+
+ if (!files) return
+
+ handleFileShareStart(files)
+ }
+
+ const shareFileLabel =
+ (sharedFiles && sharedFiles.length === 1 && sharedFiles[0].name) || 'files'
+
+ return (
+
+
+
+
+ {isSharingFile ? : }
+
+
+
+ )
+}
diff --git a/src/components/Room/RoomScreenShareControls.tsx b/src/components/Room/RoomScreenShareControls.tsx
index 54e8117..8cc4c9a 100644
--- a/src/components/Room/RoomScreenShareControls.tsx
+++ b/src/components/Room/RoomScreenShareControls.tsx
@@ -8,11 +8,13 @@ import { PeerRoom } from 'services/PeerRoom/PeerRoom'
import { useRoomScreenShare } from './useRoomScreenShare'
-export interface RoomVideoControlsProps {
+export interface RoomFileUploadControlsProps {
peerRoom: PeerRoom
}
-export function RoomScreenShareControls({ peerRoom }: RoomVideoControlsProps) {
+export function RoomScreenShareControls({
+ peerRoom,
+}: RoomFileUploadControlsProps) {
const { isSharingScreen, handleScreenShareStart, handleScreenShareStop } =
useRoomScreenShare({
peerRoom,
diff --git a/src/components/Room/useRoom.ts b/src/components/Room/useRoom.ts
index 6eed633..b6b6ac6 100644
--- a/src/components/Room/useRoom.ts
+++ b/src/components/Room/useRoom.ts
@@ -70,6 +70,10 @@ export function useRoom(
Record
>({})
+ const [peerOfferedFileIds, setPeerOfferedFileIds] = useState<
+ Record
+ >({})
+
const roomContextValue = useMemo(
() => ({
selfVideoStream,
@@ -80,6 +84,8 @@ export function useRoom(
setSelfScreenStream,
peerScreenStreams,
setPeerScreenStreams,
+ peerOfferedFileIds,
+ setPeerOfferedFileIds,
}),
[
selfVideoStream,
@@ -90,6 +96,8 @@ export function useRoom(
setSelfScreenStream,
peerScreenStreams,
setPeerScreenStreams,
+ peerOfferedFileIds,
+ setPeerOfferedFileIds,
]
)
@@ -153,6 +161,7 @@ export function useRoom(
audioState: AudioState.STOPPED,
videoState: VideoState.STOPPED,
screenShareState: ScreenShareState.NOT_SHARING,
+ offeredFileId: null,
},
])
} else {
diff --git a/src/components/Room/useRoomFileShare.ts b/src/components/Room/useRoomFileShare.ts
new file mode 100644
index 0000000..a3233a6
--- /dev/null
+++ b/src/components/Room/useRoomFileShare.ts
@@ -0,0 +1,126 @@
+import { useContext, useEffect, useState } from 'react'
+
+import { sleep } from 'utils'
+import { RoomContext } from 'contexts/RoomContext'
+import { ShellContext } from 'contexts/ShellContext'
+import { PeerActions } from 'models/network'
+import { Peer } from 'models/chat'
+import { PeerRoom, PeerHookType } from 'services/PeerRoom'
+
+import { fileTransfer } from 'services/FileTransfer/index'
+
+import { usePeerRoomAction } from './usePeerRoomAction'
+
+interface UseRoomFileShareConfig {
+ peerRoom: PeerRoom
+}
+
+export function useRoomFileShare({ peerRoom }: UseRoomFileShareConfig) {
+ const shellContext = useContext(ShellContext)
+ const roomContext = useContext(RoomContext)
+ const [sharedFiles, setSharedFiles] = useState(null)
+ const [selfFileOfferId, setFileOfferId] = useState(null)
+ const [isFileShareButtonEnabled, setIsFileShareButtonEnabled] = useState(true)
+
+ const { peerList, setPeerList } = shellContext
+ const { peerOfferedFileIds, setPeerOfferedFileIds } = roomContext
+
+ const [sendFileOfferId, receiveFileOfferId] = usePeerRoomAction<
+ string | null
+ >(peerRoom, PeerActions.FILE_OFFER)
+
+ receiveFileOfferId((fileOfferId, peerId) => {
+ if (fileOfferId) {
+ setPeerOfferedFileIds({ [peerId]: fileOfferId })
+ } else {
+ const fileOfferId = peerOfferedFileIds[peerId]
+
+ if (fileOfferId && fileTransfer.isOffering(fileOfferId)) {
+ fileTransfer.rescind(fileOfferId)
+ }
+
+ const newFileOfferIds = { ...peerOfferedFileIds }
+ delete newFileOfferIds[peerId]
+
+ setPeerOfferedFileIds(newFileOfferIds)
+ }
+
+ const newPeerList = peerList.map(peer => {
+ const newPeer: Peer = { ...peer }
+
+ if (peer.peerId === peerId) {
+ newPeer.offeredFileId = fileOfferId
+ }
+
+ return newPeer
+ })
+
+ setPeerList(newPeerList)
+ })
+
+ peerRoom.onPeerJoin(PeerHookType.FILE_SHARE, async (peerId: string) => {
+ if (!selfFileOfferId) return
+
+ // This sleep is needed to prevent this peer from not appearing on other
+ // peers' peer lists. This is because Trystero's interaction between
+ // onPeerJoin and its actions is not totally compatible with React's
+ // lifecycle hooks. In this case, the reference to peerList in
+ // receiveFileOfferId is out of date and prevents this peer from ever being
+ // added to the receiver's peer list. Deferring the sendFileOfferId call to
+ // the next tick serves as a workaround.
+ await sleep(1)
+
+ sendFileOfferId(selfFileOfferId, peerId)
+ })
+
+ peerRoom.onPeerLeave(PeerHookType.FILE_SHARE, (peerId: string) => {
+ const fileOfferId = peerOfferedFileIds[peerId]
+
+ if (!fileOfferId) return
+
+ if (fileTransfer.isOffering(fileOfferId)) {
+ fileTransfer.rescind(fileOfferId)
+ }
+
+ const newPeerFileOfferIds = { ...peerOfferedFileIds }
+ delete newPeerFileOfferIds[peerId]
+ setPeerOfferedFileIds(newPeerFileOfferIds)
+ })
+
+ const handleFileShareStart = async (files: FileList) => {
+ setSharedFiles(files)
+ setIsFileShareButtonEnabled(false)
+
+ const fileOfferId = await fileTransfer.offer(files)
+ sendFileOfferId(fileOfferId)
+ setFileOfferId(fileOfferId)
+
+ setIsFileShareButtonEnabled(true)
+ }
+
+ const handleFileShareStop = () => {
+ sendFileOfferId(null)
+ setFileOfferId(null)
+
+ if (selfFileOfferId && fileTransfer.isOffering(selfFileOfferId)) {
+ fileTransfer.rescind(selfFileOfferId)
+ }
+ }
+
+ useEffect(() => {
+ return () => {
+ fileTransfer.rescindAll()
+ sendFileOfferId(null)
+ }
+ }, [sendFileOfferId])
+
+ const isSharingFile = Boolean(selfFileOfferId)
+
+ return {
+ handleFileShareStart,
+ handleFileShareStop,
+ isFileShareButtonEnabled,
+ isSharingFile,
+ sharedFiles,
+ }
+}
diff --git a/src/components/Shell/PeerDownloadFileButton.sass b/src/components/Shell/PeerDownloadFileButton.sass
new file mode 100644
index 0000000..802b6cd
--- /dev/null
+++ b/src/components/Shell/PeerDownloadFileButton.sass
@@ -0,0 +1,3 @@
+.PeerDownloadFileButton
+ .MuiCircularProgress-circle
+ transition: none !important
diff --git a/src/components/Shell/PeerDownloadFileButton.tsx b/src/components/Shell/PeerDownloadFileButton.tsx
new file mode 100644
index 0000000..991ba2f
--- /dev/null
+++ b/src/components/Shell/PeerDownloadFileButton.tsx
@@ -0,0 +1,72 @@
+import { useContext, useState } from 'react'
+import Box from '@mui/material/Box'
+import Fab from '@mui/material/Fab'
+import Tooltip from '@mui/material/Tooltip'
+import Download from '@mui/icons-material/Download'
+import CircularProgress from '@mui/material/CircularProgress'
+
+import { isError } from 'utils'
+import { fileTransfer } from 'services/FileTransfer/index'
+import { Peer } from 'models/chat'
+import { ShellContext } from 'contexts/ShellContext'
+
+import './PeerDownloadFileButton.sass'
+import { getPeerName } from 'components/PeerNameDisplay/getPeerName'
+
+interface PeerDownloadFileButtonProps {
+ peer: Peer
+}
+
+export const PeerDownloadFileButton = ({
+ peer,
+}: PeerDownloadFileButtonProps) => {
+ const [isDownloading, setIsDownloading] = useState(false)
+ const [downloadProgress, setDownloadProgress] = useState(null)
+ const shellContext = useContext(ShellContext)
+ const { offeredFileId } = peer
+
+ const onProgress = (progress: number) => {
+ setDownloadProgress(progress * 100)
+ }
+
+ if (!offeredFileId) {
+ return <>>
+ }
+
+ const handleDownloadFileClick = async () => {
+ setIsDownloading(true)
+ setDownloadProgress(null)
+
+ try {
+ await fileTransfer.download(offeredFileId, { onProgress })
+ } catch (e) {
+ if (isError(e)) {
+ shellContext.showAlert(e.message, {
+ severity: 'error',
+ })
+ }
+ }
+
+ setIsDownloading(false)
+ setDownloadProgress(null)
+ }
+
+ return (
+
+ {isDownloading ? (
+
+ ) : (
+
+
+
+
+
+ )}
+
+ )
+}
diff --git a/src/components/Shell/PeerList.tsx b/src/components/Shell/PeerList.tsx
index 051d0b7..8c9798c 100644
--- a/src/components/Shell/PeerList.tsx
+++ b/src/components/Shell/PeerList.tsx
@@ -7,13 +7,14 @@ import Divider from '@mui/material/Divider'
import IconButton from '@mui/material/IconButton'
import ChevronRightIcon from '@mui/icons-material/ChevronRight'
import VolumeUp from '@mui/icons-material/VolumeUp'
-import ListItemButton from '@mui/material/ListItemButton'
+import ListItem from '@mui/material/ListItem'
import { PeerListHeader } from 'components/Shell/PeerListHeader'
import { PeerNameDisplay } from 'components/PeerNameDisplay'
-
import { AudioState, Peer } from 'models/chat'
+import { PeerDownloadFileButton } from './PeerDownloadFileButton'
+
export const peerListWidth = 300
export interface PeerListProps extends PropsWithChildren {
@@ -51,7 +52,7 @@ export const PeerList = ({
-
+
{audioState === AudioState.PLAYING && (
@@ -60,18 +61,19 @@ export const PeerList = ({
{userId} (you)
-
+
{peerList.map((peer: Peer) => (
-
+
+
+
+ {peer.userId}
+
{peer.audioState === AudioState.PLAYING && (
)}
-
- {peer.userId}
-
-
+
))}
diff --git a/src/components/Shell/Shell.tsx b/src/components/Shell/Shell.tsx
index c06447e..bf49346 100644
--- a/src/components/Shell/Shell.tsx
+++ b/src/components/Shell/Shell.tsx
@@ -49,7 +49,6 @@ export const Shell = ({ appNeedsUpdate, children, userPeerId }: ShellProps) => {
const [screenState, setScreenState] = useState(
ScreenShareState.NOT_SHARING
)
-
const showAlert = useCallback<
(message: string, options?: AlertOptions) => void
>((message, options) => {
diff --git a/src/config/streamSaverUrl.ts b/src/config/streamSaverUrl.ts
new file mode 100644
index 0000000..083a744
--- /dev/null
+++ b/src/config/streamSaverUrl.ts
@@ -0,0 +1,8 @@
+export const streamSaverUrl =
+ process.env.REACT_APP_STREAMSAVER_URL ??
+ // If you would like to host your own Chitchatter instance with an
+ // alternative StreamSaver fork to facilitate file sharing, change this
+ // string to its respective .mitm.html URL.
+ //
+ // See: https://github.com/jimmywarting/StreamSaver.js?#configuration
+ 'https://jeremyckahn.github.io/StreamSaver.js/mitm.html'
diff --git a/src/contexts/RoomContext.ts b/src/contexts/RoomContext.ts
index 01597ef..a2fcba6 100644
--- a/src/contexts/RoomContext.ts
+++ b/src/contexts/RoomContext.ts
@@ -9,6 +9,8 @@ interface RoomContextProps {
setSelfScreenStream: Dispatch>
peerScreenStreams: Record
setPeerScreenStreams: Dispatch>>
+ peerOfferedFileIds: Record
+ setPeerOfferedFileIds: Dispatch>>
}
export const RoomContext = createContext({
@@ -20,4 +22,6 @@ export const RoomContext = createContext({
setSelfScreenStream: () => {},
peerScreenStreams: {},
setPeerScreenStreams: () => {},
+ peerOfferedFileIds: {},
+ setPeerOfferedFileIds: () => {},
})
diff --git a/src/index.tsx b/src/index.tsx
index cbffbe9..5dffdea 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,3 +1,5 @@
+import { Buffer } from 'buffer'
+
import ReactDOM from 'react-dom/client'
import 'typeface-roboto'
@@ -5,6 +7,9 @@ import 'index.sass'
import Bootstrap from 'Bootstrap'
import reportWebVitals from 'reportWebVitals'
+// Polyfill
+window.Buffer = Buffer
+
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
root.render()
diff --git a/src/models/chat.ts b/src/models/chat.ts
index ee24600..efb0147 100644
--- a/src/models/chat.ts
+++ b/src/models/chat.ts
@@ -31,6 +31,7 @@ export interface Peer {
audioState: AudioState
videoState: VideoState
screenShareState: ScreenShareState
+ offeredFileId: string | null
}
export interface ReceivedMessage extends UnsentMessage {
diff --git a/src/models/network.ts b/src/models/network.ts
index feff862..068d02e 100644
--- a/src/models/network.ts
+++ b/src/models/network.ts
@@ -6,4 +6,5 @@ export enum PeerActions {
AUDIO_CHANGE = 'AUDIO_CHANGE',
VIDEO_CHANGE = 'VIDEO_CHANGE',
SCREEN_SHARE = 'SCREEN_SHARE',
+ FILE_OFFER = 'FILE_OFFER',
}
diff --git a/src/services/FileTransfer/FileTransfer.ts b/src/services/FileTransfer/FileTransfer.ts
new file mode 100644
index 0000000..1289d5e
--- /dev/null
+++ b/src/services/FileTransfer/FileTransfer.ts
@@ -0,0 +1,173 @@
+import { WebTorrent as WebTorrentType, Torrent } from 'webtorrent'
+// @ts-ignore
+import streamSaver from 'streamsaver'
+// @ts-ignore
+import idbChunkStore from 'idb-chunk-store'
+import { detectIncognito } from 'detectincognitojs'
+
+// @ts-ignore
+import WebTorrent from 'webtorrent/webtorrent.min.js'
+import { trackerUrls } from 'config/trackerUrls'
+import { streamSaverUrl } from 'config/streamSaverUrl'
+
+streamSaver.mitm = streamSaverUrl
+
+interface DownloadOpts {
+ onProgress?: (progress: number) => void
+}
+
+export class FileTransfer {
+ private webTorrentClient = new (WebTorrent as unknown as WebTorrentType)()
+
+ private torrents: Record = {}
+
+ private async saveTorrentFiles(torrent: Torrent) {
+ for (const file of torrent.files) {
+ try {
+ await new Promise((resolve, reject) => {
+ const fileStream = streamSaver.createWriteStream(file.name, {
+ size: file.length,
+ })
+
+ const writeStream = fileStream.getWriter()
+ const readStream = file.createReadStream()
+ let aborted = false
+
+ const handleData = async (data: ArrayBuffer) => {
+ try {
+ await writeStream.write(data)
+ } catch (e) {
+ writeStream.abort()
+ readStream.off('data', handleData)
+ aborted = true
+ reject()
+ }
+ }
+
+ const handleBeforePageUnloadForFile = () => {
+ // Clean up any broken downloads
+ writeStream.abort()
+ }
+
+ window.addEventListener('beforeunload', handleBeforePageUnloadForFile)
+
+ const handleEnd = async () => {
+ window.removeEventListener(
+ 'beforeunload',
+ handleBeforePageUnloadForFile
+ )
+
+ if (aborted) return
+
+ await writeStream.close()
+ resolve()
+ }
+
+ readStream.on('data', handleData).on('end', handleEnd)
+ })
+ } catch (e) {
+ throw new Error('Download aborted')
+ }
+ }
+ }
+
+ constructor() {
+ window.addEventListener('beforeunload', this.handleBeforePageUnload)
+ }
+
+ async download(magnetURI: string, { onProgress }: DownloadOpts = {}) {
+ let torrent = this.torrents[magnetURI]
+
+ if (!torrent) {
+ const { isPrivate } = await detectIncognito()
+
+ torrent = await new Promise(res => {
+ this.webTorrentClient.add(
+ magnetURI,
+ {
+ announce: trackerUrls,
+ // If the user is using their browser's private mode, IndexedDB
+ // will be unavailable and idbChunkStore will break all transfers.
+ // In that case, fall back to the default in-memory data store.
+ store: isPrivate ? undefined : idbChunkStore,
+ destroyStoreOnDestroy: true,
+ },
+ torrent => {
+ res(torrent)
+ }
+ )
+ })
+
+ this.torrents[torrent.magnetURI] = torrent
+ }
+
+ const handleDownload = () => {
+ onProgress?.(torrent.progress)
+ }
+
+ torrent.on('download', handleDownload)
+
+ try {
+ await this.saveTorrentFiles(torrent)
+ } catch (e) {
+ torrent.off('download', handleDownload)
+
+ // Propagate error to the UI
+ throw e
+ }
+ }
+
+ async offer(files: FileList) {
+ const { isPrivate } = await detectIncognito()
+
+ const torrent = await new Promise(res => {
+ this.webTorrentClient.seed(
+ files,
+ {
+ announce: trackerUrls,
+ // If the user is using their browser's private mode, IndexedDB will
+ // be unavailable and idbChunkStore will break all transfers. In that
+ // case, fall back to the default in-memory data store.
+ store: isPrivate ? undefined : idbChunkStore,
+ destroyStoreOnDestroy: true,
+ },
+ torrent => {
+ res(torrent)
+ }
+ )
+ })
+
+ const { magnetURI } = torrent
+ this.torrents[magnetURI] = torrent
+
+ return magnetURI
+ }
+
+ rescind(magnetURI: string) {
+ const torrent = this.torrents[magnetURI]
+
+ if (torrent) {
+ torrent.destroy()
+ } else {
+ console.error(`Attempted to clean up nonexistent torrent: ${magnetURI}`)
+ }
+
+ delete this.torrents[magnetURI]
+ }
+
+ rescindAll() {
+ for (const magnetURI in this.torrents) {
+ this.rescind(magnetURI)
+ }
+ }
+
+ isOffering(magnetURI: string) {
+ return magnetURI in this.torrents
+ }
+
+ handleBeforePageUnload = () => {
+ this.rescindAll()
+ }
+}
+
+export const fileTransfer = new FileTransfer()
diff --git a/src/services/FileTransfer/index.ts b/src/services/FileTransfer/index.ts
new file mode 100644
index 0000000..35c3b9c
--- /dev/null
+++ b/src/services/FileTransfer/index.ts
@@ -0,0 +1 @@
+export * from './FileTransfer'
diff --git a/src/services/PeerRoom/PeerRoom.ts b/src/services/PeerRoom/PeerRoom.ts
index 2b4ed77..d1c13a4 100644
--- a/src/services/PeerRoom/PeerRoom.ts
+++ b/src/services/PeerRoom/PeerRoom.ts
@@ -8,6 +8,7 @@ export enum PeerHookType {
AUDIO = 'AUDIO',
VIDEO = 'VIDEO',
SCREEN = 'SCREEN',
+ FILE_SHARE = 'FILE_SHARE',
}
export enum PeerStreamType {
diff --git a/src/setupTests.ts b/src/setupTests.ts
index c61fade..678408b 100644
--- a/src/setupTests.ts
+++ b/src/setupTests.ts
@@ -7,3 +7,8 @@ import '@testing-library/jest-dom'
afterEach(() => {
jest.restoreAllMocks()
})
+
+jest.mock('webtorrent/webtorrent.min.js', () => ({
+ __esModule: true,
+ default: class WebTorrent {},
+}))
diff --git a/src/utils.ts b/src/utils.ts
index 938bc98..9c92d2f 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -10,3 +10,7 @@ export const isRecord = (variable: any): variable is Record => {
variable !== null
)
}
+
+export const isError = (e: any): e is Error => {
+ return e instanceof Error
+}