From a33295927a2d1d059e55bab0568fa190b3807aac Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Tue, 6 Jun 2023 18:50:43 -0400 Subject: [PATCH 01/12] Initial addition of BitTorrent protocol --- .gitignore | 3 + @types/bt-fetch.d.ts | 32 +++++++ .../roles/distributed_press/defaults/main.yml | 2 +- api/index.ts | 3 + api/schemas.ts | 10 +- dns/index.test.ts | 3 +- fixtures/mockProtocols.ts | 20 +++- fixtures/siteConfig.ts | 3 +- package.json | 5 +- protocols/bittorrent.ts | 94 +++++++++++++++++++ protocols/index.test.ts | 13 +++ protocols/index.ts | 11 ++- tsconfig.json | 3 + 13 files changed, 193 insertions(+), 9 deletions(-) create mode 100644 @types/bt-fetch.d.ts create mode 100644 protocols/bittorrent.ts diff --git a/.gitignore b/.gitignore index 216f0b2c..f6a84cd1 100644 --- a/.gitignore +++ b/.gitignore @@ -109,4 +109,7 @@ store *.key +# Don't commit our internal ansibles! ansible/prod.yml +ansible/staging.yml +ansible/mauve.yml diff --git a/@types/bt-fetch.d.ts b/@types/bt-fetch.d.ts new file mode 100644 index 00000000..8e54fb97 --- /dev/null +++ b/@types/bt-fetch.d.ts @@ -0,0 +1,32 @@ +declare module 'bt-fetch' { + export type TorrentManagerOptions = Partial<{ + folder: string + timeout: number + reloadInterval: number + }> + + export interface Torrent { + infoHash: Buffer + publicKey: Buffer + } + + export type TorrentPublishOpts = Partial<{ + name: string + comment: string + createdBy: string + creationDate: string + }> + + export interface KeyPair { + publicKey: string + secretKey: string + } + + export class TorrentManager { + constructor (opts: TorrentManagerOptions) + stopSeedingPublicKey (publicKey: string): Promise + republishPublicKey (publicKey: string, secretKey: string, opts: TorrentPublishOpts): Promise + createKeypair (petname?: string): KeyPair + destroy (): Promise + } +} diff --git a/ansible/roles/distributed_press/defaults/main.yml b/ansible/roles/distributed_press/defaults/main.yml index a8f841bc..00f888bd 100644 --- a/ansible/roles/distributed_press/defaults/main.yml +++ b/ansible/roles/distributed_press/defaults/main.yml @@ -14,7 +14,7 @@ distributed_press_host: "localhost" distributed_press_ipfs_provider: "builtin" distributed_press_git_repo: "https://github.com/hyphacoop/api.distributed.press.git" -distributed_press_git_branch: "v1.0.0" +distributed_press_git_branch: "v1.1.0" distributed_press_source: "{{distributed_press_home}}/api.distributed.press" distributed_press_domain: "example.com" diff --git a/api/index.ts b/api/index.ts index dff86ead..0f240e0a 100644 --- a/api/index.ts +++ b/api/index.ts @@ -59,6 +59,9 @@ async function apiBuilder (cfg: APIConfig): Promise { hyper: { path: path.join(protocolStoragePath, 'hyper') }, + bt: { + path: path.join(protocolStoragePath, 'bt') + }, http: { path: path.join(protocolStoragePath, 'http') } diff --git a/api/schemas.ts b/api/schemas.ts index c79188a6..570cdc41 100644 --- a/api/schemas.ts +++ b/api/schemas.ts @@ -22,11 +22,19 @@ export const IPFSProtocolFields = GenericProtocol(Type.Object({ pubKey: Type.String(), // ipns://{publishKey} dnslink: Type.String() })) +export const BitTorrentProtocolFields = GenericProtocol(Type.Object({ + gateway: Type.String(), // same as gateway in HyperProtocolFields + magnet: Type.String(), // Used by most torrent clients. Note: Will not update in regular clients + infoHash: Type.String(), // Immutable link, similar to ipfs public key + pubKey: Type.String(), // Link to public key for BEP-46, similar to IPNS + dnslink: Type.String() +})) export const Protocols = Type.Object({ http: HTTPProtocolFields, hyper: HyperProtocolFields, - ipfs: IPFSProtocolFields + ipfs: IPFSProtocolFields, + bt: BitTorrentProtocolFields }) export const ProtocolStatus = Type.Record(Type.KeyOf(Protocols), Type.Boolean()) export const Site = Type.Object({ diff --git a/dns/index.test.ts b/dns/index.test.ts index 0e33e103..8e44a1e7 100644 --- a/dns/index.test.ts +++ b/dns/index.test.ts @@ -32,7 +32,8 @@ test('basic dns resolve', async t => { protocols: { http: false, ipfs: true, - hyper: true + hyper: true, + bt: false }, public: true }) diff --git a/fixtures/mockProtocols.ts b/fixtures/mockProtocols.ts index e253c5fe..06ade959 100644 --- a/fixtures/mockProtocols.ts +++ b/fixtures/mockProtocols.ts @@ -1,5 +1,5 @@ import { Static, TSchema } from '@sinclair/typebox' -import { HTTPProtocolFields, HyperProtocolFields, IPFSProtocolFields } from '../api/schemas.js' +import { HTTPProtocolFields, HyperProtocolFields, IPFSProtocolFields, BitTorrentProtocolFields } from '../api/schemas.js' import { ProtocolManager } from '../protocols/index.js' import Protocol, { Ctx, SyncOptions } from '../protocols/interfaces.js' @@ -7,17 +7,20 @@ export class MockProtocolManager implements ProtocolManager { http: MockHTTPProtocol ipfs: MockIPFSProtocol hyper: MockHyperProtocol + bt: MockBitTorrentProtocol constructor () { this.ipfs = new MockIPFSProtocol() this.http = new MockHTTPProtocol() this.hyper = new MockHyperProtocol() + this.bt = new MockBitTorrentProtocol() } async load (): Promise { const promises = [ this.ipfs.load(), this.hyper.load(), + this.bt.load(), this.http.load() ] await Promise.all(promises) @@ -27,6 +30,7 @@ export class MockProtocolManager implements ProtocolManager { const promises = [ this.ipfs.unload(), this.hyper.unload(), + this.bt.unload(), this.http.unload() ] await Promise.all(promises) @@ -81,3 +85,17 @@ class MockHyperProtocol extends BaseMockProtocol { } } } + +class MockBitTorrentProtocol extends BaseMockProtocol { + async sync (_id: string, _folderPath: string, _options?: SyncOptions, _ctx?: Ctx): Promise> { + return { + enabled: true, + link: 'bittorrent://example-link', + gateway: 'https://example-bittorrent-gateway/example-link', + dnslink: '/bt/example-raw', + infoHash: 'bittorrent://example-link-infohash', + pubKey: 'bittorrent://example-link-publickey', + magnet: 'magnet:?xt:urn:btih:example-link&xs=urn:btpk:example-link' + } + } +} diff --git a/fixtures/siteConfig.ts b/fixtures/siteConfig.ts index 60040dd3..8f902da4 100644 --- a/fixtures/siteConfig.ts +++ b/fixtures/siteConfig.ts @@ -13,7 +13,8 @@ export const exampleSiteConfig: Static = { protocols: { http: true, ipfs: false, - hyper: false + hyper: false, + bt: false }, public: true } diff --git a/package.json b/package.json index 4780a156..cfc357ff 100644 --- a/package.json +++ b/package.json @@ -7,13 +7,13 @@ "scripts": { "clean": "rimraf build", "build": "npm run clean && tsc", - "lint": "ts-standard --fix && tsc --noEmit", + "lint": "ts-standard --fix && tsc --skipLibCheck --noEmit", "keygen": "ts-node-esm authorization/scripts/keygen.ts", "make-admin": "ts-node-esm authorization/scripts/create_admin.ts", "dev": "ts-node-esm index.ts | pino-pretty -c -t", "watch": "nodemon --watch './**/*.ts' --exec 'node --experimental-specifier-resolution=node --loader ts-node/esm' index.ts | pino-pretty -c -t", "start": "node build/index.js", - "test": "ava --concurrency 1 --timeout=1m", + "test": "ava --verbose --concurrency 1 --timeout=1m", "nuke": "ts-node-esm protocols/scripts/nuke.ts" }, "repository": { @@ -47,6 +47,7 @@ "@fastify/type-provider-typebox": "^2.4.0", "@sinclair/typebox": "^0.25.9", "abstract-level": "^1.0.3", + "bt-fetch": "^3.3.2", "cors": "^2.8.5", "dns2": "^2.1.0", "env-paths": "^3.0.0", diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts new file mode 100644 index 00000000..82260291 --- /dev/null +++ b/protocols/bittorrent.ts @@ -0,0 +1,94 @@ +import { Static } from '@sinclair/typebox' +import Protocol, { Ctx, SyncOptions } from './interfaces' +import { BitTorrentProtocolFields } from '../api/schemas' + +import path from 'node:path' +import { cp } from 'node:fs/promises' + +import { TorrentManager } from 'bt-fetch' + +export interface BitTorrentProtocolOptions { + path: string +} + +export class BitTorrentProtocol implements Protocol> { + options: BitTorrentProtocolOptions + manager: TorrentManager | null + + constructor (options: BitTorrentProtocolOptions) { + this.options = options + this.manager = null + } + + async load (): Promise { + const folder = this.options.path + this.manager = new TorrentManager({ folder }) + } + + async unload (): Promise { + await this.manager?.destroy() + } + + async sync (id: string, folderPath: string, options?: SyncOptions, ctx?: Ctx): Promise> { + ctx?.logger.info('[bittorrent] Sync Start') + + const link = `bittorent://${id}/` + + if (this.manager === null) { + throw new Error('[bittorrent] Torrent Manager Not Initialized') + } + + const manager: TorrentManager = this.manager + + // Create keypair from the site ID and the seed key + const { publicKey, secretKey } = manager.createKeypair(id) + + const storageFolder = path.join(this.options.path, 'data', publicKey, id) + + const torrentInfo = { + name: id, + comment: `Content for ${link}`, + createdBy: 'distributed.press' + } + + ctx?.logger.info('[bittorrent] Stop seeding existing') + + await manager.stopSeedingPublicKey(publicKey) + + ctx?.logger.info('[bittorrent] Copy data to storage') + + await cp(folderPath + path.sep, storageFolder + path.sep, { recursive: true }) + + ctx?.logger.info('[bittorrent] Generate new torrent and publish to DHT') + + // Pass folder and options + const torrent = await manager.republishPublicKey(publicKey, secretKey, torrentInfo) + + const infoHash = torrent.infoHash.toString('hex') + + const subdomain = id.replaceAll('-', '--').replaceAll('.', '-') + // TODO: Pass in gateway from config + const gateway = `https://${subdomain}.bt.hypha.coop/` + + const magnet = `magnet:?xt:urn:btih:${infoHash}&xs=urn:btpk:${publicKey}` + + const infoHashURL = `bittorrent://${infoHash}/` + const publicKeyURL = `bittorrent://${publicKey}/` + + ctx?.logger.info(`[bittorrent] Published: ${link}`) + + const dnslink = `/bt/${publicKey}` + return { + enabled: true, + link, + gateway, + infoHash: infoHashURL, + pubKey: publicKeyURL, + magnet, + dnslink + } + } + + async unsync (id: string, _site: Static, ctx?: Ctx): Promise { + } +} diff --git a/protocols/index.test.ts b/protocols/index.test.ts index b0662e5a..75745cf2 100644 --- a/protocols/index.test.ts +++ b/protocols/index.test.ts @@ -8,6 +8,7 @@ import { exampleSiteConfig } from '../fixtures/siteConfig.js' import { HyperProtocol } from './hyper.js' import Protocol from './interfaces.js' import { BUILTIN, IPFSProtocol } from './ipfs.js' +import { BitTorrentProtocol } from './bittorrent.js' const paths = envPaths('distributed-press') const filename = fileURLToPath(import.meta.url) @@ -49,3 +50,15 @@ test('hyper: basic e2e sync', async t => { t.is(links.enabled, true) t.truthy(links.link) }) + +test('bittorrent: basic e2e sync', async t => { + const path = await newProtocolTestPath() + t.context.protocol = new BitTorrentProtocol({ + path + }) + + await t.notThrowsAsync(t.context.protocol.load(), 'initializing bittorrent should work') + const links = await t.context.protocol.sync(exampleSiteConfig.domain, fixturePath) + t.is(links.enabled, true) + t.truthy(links.link) +}) diff --git a/protocols/index.ts b/protocols/index.ts index 381bfe79..5b677cf9 100644 --- a/protocols/index.ts +++ b/protocols/index.ts @@ -1,13 +1,15 @@ import { IPFSProtocol, IPFSProtocolOptions } from './ipfs.js' import { HyperProtocol, HyperProtocolOptions } from './hyper.js' +import { BitTorrentProtocol, BitTorrentProtocolOptions } from './bittorrent.js' import { HTTPProtocol, HTTPProtocolOptions } from './http.js' import Protocol from './interfaces.js' import { Static } from '@sinclair/typebox' -import { HTTPProtocolFields, HyperProtocolFields, IPFSProtocolFields } from '../api/schemas.js' +import { HTTPProtocolFields, HyperProtocolFields, IPFSProtocolFields, BitTorrentProtocolFields } from '../api/schemas.js' interface ProtocolOptions { ipfs: IPFSProtocolOptions hyper: HyperProtocolOptions + bt: BitTorrentProtocolOptions http: HTTPProtocolOptions } @@ -15,23 +17,27 @@ export interface ProtocolManager { http: Protocol> ipfs: Protocol> hyper: Protocol> + bt: Protocol> } export class ConcreteProtocolManager implements ProtocolManager { http: HTTPProtocol ipfs: IPFSProtocol hyper: HyperProtocol + bt: BitTorrentProtocol constructor (options: ProtocolOptions) { - this.ipfs = new IPFSProtocol(options.ipfs) this.http = new HTTPProtocol(options.http) + this.ipfs = new IPFSProtocol(options.ipfs) this.hyper = new HyperProtocol(options.hyper) + this.bt = new BitTorrentProtocol(options.bt) } async load (): Promise { const promises = [ this.ipfs.load(), this.hyper.load(), + this.bt.load(), this.http.load() ] await Promise.all(promises) @@ -41,6 +47,7 @@ export class ConcreteProtocolManager implements ProtocolManager { const promises = [ this.ipfs.unload(), this.hyper.unload(), + this.bt.unload(), this.http.unload() ] await Promise.all(promises) diff --git a/tsconfig.json b/tsconfig.json index ab87eb2d..59311504 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,9 @@ "include": [ "**/*.ts" ], + "exclude": [ + "node_modules" + ], "files": ["@types/fastify.d.ts", "@types/fastify-jwt.d.ts"], "compilerOptions": { "target": "esnext", From 3aa84201567dd909e3183619f69c7f70d4619ade Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Wed, 14 Jun 2023 20:02:41 -0400 Subject: [PATCH 02/12] Rename bt: to bittorrent: --- api/index.ts | 2 +- api/schemas.ts | 2 +- dns/index.test.ts | 2 +- fixtures/mockProtocols.ts | 8 ++++---- fixtures/siteConfig.ts | 2 +- package.json | 2 +- protocols/index.ts | 12 ++++++------ 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/api/index.ts b/api/index.ts index 0f240e0a..fde21615 100644 --- a/api/index.ts +++ b/api/index.ts @@ -59,7 +59,7 @@ async function apiBuilder (cfg: APIConfig): Promise { hyper: { path: path.join(protocolStoragePath, 'hyper') }, - bt: { + bittorrent: { path: path.join(protocolStoragePath, 'bt') }, http: { diff --git a/api/schemas.ts b/api/schemas.ts index 570cdc41..b1a4334f 100644 --- a/api/schemas.ts +++ b/api/schemas.ts @@ -34,7 +34,7 @@ export const Protocols = Type.Object({ http: HTTPProtocolFields, hyper: HyperProtocolFields, ipfs: IPFSProtocolFields, - bt: BitTorrentProtocolFields + bittorrent: BitTorrentProtocolFields }) export const ProtocolStatus = Type.Record(Type.KeyOf(Protocols), Type.Boolean()) export const Site = Type.Object({ diff --git a/dns/index.test.ts b/dns/index.test.ts index 8e44a1e7..4a575a8a 100644 --- a/dns/index.test.ts +++ b/dns/index.test.ts @@ -33,7 +33,7 @@ test('basic dns resolve', async t => { http: false, ipfs: true, hyper: true, - bt: false + bittorrent: false }, public: true }) diff --git a/fixtures/mockProtocols.ts b/fixtures/mockProtocols.ts index 06ade959..0eefee02 100644 --- a/fixtures/mockProtocols.ts +++ b/fixtures/mockProtocols.ts @@ -7,20 +7,20 @@ export class MockProtocolManager implements ProtocolManager { http: MockHTTPProtocol ipfs: MockIPFSProtocol hyper: MockHyperProtocol - bt: MockBitTorrentProtocol + bittorrent: MockBitTorrentProtocol constructor () { this.ipfs = new MockIPFSProtocol() this.http = new MockHTTPProtocol() this.hyper = new MockHyperProtocol() - this.bt = new MockBitTorrentProtocol() + this.bittorrent = new MockBitTorrentProtocol() } async load (): Promise { const promises = [ this.ipfs.load(), this.hyper.load(), - this.bt.load(), + this.bittorrent.load(), this.http.load() ] await Promise.all(promises) @@ -30,7 +30,7 @@ export class MockProtocolManager implements ProtocolManager { const promises = [ this.ipfs.unload(), this.hyper.unload(), - this.bt.unload(), + this.bittorrent.unload(), this.http.unload() ] await Promise.all(promises) diff --git a/fixtures/siteConfig.ts b/fixtures/siteConfig.ts index 8f902da4..f1f74722 100644 --- a/fixtures/siteConfig.ts +++ b/fixtures/siteConfig.ts @@ -14,7 +14,7 @@ export const exampleSiteConfig: Static = { http: true, ipfs: false, hyper: false, - bt: false + bittorrent: false }, public: true } diff --git a/package.json b/package.json index cfc357ff..e7028bfa 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "dev": "ts-node-esm index.ts | pino-pretty -c -t", "watch": "nodemon --watch './**/*.ts' --exec 'node --experimental-specifier-resolution=node --loader ts-node/esm' index.ts | pino-pretty -c -t", "start": "node build/index.js", - "test": "ava --verbose --concurrency 1 --timeout=1m", + "test": "ava --verbose --concurrency 1 --timeout=3m", "nuke": "ts-node-esm protocols/scripts/nuke.ts" }, "repository": { diff --git a/protocols/index.ts b/protocols/index.ts index 5b677cf9..b61e8f9a 100644 --- a/protocols/index.ts +++ b/protocols/index.ts @@ -9,7 +9,7 @@ import { HTTPProtocolFields, HyperProtocolFields, IPFSProtocolFields, BitTorrent interface ProtocolOptions { ipfs: IPFSProtocolOptions hyper: HyperProtocolOptions - bt: BitTorrentProtocolOptions + bittorrent: BitTorrentProtocolOptions http: HTTPProtocolOptions } @@ -17,27 +17,27 @@ export interface ProtocolManager { http: Protocol> ipfs: Protocol> hyper: Protocol> - bt: Protocol> + bittorrent: Protocol> } export class ConcreteProtocolManager implements ProtocolManager { http: HTTPProtocol ipfs: IPFSProtocol hyper: HyperProtocol - bt: BitTorrentProtocol + bittorrent: BitTorrentProtocol constructor (options: ProtocolOptions) { this.http = new HTTPProtocol(options.http) this.ipfs = new IPFSProtocol(options.ipfs) this.hyper = new HyperProtocol(options.hyper) - this.bt = new BitTorrentProtocol(options.bt) + this.bittorrent = new BitTorrentProtocol(options.bittorrent) } async load (): Promise { const promises = [ this.ipfs.load(), this.hyper.load(), - this.bt.load(), + this.bittorrent.load(), this.http.load() ] await Promise.all(promises) @@ -47,7 +47,7 @@ export class ConcreteProtocolManager implements ProtocolManager { const promises = [ this.ipfs.unload(), this.hyper.unload(), - this.bt.unload(), + this.bittorrent.unload(), this.http.unload() ] await Promise.all(promises) From e99053e75367488ed6fd2a45c909ad5d21399840 Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Wed, 14 Jun 2023 20:23:45 -0400 Subject: [PATCH 03/12] Improve storage location info --- api/index.ts | 2 +- protocols/bittorrent.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/api/index.ts b/api/index.ts index fde21615..5b32bf55 100644 --- a/api/index.ts +++ b/api/index.ts @@ -60,7 +60,7 @@ async function apiBuilder (cfg: APIConfig): Promise { path: path.join(protocolStoragePath, 'hyper') }, bittorrent: { - path: path.join(protocolStoragePath, 'bt') + path: path.join(protocolStoragePath, 'bittorrent') }, http: { path: path.join(protocolStoragePath, 'http') diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts index 82260291..dbb00e59 100644 --- a/protocols/bittorrent.ts +++ b/protocols/bittorrent.ts @@ -43,6 +43,7 @@ export class BitTorrentProtocol implements Protocol Date: Wed, 14 Jun 2023 20:25:46 -0400 Subject: [PATCH 04/12] Add DNS handling for bittorrent --- dns/index.test.ts | 3 ++- dns/index.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/dns/index.test.ts b/dns/index.test.ts index 4a575a8a..be33f0a4 100644 --- a/dns/index.test.ts +++ b/dns/index.test.ts @@ -33,7 +33,7 @@ test('basic dns resolve', async t => { http: false, ipfs: true, hyper: true, - bittorrent: false + bittorrent: true }, public: true }) @@ -43,6 +43,7 @@ test('basic dns resolve', async t => { const response = await dnsClient.query(`_dnslink.${site.domain}`, 'TXT') t.true(hasAnswer(response, 'ipns'), 'returned dns query has an ipns entry') t.true(hasAnswer(response, 'hyper'), 'returned dns query has a hyper entry') + t.true(hasAnswer(response, 'bittorrent'), 'returned dns query has a bittorrent entry') t.is(response.answers.filter(ans => ans.type !== DNS.Packet.TYPE.TXT).length, 0, 'should not include any non-TXT entries') }) diff --git a/dns/index.ts b/dns/index.ts index 1d27a3e9..e16707cb 100644 --- a/dns/index.ts +++ b/dns/index.ts @@ -31,6 +31,15 @@ export async function initDnsServer (port: number, store: SiteConfigStore, logge data: `dnslink=${links.hyper.dnslink}` }) } + if (links.bittorrent !== undefined) { + response.answers.push({ + name, + type: dns2.Packet.TYPE.TXT, + class: dns2.Packet.CLASS.IN, + ttl: 60, + data: `dnslink=${links.bittorrent.dnslink}` + }) + } send(response) }) .catch((error) => { From fed368cc7cf20f34ac421a6b2053131304d38fde Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Wed, 14 Jun 2023 21:05:15 -0400 Subject: [PATCH 05/12] Update package-lock --- package-lock.json | 3331 ++++++++++++++++++++++++++++++++++++--- protocols/bittorrent.ts | 6 + 2 files changed, 3159 insertions(+), 178 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06844271..141271fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "distributed-press-api", - "version": "0.2.0", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "distributed-press-api", - "version": "0.2.0", + "version": "1.1.0", "license": "AGPL-3.0", "dependencies": { "@fastify/auth": "^4.2.0", @@ -17,6 +17,7 @@ "@fastify/type-provider-typebox": "^2.4.0", "@sinclair/typebox": "^0.25.9", "abstract-level": "^1.0.3", + "bt-fetch": "^3.3.2", "cors": "^2.8.5", "dns2": "^2.1.0", "env-paths": "^3.0.0", @@ -2214,6 +2215,55 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "node_modules/@silentbot1/nat-api": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.6.tgz", + "integrity": "sha512-TGEGkAHLsXPJM4JN3YjZJReahmTSoNofK2wTqBfbsvm1rrfPELOXA3Yi4YV7FYGtSXdXNIuX18a4AUUn9+gd4Q==", + "dependencies": { + "chrome-dgram": "^3.0.6", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "default-gateway": "^6.0.3", + "unordered-array-remove": "^1.0.2", + "xml2js": "^0.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@silentbot1/nat-api/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@silentbot1/nat-api/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@silentbot1/nat-api/node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/@sinclair/typebox": { "version": "0.25.21", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", @@ -2372,6 +2422,92 @@ "node": ">=10" } }, + "node_modules/@thaunknown/simple-peer": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-peer/-/simple-peer-9.12.0.tgz", + "integrity": "sha512-rts25KKlJvleUBR62Sb8di/oZDTzZru47LdFXTWDcBEOp9TsmFsEPmakfBIjsbo7bqFPMdIUcEqQgvG2MLMZiQ==", + "dependencies": { + "debug": "^4.3.2", + "err-code": "^3.0.1", + "get-browser-rtc": "^1.1.0", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9" + } + }, + "node_modules/@thaunknown/simple-peer/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@thaunknown/simple-peer/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@thaunknown/simple-websocket": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-websocket/-/simple-websocket-9.1.1.tgz", + "integrity": "sha512-vzQloFWRodRZqZhpxMpBljFtISesY8TihA8T5uKwCYdj2I1ImMhE/gAeTCPsCGOtxJfGKu3hw/is6MXauWLjOg==", + "dependencies": { + "debug": "^4.3.4", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9", + "ws": "^8.12.0" + } + }, + "node_modules/@thaunknown/simple-websocket/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@thaunknown/simple-websocket/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@thaunknown/thirty-two": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@thaunknown/thirty-two/-/thirty-two-1.0.3.tgz", + "integrity": "sha512-bD6PvWbaf53JC04O7WnGDjqZBDgja/KT2Jd/6I2vJBIy+DLmQfQJZZ/G+16nAkVq1yGTIkO4rfc4RlH0DmEEqA==", + "dependencies": { + "uint8-util": "^2.1.9" + }, + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -2862,6 +2998,15 @@ "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" }, + "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/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -2960,6 +3105,14 @@ "node": ">=0.4.0" } }, + "node_modules/addr-to-ip-port": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-2.0.0.tgz", + "integrity": "sha512-9bYbtjamtdLHZSqVIUXhilOryNPiL+x+Q5J/Unpg4VY3ZIkK3fT52UoErj1NdUeVm3J1t2iBEAur4Ywbl/bahw==", + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/aggregate-error": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", @@ -3568,6 +3721,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3596,6 +3757,19 @@ "platform": "^1.3.3" } }, + "node_modules/bencode": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", + "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==" + }, + "node_modules/bep53-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz", + "integrity": "sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==", + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/big-sparse-array": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", @@ -3635,20 +3809,21 @@ "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" }, - "node_modules/bl": { + "node_modules/bitfield": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.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/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/bittorrent-dht": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-11.0.4.tgz", + "integrity": "sha512-pTQKeGAJBBGkNnHpnJcBrgGYoKVhM6Y58UOgNwx7Yto9zrkdjJlyo26XpTLYMCHQBjdDBg0PGuW1nkA8cJkoIQ==", "funding": [ { "type": "github", @@ -3664,106 +3839,418 @@ } ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "bencode": "^3.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" + }, + "engines": { + "node": ">=12.20.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/bittorrent-dht/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "uint8-util": "^2.1.6" }, "engines": { - "node": ">= 6" + "node": ">=12.20.0" } }, - "node_modules/blake2b": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.4.tgz", - "integrity": "sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==", + "node_modules/bittorrent-dht/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "blake2b-wasm": "^2.4.0", - "nanoassert": "^2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/blake2b-wasm": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", - "integrity": "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==", - "dependencies": { - "b4a": "^1.0.1", - "nanoassert": "^2.0.0" - } + "node_modules/bittorrent-dht/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/blob-to-it": { + "node_modules/bittorrent-lsd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-2.0.0.tgz", - "integrity": "sha512-O9P902MzxHg8fjIAzmK4HSo9WmcMn1ACJvSHJvIYWDr4na7GLyR5iQTf0i2EXlnM5EIWmWtk+vh38tTph9JiPA==", + "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-2.0.0.tgz", + "integrity": "sha512-jV+SMTGNY1iGWjf5cPA2HMeA6axuMQRWwWELtsuZ1FmQmZwC74we92nwtDTfv1WMnLx+oqEjWRri42IHjZitSQ==", + "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": { - "browser-readablestream-to-it": "^2.0.0" + "chrome-dgram": "^3.0.6", + "debug": "^4.2.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=12.20.0" } }, - "node_modules/blockstore-core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-3.0.0.tgz", - "integrity": "sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ==", + "node_modules/bittorrent-lsd/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "err-code": "^3.0.1", - "interface-blockstore": "^4.0.0", - "interface-store": "^3.0.0", - "it-all": "^2.0.0", - "it-drain": "^2.0.0", - "it-filter": "^2.0.0", - "it-take": "^2.0.0", - "multiformats": "^11.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/blockstore-datastore-adapter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-5.0.0.tgz", - "integrity": "sha512-gQ3aVE83HUnIRtxUh3E5iC8XHY1aWFwvklIa6rRbZGAw8KxnFgJRO1KjPBYrZuyIqstEcvQCGtzC+6LiKSF4KQ==", - "dependencies": { - "blockstore-core": "^3.0.0", - "err-code": "^3.0.1", - "interface-blockstore": "^4.0.0", - "interface-datastore": "^7.0.0", - "it-drain": "^2.0.0", - "it-pushable": "^3.1.0", - "multiformats": "^11.0.0" + "node": ">=6.0" }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "node_modules/bittorrent-lsd/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { + "node_modules/bittorrent-peerid": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.6.tgz", + "integrity": "sha512-VyLcUjVMEOdSpHaCG/7odvCdLbAB1y3l9A2V6WIje24uV7FkJPrQrH/RrlFmKxP89pFVDEnE+YlHaFujlFIZsg==", + "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/bittorrent-protocol": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-4.1.7.tgz", + "integrity": "sha512-z5JKH67pkwvjg+amwDe9cLP5kw0+bdEJqF/B95bM3Vbt+m7pE5ezXhoLAnSrYAvW2U+Q5Vd5tc2BrxakC22f/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": { + "bencode": "^3.0.3", + "bitfield": "^4.1.0", + "debug": "^4.3.4", + "rc4": "^0.1.5", + "streamx": "^2.13.2", + "throughput": "^1.0.1", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bittorrent-protocol/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bittorrent-protocol/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/bittorrent-protocol/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/bittorrent-tracker": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-10.0.8.tgz", + "integrity": "sha512-xU7v426SXEUl908dLuIQTkjluXMMPq6zbjgwk9kvF+NqwfpCjlpGgmhXn2VuLtaiiBX36HNQ5151GY8yiULb4g==", + "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": { + "@thaunknown/simple-peer": "^9.12.0", + "@thaunknown/simple-websocket": "^9.1.0", + "bencode": "^3.0.3", + "bittorrent-peerid": "^1.3.3", + "chrome-dgram": "^3.0.6", + "clone": "^2.0.0", + "compact2string": "^1.4.1", + "debug": "^4.1.1", + "ip": "^1.1.5", + "lru": "^3.1.0", + "minimist": "^1.2.5", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "run-parallel": "^1.2.0", + "run-series": "^1.1.9", + "simple-get": "^4.0.0", + "socks": "^2.0.0", + "string2compact": "^2.0.0", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2", + "ws": "^8.0.0" + }, + "bin": { + "bittorrent-tracker": "bin/cmd.js" + }, + "engines": { + "node": ">=12.20.0" + }, + "optionalDependencies": { + "bufferutil": "^4.0.3", + "utf-8-validate": "^5.0.5" + } + }, + "node_modules/bittorrent-tracker/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bittorrent-tracker/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/bittorrent-tracker/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blake2b": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.4.tgz", + "integrity": "sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==", + "dependencies": { + "blake2b-wasm": "^2.4.0", + "nanoassert": "^2.0.0" + } + }, + "node_modules/blake2b-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blake2b-universal/-/blake2b-universal-1.0.1.tgz", + "integrity": "sha512-vmMqpF8E9RCde8/+Su/s2rZRxOBwAYQsTyCgok4kLWhWrzMrX0CzID6pVheNJSESY0S0FNTOG4QfRJqnSLOjFA==", + "dependencies": { + "blake2b": "^2.1.3", + "sodium-native": "^3.0.1" + } + }, + "node_modules/blake2b-universal/node_modules/sodium-native": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.4.1.tgz", + "integrity": "sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + } + }, + "node_modules/blake2b-wasm": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", + "integrity": "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==", + "dependencies": { + "b4a": "^1.0.1", + "nanoassert": "^2.0.0" + } + }, + "node_modules/blob-to-it": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-2.0.0.tgz", + "integrity": "sha512-O9P902MzxHg8fjIAzmK4HSo9WmcMn1ACJvSHJvIYWDr4na7GLyR5iQTf0i2EXlnM5EIWmWtk+vh38tTph9JiPA==", + "dependencies": { + "browser-readablestream-to-it": "^2.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/block-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.1.1.tgz", + "integrity": "sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==" + }, + "node_modules/blockstore-core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-3.0.0.tgz", + "integrity": "sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ==", + "dependencies": { + "err-code": "^3.0.1", + "interface-blockstore": "^4.0.0", + "interface-store": "^3.0.0", + "it-all": "^2.0.0", + "it-drain": "^2.0.0", + "it-filter": "^2.0.0", + "it-take": "^2.0.0", + "multiformats": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/blockstore-datastore-adapter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-5.0.0.tgz", + "integrity": "sha512-gQ3aVE83HUnIRtxUh3E5iC8XHY1aWFwvklIa6rRbZGAw8KxnFgJRO1KjPBYrZuyIqstEcvQCGtzC+6LiKSF4KQ==", + "dependencies": { + "blockstore-core": "^3.0.0", + "err-code": "^3.0.1", + "interface-blockstore": "^4.0.0", + "interface-datastore": "^7.0.0", + "it-drain": "^2.0.0", + "it-pushable": "^3.1.0", + "multiformats": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", @@ -3840,6 +4327,36 @@ "pako": "~0.2.0" } }, + "node_modules/bt-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/bt-fetch/-/bt-fetch-3.3.2.tgz", + "integrity": "sha512-7rCH3h8EKnbnu5amsnb8PVfnP0cIXtA3wkcgxNKhQ7+9cWBXBg3LKCOtqMX0Dbnuu/t1U73pMv4nJcpQfcrM2w==", + "dependencies": { + "bencode": "^2.0.2", + "busboy": "^1.4.0", + "derive-key": "^1.0.1", + "ed25519-supercop": "^2.0.1", + "fs-extra": "^10.0.0", + "make-fetch": "^2.3.1", + "mime": "^3.0.0", + "range-parser": "^1.2.1", + "simple-sha1": "^3.1.0", + "stream-async-iterator": "^2.0.0", + "tmp-promise": "^3.0.3", + "webtorrent": "^2.0.34" + } + }, + "node_modules/bt-fetch/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/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -3895,6 +4412,19 @@ "node": ">=0.2.0" } }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -3940,6 +4470,29 @@ "resolved": "https://registry.npmjs.org/bytes.js/-/bytes.js-0.0.2.tgz", "integrity": "sha512-KrLm4hv5Qs9w6b0U7h1bCdqxrsf+e9QMsfHeyQFzAz94x/5Aqa+FTEUSNBtt5d2VuV3Hfiea3c4ti74RZDDYkg==" }, + "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/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -4115,6 +4668,67 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "node_modules/chrome-dgram": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", + "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", + "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", + "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/chunk-store-iterator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chunk-store-iterator/-/chunk-store-iterator-1.0.3.tgz", + "integrity": "sha512-JcSaB5h3wQstQKnaJi8sET40f0m+6Kh4mhKIr05lrWKi+EiQzn6XUoi6LipgRGMqXWNZZJaMz2tH4aeg4ptBDA==", + "dependencies": { + "block-iterator": "^1.1.1" + } + }, "node_modules/chunkd": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", @@ -4249,6 +4863,14 @@ "node": ">=8" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -4324,11 +4946,46 @@ "compact-encoding": "^2.4.1" } }, + "node_modules/compact2string": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", + "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", + "dependencies": { + "ipaddr.js": ">= 0.1.5" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/concordance": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", @@ -4419,6 +5076,25 @@ "node": ">= 0.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/crc-universal": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/crc-universal/-/crc-universal-1.0.2.tgz", @@ -4433,6 +5109,82 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "node_modules/create-torrent": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-6.0.11.tgz", + "integrity": "sha512-ZOme7/NFFS0b9IJRS6NkCz2BiUKjwnDPXBoxWpWjakQjzOcmBsYBlkJ7IxrfyFFpVmUK9Sew/d1ozETaye7xmw==", + "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": "^3.0.3", + "block-iterator": "^1.1.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.8", + "once": "^1.4.0", + "piece-length": "^2.0.1", + "queue-microtask": "^1.2.3", + "run-parallel": "^1.2.0", + "uint8-util": "^2.1.9" + }, + "bin": { + "create-torrent": "bin/cmd.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/create-torrent/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/cross-fetch-ponyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz", + "integrity": "sha512-uOBkDhUAGAbx/FEzNKkOfx3w57H8xReBBXoZvUnOKTI0FW0Xvrj3GrYv2iZXUqlffC1LMGfQzhmBM/ke+6eTDA==", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.3.0" + } + }, + "node_modules/cross-fetch-ponyfill/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4467,6 +5219,14 @@ "multiformats": "^11.0.0" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, "node_modules/datastore-core": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-8.0.4.tgz", @@ -4760,6 +5520,14 @@ "node": ">= 0.8" } }, + "node_modules/derive-key": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/derive-key/-/derive-key-1.0.1.tgz", + "integrity": "sha512-7DHGLGvxFF8umw8NEGH3n9KKgEN8duk4Fiy4WmN3QgNKEogDhaNIsTDd5JVN7ilB8xw4ike1Q08z8UJSJ7hebA==", + "dependencies": { + "blake2b-universal": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -4944,6 +5712,16 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ed25519-supercop": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ed25519-supercop/-/ed25519-supercop-2.0.1.tgz", + "integrity": "sha512-5K75apA428ygTu/uvWwfOPPqdw65v7lFDLX6CSsV/ByhhVR5xED93KXeKDEMZ7G2Ttd3RyQoL8pFGSoMEWBXHA==", + "hasInstallScript": true, + "dependencies": { + "napi-macros": "^2.0.0", + "node-gyp-build": "^4.2.3" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5916,6 +6694,11 @@ "fast-decode-uri-component": "^1.0.1" } }, + "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-redact": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", @@ -6016,6 +6799,41 @@ "xtend": "^4.0.0" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fetch-headers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fetch-headers/-/fetch-headers-2.0.0.tgz", + "integrity": "sha512-DUYUraWcka+q5RUZCtU6kyCKwVBHOztyXKYejPtU7xk+aBeU5XjjYHyrJ0VU5DMqsggE3ZWHyMLKmh4ogiqO1Q==" + }, + "node_modules/fetch-request-body-to-async-iterator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fetch-request-body-to-async-iterator/-/fetch-request-body-to-async-iterator-1.0.4.tgz", + "integrity": "sha512-1xBw1YKRVycL3R224OHM1Tv0EjoToSoDUyfHdm2lb+HbcdXmWaGuKqtIIDwa49kIKZR5GONUoAs6Rlnbb89uvQ==", + "dependencies": { + "stream-async-iterator": "^2.0.0" + } + }, "node_modules/figures": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", @@ -6158,6 +6976,17 @@ "resolved": "https://registry.npmjs.org/fnv1a/-/fnv1a-1.1.1.tgz", "integrity": "sha512-S2HviLR9UyNbt8R+vU6YeQtL8RliPwez9DQEVba5MAvN3Od+RSgKUSL2+qveOMt3owIeBukKoRu2enoOck5uag==" }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -6166,6 +6995,11 @@ "node": ">= 0.6" } }, + "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/freeport-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", @@ -6188,11 +7022,53 @@ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" }, + "node_modules/fs-chunk-store": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-4.0.1.tgz", + "integrity": "sha512-YUNg8BeMaklnlWIHFAXGgy30T9c4P6B27VErfMICHGnYl2ESYe7iyJN/FhQw5kalxQuyInYJ1uJPvwPRrI0RTg==", + "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": "^4.0.0", + "randombytes": "^2.0.3", + "run-parallel": "^1.1.2", + "thunky": "^1.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs-native-extensions": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.2.0.tgz", @@ -6210,6 +7086,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsa-chunk-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsa-chunk-store/-/fsa-chunk-store-1.1.3.tgz", + "integrity": "sha512-0+VDtmDyu5tlWTyw9u6das6JWWHtlfrvbaQH51PJwuWQ6t7R/OL3u0MnzTi5km30k9dijMeBWXEvgXWvmE78VA==" + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -6262,6 +7143,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-browser-rtc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6342,7 +7228,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6674,6 +7559,11 @@ "node": ">= 0.8" } }, + "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/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -6705,6 +7595,17 @@ "node": ">=10.17.0" } }, + "node_modules/hybrid-chunk-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hybrid-chunk-store/-/hybrid-chunk-store-1.2.0.tgz", + "integrity": "sha512-hOO2L2+4h3arosrZE7K4JBfDasrTwhHqhE43pLSXdmvICPVM+lTKnu0yKrsUamE5G7BYzQ93gdVWOeZ5uDuTiw==", + "dependencies": { + "cache-chunk-store": "^3.2.2", + "fsa-chunk-store": "^1.1.3", + "idb-chunk-store": "^1.0.1", + "memory-chunk-store": "^1.3.5" + } + }, "node_modules/hyper-sdk": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/hyper-sdk/-/hyper-sdk-4.2.3.tgz", @@ -6816,6 +7717,20 @@ "node": ">=0.10.0" } }, + "node_modules/idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==" + }, + "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/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -6853,6 +7768,28 @@ "node": ">=10 <11 || >=12 <13 || >=14" } }, + "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/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -6954,6 +7891,11 @@ "node": ">= 0.4" } }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "node_modules/ip-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", @@ -6965,6 +7907,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -7743,6 +8693,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": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -8480,6 +9435,11 @@ "@hapi/hoek": "^9.0.0" } }, + "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/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -8602,6 +9562,17 @@ "json5": "lib/cli.js" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", @@ -8615,6 +9586,14 @@ "node": ">=4.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": "3.2.0", "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", @@ -8638,6 +9617,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/kademlia-routing-table": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/kademlia-routing-table/-/kademlia-routing-table-1.0.1.tgz", @@ -8651,6 +9651,11 @@ "json-buffer": "3.0.1" } }, + "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": "8.0.0", "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", @@ -8781,6 +9786,41 @@ "set-cookie-parser": "^2.4.1" } }, + "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/load-ip-set": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-3.0.1.tgz", + "integrity": "sha512-ZFZt1g4Exq01SFtKjffqau+L4Qibt+51utymHHiWo8Iu/W7LYSqE7fiZ/iAZ6dIqbmeU6ICSIK02IizSScBkLQ==", + "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": { + "cross-fetch-ponyfill": "^1.0.1", + "ip-set": "^2.1.0", + "netmask": "^2.0.1", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "split": "^1.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/load-json-file": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", @@ -8880,6 +9920,17 @@ "node": ">=8" } }, + "node_modules/lru": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", + "integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==", + "dependencies": { + "inherits": "^2.0.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -8891,6 +9942,80 @@ "node": ">=10" } }, + "node_modules/lt_donthave": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-2.0.0.tgz", + "integrity": "sha512-qrNtq9faD5ycTM8Of7OUqPHPMv0H8NONf+dTAxUsAr0bAgPnD56BBhhBlskJVNL4WO+Dl/qmqWHF9eQb7+2lNA==", + "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" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/lt_donthave/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/lt_donthave/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/magnet-uri": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.5.tgz", + "integrity": "sha512-Ke+dDiYHK1Rq/ZyGUAgk7NIkoypivxolTj/A0qr60ypP0FjeP+NTUNEhr965HsRan0zGxKEBK73+SsjRyJWkXg==", + "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": { + "@thaunknown/thirty-two": "^1.0.3", + "bep53-range": "^2.0.0", + "uint8-util": "^2.1.9" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -8919,6 +10044,18 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/make-fetch": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/make-fetch/-/make-fetch-2.3.4.tgz", + "integrity": "sha512-GzsN2E2p82InBBMTNLM1AkIM7NkxQ9cKEPrF4e8jxDhtySThEsHAH1D8PQTJ6+79XX5vVJLDYnl07TXXShrUXQ==", + "dependencies": { + "concat-stream": "^2.0.0", + "fetch-headers": "^2.0.0", + "fetch-request-body-to-async-iterator": "^1.0.3", + "statuses": "^2.0.0", + "web-streams-polyfill": "^3.0.0" + } + }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -8994,6 +10131,14 @@ "url": "https://github.com/sindresorhus/mem?sponsor=1" } }, + "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/memory-level": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", @@ -9125,9 +10270,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9308,6 +10453,24 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", @@ -9948,6 +11111,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-torrent": { + "version": "11.0.12", + "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-11.0.12.tgz", + "integrity": "sha512-eraUrzTwBciRSkDSQhcjp/EVoc1Z0KVO85bQlI6LCGplByXloaul5SnL0qvRO0wK+YSoNjOfJUxTS9xpgjIkdA==", + "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": "^3.0.3", + "cross-fetch-ponyfill": "^1.0.3", + "get-stdin": "^9.0.0", + "magnet-uri": "^7.0.5", + "queue-microtask": "^1.2.3", + "uint8-util": "^2.1.9" + }, + "bin": { + "parse-torrent": "bin/cmd.js" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/parse-torrent/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/parse-torrent/node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9969,7 +11187,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10024,6 +11241,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": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -10685,6 +11907,11 @@ "resolved": "https://registry.npmjs.org/random-array-iterator/-/random-array-iterator-1.0.0.tgz", "integrity": "sha512-u7xCM93XqKEvPTP6xZp2ehttcAemKnh73oKNf1FvzuVCfpt6dILDt1Kxl1LeBjm2iNIeR49VGFhy4Iz3yOun+Q==" }, + "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==" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10720,6 +11947,14 @@ "node": ">= 0.8" } }, + "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-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -10959,7 +12194,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -11000,6 +12234,30 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "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/rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -11266,21 +12524,73 @@ "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", "integrity": "sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw==", "dependencies": { - "varint": "~5.0.0" + "varint": "~5.0.0" + } + }, + "node_modules/signed-varint/node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "node_modules/simdle-universal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simdle-universal/-/simdle-universal-1.1.0.tgz", + "integrity": "sha512-ZH+N1FHGksLWcNgpuaVaX2pI86Zzu58Y5S1mNXd2HuMId75eRsrtpAmCG1RZJXclViUiACVsLA3LD3TQVpha5Q==", + "dependencies": { + "b4a": "^1.6.0", + "node-gyp-build": "^4.2.3" + } + }, + "node_modules/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==", + "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/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "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": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "node_modules/signed-varint/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/simdle-universal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simdle-universal/-/simdle-universal-1.1.0.tgz", - "integrity": "sha512-ZH+N1FHGksLWcNgpuaVaX2pI86Zzu58Y5S1mNXd2HuMId75eRsrtpAmCG1RZJXclViUiACVsLA3LD3TQVpha5Q==", + "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": { - "b4a": "^1.6.0", - "node-gyp-build": "^4.2.3" + "queue-microtask": "^1.2.2", + "rusha": "^0.8.13" } }, "node_modules/simple-update-notifier": { @@ -11349,6 +12659,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/socket.io-client": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", @@ -11417,6 +12736,24 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "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==" + }, "node_modules/sodium-javascript": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/sodium-javascript/-/sodium-javascript-0.8.0.tgz", @@ -11503,6 +12840,26 @@ "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==" }, + "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/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/split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -11587,6 +12944,31 @@ "reusify": "^1.0.0" } }, + "node_modules/stream-async-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-async-iterator/-/stream-async-iterator-2.0.0.tgz", + "integrity": "sha512-ScYcTh9IFEtTALYMpKQGpuavPYCOPrRTb5cLzqG0T0g7GbBIn0A1EzDO73dzNjEzgky6FV/kkT+ygiO3UofEsQ==", + "dependencies": { + "@tootallnate/once": "^1.0.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-async-iterator/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/stream-async-iterator/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -11622,9 +13004,9 @@ } }, "node_modules/streamx": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.13.2.tgz", - "integrity": "sha512-+TWqixPhGDXEG9L/XczSbhfkmwAtGs3BJX5QNU6cvno+pOLKeszByWcnaTu6dg8efsTYqR8ZZuXWHhZfgrxMvA==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.14.3.tgz", + "integrity": "sha512-gzYLvy1CFe5KdfqQp9Q11uWNvDSnIjzGxx7FCKj83DLx0DJ/kwp0oOg3924b3te9bhVxKCQvrYIOxJAL7/euZg==", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -11729,6 +13111,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string2compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-2.0.1.tgz", + "integrity": "sha512-Bm/T8lHMTRXw+u83LE+OW7fXmC/wM+Mbccfdo533ajSBNxddDHlRrvxE49NdciGHgXkUQM5WYskJ7uTkbBUI0A==", + "dependencies": { + "addr-to-ip-port": "^2.0.0", + "ipaddr.js": "^2.0.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/string2compact/node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -11956,6 +13358,11 @@ "real-require": "^0.2.0" } }, + "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/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -11992,6 +13399,11 @@ "safe-buffer": "~5.1.0" } }, + "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", @@ -12040,6 +13452,39 @@ "node": ">=6" } }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12060,6 +13505,75 @@ "node": ">=0.6" } }, + "node_modules/torrent-discovery": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-10.0.11.tgz", + "integrity": "sha512-iEjQT6ohouYSWumYqz3ov1ngtxo+DPaeK1j3cRWZcWmMgwzn0C55TMcihnui08DDGkKwTGFd+7uthg0EMO4KcA==", + "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": "^11.0.4", + "bittorrent-lsd": "^2.0.0", + "bittorrent-tracker": "^10.0.8", + "debug": "^4.3.4", + "run-parallel": "^1.2.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/torrent-discovery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/torrent-discovery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "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/touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -12344,6 +13858,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/typescript": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", @@ -12370,6 +13889,14 @@ "streamx": "^2.12.0" } }, + "node_modules/uint8-util": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/uint8-util/-/uint8-util-2.1.9.tgz", + "integrity": "sha512-twtktH1wpZwM8ivYXs2HL3nqHRosKGOxrPnfLxqYnzOR0RrIKbn/GrUZinXJ9n8tWzW8VIW++IpES4LYtGHSDQ==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/uint8-varint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-1.0.4.tgz", @@ -12441,11 +13968,24 @@ "node": ">=12.18" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unix-path-resolve": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unix-path-resolve/-/unix-path-resolve-1.0.2.tgz", "integrity": "sha512-kG4g5nobBBaMnH2XbrS4sLUXEpx4nY2J3C6KAlAUcnahG2HChxSPVKWYrqEq76iTo+cyMkLUjqxGaQR2tz097Q==" }, + "node_modules/unordered-array-remove": { + "version": "1.0.2", + "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", @@ -12487,6 +14027,117 @@ "punycode": "^2.1.0" } }, + "node_modules/ut_metadata": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-4.0.2.tgz", + "integrity": "sha512-eRGDIdvgjySf2LQMOIjn+RDMVm9qTrer3xSCKhdboMFo2ugihV3hBGOzZQFbqF7QRRtrNJsHaPKfG2CUApJA9Q==", + "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": "^3.0.0", + "bitfield": "^4.0.0", + "debug": "^4.2.0", + "uint8-util": "^2.1.3" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ut_metadata/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ut_metadata/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/ut_metadata/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ut_pex": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-4.0.3.tgz", + "integrity": "sha512-u/2pLfKMyBuZ5qMFbyjP8dGw3+zw8NI0r4yR09oJe3LIvSo9lTPmHim47449Wh2Wn0yRO6PAf94OxJV3okRU7w==", + "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": "^3.0.0", + "compact2string": "^1.4.1", + "string2compact": "^2.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ut_pex/node_modules/bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "dependencies": { + "uint8-util": "^2.1.6" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -12517,14 +14168,54 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "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/utp-native/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 6" } }, + "node_modules/utp-native/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/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -12575,11 +14266,116 @@ "node": ">= 0.8" } }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, + "node_modules/webtorrent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-2.1.0.tgz", + "integrity": "sha512-Ez5LCvB5g7fyU6k3vxMVyoDenN8AHsCBOokAuZbR5mt5Lp0LChnnz8Q9o7d8nyyhxQQusUIeu39LfzWDkdPvlA==", + "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": { + "@silentbot1/nat-api": "^0.4.6", + "@thaunknown/simple-peer": "^9.12.0", + "@webtorrent/http-node": "^1.3.0", + "addr-to-ip-port": "^2.0.0", + "bitfield": "^4.1.0", + "bittorrent-dht": "^11.0.4", + "bittorrent-protocol": "^4.1.7", + "cache-chunk-store": "^3.2.2", + "chunk-store-iterator": "^1.0.3", + "cpus": "^1.0.3", + "create-torrent": "^6.0.11", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "escape-html": "^1.0.3", + "fs-chunk-store": "^4.0.1", + "hybrid-chunk-store": "^1.2.0", + "immediate-chunk-store": "^2.2.0", + "join-async-iterator": "^1.1.1", + "load-ip-set": "^3.0.1", + "lt_donthave": "^2.0.0", + "memory-chunk-store": "^1.3.5", + "mime": "^3.0.0", + "once": "^1.4.0", + "parse-torrent": "^11.0.12", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "range-parser": "^1.2.1", + "run-parallel": "^1.2.0", + "run-parallel-limit": "^1.1.0", + "speed-limiter": "^1.0.2", + "streamx": "^2.14.1", + "throughput": "^1.0.1", + "torrent-discovery": "^10.0.11", + "torrent-piece": "^2.0.1", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2", + "ut_metadata": "^4.0.2", + "ut_pex": "^4.0.3" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "utp-native": "^2.5.3" + } + }, + "node_modules/webtorrent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/webtorrent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/well-known-symbols": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", @@ -14652,6 +16448,43 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "@silentbot1/nat-api": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.6.tgz", + "integrity": "sha512-TGEGkAHLsXPJM4JN3YjZJReahmTSoNofK2wTqBfbsvm1rrfPELOXA3Yi4YV7FYGtSXdXNIuX18a4AUUn9+gd4Q==", + "requires": { + "chrome-dgram": "^3.0.6", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "default-gateway": "^6.0.3", + "unordered-array-remove": "^1.0.2", + "xml2js": "^0.6.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + } + } + }, "@sinclair/typebox": { "version": "0.25.21", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", @@ -14801,6 +16634,74 @@ "defer-to-connect": "^2.0.0" } }, + "@thaunknown/simple-peer": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-peer/-/simple-peer-9.12.0.tgz", + "integrity": "sha512-rts25KKlJvleUBR62Sb8di/oZDTzZru47LdFXTWDcBEOp9TsmFsEPmakfBIjsbo7bqFPMdIUcEqQgvG2MLMZiQ==", + "requires": { + "debug": "^4.3.2", + "err-code": "^3.0.1", + "get-browser-rtc": "^1.1.0", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@thaunknown/simple-websocket": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-websocket/-/simple-websocket-9.1.1.tgz", + "integrity": "sha512-vzQloFWRodRZqZhpxMpBljFtISesY8TihA8T5uKwCYdj2I1ImMhE/gAeTCPsCGOtxJfGKu3hw/is6MXauWLjOg==", + "requires": { + "debug": "^4.3.4", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9", + "ws": "^8.12.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@thaunknown/thirty-two": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@thaunknown/thirty-two/-/thirty-two-1.0.3.tgz", + "integrity": "sha512-bD6PvWbaf53JC04O7WnGDjqZBDgja/KT2Jd/6I2vJBIy+DLmQfQJZZ/G+16nAkVq1yGTIkO4rfc4RlH0DmEEqA==", + "requires": { + "uint8-util": "^2.1.9" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, "@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -15174,6 +17075,15 @@ "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" }, + "@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" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -15251,6 +17161,11 @@ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, + "addr-to-ip-port": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-2.0.0.tgz", + "integrity": "sha512-9bYbtjamtdLHZSqVIUXhilOryNPiL+x+Q5J/Unpg4VY3ZIkK3fT52UoErj1NdUeVm3J1t2iBEAur4Ywbl/bahw==" + }, "aggregate-error": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", @@ -15666,63 +17581,242 @@ } } }, - "b4a": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.1.tgz", - "integrity": "sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", - "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } - }, - "big-sparse-array": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", - "integrity": "sha512-6RjV/3mSZORlMdpUaQ6rUSpG637cZm0//E54YYGtQg1c1O+AbZP8UTdJ/TchsDZcTVLmyWZcseBfp2HBeXUXOQ==" + "b4a": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.1.tgz", + "integrity": "sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "requires": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "bencode": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", + "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==" + }, + "bep53-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz", + "integrity": "sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==" + }, + "big-sparse-array": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/big-sparse-array/-/big-sparse-array-1.0.3.tgz", + "integrity": "sha512-6RjV/3mSZORlMdpUaQ6rUSpG637cZm0//E54YYGtQg1c1O+AbZP8UTdJ/TchsDZcTVLmyWZcseBfp2HBeXUXOQ==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "binary-stream-equals": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/binary-stream-equals/-/binary-stream-equals-1.0.0.tgz", + "integrity": "sha512-xiUT5LGfD8JiLhbXiG+ByOnbgb9f2ssRLfZDQMl3nZdf89EotQZGZuMkDN8J3n46emabE7RnJ1q0r7Hv3INExw==", + "requires": { + "b4a": "^1.3.1" + } + }, + "bintrees": { + "version": "1.0.2", + "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": "11.0.4", + "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-11.0.4.tgz", + "integrity": "sha512-pTQKeGAJBBGkNnHpnJcBrgGYoKVhM6Y58UOgNwx7Yto9zrkdjJlyo26XpTLYMCHQBjdDBg0PGuW1nkA8cJkoIQ==", + "requires": { + "bencode": "^3.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" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "bittorrent-lsd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-2.0.0.tgz", + "integrity": "sha512-jV+SMTGNY1iGWjf5cPA2HMeA6axuMQRWwWELtsuZ1FmQmZwC74we92nwtDTfv1WMnLx+oqEjWRri42IHjZitSQ==", + "requires": { + "chrome-dgram": "^3.0.6", + "debug": "^4.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "bittorrent-peerid": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.6.tgz", + "integrity": "sha512-VyLcUjVMEOdSpHaCG/7odvCdLbAB1y3l9A2V6WIje24uV7FkJPrQrH/RrlFmKxP89pFVDEnE+YlHaFujlFIZsg==" }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "bittorrent-protocol": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-4.1.7.tgz", + "integrity": "sha512-z5JKH67pkwvjg+amwDe9cLP5kw0+bdEJqF/B95bM3Vbt+m7pE5ezXhoLAnSrYAvW2U+Q5Vd5tc2BrxakC22f/A==", "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "bencode": "^3.0.3", + "bitfield": "^4.1.0", + "debug": "^4.3.4", + "rc4": "^0.1.5", + "streamx": "^2.13.2", + "throughput": "^1.0.1", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "binary-stream-equals": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/binary-stream-equals/-/binary-stream-equals-1.0.0.tgz", - "integrity": "sha512-xiUT5LGfD8JiLhbXiG+ByOnbgb9f2ssRLfZDQMl3nZdf89EotQZGZuMkDN8J3n46emabE7RnJ1q0r7Hv3INExw==", + "bittorrent-tracker": { + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-10.0.8.tgz", + "integrity": "sha512-xU7v426SXEUl908dLuIQTkjluXMMPq6zbjgwk9kvF+NqwfpCjlpGgmhXn2VuLtaiiBX36HNQ5151GY8yiULb4g==", "requires": { - "b4a": "^1.3.1" + "@thaunknown/simple-peer": "^9.12.0", + "@thaunknown/simple-websocket": "^9.1.0", + "bencode": "^3.0.3", + "bittorrent-peerid": "^1.3.3", + "bufferutil": "^4.0.3", + "chrome-dgram": "^3.0.6", + "clone": "^2.0.0", + "compact2string": "^1.4.1", + "debug": "^4.1.1", + "ip": "^1.1.5", + "lru": "^3.1.0", + "minimist": "^1.2.5", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "run-parallel": "^1.2.0", + "run-series": "^1.1.9", + "simple-get": "^4.0.0", + "socks": "^2.0.0", + "string2compact": "^2.0.0", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2", + "utf-8-validate": "^5.0.5", + "ws": "^8.0.0" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, - "bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -15763,6 +17857,25 @@ "nanoassert": "^2.0.0" } }, + "blake2b-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blake2b-universal/-/blake2b-universal-1.0.1.tgz", + "integrity": "sha512-vmMqpF8E9RCde8/+Su/s2rZRxOBwAYQsTyCgok4kLWhWrzMrX0CzID6pVheNJSESY0S0FNTOG4QfRJqnSLOjFA==", + "requires": { + "blake2b": "^2.1.3", + "sodium-native": "^3.0.1" + }, + "dependencies": { + "sodium-native": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.4.1.tgz", + "integrity": "sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + } + } + }, "blake2b-wasm": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", @@ -15780,6 +17893,11 @@ "browser-readablestream-to-it": "^2.0.0" } }, + "block-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.1.1.tgz", + "integrity": "sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==" + }, "blockstore-core": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-3.0.0.tgz", @@ -15890,6 +18008,32 @@ "pako": "~0.2.0" } }, + "bt-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/bt-fetch/-/bt-fetch-3.3.2.tgz", + "integrity": "sha512-7rCH3h8EKnbnu5amsnb8PVfnP0cIXtA3wkcgxNKhQ7+9cWBXBg3LKCOtqMX0Dbnuu/t1U73pMv4nJcpQfcrM2w==", + "requires": { + "bencode": "^2.0.2", + "busboy": "^1.4.0", + "derive-key": "^1.0.1", + "ed25519-supercop": "^2.0.1", + "fs-extra": "^10.0.0", + "make-fetch": "^2.3.1", + "mime": "^3.0.0", + "range-parser": "^1.2.1", + "simple-sha1": "^3.1.0", + "stream-async-iterator": "^2.0.0", + "tmp-promise": "^3.0.3", + "webtorrent": "^2.0.34" + }, + "dependencies": { + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + } + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -15928,6 +18072,15 @@ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" }, + "bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -15963,6 +18116,15 @@ "resolved": "https://registry.npmjs.org/bytes.js/-/bytes.js-0.0.2.tgz", "integrity": "sha512-KrLm4hv5Qs9w6b0U7h1bCdqxrsf+e9QMsfHeyQFzAz94x/5Aqa+FTEUSNBtt5d2VuV3Hfiea3c4ti74RZDDYkg==" }, + "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" + } + }, "cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -16089,6 +18251,39 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "chrome-dgram": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", + "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", + "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" + } + }, + "chunk-store-iterator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chunk-store-iterator/-/chunk-store-iterator-1.0.3.tgz", + "integrity": "sha512-JcSaB5h3wQstQKnaJi8sET40f0m+6Kh4mhKIr05lrWKi+EiQzn6XUoi6LipgRGMqXWNZZJaMz2tH4aeg4ptBDA==", + "requires": { + "block-iterator": "^1.1.1" + } + }, "chunkd": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", @@ -16184,6 +18379,11 @@ } } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, "clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -16250,11 +18450,42 @@ "compact-encoding": "^2.4.1" } }, + "compact2string": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", + "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", + "requires": { + "ipaddr.js": ">= 0.1.5" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "concordance": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", @@ -16327,6 +18558,11 @@ "vary": "^1" } }, + "cpus": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz", + "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==" + }, "crc-universal": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/crc-universal/-/crc-universal-1.0.2.tgz", @@ -16341,6 +18577,56 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "create-torrent": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-6.0.11.tgz", + "integrity": "sha512-ZOme7/NFFS0b9IJRS6NkCz2BiUKjwnDPXBoxWpWjakQjzOcmBsYBlkJ7IxrfyFFpVmUK9Sew/d1ozETaye7xmw==", + "requires": { + "bencode": "^3.0.3", + "block-iterator": "^1.1.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.8", + "once": "^1.4.0", + "piece-length": "^2.0.1", + "queue-microtask": "^1.2.3", + "run-parallel": "^1.2.0", + "uint8-util": "^2.1.9" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + } + } + }, + "cross-fetch-ponyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz", + "integrity": "sha512-uOBkDhUAGAbx/FEzNKkOfx3w57H8xReBBXoZvUnOKTI0FW0Xvrj3GrYv2iZXUqlffC1LMGfQzhmBM/ke+6eTDA==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.3.0" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -16369,6 +18655,11 @@ "multiformats": "^11.0.0" } }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, "datastore-core": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-8.0.4.tgz", @@ -16580,6 +18871,14 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, + "derive-key": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/derive-key/-/derive-key-1.0.1.tgz", + "integrity": "sha512-7DHGLGvxFF8umw8NEGH3n9KKgEN8duk4Fiy4WmN3QgNKEogDhaNIsTDd5JVN7ilB8xw4ike1Q08z8UJSJ7hebA==", + "requires": { + "blake2b-universal": "^1.0.0" + } + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -16737,6 +19036,15 @@ "safe-buffer": "^5.0.1" } }, + "ed25519-supercop": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ed25519-supercop/-/ed25519-supercop-2.0.1.tgz", + "integrity": "sha512-5K75apA428ygTu/uvWwfOPPqdw65v7lFDLX6CSsV/ByhhVR5xED93KXeKDEMZ7G2Ttd3RyQoL8pFGSoMEWBXHA==", + "requires": { + "napi-macros": "^2.0.0", + "node-gyp-build": "^4.2.3" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -17462,6 +19770,11 @@ "fast-decode-uri-component": "^1.0.1" } }, + "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-redact": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", @@ -17553,6 +19866,28 @@ "xtend": "^4.0.0" } }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "fetch-headers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fetch-headers/-/fetch-headers-2.0.0.tgz", + "integrity": "sha512-DUYUraWcka+q5RUZCtU6kyCKwVBHOztyXKYejPtU7xk+aBeU5XjjYHyrJ0VU5DMqsggE3ZWHyMLKmh4ogiqO1Q==" + }, + "fetch-request-body-to-async-iterator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fetch-request-body-to-async-iterator/-/fetch-request-body-to-async-iterator-1.0.4.tgz", + "integrity": "sha512-1xBw1YKRVycL3R224OHM1Tv0EjoToSoDUyfHdm2lb+HbcdXmWaGuKqtIIDwa49kIKZR5GONUoAs6Rlnbb89uvQ==", + "requires": { + "stream-async-iterator": "^2.0.0" + } + }, "figures": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", @@ -17660,11 +19995,24 @@ "resolved": "https://registry.npmjs.org/fnv1a/-/fnv1a-1.1.1.tgz", "integrity": "sha512-S2HviLR9UyNbt8R+vU6YeQtL8RliPwez9DQEVba5MAvN3Od+RSgKUSL2+qveOMt3owIeBukKoRu2enoOck5uag==" }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, + "freelist": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz", + "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg==" + }, "freeport-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", @@ -17680,11 +20028,33 @@ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" }, + "fs-chunk-store": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-4.0.1.tgz", + "integrity": "sha512-YUNg8BeMaklnlWIHFAXGgy30T9c4P6B27VErfMICHGnYl2ESYe7iyJN/FhQw5kalxQuyInYJ1uJPvwPRrI0RTg==", + "requires": { + "queue-microtask": "^1.2.2", + "random-access-file": "^4.0.0", + "randombytes": "^2.0.3", + "run-parallel": "^1.1.2", + "thunky": "^1.0.1" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs-native-extensions": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.2.0.tgz", @@ -17701,6 +20071,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "fsa-chunk-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsa-chunk-store/-/fsa-chunk-store-1.1.3.tgz", + "integrity": "sha512-0+VDtmDyu5tlWTyw9u6das6JWWHtlfrvbaQH51PJwuWQ6t7R/OL3u0MnzTi5km30k9dijMeBWXEvgXWvmE78VA==" + }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -17737,6 +20112,11 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "get-browser-rtc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -17787,7 +20167,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18034,6 +20413,11 @@ "toidentifier": "1.0.1" } }, + "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==" + }, "http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -18055,6 +20439,17 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" }, + "hybrid-chunk-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hybrid-chunk-store/-/hybrid-chunk-store-1.2.0.tgz", + "integrity": "sha512-hOO2L2+4h3arosrZE7K4JBfDasrTwhHqhE43pLSXdmvICPVM+lTKnu0yKrsUamE5G7BYzQ93gdVWOeZ5uDuTiw==", + "requires": { + "cache-chunk-store": "^3.2.2", + "fsa-chunk-store": "^1.1.3", + "idb-chunk-store": "^1.0.1", + "memory-chunk-store": "^1.3.5" + } + }, "hyper-sdk": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/hyper-sdk/-/hyper-sdk-4.2.3.tgz", @@ -18163,6 +20558,20 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==" + }, + "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" + } + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -18180,6 +20589,14 @@ "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", "dev": true }, + "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" + } + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -18251,11 +20668,24 @@ "side-channel": "^1.0.4" } }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "ip-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==" }, + "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": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -18866,6 +21296,11 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "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": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -19388,6 +21823,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==" + }, "joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -19482,6 +21922,15 @@ "minimist": "^1.2.0" } }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, "jsx-ast-utils": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", @@ -19492,6 +21941,11 @@ "object.assign": "^4.1.3" } }, + "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": "3.2.0", "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", @@ -19509,10 +21963,31 @@ }, "k-bucket": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", - "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", + "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", + "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", + "requires": { + "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": { - "randombytes": "^2.1.0" + "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" } }, "kademlia-routing-table": { @@ -19528,6 +22003,11 @@ "json-buffer": "3.0.1" } }, + "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": "8.0.0", "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", @@ -19641,6 +22121,24 @@ "set-cookie-parser": "^2.4.1" } }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "load-ip-set": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-3.0.1.tgz", + "integrity": "sha512-ZFZt1g4Exq01SFtKjffqau+L4Qibt+51utymHHiWo8Iu/W7LYSqE7fiZ/iAZ6dIqbmeU6ICSIK02IizSScBkLQ==", + "requires": { + "cross-fetch-ponyfill": "^1.0.1", + "ip-set": "^2.1.0", + "netmask": "^2.0.1", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "split": "^1.0.1" + } + }, "load-json-file": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", @@ -19720,6 +22218,14 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, + "lru": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", + "integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==", + "requires": { + "inherits": "^2.0.1" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -19728,6 +22234,40 @@ "yallist": "^4.0.0" } }, + "lt_donthave": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-2.0.0.tgz", + "integrity": "sha512-qrNtq9faD5ycTM8Of7OUqPHPMv0H8NONf+dTAxUsAr0bAgPnD56BBhhBlskJVNL4WO+Dl/qmqWHF9eQb7+2lNA==", + "requires": { + "debug": "^4.2.0", + "unordered-array-remove": "^1.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "magnet-uri": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.5.tgz", + "integrity": "sha512-Ke+dDiYHK1Rq/ZyGUAgk7NIkoypivxolTj/A0qr60ypP0FjeP+NTUNEhr965HsRan0zGxKEBK73+SsjRyJWkXg==", + "requires": { + "@thaunknown/thirty-two": "^1.0.3", + "bep53-range": "^2.0.0", + "uint8-util": "^2.1.9" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -19749,6 +22289,18 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "make-fetch": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/make-fetch/-/make-fetch-2.3.4.tgz", + "integrity": "sha512-GzsN2E2p82InBBMTNLM1AkIM7NkxQ9cKEPrF4e8jxDhtySThEsHAH1D8PQTJ6+79XX5vVJLDYnl07TXXShrUXQ==", + "requires": { + "concat-stream": "^2.0.0", + "fetch-headers": "^2.0.0", + "fetch-request-body-to-async-iterator": "^1.0.3", + "statuses": "^2.0.0", + "web-streams-polyfill": "^3.0.0" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -19799,6 +22351,14 @@ "mimic-fn": "^4.0.0" } }, + "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" + } + }, "memory-level": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", @@ -19891,9 +22451,9 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "mirror-drive": { "version": "1.2.1", @@ -20030,6 +22590,11 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, "node-fetch": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.8.tgz", @@ -20467,6 +23032,34 @@ "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", "dev": true }, + "parse-torrent": { + "version": "11.0.12", + "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-11.0.12.tgz", + "integrity": "sha512-eraUrzTwBciRSkDSQhcjp/EVoc1Z0KVO85bQlI6LCGplByXloaul5SnL0qvRO0wK+YSoNjOfJUxTS9xpgjIkdA==", + "requires": { + "bencode": "^3.0.3", + "cross-fetch-ponyfill": "^1.0.3", + "get-stdin": "^9.0.0", + "magnet-uri": "^7.0.5", + "queue-microtask": "^1.2.3", + "uint8-util": "^2.1.9" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + }, + "get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" + } + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -20481,8 +23074,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -20522,6 +23114,11 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "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": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -21083,6 +23680,11 @@ "resolved": "https://registry.npmjs.org/random-array-iterator/-/random-array-iterator-1.0.0.tgz", "integrity": "sha512-u7xCM93XqKEvPTP6xZp2ehttcAemKnh73oKNf1FvzuVCfpt6dILDt1Kxl1LeBjm2iNIeR49VGFhy4Iz3yOun+Q==" }, + "random-iterate": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", + "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -21112,6 +23714,11 @@ "unpipe": "1.0.0" } }, + "rc4": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz", + "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==" + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -21290,7 +23897,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -21303,6 +23909,16 @@ "queue-microtask": "^1.2.2" } }, + "run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" + }, + "rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -21539,6 +24155,30 @@ "node-gyp-build": "^4.2.3" } }, + "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==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "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-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -21588,6 +24228,11 @@ } } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, "socket.io-client": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", @@ -21638,6 +24283,22 @@ } } }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + } + } + }, "sodium-javascript": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/sodium-javascript/-/sodium-javascript-0.8.0.tgz", @@ -21713,6 +24374,23 @@ "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==" }, + "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" + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, "split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -21770,6 +24448,30 @@ "reusify": "^1.0.0" } }, + "stream-async-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-async-iterator/-/stream-async-iterator-2.0.0.tgz", + "integrity": "sha512-ScYcTh9IFEtTALYMpKQGpuavPYCOPrRTb5cLzqG0T0g7GbBIn0A1EzDO73dzNjEzgky6FV/kkT+ygiO3UofEsQ==", + "requires": { + "@tootallnate/once": "^1.0.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -21801,9 +24503,9 @@ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, "streamx": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.13.2.tgz", - "integrity": "sha512-+TWqixPhGDXEG9L/XczSbhfkmwAtGs3BJX5QNU6cvno+pOLKeszByWcnaTu6dg8efsTYqR8ZZuXWHhZfgrxMvA==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.14.3.tgz", + "integrity": "sha512-gzYLvy1CFe5KdfqQp9Q11uWNvDSnIjzGxx7FCKj83DLx0DJ/kwp0oOg3924b3te9bhVxKCQvrYIOxJAL7/euZg==", "requires": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -21883,6 +24585,22 @@ "es-abstract": "^1.20.4" } }, + "string2compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-2.0.1.tgz", + "integrity": "sha512-Bm/T8lHMTRXw+u83LE+OW7fXmC/wM+Mbccfdo533ajSBNxddDHlRrvxE49NdciGHgXkUQM5WYskJ7uTkbBUI0A==", + "requires": { + "addr-to-ip-port": "^2.0.0", + "ipaddr.js": "^2.0.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + } + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -22056,6 +24774,11 @@ "real-require": "^0.2.0" } }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -22094,6 +24817,11 @@ } } }, + "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", @@ -22133,6 +24861,32 @@ "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-10.0.1.tgz", "integrity": "sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==" }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "requires": { + "tmp": "^0.2.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -22147,6 +24901,38 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "torrent-discovery": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-10.0.11.tgz", + "integrity": "sha512-iEjQT6ohouYSWumYqz3ov1ngtxo+DPaeK1j3cRWZcWmMgwzn0C55TMcihnui08DDGkKwTGFd+7uthg0EMO4KcA==", + "requires": { + "bittorrent-dht": "^11.0.4", + "bittorrent-lsd": "^2.0.0", + "bittorrent-tracker": "^10.0.8", + "debug": "^4.3.4", + "run-parallel": "^1.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "torrent-piece": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-2.0.1.tgz", + "integrity": "sha512-JLSOyvQVLI6JTWqioY4vFL0JkEUKQcaHQsU3loxkCvPTSttw8ePs2tFwsP4XIjw99Fz8EdOzt/4faykcbnPbCQ==" + }, "touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -22333,6 +25119,11 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "typescript": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", @@ -22351,6 +25142,14 @@ "streamx": "^2.12.0" } }, + "uint8-util": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/uint8-util/-/uint8-util-2.1.9.tgz", + "integrity": "sha512-twtktH1wpZwM8ivYXs2HL3nqHRosKGOxrPnfLxqYnzOR0RrIKbn/GrUZinXJ9n8tWzW8VIW++IpES4LYtGHSDQ==", + "requires": { + "base64-arraybuffer": "^1.0.2" + } + }, "uint8-varint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-1.0.4.tgz", @@ -22404,11 +25203,21 @@ "busboy": "^1.6.0" } }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, "unix-path-resolve": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unix-path-resolve/-/unix-path-resolve-1.0.2.tgz", "integrity": "sha512-kG4g5nobBBaMnH2XbrS4sLUXEpx4nY2J3C6KAlAUcnahG2HChxSPVKWYrqEq76iTo+cyMkLUjqxGaQR2tz097Q==" }, + "unordered-array-remove": { + "version": "1.0.2", + "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", @@ -22446,6 +25255,69 @@ "punycode": "^2.1.0" } }, + "ut_metadata": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-4.0.2.tgz", + "integrity": "sha512-eRGDIdvgjySf2LQMOIjn+RDMVm9qTrer3xSCKhdboMFo2ugihV3hBGOzZQFbqF7QRRtrNJsHaPKfG2CUApJA9Q==", + "requires": { + "bencode": "^3.0.0", + "bitfield": "^4.0.0", + "debug": "^4.2.0", + "uint8-util": "^2.1.3" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ut_pex": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-4.0.3.tgz", + "integrity": "sha512-u/2pLfKMyBuZ5qMFbyjP8dGw3+zw8NI0r4yR09oJe3LIvSo9lTPmHim47449Wh2Wn0yRO6PAf94OxJV3okRU7w==", + "requires": { + "bencode": "^3.0.0", + "compact2string": "^1.4.1", + "string2compact": "^2.0.1" + }, + "dependencies": { + "bencode": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-3.0.3.tgz", + "integrity": "sha512-aP282ducX2oSLiopRaPxvO6GMOsn0teN122hvlQQXlIr0fJC+Iirea6tmOWSLWPd+GtJf2YF6+YlbF7Wz90rIA==", + "requires": { + "uint8-util": "^2.1.6" + } + } + } + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -22481,6 +25353,38 @@ "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" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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 + } + } + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -22523,11 +25427,82 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, + "webtorrent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-2.1.0.tgz", + "integrity": "sha512-Ez5LCvB5g7fyU6k3vxMVyoDenN8AHsCBOokAuZbR5mt5Lp0LChnnz8Q9o7d8nyyhxQQusUIeu39LfzWDkdPvlA==", + "requires": { + "@silentbot1/nat-api": "^0.4.6", + "@thaunknown/simple-peer": "^9.12.0", + "@webtorrent/http-node": "^1.3.0", + "addr-to-ip-port": "^2.0.0", + "bitfield": "^4.1.0", + "bittorrent-dht": "^11.0.4", + "bittorrent-protocol": "^4.1.7", + "cache-chunk-store": "^3.2.2", + "chunk-store-iterator": "^1.0.3", + "cpus": "^1.0.3", + "create-torrent": "^6.0.11", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "escape-html": "^1.0.3", + "fs-chunk-store": "^4.0.1", + "hybrid-chunk-store": "^1.2.0", + "immediate-chunk-store": "^2.2.0", + "join-async-iterator": "^1.1.1", + "load-ip-set": "^3.0.1", + "lt_donthave": "^2.0.0", + "memory-chunk-store": "^1.3.5", + "mime": "^3.0.0", + "once": "^1.4.0", + "parse-torrent": "^11.0.12", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "range-parser": "^1.2.1", + "run-parallel": "^1.2.0", + "run-parallel-limit": "^1.1.0", + "speed-limiter": "^1.0.2", + "streamx": "^2.14.1", + "throughput": "^1.0.1", + "torrent-discovery": "^10.0.11", + "torrent-piece": "^2.0.1", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2", + "ut_metadata": "^4.0.2", + "ut_pex": "^4.0.3", + "utp-native": "^2.5.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "well-known-symbols": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts index dbb00e59..f50e156b 100644 --- a/protocols/bittorrent.ts +++ b/protocols/bittorrent.ts @@ -71,6 +71,12 @@ export class BitTorrentProtocol implements Protocol Date: Wed, 14 Jun 2023 21:57:26 -0400 Subject: [PATCH 06/12] Use bittorrent in DNSLink response --- protocols/bittorrent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts index f50e156b..239f1613 100644 --- a/protocols/bittorrent.ts +++ b/protocols/bittorrent.ts @@ -84,7 +84,7 @@ export class BitTorrentProtocol implements Protocol Date: Thu, 15 Jun 2023 13:18:50 -0400 Subject: [PATCH 07/12] Ensure bittorrent is used in tests correctly --- config/sites.ts | 10 ++++++++++ fixtures/mockProtocols.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/config/sites.ts b/config/sites.ts index c814c421..b2d37f25 100644 --- a/config/sites.ts +++ b/config/sites.ts @@ -62,6 +62,16 @@ export class SiteConfigStore extends Config> { promises.push(promise) } + if (site.protocols.bittorrent) { + const promise = this.protocols.bittorrent + .sync(siteId, filePath, undefined, ctx) + .then((protocolLinks) => { + site.links.bittorrent = protocolLinks + }) + + promises.push(promise) + } + await Promise.all(promises) await this.db.put(siteId, site) } diff --git a/fixtures/mockProtocols.ts b/fixtures/mockProtocols.ts index 0eefee02..28effd35 100644 --- a/fixtures/mockProtocols.ts +++ b/fixtures/mockProtocols.ts @@ -92,7 +92,7 @@ class MockBitTorrentProtocol extends BaseMockProtocol Date: Thu, 29 Jun 2023 17:10:21 -0400 Subject: [PATCH 08/12] Hardcode torrent port --- ansible/roles/distributed_press/tasks/main.yml | 6 ++++++ protocols/bittorrent.ts | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ansible/roles/distributed_press/tasks/main.yml b/ansible/roles/distributed_press/tasks/main.yml index 1c62a273..ea652fb1 100644 --- a/ansible/roles/distributed_press/tasks/main.yml +++ b/ansible/roles/distributed_press/tasks/main.yml @@ -68,6 +68,12 @@ - name: "Enable libp2p tcp traffic through firewall" shell: "ufw allow in 7976/tcp" +- name: "Enable webtorrent udp traffic through firewall" + shell: "ufw allow in 2867/udp" + +- name: "Enable webtorrent tcp traffic through firewall" + shell: "ufw allow in 2867/tcp" + - name: "Check if JWT keys got generated already" stat: path: "{{distributed_press_data}}/keys/" diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts index 239f1613..e076c57a 100644 --- a/protocols/bittorrent.ts +++ b/protocols/bittorrent.ts @@ -22,7 +22,11 @@ export class BitTorrentProtocol implements Protocol { const folder = this.options.path - this.manager = new TorrentManager({ folder }) + this.manager = new TorrentManager({ + folder, + // Phone dialpad for BTOR + torrentPort: 2867 + }) } async unload (): Promise { From beb3ee48ad35e303aeaadc8e5ef790cbf4fe85e6 Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Thu, 29 Jun 2023 17:16:41 -0400 Subject: [PATCH 09/12] Fix ts errors --- @types/bt-fetch.d.ts | 1 + config/sites.test.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/@types/bt-fetch.d.ts b/@types/bt-fetch.d.ts index 8e54fb97..3d3d04a6 100644 --- a/@types/bt-fetch.d.ts +++ b/@types/bt-fetch.d.ts @@ -3,6 +3,7 @@ declare module 'bt-fetch' { folder: string timeout: number reloadInterval: number + torrentPort: number }> export interface Torrent { diff --git a/config/sites.test.ts b/config/sites.test.ts index 3c8e57ad..c68c05a9 100644 --- a/config/sites.test.ts +++ b/config/sites.test.ts @@ -16,7 +16,8 @@ test('sites are default private', async t => { protocols: { http: true, ipfs: false, - hyper: false + hyper: false, + bittorrent: false } }) const result = await cfg.get(site.id) From b4d4068a1be89176a46f019fbdd3b89b82773be1 Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Thu, 29 Jun 2023 17:25:02 -0400 Subject: [PATCH 10/12] Clean up sites from DB with default values on missing --- config/sites.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/config/sites.ts b/config/sites.ts index d15d3244..5c465e2c 100644 --- a/config/sites.ts +++ b/config/sites.ts @@ -88,7 +88,19 @@ export class SiteConfigStore extends Config> { } async get (id: string): Promise> { - return await this.db.get(id) + const site = await this.db.get(id) + const TO_FILL = ['bittorrent', 'public'] + /* eslint-disable */ + for (const key of TO_FILL) { + // @ts-ignore + if (!site[key]) { + // @ts-ignore + site[key] = false + } + } + /* eslint-enable */ + + return site } async listAll (hidePrivate: boolean): Promise { From 7e61766d7573002f5c08d1a0bc7f4b2315c1fba5 Mon Sep 17 00:00:00 2001 From: Mauve Signweaver Date: Fri, 30 Jun 2023 13:34:28 -0400 Subject: [PATCH 11/12] Fix magnet link syntax --- protocols/bittorrent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocols/bittorrent.ts b/protocols/bittorrent.ts index e076c57a..abe212dd 100644 --- a/protocols/bittorrent.ts +++ b/protocols/bittorrent.ts @@ -81,7 +81,7 @@ export class BitTorrentProtocol implements Protocol Date: Thu, 6 Jul 2023 17:22:29 -0400 Subject: [PATCH 12/12] Make ProtocolStatus fields optional --- api/schemas.ts | 2 +- config/sites.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/api/schemas.ts b/api/schemas.ts index 033e67cb..45225d6f 100644 --- a/api/schemas.ts +++ b/api/schemas.ts @@ -36,7 +36,7 @@ export const Protocols = Type.Object({ ipfs: IPFSProtocolFields, bittorrent: BitTorrentProtocolFields }) -export const ProtocolStatus = Type.Record(Type.KeyOf(Protocols), Type.Boolean()) +export const ProtocolStatus = Type.Partial(Type.Record(Type.KeyOf(Protocols), Type.Boolean())) export const Site = Type.Object({ id: Type.String(), domain: Type.String(), diff --git a/config/sites.ts b/config/sites.ts index 5c465e2c..b964e628 100644 --- a/config/sites.ts +++ b/config/sites.ts @@ -33,7 +33,7 @@ export class SiteConfigStore extends Config> { const site = await this.get(siteId) const promises = [] - if (site.protocols.http) { + if (site.protocols.http === true) { const promise = this.protocols.http .sync(siteId, filePath, undefined, ctx) .then((protocolLinks) => { @@ -43,7 +43,7 @@ export class SiteConfigStore extends Config> { promises.push(promise) } - if (site.protocols.hyper) { + if (site.protocols.hyper === true) { const promise = this.protocols.hyper .sync(siteId, filePath, undefined, ctx) .then((protocolLinks) => { @@ -53,7 +53,7 @@ export class SiteConfigStore extends Config> { promises.push(promise) } - if (site.protocols.ipfs) { + if (site.protocols.ipfs === true) { const promise = this.protocols.ipfs .sync(siteId, filePath, undefined, ctx) .then((protocolLinks) => { @@ -63,7 +63,7 @@ export class SiteConfigStore extends Config> { promises.push(promise) } - if (site.protocols.bittorrent) { + if (site.protocols.bittorrent === true) { const promise = this.protocols.bittorrent .sync(siteId, filePath, undefined, ctx) .then((protocolLinks) => {