From 0a807c190d0e9d02cfee12b37687724cfcf8c7b5 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 14:30:52 +0200 Subject: [PATCH 01/43] packages, node-version, api changes libp2p v3 --- .github/workflows/ci.yml | 10 +- .nvmrc | 3 +- package-lock.json | 2617 +++++++++-------- package.json | 45 +- src/components/Indexer/processor.ts | 4 +- .../Indexer/processors/BaseProcessor.ts | 4 +- .../DispenserActivatedEventProcessor.ts | 2 +- .../DispenserCreatedEventProcessor.ts | 2 +- .../DispenserDeactivatedEventProcessor.ts | 2 +- .../ExchangeActivatedEventProcessor.ts | 2 +- .../ExchangeCreatedEventProcessor.ts | 2 +- .../ExchangeDeactivatedEventProcessor.ts | 2 +- .../ExchangeRateChangedEventProcessor.ts | 2 +- .../processors/MetadataEventProcessor.ts | 2 +- .../processors/MetadataStateEventProcessor.ts | 2 +- .../processors/OrderReusedEventProcessor.ts | 2 +- .../processors/OrderStartedEventProcessor.ts | 2 +- src/components/Indexer/utils.ts | 12 +- src/components/P2P/index.ts | 10 +- .../core/admin/collectFeesHandler.ts | 2 +- src/components/core/handler/ddoHandler.ts | 2 +- src/components/core/utils/escrow.ts | 2 +- src/components/core/utils/feesHandler.ts | 2 +- src/components/core/utils/validateOrders.ts | 4 +- src/test/integration/algorithmsAccess.test.ts | 6 +- src/test/integration/compute.test.ts | 8 +- src/test/integration/credentials.test.ts | 4 +- .../integration/encryptDecryptDDO.test.ts | 4 +- src/test/integration/indexer.test.ts | 6 +- .../integration/operationsDashboard.test.ts | 2 +- src/test/integration/pricing.test.ts | 8 +- src/test/utils/assets.ts | 6 +- src/test/utils/contracts.ts | 4 +- src/utils/address.ts | 2 +- src/utils/asset.ts | 4 +- src/utils/auth.ts | 2 +- src/utils/blockchain.ts | 2 +- src/utils/config/builder.ts | 24 +- src/utils/config/schemas.ts | 2 +- src/utils/credentials.ts | 2 +- 40 files changed, 1425 insertions(+), 1400 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 852a63fce..a07853dca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.19.0' + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 env: @@ -66,7 +66,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.19.0' + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 env: @@ -100,7 +100,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.19.0' + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 env: @@ -178,7 +178,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 'v20.19.0' + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 @@ -309,7 +309,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.19.0' + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 env: diff --git a/.nvmrc b/.nvmrc index 3bf34c276..42126c054 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1,2 @@ -v20.19.0 \ No newline at end of file +22 + diff --git a/package-lock.json b/package-lock.json index 45b46f0b7..9e5c8d938 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,25 +9,25 @@ "version": "0.2.3", "license": "Apache-2.0", "dependencies": { - "@chainsafe/libp2p-noise": "^15.1.0", - "@chainsafe/libp2p-yamux": "^6.0.2", + "@chainsafe/libp2p-noise": "^17.0.0", + "@chainsafe/libp2p-yamux": "^8.0.1", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^2.0.0", - "@libp2p/bootstrap": "^10.1.1", - "@libp2p/circuit-relay-v2": "^1.1.1", - "@libp2p/crypto": "^4.1.5", - "@libp2p/dcutr": "^1.1.1", - "@libp2p/identify": "^2.1.1", - "@libp2p/kad-dht": "^12.1.1", - "@libp2p/mdns": "^10.1.1", - "@libp2p/peer-id": "^4.1.4", - "@libp2p/peer-id-factory": "^4.1.4", - "@libp2p/ping": "^1.1.1", - "@libp2p/pubsub": "^9.0.22", - "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.1.1", - "@libp2p/upnp-nat": "^1.2.1", - "@libp2p/websockets": "^8.1.1", + "@libp2p/autonat": "^3.0.9", + "@libp2p/bootstrap": "^12.0.10", + "@libp2p/circuit-relay-v2": "^4.1.2", + "@libp2p/crypto": "^5.1.13", + "@libp2p/dcutr": "^3.0.9", + "@libp2p/identify": "^4.0.9", + "@libp2p/kad-dht": "^16.1.2", + "@libp2p/mdns": "^12.0.10", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/pubsub": "^10.1.18", + "@libp2p/pubsub-peer-discovery": "^12.0.0", + "@libp2p/tcp": "^11.0.9", + "@libp2p/upnp-nat": "^4.0.9", + "@libp2p/websockets": "^10.1.2", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -46,7 +46,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^1.8.0", + "libp2p": "^3.1.2", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -69,7 +69,7 @@ "@types/jsonwebtoken": "^9.0.9", "@types/lodash": "^4.17.21", "@types/mocha": "^10.0.10", - "@types/node": "^20.14.2", + "@types/node": "^25.0.3", "@types/node-cron": "^3.0.11", "@types/sinon": "^17.0.4", "@types/tar-stream": "^3.1.4", @@ -85,10 +85,11 @@ "eslint-plugin-promise": "^6.1.1", "mocha": "^11.1.0", "nyc": "^17.1.0", - "prettier": "^3.0.3", + "prettier": "^3.7.4", "release-it": "^19.0.6", "sinon": "^19.0.2", - "tsx": "^4.19.3" + "tsx": "^4.19.3", + "typescript": "^5.9.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -100,55 +101,34 @@ } }, "node_modules/@achingbrain/nat-port-mapper": { - "version": "1.0.13", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-4.0.5.tgz", + "integrity": "sha512-YAA4MW6jO6W7pmJaFzQ0AOLpu8iQClUkdT2HbfKLmtFjrpoZugnFj9wH8EONV9LxnIW+0W1J98ri+oApKyAKLQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/ssdp": "^4.0.1", - "@libp2p/logger": "^4.0.1", - "default-gateway": "^7.2.2", + "@achingbrain/ssdp": "^4.1.0", + "@chainsafe/is-ip": "^2.0.2", + "@libp2p/logger": "^6.0.5", + "abort-error": "^1.0.0", "err-code": "^3.0.1", - "it-first": "^3.0.1", + "netmask": "^2.0.2", "p-defer": "^4.0.0", - "p-timeout": "^6.1.1", + "race-signal": "^2.0.0", "xml2js": "^0.6.0" } }, - "node_modules/@achingbrain/nat-port-mapper/node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/@achingbrain/ssdp": { - "version": "4.0.6", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.2.4.tgz", + "integrity": "sha512-1dZIV7dwYJRS1sTA0qIDzsMdwZAnPa7DGb2YuPqMq4PjEjvzBBuz2WIsXnrkRFCNY00JuqLiMby9GecnGsOgaQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "event-iterator": "^2.0.0", + "abort-error": "^1.0.0", "freeport-promise": "^2.0.0", "merge-options": "^3.0.4", "xml2js": "^0.6.2" } }, - "node_modules/@achingbrain/ssdp/node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/@adraffy/ens-normalize": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", @@ -228,14 +208,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.26.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", @@ -278,14 +250,6 @@ "yallist": "^3.0.2" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "dev": true, @@ -474,7 +438,9 @@ "license": "Apache-2.0" }, "node_modules/@chainsafe/as-sha256": { - "version": "0.4.1", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-1.2.0.tgz", + "integrity": "sha512-H2BNHQ5C3RS+H0ZvOdovK6GjFAyq5T6LClad8ivwj9Oaiy28uvdsGVS7gNJKuZmg0FGHAI+n7F0Qju6U0QkKDA==", "license": "Apache-2.0" }, "node_modules/@chainsafe/is-ip": { @@ -484,31 +450,51 @@ "license": "MIT" }, "node_modules/@chainsafe/libp2p-noise": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.0.tgz", - "integrity": "sha512-84S/Uk7ZZRYpSlE5d1odMmQTl5g5Da8etgcf4QI7arTAHkvBs3il7yGHIPt4wV4EV0qIMG+XjdGIYihRXfI2/w==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-17.0.0.tgz", + "integrity": "sha512-vwrmY2Y+L1xYhIDiEpl61KHxwrLCZoXzTpwhyk34u+3+6zCAZPL3GxH3i2cs+u5IYNoyLptORdH17RKFXy7upA==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", - "@libp2p/crypto": "^4.0.0", - "@libp2p/interface": "^1.5.0", - "@libp2p/peer-id": "^4.0.0", - "@noble/ciphers": "^0.5.1", - "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", - "it-pair": "^2.0.6", - "it-pipe": "^3.0.1", - "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.0", + "@chainsafe/as-sha256": "^1.2.0", + "@libp2p/crypto": "^5.1.9", + "@libp2p/interface": "^3.0.0", + "@libp2p/peer-id": "^6.0.0", + "@libp2p/utils": "^7.0.0", + "@noble/ciphers": "^2.0.1", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0", "wherearewe": "^2.0.1" + } + }, + "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@chainsafe/libp2p-noise/node_modules/multiformats": { @@ -525,21 +511,21 @@ } }, "node_modules/@chainsafe/libp2p-yamux": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", - "integrity": "sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-8.0.1.tgz", + "integrity": "sha512-pJsqmUg1cZRJZn/luAtQaq0uLcVfExo51Rg7iRtAEceNYtsKUi/exfegnvTBzTnF1CGmTzVEV3MCLsRhqiNyoA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/utils": "^5.2.5", - "get-iterator": "^2.0.1", - "it-foreach": "^2.0.6", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", + "@libp2p/interface": "^3.0.0", + "@libp2p/utils": "^7.0.0", + "race-signal": "^2.0.0", "uint8arraylist": "^2.4.8" } }, "node_modules/@chainsafe/netmask": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz", + "integrity": "sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==", "license": "MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1" @@ -2168,55 +2154,25 @@ "license": "MIT" }, "node_modules/@libp2p/autonat": { - "version": "2.0.38", - "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-2.0.38.tgz", - "integrity": "sha512-SuJUbXsF0YQg926hxb6d/f7x4NEHqWHLSXnR6Og5fJSOv2A1i1xRUe8zXaCuxQkPa+CguH2tAPZ+l1A+NZlF5A==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "@multiformats/multiaddr": "^12.4.4", - "any-signal": "^4.1.1", - "it-protobuf-stream": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "protons-runtime": "^5.5.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", - "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-3.0.9.tgz", + "integrity": "sha512-jqNxiGVpf4iBaQA2Bc1b/Uesxf6pO1Cn7tEsnIF01Hf973sRka9sKm372Zw0KMZw/hMTjJvZkt6KkwsOM6x6aw==", "license": "Apache-2.0 OR MIT", "dependencies": { "@libp2p/interface": "^3.1.0", - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", - "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/dns": "^1.0.6", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", "@multiformats/multiaddr": "^13.0.1", + "any-signal": "^4.1.1", "main-event": "^1.0.1", "multiformats": "^13.4.0", - "progress-events": "^1.0.1", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { + "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", @@ -2228,118 +2184,131 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" - } + "node_modules/@libp2p/autonat/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/interface-internal": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", - "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", + "node_modules/@libp2p/autonat/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-collections": "^6.0.35", - "@multiformats/multiaddr": "^12.4.4", - "progress-events": "^1.0.1" + "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/logger": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", - "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", + "node_modules/@libp2p/bootstrap": { + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-12.0.10.tgz", + "integrity": "sha512-TXU88UintWDolGjN183HSzMHdQRzyL95PYAY5TtKetYCd8Z6WFg92LlxjRvIpKb5w/1OMeeI3rZBzC9qivoTYA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@multiformats/multiaddr": "^12.4.4", - "interface-datastore": "^8.3.1", - "multiformats": "^13.3.6", - "weald": "^1.0.4" + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "main-event": "^1.0.1" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/peer-collections": { - "version": "6.0.35", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", - "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", + "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "multiformats": "^13.3.6" + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/peer-id": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", - "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", + "node_modules/@libp2p/bootstrap/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "multiformats": "^13.3.6", - "uint8arrays": "^5.1.0" + "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "node_modules/@libp2p/circuit-relay-v2": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-4.1.2.tgz", + "integrity": "sha512-zGYIJUfqzddnxtrrsJE3K6sHxL65Gx8oIAaG90S6vPiL2KBuQUXjbkSShdN9QiK7HbdEY+LWCYVsH0ex7c+C9Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/logger": "^5.2.0", - "@multiformats/multiaddr": "^12.4.4", - "@sindresorhus/fnv1a": "^3.1.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", - "is-loopback-addr": "^2.0.2", - "is-plain-obj": "^4.1.0", - "it-foreach": "^2.1.3", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", "main-event": "^1.0.1", - "netmask": "^2.0.2", - "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.1.3", + "multiformats": "^13.4.0", + "nanoid": "^5.1.5", + "progress-events": "^1.0.1", + "protons-runtime": "^5.6.0", + "retimeable-signal": "^1.0.1", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@noble/curves": { + "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/crypto": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/curves": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", @@ -2354,7 +2323,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/autonat/node_modules/@noble/hashes": { + "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", @@ -2366,225 +2335,11 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/autonat/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/autonat/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/autonat/node_modules/it-byte-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.3.tgz", - "integrity": "sha512-h7FFcn4DWiWsJw1dCJhuPdiY8cGi1z8g4aLAfFspTaJbwQxvEMlEBFG/f8lIVGwM8YK26ClM4/9lxLVhF33b8g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/autonat/node_modules/it-length-prefixed-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.3.tgz", - "integrity": "sha512-Ns3jNFy2mcFnV59llCYitJnFHapg8wIcOsWkEaAwOkG9v4HBCk24nze/zGDQjiJdDTyFXTT5GOY3M/uaksot3w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/autonat/node_modules/it-protobuf-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-2.0.3.tgz", - "integrity": "sha512-Dus9qyylOSnC7l75/3qs6j3Fe9MCM2K5luXi9o175DYijFRne5FPucdOGIYdwaDBDQ4Oy34dNCuFobOpcusvEQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-length-prefixed-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/autonat/node_modules/multiformats": { - "version": "13.4.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.1.tgz", - "integrity": "sha512-VqO6OSvLrFVAYYjgsr8tyv62/rCQhPgsZUXLTqoFLSgdkgiUYKYeArbt1uWLlEpkjxQe+P0+sHlbPEte1Bi06Q==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/autonat/node_modules/protons-runtime": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.6.0.tgz", - "integrity": "sha512-/Kde+sB9DsMFrddJT/UZWe6XqvL7SL5dbag/DBCElFKhkwDj7XKt53S+mzLyaDP5OqS0wXjV5SA572uWDaT0Hg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "uint8-varint": "^2.0.2", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.1" - } - }, - "node_modules/@libp2p/autonat/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/bootstrap": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.1.tgz", - "integrity": "sha512-pm7LyIQnKjGjmLq89IvwRWJIkB90bUspVl3WMTq7boPeZ3Keo+RlNFSJHL5YtDZa/Jvu/iQR+SVxSmjrKdzn8w==", - "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-id": "^4.2.0", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3" - } - }, - "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/bootstrap/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" - }, - "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.1.tgz", - "integrity": "sha512-Tj4BWZBKdoCIKkHlF/z6RFNzdqECtSaC5AKiUcB20Ggb4GDrCTRzCv05cMeS2jb4hhky259DXynKUrg1V7tG7Q==", - "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/peer-collections": "^5.2.5", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/peer-record": "^7.0.21", - "@libp2p/utils": "^5.4.5", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "any-signal": "^4.1.1", - "it-protobuf-stream": "^1.1.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/crypto": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.5.tgz", - "integrity": "sha512-iQyFljvVza7npzrJNjOCqP1DlvDcGyOxCjlzU0gCLb4Jt0ZyTQDosk3wV7r3hAqCCeoBpm/CB5viJGixhkKgIQ==", - "dependencies": { - "@libp2p/interface": "^1.6.0", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0", - "asn1js": "^3.0.5", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/crypto/node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@libp2p/crypto/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/crypto/node_modules/uint8arrays": { "version": "5.1.0", @@ -2595,391 +2350,498 @@ } }, "node_modules/@libp2p/dcutr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.1.1.tgz", - "integrity": "sha512-4rADvCkMF2yhxSUu8vJUVp/oKO1ISr2RPx59kqpWrtsEu1cNnxKTl/a3/xutzS+BErCiAldOffu8TDPWxYfMag==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-3.0.9.tgz", + "integrity": "sha512-oO+2dECZ1HEIc9OrFW+mrXSAU5C7uzrdVy+Zdt+wVQHiYPmBBa6gUK0LMMbn4l9n4MlHxG+AqV2Y9WtkrLPJxA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "delay": "^6.0.0", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "delay": "^7.0.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/dcutr/node_modules/delay": { - "version": "6.0.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", + "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", "license": "MIT", + "dependencies": { + "random-int": "^3.1.0", + "unlimited-timeout": "^0.1.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@libp2p/dcutr/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/dcutr/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/identify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.1.tgz", - "integrity": "sha512-vNaz2sKJh7wzNdDnkDn9RBPL7WhotGd78ogkDmr3N5J8V50wSXjA556tHa8eO5dqtyTTHZ0TTa6C0BPW/vxGng==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-4.0.9.tgz", + "integrity": "sha512-tZ6Q+eCDcGan0TowBvp7sd86jgXIHs7PRIZeBduhjYV24QYSQ1V4mS71RygNRadhn4TVoZkuXwgIByc30eZWhw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/peer-record": "^7.0.21", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "it-drain": "^3.0.7", - "it-parallel": "^3.0.7", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "it-drain": "^3.0.10", + "it-parallel": "^3.0.13", + "main-event": "^1.0.1", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0", - "wherearewe": "^2.0.1" + "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/identify/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/identify/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/identify/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/interface": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.6.0.tgz", - "integrity": "sha512-PqcWA/wQFwk8bcevwUez5KYd0FKhKrOJOfKy+qGzDnKsPN3c0W6m/yiYXE7VJ6rAynL9ITxRddub3hEktthVCg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^12.2.3", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "progress-events": "^1.0.0", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^13.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/interface-internal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.0.tgz", - "integrity": "sha512-M2s/iCJ3+bKOcKkzeycCEkVA7fpZfVnptVm2DdKV1gYvC4ClVT21Hq4Ki2TZA/kibb7clWi5LTeed2jvMwj3pg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-3.0.9.tgz", + "integrity": "sha512-g6hqsrorej945uh/iwA4MY4n7vAFq5mtuMXOf1vo4CS2v8Zl3RMOl0mQZIhUpHLq8XV2aZ3C5rSe4+KsOmZM5A==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-collections": "^5.2.5", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-collections": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "progress-events": "^1.0.1" } }, "node_modules/@libp2p/interface-internal/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/interface-internal/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/interface-internal/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/interface/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/interface/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/kad-dht": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.1.1.tgz", - "integrity": "sha512-h9l1z8Pg43yHWhMfn0YN2xtwXpNUPkfj09Ims3+QZ5Yz4YUdrJ6pr2g9ZiE55my/dOEyKmCffO8mieCz8b2jxQ==", - "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/peer-collections": "^5.2.5", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/record": "^4.0.3", - "@libp2p/utils": "^5.4.5", - "@multiformats/multiaddr": "^12.2.3", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-16.1.2.tgz", + "integrity": "sha512-s/S859NPnF2DaLcV7ynPhFHvW2wGhaHdKQbOI6yziICe/A6/eJtTM4hjjHHCoqo+hG7Duj8Tnk/GYsrfG6Qdrg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/record": "^4.0.8", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "hashlru": "^2.3.0", - "interface-datastore": "^8.2.11", - "it-drain": "^3.0.7", - "it-length": "^3.0.6", - "it-length-prefixed": "^9.0.4", - "it-map": "^3.1.0", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", + "interface-datastore": "^9.0.1", + "it-all": "^3.0.9", + "it-drain": "^3.0.10", + "it-length": "^3.0.9", + "it-map": "^3.1.4", + "it-merge": "^3.0.12", + "it-parallel": "^3.0.13", "it-pipe": "^3.0.1", - "it-protobuf-stream": "^1.1.3", - "it-take": "^3.0.5", - "multiformats": "^13.1.0", + "it-pushable": "^3.2.3", + "it-take": "^3.0.9", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", "p-defer": "^4.0.1", - "p-event": "^6.0.1", - "p-queue": "^8.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "protons-runtime": "^5.6.0", + "race-signal": "^2.0.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/kad-dht/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/kad-dht/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/kad-dht/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/logger": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.16.tgz", - "integrity": "sha512-yk+vL8QX7WoTwcfjDghvA3OZjwqiM4/VHxhr6kXfs691nE7czgdCbnBEJOwgfbR8IJpy39z9BDstoACMNmNEWQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-6.2.2.tgz", + "integrity": "sha512-XtanXDT+TuMuZoCK760HGV1AmJsZbwAw5AiRUxWDbsZPwAroYq64nb41AHRu9Gyc0TK9YD+p72+5+FIxbw0hzw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@multiformats/multiaddr": "^12.2.3", - "debug": "^4.3.4", - "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0" + "@libp2p/interface": "^3.1.0", + "@multiformats/multiaddr": "^13.0.1", + "interface-datastore": "^9.0.1", + "multiformats": "^13.4.0", + "weald": "^1.1.0" } }, "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/logger/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/logger/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/mdns": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.1.1.tgz", - "integrity": "sha512-XtOv8EWx/nSFrMjFEAUjxt6OO74hny6miEovyTK6XoX7f0iWss307Umro362RyumsC6UNt7J5IXsMQ/MOAxLog==", - "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/multiaddr": "^12.2.3", + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-12.0.10.tgz", + "integrity": "sha512-dghYN1g74KA5GaeL4g9s6eDmca5fZy1oMREU0R0eF8g+astHpWzx5UzTBeco4Q67bPs6o0b5NxtDGlwFh4oTBw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", "@types/multicast-dns": "^7.2.4", "dns-packet": "^5.6.1", + "main-event": "^1.0.1", "multicast-dns": "^7.2.5" } }, "node_modules/@libp2p/mdns/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/mdns/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/mdns/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/multistream-select": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.13.tgz", - "integrity": "sha512-p1OL9ESDwmhMXSRBRuEBkth77E/co5rO6UUIhm06rjmaYws4YJlgAgH7OsjtWYDb6LSJxh8Kp3B0/uvJoH+rSQ==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-7.0.9.tgz", + "integrity": "sha512-2WAaYuTD1B5FtC0+qFVyglMBnzI0KC8Xmiw7nX9XnlYwrnLj2LIBi/XK7MpsGU1LiphSxT8UfmngwnAWf4t1Dg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "it-length-prefixed": "^9.0.4", - "it-length-prefixed-stream": "^1.1.7", - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.0.2", - "uint8-varint": "^2.0.4", + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "it-length-prefixed": "^10.0.1", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/multistream-select/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/peer-collections": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.5.tgz", - "integrity": "sha512-ZwR1VCIMYdH/YnsU7LyQEI0xCsKC3hZFnU+JAx0Js+uyL4me0KKofgGmy2Hz25qPVlbaLPOL3LWwEf397AqdsQ==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-7.0.9.tgz", + "integrity": "sha512-pAMRxmT5V31V0gy2MfwVE1TMAcTnbyBYFOv60OWnkKth4hD+HvQ9DLW1z+opYDqRNON5sIWjcnDsIQDm2VUS7A==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/utils": "^5.4.5" + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", + "multiformats": "^13.4.0" } }, + "node_modules/@libp2p/peer-collections/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/peer-id": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.0.tgz", - "integrity": "sha512-VCScUTVuPNkoZmddM5NtuI0tuFZhFG6ypk7tX1svumA+9sEIx9x4duNIb/Rt+E7E7fDINcBnqxiQpBRUCRtDBQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-6.0.4.tgz", + "integrity": "sha512-Z3xK0lwwKn4bPg3ozEpPr1HxsRi2CxZdghOL+MXoFah/8uhJJHxHFA8A/jxtKn4BB8xkk6F8R5vKNIS05yaCYw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "multiformats": "^13.1.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "multiformats": "^13.4.0", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/peer-id-factory": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.0.tgz", - "integrity": "sha512-iyUnUgcSirGL13uEKAuFJUqLYT2DHWH9hxwBN/KSk1ati4jYYDqJb3zUmhgjEbs5jnx9AZ+c1oZYkVu5ta7BCA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", + "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/crypto": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", + "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-id": "^4.2.0", + "@libp2p/interface": "^1.7.0", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "asn1js": "^3.0.5", + "multiformats": "^13.1.0", "protons-runtime": "^5.4.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/interface": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", + "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.2.3", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/peer-id": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", + "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "multiformats": "^13.1.0", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-id-factory/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/peer-id-factory/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@libp2p/peer-id-factory/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@libp2p/peer-id-factory/node_modules/multiformats": { "version": "13.1.3", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", @@ -2994,9 +2856,10 @@ } }, "node_modules/@libp2p/peer-id/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/peer-id/node_modules/uint8arrays": { "version": "5.1.0", @@ -3007,201 +2870,368 @@ } }, "node_modules/@libp2p/peer-record": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.21.tgz", - "integrity": "sha512-wIeadVfNsCv6p8zCMiAyqS5qUeuzVGiN2Y4h+vv/ucyJAjxnKIjdwxppl1rT1gJ6ycSKWcZuUoOaD5WIaSrTkg==", - "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/multiaddr": "^12.2.3", - "protons-runtime": "^5.4.0", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-9.0.4.tgz", + "integrity": "sha512-c8NrP2q0FPIiEef2IKOQFi7k0CJK1vr0uk+jbn6KjF85YUWVyaVvuncZG7EwAjO68tuwGS0LLrvJWJbjHFqAwQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-id": "^6.0.4", + "@multiformats/multiaddr": "^13.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/peer-record/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/peer-record/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/peer-record/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/peer-store": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.1.tgz", - "integrity": "sha512-2lYlTIm3bEZkIzwwHHJjup3kzkV10NOOsGjkVgZQPH0xGXO4V7Bdh7Wlr5t3YyuMC8Ph4VwVVM293Bzh6rrj+A==", - "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/peer-collections": "^5.2.5", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/peer-record": "^7.0.21", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "it-all": "^3.0.6", - "mortice": "^3.0.4", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-12.0.9.tgz", + "integrity": "sha512-+OOKqrllUUACE3IcfFEVcByJo1fMUy9kztxwfy5wmOxybcysxmJ5p3NmETDCqRhlY2sEk55NuRLh5vzDfJIcQQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@multiformats/multiaddr": "^13.0.1", + "interface-datastore": "^9.0.1", + "it-all": "^3.0.9", + "main-event": "^1.0.1", + "mortice": "^3.3.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/peer-store/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/peer-store/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/ping": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-3.0.9.tgz", + "integrity": "sha512-PeOH3jH+f4cjczxNMKsAf67x/ai3/YQIAc8rq+fkhRWzIuYKjSG8omgiIJJ9sGbaI0b7Ap8vFVbVflvb52qEDg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@multiformats/multiaddr": "^13.0.1", + "p-event": "^7.0.0", + "race-signal": "^2.0.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/ping/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/ping/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/pubsub": { + "version": "10.1.18", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-10.1.18.tgz", + "integrity": "sha512-Bxa0cwkaQvadyJNlJlzH0m1eo7m03G2nCpuKbcv+i0qNbyyTOydBcuoslG/UWFYhRBB9Js9R6zNIsaIgpo+iGw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/interface-internal": "^2.3.19", + "@libp2p/peer-collections": "^6.0.35", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "it-length-prefixed": "^10.0.1", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "p-queue": "^8.1.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/pubsub-peer-discovery": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-12.0.0.tgz", + "integrity": "sha512-72sZwTDBH/iowRumycPLjSlaUd3cwQcjSN2xUagdzNtMt9ryWt7dL4fDGM+VsktSdYmzzOHhL9ZftNfUk7XG7A==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.0.0", + "@libp2p/interface": "^3.0.0", + "@libp2p/interface-internal": "^3.0.1", + "@libp2p/peer-id": "^6.0.1", + "@multiformats/multiaddr": "^13.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.2" + } + }, + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/peer-store/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/peer-store/node_modules/uint8arrays": { + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/ping": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.1.tgz", - "integrity": "sha512-5hJTkpfewmTk5PHcsr29ldJSViwZltQD7PGrJa+0woRPS0iEXHk5hNMvfYnNR/sv0XyRTjZmHtvhaI9S83Lpkw==", + "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-pipe": "^3.0.1", - "uint8arrays": "^5.1.0" + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface-internal": { + "version": "2.3.19", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", + "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-collections": "^6.0.35", + "@multiformats/multiaddr": "^12.4.4", + "progress-events": "^1.0.1" } }, - "node_modules/@libp2p/ping/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "node_modules/@libp2p/pubsub/node_modules/@libp2p/logger": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", + "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^2.11.0", + "@multiformats/multiaddr": "^12.4.4", + "interface-datastore": "^8.3.1", + "multiformats": "^13.3.6", + "weald": "^1.0.4" + } }, - "node_modules/@libp2p/ping/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-collections": { + "version": "6.0.35", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", + "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^13.0.0" + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "multiformats": "^13.3.6" } }, - "node_modules/@libp2p/pubsub": { - "version": "9.0.22", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.22.tgz", - "integrity": "sha512-aMFUgq22Piv/0NrXoQlb9cy5aMqPegd1Jc0NQ2UvvhVR9m+tQW29y3czm9P7goacGnhFe8m/YONfcDhynX69Vw==", - "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/peer-collections": "^5.2.5", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/utils": "^5.4.5", - "it-length-prefixed": "^9.0.4", + "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-id": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", + "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/pubsub/node_modules/@libp2p/utils": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", + "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/logger": "^5.2.0", + "@multiformats/multiaddr": "^12.4.4", + "@sindresorhus/fnv1a": "^3.1.0", + "any-signal": "^4.1.1", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", + "is-loopback-addr": "^2.0.2", + "is-plain-obj": "^4.1.0", + "it-foreach": "^2.1.3", "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "multiformats": "^13.1.0", - "p-queue": "^8.0.1", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "netmask": "^2.0.2", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.1.3", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/pubsub-peer-discovery": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-10.0.2.tgz", - "integrity": "sha512-7DLasMSo443nxPJ+X95tXazXgO96K2/TafoexDxi4QVWIKgkmK+HyoFRcmwog2pjhA1/KQUsPu8S8wH6Ns9Oow==", - "dependencies": { - "@libp2p/interface": "^1.0.1", - "@libp2p/interface-internal": "^1.0.1", - "@libp2p/peer-id": "^4.0.1", - "@multiformats/multiaddr": "^12.0.0", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.9" - } - }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { - "version": "12.1.11", + "node_modules/@libp2p/pubsub/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "dns-over-http-resolver": "3.0.0", - "multiformats": "^12.0.1", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", - "uint8arrays": "^4.0.2" + "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/dns-over-http-resolver": { - "version": "3.0.0", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "debug": "^4.3.4", - "receptacle": "^1.3.2" + "node_modules/@libp2p/pubsub/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/uint8arrays": { - "version": "4.0.10", + "node_modules/@libp2p/pubsub/node_modules/interface-datastore": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", + "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^12.0.1" + "interface-store": "^6.0.0", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/pubsub/node_modules/interface-store": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", + "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/pubsub/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@libp2p/pubsub/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/pubsub/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/pubsub/node_modules/uint8arrays": { "version": "5.1.0", @@ -3212,281 +3242,325 @@ } }, "node_modules/@libp2p/record": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.3.tgz", - "integrity": "sha512-UiyC4MFasDwQHw+7CVUsCqvu4y5pYDZER9wPm9Rm8dlmlOn8GoXKF6CSKWx5rOk744EPaCNjwAMv9sD0u3IfUw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.8.tgz", + "integrity": "sha512-ZsGKBA1zuzqiwNPO2q0PHFhZzAJi/p+YLDtYdkwLYW0FbIgeMb5FX7cmopDk5Aa8mM9UbINb+nK5xz4+Bz8ShQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "protons-runtime": "^5.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/record/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/record/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/tcp": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.1.tgz", - "integrity": "sha512-vVwHwL9EOPNvPqTS0uQXnNnVYw0MEtIeV72yVffecw8hp1QpuRuVtinCEfdT0Pf2Ecfh0f6YHGR4cliWK4pqUQ==", + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-11.0.9.tgz", + "integrity": "sha512-/Fjy2TQR5rMBp0DbKYiP43wRM+CYsWVLc+hOpFrPp5EOS3yu/38/0F7EISFdk2vsijqll7iD0BA4+/Zt4U1kwQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@types/sinon": "^17.0.3", - "progress-events": "^1.0.0", - "stream-to-it": "^1.0.1" + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "@types/sinon": "^20.0.0", + "main-event": "^1.0.1", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/tcp/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, + "node_modules/@libp2p/tcp/node_modules/@types/sinon": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-20.0.0.tgz", + "integrity": "sha512-etYGUC6IEevDGSWvR9WrECRA01ucR2/Oi9XMBUAdV0g4bLkNf4HlZWGiGlDOq5lgwXRwcV+PSeKgFcW4QzzYOg==", + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, "node_modules/@libp2p/tcp/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/tcp/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/upnp-nat": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.2.1.tgz", - "integrity": "sha512-wCE0gxm/W8yE4JAdvZ3f6pTySfebi85FhLhqzQBWWHLSCs4c2PsPt7WCFHaXgPobmPbWXvoESVwV+wCKUhJc3w==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-4.0.9.tgz", + "integrity": "sha512-+f564UNNc0ZMACqdTJCgIfXe3QHevJKwzXq703gJ6Gm8HV2zVuh9W+2CQhDjdizMsnCJdDhmml14cEL1iXkPOw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/nat-port-mapper": "^1.0.13", - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/multiaddr": "^12.2.3", - "wherearewe": "^2.0.1" + "@achingbrain/nat-port-mapper": "^4.0.4", + "@chainsafe/is-ip": "^2.1.0", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "main-event": "^1.0.1", + "p-defer": "^4.0.1", + "race-signal": "^2.0.0" } }, "node_modules/@libp2p/upnp-nat/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/upnp-nat/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/upnp-nat/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/utils": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.5.tgz", - "integrity": "sha512-PInUa1jZFILeBl0ilV0bLQkfZFp8chtYZbgiY3lGTX1sPQgl1nZDLjVg7F7/lpW0+FWZaACqEJKtHpUOTLrQow==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-7.0.9.tgz", + "integrity": "sha512-2wYhsgfbFXfh5ui0ME9MNHc7uUIuZwpeZ/yagKmDSjIP7B+L3/9mj+vVXO14AhmjfwnKx2xUDQvzGZeq5to4ow==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.2", - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/logger": "^4.0.16", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/logger": "^6.2.2", + "@multiformats/multiaddr": "^13.0.1", "@sindresorhus/fnv1a": "^3.1.0", - "@types/murmurhash3js-revisited": "^3.0.3", "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", + "cborg": "^4.2.14", + "delay": "^7.0.0", "is-loopback-addr": "^2.0.2", + "it-length-prefixed": "^10.0.1", + "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "murmurhash3js-revisited": "^3.0.0", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", "netmask": "^2.0.2", "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "race-signal": "^2.0.0", + "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/utils/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/utils/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", + "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", + "license": "MIT", + "dependencies": { + "random-int": "^3.1.0", + "unlimited-timeout": "^0.1.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@libp2p/utils/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/utils/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/@libp2p/websockets": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.1.1.tgz", - "integrity": "sha512-Iwh+bZnDlft5rVEfJCddtUFRYRT2OARUm60UuD10bYndwnJM3f/kMWXPo0EoE3nULpejOS5VCcR6/Ipm3PIUiw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-10.1.2.tgz", + "integrity": "sha512-WjUxzVpniENxclwSRZpFtk3riV846WCf02Rm7MsAL9ui6szWcCEXzmMIjuo5mOzCUGOn0NPol6Uiz11nadC4iQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.6.0", - "@libp2p/utils": "^5.4.5", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-to-uri": "^10.0.1", - "@types/ws": "^8.5.10", - "it-ws": "^6.1.1", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-signal": "^1.0.2", - "wherearewe": "^2.0.1", - "ws": "^8.17.0" + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "@multiformats/multiaddr-to-uri": "^12.0.0", + "main-event": "^1.0.1", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0", + "ws": "^8.18.3" } }, "node_modules/@libp2p/websockets/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/websockets/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@libp2p/websockets/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, + "node_modules/@libp2p/websockets/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@multiformats/dns": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.6.tgz", - "integrity": "sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.11.tgz", + "integrity": "sha512-KnT4gX71zas8br5OO2mArwBgRqTx78FvK193VL8/bP8T1ydDuWUilevZlPug9Azufos+ioHd8pHAVY3v7U41tQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@types/dns-packet": "^5.6.5", "buffer": "^6.0.3", "dns-packet": "^5.6.1", "hashlru": "^2.3.0", - "p-queue": "^8.0.1", + "p-queue": "^9.0.0", "progress-events": "^1.0.0", "uint8arrays": "^5.0.2" } }, "node_modules/@multiformats/dns/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" - }, - "node_modules/@multiformats/dns/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "dependencies": { - "multiformats": "^13.0.0" - } + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/@multiformats/mafmt": { - "version": "12.1.6", - "license": "Apache-2.0 OR MIT", + "node_modules/@multiformats/dns/node_modules/p-queue": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.0.1.tgz", + "integrity": "sha512-RhBdVhSwJb7Ocn3e8ULk4NMwBEuOxe+1zcgphUy9c2e5aR/xbEsdVXxHJ3lynw6Qiqu7OINEyHlZkiblEpaq7w==", + "license": "MIT", "dependencies": { - "@multiformats/multiaddr": "^12.0.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@multiformats/mafmt/node_modules/@libp2p/interface": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz", - "integrity": "sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag==", - "dependencies": { - "@multiformats/multiaddr": "^12.1.5", - "abortable-iterator": "^5.0.1", - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "race-signal": "^1.0.0", - "uint8arraylist": "^2.4.3" + "node_modules/@multiformats/dns/node_modules/p-timeout": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@multiformats/mafmt/node_modules/@multiformats/multiaddr": { - "version": "12.1.8", + "node_modules/@multiformats/dns/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^0.1.1", - "dns-over-http-resolver": "^2.1.0", - "multiformats": "^12.0.1", - "uint8-varint": "^2.0.1", - "uint8arrays": "^4.0.2" + "multiformats": "^13.0.0" } }, "node_modules/@multiformats/multiaddr": { @@ -3506,98 +3580,73 @@ } }, "node_modules/@multiformats/multiaddr-matcher": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.8.0.tgz", - "integrity": "sha512-tR/HFhDucXjvwCef5lfXT7kikqR2ffUjliuYlg/RKYGPySVKVlvrDufz86cIuHNc+i/fNR16FWWgD/pMJ6RW4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-3.0.1.tgz", + "integrity": "sha512-jvjwzCPysVTQ53F4KqwmcqZw73BqHMk0UUZrMP9P4OtJ/YHrfs122ikTqhVA2upe0P/Qz9l8HVlhEifVYB2q9A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@multiformats/multiaddr": "^12.0.0", - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/multiaddr-matcher/node_modules/@libp2p/interface": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz", - "integrity": "sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag==", - "dependencies": { - "@multiformats/multiaddr": "^12.1.5", - "abortable-iterator": "^5.0.1", - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "race-signal": "^1.0.0", - "uint8arraylist": "^2.4.3" - } - }, - "node_modules/@multiformats/multiaddr-matcher/node_modules/@libp2p/interface/node_modules/multiformats": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", - "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "@multiformats/multiaddr": "^13.0.0" } }, "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr": { - "version": "12.1.8", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^0.1.1", - "dns-over-http-resolver": "^2.1.0", - "multiformats": "^12.0.1", + "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", - "uint8arrays": "^4.0.2" - } - }, - "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr/node_modules/multiformats": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", - "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "uint8arrays": "^5.0.0" } }, "node_modules/@multiformats/multiaddr-matcher/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@multiformats/multiaddr-matcher/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } }, "node_modules/@multiformats/multiaddr-to-uri": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.1.0.tgz", - "integrity": "sha512-ZNwSAx3ssBWwd4y0LKrOsq9xG7LBHboQxnUdSduNc2fTh/NS1UjA2slgUy6KHxH5k9S2DSus0iU2CoyJyN0/pg==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-12.0.0.tgz", + "integrity": "sha512-3uIEBCiy8tfzxYYBl81x1tISiNBQ7mHU4pGjippbJRoQYHzy/ZdZM/7JvTldr8pc/dzpkaNJxnsuxxlhsPOJsA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^12.3.0" + "@multiformats/multiaddr": "^13.0.0" } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } @@ -3614,9 +3663,13 @@ } }, "node_modules/@noble/ciphers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz", + "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, "funding": { "url": "https://paulmillr.com/funding/" } @@ -4595,6 +4648,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sindresorhus/fnv1a/-/fnv1a-3.1.0.tgz", "integrity": "sha512-KV321z5m/0nuAg83W1dPLy85HpHDk7Sdi4fJbwvacWsEhAh+rZUW4ZfGcXmUIvjZg4ss2bcwNlRhJ7GBEUG08w==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -4853,17 +4907,13 @@ "@types/node": "*" } }, - "node_modules/@types/murmurhash3js-revisited": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", - "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==" - }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "node_modules/@types/node-cron": { @@ -4872,6 +4922,12 @@ "integrity": "sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==", "dev": true }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, "node_modules/@types/parse-path": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz", @@ -5129,6 +5185,7 @@ "version": "17.0.4", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "dev": true, "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" @@ -5172,13 +5229,6 @@ "version": "1.3.4", "license": "MIT" }, - "node_modules/@types/ws": { - "version": "8.5.10", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.9.1", "dev": true, @@ -5512,19 +5562,6 @@ "integrity": "sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==", "license": "Apache-2.0 OR MIT" }, - "node_modules/abortable-iterator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz", - "integrity": "sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg==", - "dependencies": { - "get-iterator": "^2.0.0", - "it-stream-types": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/accepts": { "version": "1.3.8", "license": "MIT", @@ -5844,9 +5881,9 @@ } }, "node_modules/asn1js": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", - "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.6", @@ -6510,6 +6547,15 @@ "version": "1.0.8", "license": "Apache-2.0" }, + "node_modules/cborg": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.3.2.tgz", + "integrity": "sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==", + "license": "Apache-2.0", + "bin": { + "cborg": "lib/bin.js" + } + }, "node_modules/chai": { "version": "4.3.10", "dev": true, @@ -7041,22 +7087,21 @@ } }, "node_modules/datastore-core": { - "version": "9.2.9", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", - "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-11.0.2.tgz", + "integrity": "sha512-0pN4hMcaCWcnUBo5OL/8j14Lt1l/p1v2VvzryRYeJAKRLqnFrzy2FhAQ7y0yTA63ki760ImQHfm2XlZrfIdFpQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/logger": "^4.0.6", - "err-code": "^3.0.1", - "interface-datastore": "^8.0.0", - "interface-store": "^5.0.0", - "it-drain": "^3.0.5", - "it-filter": "^3.0.4", - "it-map": "^3.0.5", - "it-merge": "^3.0.3", + "@libp2p/logger": "^6.0.0", + "interface-datastore": "^9.0.0", + "interface-store": "^7.0.0", + "it-drain": "^3.0.9", + "it-filter": "^3.1.3", + "it-map": "^3.1.3", + "it-merge": "^3.0.11", "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-sort": "^3.0.4", - "it-take": "^3.0.4" + "it-sort": "^3.0.8", + "it-take": "^3.0.8" } }, "node_modules/date-fns": { @@ -7231,44 +7276,6 @@ "node": ">=14.18.0" } }, - "node_modules/default-gateway": { - "version": "7.2.2", - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^7.1.1" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/default-require-extensions": { "version": "3.0.1", "dev": true, @@ -8249,14 +8256,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-n": { "version": "15.7.0", "dev": true, @@ -8340,14 +8339,6 @@ "node": ">=4" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-prettier": { "version": "5.0.1", "dev": true, @@ -8443,14 +8434,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-security": { "version": "1.7.1", "dev": true, @@ -8817,10 +8800,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "license": "MIT" - }, "node_modules/event-target-shim": { "version": "5.0.1", "license": "MIT", @@ -8830,6 +8809,8 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/events": { @@ -9302,6 +9283,8 @@ }, "node_modules/freeport-promise": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", + "integrity": "sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==", "license": "Apache-2.0 OR MIT", "engines": { "node": ">=16.0.0", @@ -9503,6 +9486,8 @@ }, "node_modules/get-iterator": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz", + "integrity": "sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==", "license": "MIT" }, "node_modules/get-package-type": { @@ -9527,6 +9512,7 @@ }, "node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -9921,6 +9907,8 @@ }, "node_modules/hashlru": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", + "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==", "license": "MIT" }, "node_modules/hasown": { @@ -10196,36 +10184,34 @@ } }, "node_modules/interface-datastore": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", - "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "interface-store": "^6.0.0", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/interface-datastore/node_modules/interface-store": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", - "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", - "license": "Apache-2.0 OR MIT" + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-9.0.2.tgz", + "integrity": "sha512-jebn+GV/5LTDDoyicNIB4D9O0QszpPqT09Z/MpEWvf3RekjVKpXJCDguM5Au2fwIFxFDAQMZe5bSla0jMamCNg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "interface-store": "^7.0.0", + "uint8arrays": "^5.1.0" + } }, "node_modules/interface-datastore/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/interface-datastore/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/interface-store": { - "version": "5.1.4", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-7.0.1.tgz", + "integrity": "sha512-OPRRUO3Cs6Jr/t98BrJLQp1jUTPgrRH0PqFfuNoPAqd+J7ABN1tjFVjQdaOBiybYJTS/AyBSZnZVWLPvp3dW3w==", "license": "Apache-2.0 OR MIT" }, "node_modules/internal-slot": { @@ -10511,6 +10497,8 @@ }, "node_modules/is-loopback-addr": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz", + "integrity": "sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==", "license": "MIT" }, "node_modules/is-map": { @@ -10532,6 +10520,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10631,6 +10631,7 @@ }, "node_modules/is-stream": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -10896,57 +10897,47 @@ } }, "node_modules/it-all": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.6.tgz", - "integrity": "sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==" - }, - "node_modules/it-byte-stream": { - "version": "1.0.1", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.4.1" - } + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.9.tgz", + "integrity": "sha512-fz1oJJ36ciGnu2LntAlE6SA97bFZpW7Rnt0uEc1yazzR2nKokZLr8lIRtgnpex4NsmaBcvHF+Z9krljWFy/mmg==", + "license": "Apache-2.0 OR MIT" }, "node_modules/it-drain": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.7.tgz", - "integrity": "sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.10.tgz", + "integrity": "sha512-0w/bXzudlyKIyD1+rl0xUKTI7k4cshcS43LTlBiGFxI8K1eyLydNPxGcsVLsFVtKh1/ieS8AnVWt6KwmozxyEA==", + "license": "Apache-2.0 OR MIT" }, "node_modules/it-filter": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz", - "integrity": "sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.4.tgz", + "integrity": "sha512-80kWEKgiFEa4fEYD3mwf2uygo1dTQ5Y5midKtL89iXyjinruA/sNXl6iFkTcdNedydjvIsFhWLiqRPQP4fAwWQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { "it-peekable": "^3.0.0" } }, - "node_modules/it-first": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.6.tgz", - "integrity": "sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==" - }, "node_modules/it-foreach": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.4.tgz", - "integrity": "sha512-gFntBbNLpVK9uDmaHusugICD8/Pp+OCqbF5q1Z8K+B8WaG20YgMePWbMxI1I25+JmNWWr3hk0ecKyiI9pOLgeA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.5.tgz", + "integrity": "sha512-9tIp+NFVODmGV/49JUKVxW3+8RrPkYrmUaXUM4W6lMC5POM/1gegckNjBmDe5xgBa7+RE9HKBmRTAdY5V+bWSQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-peekable": "^3.0.0" } }, "node_modules/it-length": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.6.tgz", - "integrity": "sha512-R7bxHAzpRzYz7vghc2DDH7x4KXvEkeLfN/h316++jzbkEHIRXbEPLbE20p5yrqqBdOeK6/FRUDuHlTJ0H1hysw==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.9.tgz", + "integrity": "sha512-cPhRPzyulYqyL7x4sX4MOjG/xu3vvEIFAhJ1aCrtrnbfxloCOtejOONib5oC3Bz8tLL6b6ke6+YHu4Bm6HCG7A==", + "license": "Apache-2.0 OR MIT" }, "node_modules/it-length-prefixed": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.4.tgz", - "integrity": "sha512-lz28fykbG0jq7s5XtvlzGxO5BeSOw6ikymkRllxjL21V5VKLcvB4pHr9wPvEnsAJ2et1xpOk3BRTMq9XrhgKsg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", + "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "err-code": "^3.0.1", "it-reader": "^6.0.1", "it-stream-types": "^2.0.1", "uint8-varint": "^2.0.1", @@ -10958,68 +10949,52 @@ "npm": ">=7.0.0" } }, - "node_modules/it-length-prefixed-stream": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.8.tgz", - "integrity": "sha512-nchxgDiGS5R5UKwrvTznrLRUOh9oo9GCDkddc8OI/AVkkiLhuh1+pcTSZ15DBl6GwdB7lBD1edUixTzJ78jfUw==", - "dependencies": { - "it-byte-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/it-length-prefixed/node_modules/multiformats": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.1.tgz", - "integrity": "sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/it-length-prefixed/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, "node_modules/it-map": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", - "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.4.tgz", + "integrity": "sha512-QB9PYQdE9fUfpVFYfSxBIyvKynUCgblb143c+ktTK6ZuKSKkp7iH58uYFzagqcJ5HcqIfn1xbfaralHWam+3fg==", + "license": "Apache-2.0 OR MIT", "dependencies": { "it-peekable": "^3.0.0" } }, "node_modules/it-merge": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.5.tgz", - "integrity": "sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==", - "dependencies": { - "it-pushable": "^3.2.3" - } - }, - "node_modules/it-pair": { - "version": "2.0.6", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.12.tgz", + "integrity": "sha512-nnnFSUxKlkZVZD7c0jYw6rDxCcAQYcMsFj27thf7KkDhpj0EA0g9KHPxbFzHuDoc6US2EPS/MtplkNj8sbCx4Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "it-queueless-pushable": "^2.0.0" } }, "node_modules/it-parallel": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", - "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.13.tgz", + "integrity": "sha512-85PPJ/O8q97Vj9wmDTSBBXEkattwfQGruXitIzrh0RLPso6RHfiVqkuTqBNufYYtB1x6PSkh0cwvjmMIkFEPHA==", + "license": "Apache-2.0 OR MIT", "dependencies": { "p-defer": "^4.0.1" } }, "node_modules/it-peekable": { - "version": "3.0.2", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.8.tgz", + "integrity": "sha512-7IDBQKSp/dtBxXV3Fj0v3qM1jftJ9y9XrWLRIuU1X6RdKqWiN60syNwP0fiDxZD97b8SYM58dD3uklIk1TTQAw==", "license": "Apache-2.0 OR MIT" }, "node_modules/it-pipe": { @@ -11035,16 +11010,6 @@ "npm": ">=7.0.0" } }, - "node_modules/it-protobuf-stream": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.4.tgz", - "integrity": "sha512-HEO7PqNYRnFsN4qxxXWD0aQV3ibsYBaB/nPucBXgZcnD3csPltigU4C+j2U/ahhOwB/AfXdHv4WCd/IIzeSIpg==", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/it-pushable": { "version": "3.2.3", "license": "Apache-2.0 OR MIT", @@ -11052,19 +11017,34 @@ "p-defer": "^4.0.0" } }, + "node_modules/it-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/it-queue/-/it-queue-1.1.1.tgz", + "integrity": "sha512-yeYCV22WF1QDyb3ylw+g3TGEdkmnoHUH2mc12QoGOQuxW4XP1V7Zd3BfsEF1iq2IFBwIK7wCPUcRLTAQVeZ3SQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1", + "it-pushable": "^3.2.3", + "main-event": "^1.0.0", + "race-event": "^1.3.0", + "race-signal": "^2.0.0" + } + }, "node_modules/it-queueless-pushable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.2.tgz", - "integrity": "sha512-2BqIt7XvDdgEgudLAdJkdseAwbVSBc0yAd8yPVHrll4eBuJPWIj9+8C3OIxzEKwhswLtd3bi+yLrzgw9gCyxMA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-2.0.3.tgz", + "integrity": "sha512-USa5EzTvmQswOcVE7+o6qsj2o2G+6KHCxSogPOs23sGYkDWFidhqVO7dAvv6ve/Z+Q+nvxpEa9rrRo6VEK7w4Q==", "license": "Apache-2.0 OR MIT", "dependencies": { "abort-error": "^1.0.1", "p-defer": "^4.0.1", - "race-signal": "^1.1.3" + "race-signal": "^2.0.0" } }, "node_modules/it-reader": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", + "integrity": "sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-stream-types": "^2.0.1", @@ -11076,9 +11056,10 @@ } }, "node_modules/it-sort": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.6.tgz", - "integrity": "sha512-aNrlZAXB8vWBd42tCpaXGL6CJVJNDW3OLczmdt6g0k/s9Z6evkTdgU2LjwW5SNNeX41sF+C8MjV+OcVf93PsPw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.9.tgz", + "integrity": "sha512-jsM6alGaPiQbcAJdzMsuMh00uJcI+kD9TBoScB8TR75zUFOmHvhSsPi+Dmh2zfVkcoca+14EbfeIZZXTUGH63w==", + "license": "Apache-2.0 OR MIT", "dependencies": { "it-all": "^3.0.0" } @@ -11090,31 +11071,10 @@ "license": "Apache-2.0 OR MIT" }, "node_modules/it-take": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.6.tgz", - "integrity": "sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==" - }, - "node_modules/it-ws": { - "version": "6.1.1", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@types/ws": "^8.2.2", - "event-iterator": "^2.0.0", - "it-stream-types": "^2.0.1", - "uint8arrays": "^5.0.0", - "ws": "^8.4.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/it-ws/node_modules/uint8arrays": { - "version": "5.0.0", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^12.0.1" - } + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.9.tgz", + "integrity": "sha512-XMeUbnjOcgrhFXPUqa7H0VIjYSV/BvyxxjCp76QHVAFDJw2LmR1SHxUFiqyGeobgzJr7P2ZwSRRJQGn4D2BVlA==", + "license": "Apache-2.0 OR MIT" }, "node_modules/iterator.prototype": { "version": "1.1.2", @@ -11440,60 +11400,63 @@ } }, "node_modules/libp2p": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.8.0.tgz", - "integrity": "sha512-+dZe5Q1IedmD6JshhHP63sXfFpoBv2x/2dCytKGJmtgYJINVL2/hFCz4ezBQqcmOEa+XVs9A2nAuocH30r089Q==", - "dependencies": { - "@libp2p/crypto": "^4.1.5", - "@libp2p/interface": "^1.6.0", - "@libp2p/interface-internal": "^1.3.0", - "@libp2p/logger": "^4.0.16", - "@libp2p/multistream-select": "^5.1.13", - "@libp2p/peer-collections": "^5.2.5", - "@libp2p/peer-id": "^4.2.0", - "@libp2p/peer-id-factory": "^4.2.0", - "@libp2p/peer-store": "^10.1.1", - "@libp2p/utils": "^5.4.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-3.1.2.tgz", + "integrity": "sha512-E14/IznfuJnmelwrsTIRqtds+XzbtIYdnfskv9ulmL+7fwM+7fsUl1z5wBlWFzPNs46t1MF9fPi9m1ytuzs2xw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/logger": "^6.2.2", + "@libp2p/multistream-select": "^7.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-store": "^12.0.9", + "@libp2p/utils": "^7.0.9", "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "datastore-core": "^9.2.9", - "interface-datastore": "^8.2.11", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", + "datastore-core": "^11.0.1", + "interface-datastore": "^9.0.1", + "it-merge": "^3.0.12", + "it-parallel": "^3.0.13", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "p-retry": "^7.0.0", + "progress-events": "^1.0.1", + "race-signal": "^2.0.0", "uint8arrays": "^5.1.0" } }, "node_modules/libp2p/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/libp2p/node_modules/multiformats": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", - "integrity": "sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw==" + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, "node_modules/libp2p/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } @@ -11729,14 +11692,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-fetch-happen": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", @@ -11838,6 +11793,8 @@ }, "node_modules/merge-options": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", "license": "MIT", "dependencies": { "is-plain-obj": "^2.1.0" @@ -11848,6 +11805,7 @@ }, "node_modules/merge-stream": { "version": "2.0.0", + "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -11898,6 +11856,7 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -12230,13 +12189,14 @@ } }, "node_modules/mortice": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz", - "integrity": "sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.3.1.tgz", + "integrity": "sha512-t3oESfijIPGsmsdLEKjF+grHfrbnKSXflJtgb1wY14cjxZpS6GnhHRXTxxzCAoCCnq1YYfpEPwY3gjiCPhOufQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "observable-webworkers": "^2.0.1", - "p-queue": "^8.0.1", - "p-timeout": "^6.0.0" + "abort-error": "^1.0.0", + "it-queue": "^1.1.0", + "main-event": "^1.0.0" } }, "node_modules/ms": { @@ -12264,14 +12224,6 @@ "npm": ">=7.0.0" } }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/mute-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", @@ -12313,6 +12265,24 @@ "version": "2.14.0", "license": "MIT" }, + "node_modules/nanoid": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -12635,6 +12605,7 @@ }, "node_modules/npm-run-path": { "version": "5.1.0", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -12648,6 +12619,7 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13027,15 +12999,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/observable-webworkers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz", - "integrity": "sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/ohash": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", @@ -13071,6 +13034,7 @@ }, "node_modules/onetime": { "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -13288,14 +13252,15 @@ } }, "node_modules/p-event": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", - "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.0.1.tgz", + "integrity": "sha512-SI8GHTMMv6dAIMMHBG0g6PyZIEal+CCaKCje24NxkgEJrPvfdfEP0xXVoDC3OGxlfjM8qqSs/luTaobCkGdEUA==", + "license": "MIT", "dependencies": { - "p-timeout": "^6.1.2" + "p-timeout": "^6.1.4" }, "engines": { - "node": ">=16.17" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13330,9 +13295,10 @@ } }, "node_modules/p-queue": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", - "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" @@ -13344,8 +13310,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-retry": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", + "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", + "license": "MIT", + "dependencies": { + "is-network-error": "^1.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-timeout": { - "version": "6.1.2", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", "license": "MIT", "engines": { "node": ">=14.16" @@ -13759,7 +13742,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", "bin": { @@ -13902,9 +13887,10 @@ "license": "MIT" }, "node_modules/protons-runtime": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz", - "integrity": "sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.6.0.tgz", + "integrity": "sha512-/Kde+sB9DsMFrddJT/UZWe6XqvL7SL5dbag/DBCElFKhkwDj7XKt53S+mzLyaDP5OqS0wXjV5SA572uWDaT0Hg==", + "license": "Apache-2.0 OR MIT", "dependencies": { "uint8-varint": "^2.0.2", "uint8arraylist": "^2.4.3", @@ -14047,11 +14033,12 @@ "license": "0BSD" }, "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, "node_modules/qs": { @@ -14088,16 +14075,32 @@ "license": "MIT" }, "node_modules/race-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", - "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.6.1.tgz", + "integrity": "sha512-vi7WH5g5KoTFpu2mme/HqZiWH14XSOtg5rfp6raBskBHl7wnmy3F/biAIyY5MsK+BHWhoPhxtZ1Y2R7OHHaWyQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1" + } }, "node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-2.0.0.tgz", + "integrity": "sha512-P31bLhE4ByBX/70QDXMutxnqgwrF1WUXea1O8DXuviAgkdbQ1iQMQotNgzJIBC9yUSn08u/acZrMUhgw7w6GpA==", "license": "Apache-2.0 OR MIT" }, + "node_modules/random-int": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/random-int/-/random-int-3.1.0.tgz", + "integrity": "sha512-h8CRz8cpvzj0hC/iH/1Gapgcl2TQ6xtnCpyOI5WvWfXf/yrDx2DOU+tD9rX23j36IF11xg1KqB9W11Z18JPMdw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "license": "MIT", @@ -14555,6 +14558,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/retimeable-signal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/retimeable-signal/-/retimeable-signal-1.0.1.tgz", + "integrity": "sha512-Cy26CYfbWnYu8HMoJeDhaMpW/EYFIbne3vMf6G9RSrOyWYXbPehja/BEdzpqmM84uy2bfBD7NPZhoQ4GZEtgvg==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/retry": { "version": "0.13.1", "dev": true, @@ -14819,8 +14828,10 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.3.0", - "license": "ISC" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" }, "node_modules/scrypt-js": { "version": "3.0.1", @@ -15114,6 +15125,7 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "devOptional": true, "license": "ISC" }, "node_modules/simple-concat": { @@ -15428,14 +15440,6 @@ "node": ">=12" } }, - "node_modules/stream-to-it": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-1.0.1.tgz", - "integrity": "sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA==", - "dependencies": { - "it-stream-types": "^2.0.1" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -15584,6 +15588,7 @@ }, "node_modules/strip-final-newline": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -16234,16 +16239,17 @@ } }, "node_modules/typescript": { - "version": "4.9.5", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -16363,6 +16369,18 @@ "dev": true, "license": "ISC" }, + "node_modules/unlimited-timeout": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unlimited-timeout/-/unlimited-timeout-0.1.0.tgz", + "integrity": "sha512-D4g+mxFeQGQHzCfnvij+R35ukJ0658Zzudw7j16p4tBBbNasKkKM4SocYxqhwT5xA7a9JYWDzKkEFyMlRi5sng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -16865,8 +16883,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/xmlbuilder": { "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "license": "MIT", "engines": { "node": ">=4.0" diff --git a/package.json b/package.json index 432c12d04..7c9c84303 100644 --- a/package.json +++ b/package.json @@ -48,25 +48,25 @@ "changelog": "auto-changelog -p" }, "dependencies": { - "@chainsafe/libp2p-noise": "^15.1.0", - "@chainsafe/libp2p-yamux": "^6.0.2", + "@chainsafe/libp2p-noise": "^17.0.0", + "@chainsafe/libp2p-yamux": "^8.0.1", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^2.0.0", - "@libp2p/bootstrap": "^10.1.1", - "@libp2p/circuit-relay-v2": "^1.1.1", - "@libp2p/crypto": "^4.1.5", - "@libp2p/dcutr": "^1.1.1", - "@libp2p/identify": "^2.1.1", - "@libp2p/kad-dht": "^12.1.1", - "@libp2p/mdns": "^10.1.1", - "@libp2p/peer-id": "^4.1.4", - "@libp2p/peer-id-factory": "^4.1.4", - "@libp2p/ping": "^1.1.1", - "@libp2p/pubsub": "^9.0.22", - "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.1.1", - "@libp2p/upnp-nat": "^1.2.1", - "@libp2p/websockets": "^8.1.1", + "@libp2p/autonat": "^3.0.9", + "@libp2p/bootstrap": "^12.0.10", + "@libp2p/circuit-relay-v2": "^4.1.2", + "@libp2p/crypto": "^5.1.13", + "@libp2p/dcutr": "^3.0.9", + "@libp2p/identify": "^4.0.9", + "@libp2p/kad-dht": "^16.1.2", + "@libp2p/mdns": "^12.0.10", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/pubsub": "^10.1.18", + "@libp2p/pubsub-peer-discovery": "^12.0.0", + "@libp2p/tcp": "^11.0.9", + "@libp2p/upnp-nat": "^4.0.9", + "@libp2p/websockets": "^10.1.2", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -85,7 +85,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^1.8.0", + "libp2p": "^3.1.2", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -108,7 +108,7 @@ "@types/jsonwebtoken": "^9.0.9", "@types/lodash": "^4.17.21", "@types/mocha": "^10.0.10", - "@types/node": "^20.14.2", + "@types/node": "^25.0.3", "@types/node-cron": "^3.0.11", "@types/sinon": "^17.0.4", "@types/tar-stream": "^3.1.4", @@ -124,10 +124,11 @@ "eslint-plugin-promise": "^6.1.1", "mocha": "^11.1.0", "nyc": "^17.1.0", - "prettier": "^3.0.3", + "prettier": "^3.7.4", "release-it": "^19.0.6", "sinon": "^19.0.2", - "tsx": "^4.19.3" + "tsx": "^4.19.3", + "typescript": "^5.9.3" }, "overrides": { "elliptic": "^6.6.1", diff --git a/src/components/Indexer/processor.ts b/src/components/Indexer/processor.ts index b10a437cb..938f7b3d1 100644 --- a/src/components/Indexer/processor.ts +++ b/src/components/Indexer/processor.ts @@ -21,8 +21,8 @@ import { ProcessorConstructor } from './processors/index.js' import { findEventByKey } from './utils.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } -import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } +import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' with { type: 'json' } const EVENT_PROCESSOR_MAP: Record = { [EVENTS.METADATA_CREATED]: MetadataEventProcessor, diff --git a/src/components/Indexer/processors/BaseProcessor.ts b/src/components/Indexer/processors/BaseProcessor.ts index 4c0b976b1..b8833b429 100644 --- a/src/components/Indexer/processors/BaseProcessor.ts +++ b/src/components/Indexer/processors/BaseProcessor.ts @@ -23,9 +23,9 @@ import { INDEXER_LOGGER } from '../../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { URLUtils } from '../../../utils/url.js' import { streamToString } from '../../../utils/util.js' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { toString as uint8ArrayToString } from 'uint8arrays/to-string' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { fetchTransactionReceipt } from '../../core/utils/validateOrders.js' import { withRetrial } from '../utils.js' diff --git a/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts b/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts index f2de2b3cd..9b05ce3e9 100644 --- a/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts +++ b/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidDispenserContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' with { type: 'json' } export class DispenserActivatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts b/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts index ca26c863c..d6ae4afd0 100644 --- a/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts +++ b/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidDispenserContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' with { type: 'json' } export class DispenserCreatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts b/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts index 36ae24c9b..6860a813a 100644 --- a/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts +++ b/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidDispenserContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' with { type: 'json' } export class DispenserDeactivatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts index 1f6341c4b..f2d00e162 100644 --- a/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts +++ b/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidFreContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' with { type: 'json' } export class ExchangeActivatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts index 768b0d936..e925917bf 100644 --- a/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts +++ b/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidFreContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' with { type: 'json' } export class ExchangeCreatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts index e81515bdf..e4acacf10 100644 --- a/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts +++ b/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidFreContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' with { type: 'json' } export class ExchangeDeactivatedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts b/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts index 480706df0..c0171d996 100644 --- a/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts +++ b/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts @@ -13,7 +13,7 @@ import { isValidFreContract } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' with { type: 'json' } export class ExchangeRateChangedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index e523e6dd2..8e8c754b4 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -15,7 +15,7 @@ import { asyncCallWithTimeout } from '../../../utils/util.js' import { PolicyServer } from '../../policyServer/index.js' import { wasNFTDeployedByOurFactory, getPricingStatsForDddo } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { Purgatory } from '../purgatory.js' export class MetadataEventProcessor extends BaseEventProcessor { diff --git a/src/components/Indexer/processors/MetadataStateEventProcessor.ts b/src/components/Indexer/processors/MetadataStateEventProcessor.ts index 04bc5a59d..7b5b2ab29 100644 --- a/src/components/Indexer/processors/MetadataStateEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataStateEventProcessor.ts @@ -5,7 +5,7 @@ import { getDatabase } from '../../../utils/database.js' import { INDEXER_LOGGER } from '../../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { BaseEventProcessor } from './BaseProcessor.js' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { getDid } from '../utils.js' export class MetadataStateEventProcessor extends BaseEventProcessor { diff --git a/src/components/Indexer/processors/OrderReusedEventProcessor.ts b/src/components/Indexer/processors/OrderReusedEventProcessor.ts index c47c4c00a..ab2faf0ea 100644 --- a/src/components/Indexer/processors/OrderReusedEventProcessor.ts +++ b/src/components/Indexer/processors/OrderReusedEventProcessor.ts @@ -11,7 +11,7 @@ import { getPricesByDt } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } export class OrderReusedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/processors/OrderStartedEventProcessor.ts b/src/components/Indexer/processors/OrderStartedEventProcessor.ts index 1ccebc35e..e836078c6 100644 --- a/src/components/Indexer/processors/OrderStartedEventProcessor.ts +++ b/src/components/Indexer/processors/OrderStartedEventProcessor.ts @@ -6,7 +6,7 @@ import { INDEXER_LOGGER } from '../../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { getDtContract, getDid, getPricesByDt } from '../utils.js' import { BaseEventProcessor } from './BaseProcessor.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } export class OrderStartedEventProcessor extends BaseEventProcessor { async processEvent( diff --git a/src/components/Indexer/utils.ts b/src/components/Indexer/utils.ts index 9432cbb91..2be31fb62 100644 --- a/src/components/Indexer/utils.ts +++ b/src/components/Indexer/utils.ts @@ -1,19 +1,19 @@ import { JsonRpcApiProvider, Signer, ethers, getAddress } from 'ethers' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { EVENT_HASHES, isDefined } from '../../utils/index.js' import { NetworkEvent } from '../../@types/blockchain.js' import { INDEXER_LOGGER } from '../../utils/logging/common.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { getOceanArtifactsAdressesByChainId } from '../../utils/address.js' import { CommandStatus, JobStatus } from '../../@types/commands.js' import { create256Hash } from '../../utils/crypt.js' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } -import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' with { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' with { type: 'json' } import { createHash } from 'crypto' import { ServicePrice } from '../../@types/IndexedMetadata.js' import { VersionedDDO } from '@oceanprotocol/ddo-js' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' assert { type: 'json' } +import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' with { type: 'json' } export const getContractAddress = (chainId: number, contractName: string): string => { const addressFile = getOceanArtifactsAdressesByChainId(chainId) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 7156d5e22..48236f364 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -337,13 +337,7 @@ export class OceanP2P extends EventEmitter { let transports = [] P2P_LOGGER.info('Enabling P2P Transports: websockets, tcp, circuitRelay') - transports = [ - webSockets(), - tcp(), - circuitRelayTransport({ - discoverRelays: config.p2pConfig.circuitRelays - }) - ] + transports = [webSockets(), tcp(), circuitRelayTransport()] let options = { addresses, @@ -506,7 +500,7 @@ export class OceanP2P extends EventEmitter { // UPDATE: no need to slice 4 bytes here, actually we need those on client side to verify the node id and perform the encryption of the keys + iv // See config.ts => getPeerIdFromPrivateKey() - const pubKey = Buffer.from(peerId.publicKey).toString('hex') // no need to do .subarray(4).toString('hex') + const pubKey = Buffer.from(peerId.publicKey.raw).toString('hex') // no need to do .subarray(4).toString('hex') const peer = await this._libp2p.peerStore.get(peerId) // write the publicKey as well diff --git a/src/components/core/admin/collectFeesHandler.ts b/src/components/core/admin/collectFeesHandler.ts index b86c6f50b..48a07e826 100644 --- a/src/components/core/admin/collectFeesHandler.ts +++ b/src/components/core/admin/collectFeesHandler.ts @@ -17,7 +17,7 @@ import { Blockchain } from '../../../utils/index.js' import { parseUnits, Contract, ZeroAddress, isAddress, Wallet } from 'ethers' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' with { type: 'json' } import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Readable } from 'stream' diff --git a/src/components/core/handler/ddoHandler.ts b/src/components/core/handler/ddoHandler.ts index b0ed3a120..6573514e1 100644 --- a/src/components/core/handler/ddoHandler.ts +++ b/src/components/core/handler/ddoHandler.ts @@ -15,7 +15,7 @@ import { sleep, readStream } from '../../../utils/util.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Blockchain } from '../../../utils/blockchain.js' import { ethers, isAddress } from 'ethers' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } // import lzma from 'lzma-native' import lzmajs from 'lzma-purejs-requirejs' import { getValidationSignature } from '../utils/validateDdoHandler.js' diff --git a/src/components/core/utils/escrow.ts b/src/components/core/utils/escrow.ts index e07cf00ed..ed775692f 100644 --- a/src/components/core/utils/escrow.ts +++ b/src/components/core/utils/escrow.ts @@ -1,6 +1,6 @@ import { Blockchain, getDatatokenDecimals } from '../../../utils/blockchain.js' import { ethers, parseUnits, formatUnits, BigNumberish } from 'ethers' -import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' assert { type: 'json' } +import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' with { type: 'json' } import { EscrowAuthorization, EscrowLock } from '../../../@types/Escrow.js' import { getOceanArtifactsAdressesByChainId } from '../../../utils/address.js' import { RPCS } from '../../../@types/blockchain.js' diff --git a/src/components/core/utils/feesHandler.ts b/src/components/core/utils/feesHandler.ts index 12ebc33f1..92d356731 100644 --- a/src/components/core/utils/feesHandler.ts +++ b/src/components/core/utils/feesHandler.ts @@ -23,7 +23,7 @@ import { getConfiguration } from '../../../utils/config.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { getOceanArtifactsAdresses } from '../../../utils/address.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { fetchEventFromTransaction } from '../../../utils/util.js' import { fetchTransactionReceipt } from './validateOrders.js' diff --git a/src/components/core/utils/validateOrders.ts b/src/components/core/utils/validateOrders.ts index 8f3ac3570..f23eb1e89 100644 --- a/src/components/core/utils/validateOrders.ts +++ b/src/components/core/utils/validateOrders.ts @@ -6,8 +6,8 @@ import { Signer } from 'ethers' import { fetchEventFromTransaction } from '../../../utils/util.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { CORE_LOGGER } from '../../../utils/logging/common.js' import { EVENTS } from '../../../utils/index.js' diff --git a/src/test/integration/algorithmsAccess.test.ts b/src/test/integration/algorithmsAccess.test.ts index f26027165..d72c3b11c 100644 --- a/src/test/integration/algorithmsAccess.test.ts +++ b/src/test/integration/algorithmsAccess.test.ts @@ -43,9 +43,9 @@ import { import { ProviderComputeInitializeResults } from '../../@types/Fees.js' import { homedir } from 'os' import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses } from '../../utils/address.js' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import OceanToken from '@oceanprotocol/contracts/artifacts/contracts/utils/OceanToken.sol/OceanToken.json' assert { type: 'json' } -import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } +import OceanToken from '@oceanprotocol/contracts/artifacts/contracts/utils/OceanToken.sol/OceanToken.json' with { type: 'json' } +import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' with { type: 'json' } import { createHash } from 'crypto' import { getAlgoChecksums } from '../../components/core/compute/utils.js' diff --git a/src/test/integration/compute.test.ts b/src/test/integration/compute.test.ts index 2ac26381d..e4352de1d 100644 --- a/src/test/integration/compute.test.ts +++ b/src/test/integration/compute.test.ts @@ -62,10 +62,10 @@ import { ProviderFees, ProviderComputeInitializeResults } from '../../@types/Fee import { homedir } from 'os' import { publishAlgoDDO, publishDatasetDDO } from '../data/ddo.js' import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses } from '../../utils/address.js' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import OceanToken from '@oceanprotocol/contracts/artifacts/contracts/utils/OceanToken.sol/OceanToken.json' assert { type: 'json' } -import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } +import OceanToken from '@oceanprotocol/contracts/artifacts/contracts/utils/OceanToken.sol/OceanToken.json' with { type: 'json' } +import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' with { type: 'json' } import { createHash } from 'crypto' import { encrypt } from '../../utils/crypt.js' import { EncryptMethod } from '../../@types/fileObject.js' diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index ce078552f..2d863ecb1 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -58,8 +58,8 @@ import { } from '../data/assets.js' import { ganachePrivateKeys } from '../utils/addresses.js' import { homedir } from 'os' -import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' assert { type: 'json' } -import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' with { type: 'json' } +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' with { type: 'json' } import { deployAccessListContract, getContract } from '../utils/contracts.js' import { ComputeInitializeHandler } from '../../components/core/compute/initialize.js' import { ComputeAlgorithm, ComputeAsset } from '../../@types/index.js' diff --git a/src/test/integration/encryptDecryptDDO.test.ts b/src/test/integration/encryptDecryptDDO.test.ts index baf6fe7ff..bd8422bf0 100644 --- a/src/test/integration/encryptDecryptDDO.test.ts +++ b/src/test/integration/encryptDecryptDDO.test.ts @@ -9,14 +9,14 @@ import { } from 'ethers' import { assert, expect } from 'chai' import { getEventFromTx, streamToString } from '../../utils/util.js' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } import { RPCS } from '../../@types/blockchain.js' import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses, getOceanArtifactsAdressesByChainId } from '../../utils/address.js' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { genericDDO } from '../data/ddo.js' import { createHash } from 'crypto' import { encrypt } from '../../utils/crypt.js' diff --git a/src/test/integration/indexer.test.ts b/src/test/integration/indexer.test.ts index 7d1f7271b..8e09a5bc0 100644 --- a/src/test/integration/indexer.test.ts +++ b/src/test/integration/indexer.test.ts @@ -11,9 +11,9 @@ import { parseUnits } from 'ethers' import { Readable } from 'stream' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { Database } from '../../components/database/index.js' import { DatabaseFactory } from '../../components/database/DatabaseFactory.js' import { diff --git a/src/test/integration/operationsDashboard.test.ts b/src/test/integration/operationsDashboard.test.ts index ea698b771..f6ed84e83 100644 --- a/src/test/integration/operationsDashboard.test.ts +++ b/src/test/integration/operationsDashboard.test.ts @@ -25,7 +25,7 @@ import { INDEXER_CRAWLING_EVENTS } from '../../utils/index.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' with { type: 'json' } import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses } from '../../utils/address.js' import { AdminReindexChainCommand, diff --git a/src/test/integration/pricing.test.ts b/src/test/integration/pricing.test.ts index 48300c02a..0c998f774 100644 --- a/src/test/integration/pricing.test.ts +++ b/src/test/integration/pricing.test.ts @@ -10,10 +10,10 @@ import { ZeroAddress, parseUnits } from 'ethers' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' with { type: 'json' } import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { RPCS } from '../../@types/blockchain.js' diff --git a/src/test/utils/assets.ts b/src/test/utils/assets.ts index ad12fd728..959c040f7 100644 --- a/src/test/utils/assets.ts +++ b/src/test/utils/assets.ts @@ -10,14 +10,14 @@ import { import { Readable } from 'stream' import { createHash } from 'crypto' import { EncryptMethod } from '../../@types/fileObject.js' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' with { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses, getOceanArtifactsAdressesByChainId } from '../../utils/address.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { getEventFromTx, streamToObject } from '../../utils/util.js' import { encrypt } from '../../utils/crypt.js' diff --git a/src/test/utils/contracts.ts b/src/test/utils/contracts.ts index 06e1a14a8..6f9041412 100644 --- a/src/test/utils/contracts.ts +++ b/src/test/utils/contracts.ts @@ -5,8 +5,8 @@ import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses } from '../../utils/address.js' -import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' assert { type: 'json' } -import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' with { type: 'json' } +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' with { type: 'json' } export const EXISTING_ACCESSLISTS: Map = new Map< string, diff --git a/src/utils/address.ts b/src/utils/address.ts index d4b735ad9..605f634d5 100644 --- a/src/utils/address.ts +++ b/src/utils/address.ts @@ -1,5 +1,5 @@ import fs from 'fs' -import addresses from '@oceanprotocol/contracts/addresses/address.json' assert { type: 'json' } +import addresses from '@oceanprotocol/contracts/addresses/address.json' with { type: 'json' } import { CORE_LOGGER } from './logging/common.js' import { isDefined } from './index.js' diff --git a/src/utils/asset.ts b/src/utils/asset.ts index 1c2c85f4c..cdab24390 100644 --- a/src/utils/asset.ts +++ b/src/utils/asset.ts @@ -6,8 +6,8 @@ import { GENERIC_EMOJIS, LOG_LEVELS_STR } from './logging/Logger.js' import { createHash } from 'crypto' import { ethers, getAddress, Signer } from 'ethers' import { KNOWN_CONFIDENTIAL_EVMS } from './address.js' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/interfaces/IERC20Template.sol/IERC20Template.json' assert { type: 'json' } -import ERC20Template4 from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template4.sol/ERC20Template4.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/interfaces/IERC20Template.sol/IERC20Template.json' with { type: 'json' } +import ERC20Template4 from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template4.sol/ERC20Template4.json' with { type: 'json' } import { getContractAddress, getNFTFactory } from '../components/Indexer/utils.js' // Notes: diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 7cc3839de..7f3bbd368 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -3,7 +3,7 @@ import { CORE_LOGGER } from './logging/common.js' import { Blockchain, getConfiguration } from './index.js' import { RPCS } from '../@types/blockchain.js' import { isDefined } from '../utils/util.js' -import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' with { type: 'json' } import { getAccountsFromAccessList } from '../utils/credentials.js' import { OceanNodeConfig } from '../@types/OceanNode.js' import { LOG_LEVELS_STR } from './logging/Logger.js' diff --git a/src/utils/blockchain.ts b/src/utils/blockchain.ts index 72f4f9d31..efd5d83a4 100644 --- a/src/utils/blockchain.ts +++ b/src/utils/blockchain.ts @@ -1,4 +1,4 @@ -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } import { ethers, Signer, diff --git a/src/utils/config/builder.ts b/src/utils/config/builder.ts index f606fec9e..e50f6307b 100644 --- a/src/utils/config/builder.ts +++ b/src/utils/config/builder.ts @@ -3,8 +3,8 @@ import type { C2DClusterInfo, C2DDockerConfig } from '../../@types/C2D/C2D.js' import type { RPCS } from '../../@types/blockchain.js' import type { FeeTokens } from '../../@types/Fees.js' import { C2DClusterType } from '../../@types/C2D/C2D.js' -import { keys } from '@libp2p/crypto' -import { createFromPrivKey } from '@libp2p/peer-id-factory' +import { privateKeyFromRaw } from '@libp2p/crypto/keys' +import { peerIdFromPrivateKey } from '@libp2p/peer-id' import { Wallet } from 'ethers' import fs from 'fs' import os from 'os' @@ -84,17 +84,13 @@ function preprocessConfigData(data: any): void { } } -export async function getPeerIdFromPrivateKey( - privateKey: string -): Promise { - const key = new keys.supportedKeys.secp256k1.Secp256k1PrivateKey( - hexStringToByteArray(privateKey.slice(2)) - ) +export function getPeerIdFromPrivateKey(privateKey: string): OceanNodeKeys { + const key = privateKeyFromRaw(hexStringToByteArray(privateKey.slice(2))) return { - peerId: await createFromPrivKey(key), - publicKey: key.public.bytes, - privateKey: (key as any)._key, + peerId: peerIdFromPrivateKey(key), + publicKey: key.publicKey.raw, + privateKey: key.raw, ethAddress: new Wallet(privateKey.substring(2)).address } } @@ -212,7 +208,7 @@ export function loadConfigFromFile(configPath?: string): OceanNodeConfig { return config } -export async function buildMergedConfig(): Promise { +export function buildMergedConfig(): OceanNodeConfig { const baseConfig = loadConfigFromFile() const privateKey = process.env.PRIVATE_KEY if (!privateKey || privateKey.length !== 66) { @@ -225,7 +221,7 @@ export async function buildMergedConfig(): Promise { throw new Error('Invalid PRIVATE_KEY') } - const keys = await getPeerIdFromPrivateKey(privateKey) + const keys = getPeerIdFromPrivateKey(privateKey) const { env } = process const envOverrides: Record = { keys } @@ -283,7 +279,7 @@ export async function getConfiguration( isStartup: boolean = false ): Promise { if (!previousConfiguration || forceReload) { - previousConfiguration = await buildMergedConfig() + previousConfiguration = buildMergedConfig() } if (!previousConfiguration.codeHash) { diff --git a/src/utils/config/schemas.ts b/src/utils/config/schemas.ts index 004dd7d86..be6836fe7 100644 --- a/src/utils/config/schemas.ts +++ b/src/utils/config/schemas.ts @@ -35,7 +35,7 @@ export const RPCSSchema = z.record(z.string(), SupportedNetworkSchema) export const AccessListContractSchema = z .union([ z.record(z.string(), z.array(z.string())), - z.array(z.any()).transform(() => null), + z.array(z.any()).transform((): null => null), z.null() ]) .nullable() diff --git a/src/utils/credentials.ts b/src/utils/credentials.ts index e42882e43..d09578da3 100644 --- a/src/utils/credentials.ts +++ b/src/utils/credentials.ts @@ -1,5 +1,5 @@ import { Contract, ethers, EventLog, Signer } from 'ethers' -import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' with { type: 'json' } import { AccessListContract } from '../@types/OceanNode.js' import { CORE_LOGGER } from './logging/common.js' From 4526d5dea7f2aadbda5f735000c32b538bf47616 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 14:33:50 +0200 Subject: [PATCH 02/43] lint fix --- src/@types/Typesense.ts | 5 ++-- src/components/core/compute/utils.ts | 8 +++---- .../core/handler/downloadHandler.ts | 5 ++-- .../core/handler/fileInfoHandler.ts | 8 +++---- src/utils/blockchain.ts | 24 +++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/@types/Typesense.ts b/src/@types/Typesense.ts index 7e3a69d09..4939374eb 100644 --- a/src/@types/Typesense.ts +++ b/src/@types/Typesense.ts @@ -70,8 +70,9 @@ export interface TypesenseCollectionDropFieldSchema { drop: true } -export interface TypesenseCollectionUpdateSchema - extends Partial> { +export interface TypesenseCollectionUpdateSchema extends Partial< + Omit +> { fields?: (TypesenseCollectionFieldSchema | TypesenseCollectionDropFieldSchema)[] } diff --git a/src/components/core/compute/utils.ts b/src/components/core/compute/utils.ts index be55400c5..735af9351 100644 --- a/src/components/core/compute/utils.ts +++ b/src/components/core/compute/utils.ts @@ -48,10 +48,10 @@ export async function getAlgoChecksums( file.type === 'url' ? (file as UrlFileObject).url : file.type === 'arweave' - ? urlJoin(config.arweaveGateway, (file as ArweaveFileObject).transactionId) - : file.type === 'ipfs' - ? urlJoin(config.ipfsGateway, (file as IpfsFileObject).hash) - : null + ? urlJoin(config.arweaveGateway, (file as ArweaveFileObject).transactionId) + : file.type === 'ipfs' + ? urlJoin(config.ipfsGateway, (file as IpfsFileObject).hash) + : null const { contentChecksum } = await fetchFileMetadata(url, 'get', false) checksums.files = checksums.files.concat(contentChecksum) diff --git a/src/components/core/handler/downloadHandler.ts b/src/components/core/handler/downloadHandler.ts index 73c79000a..92aa2d7ea 100644 --- a/src/components/core/handler/downloadHandler.ts +++ b/src/components/core/handler/downloadHandler.ts @@ -102,9 +102,8 @@ export async function handleDownloadUrlCommand( headers['Content-Length'.toLowerCase()] = fileMetadata.contentLength if (!('Content-Disposition'?.toLowerCase() in objTemp)) - headers[ - 'Content-Disposition'.toLowerCase() - ] = `attachment;filename=${fileMetadata.name}` + headers['Content-Disposition'.toLowerCase()] = + `attachment;filename=${fileMetadata.name}` if (encryptFile) { // we parse the string into the object again const encryptedObject = ethCrypto.cipher.parse(task.aes_encrypted_key) diff --git a/src/components/core/handler/fileInfoHandler.ts b/src/components/core/handler/fileInfoHandler.ts index 32ac560d4..342de9f4c 100644 --- a/src/components/core/handler/fileInfoHandler.ts +++ b/src/components/core/handler/fileInfoHandler.ts @@ -28,10 +28,10 @@ async function formatMetadata( file.type === 'url' ? (file as UrlFileObject).url : file.type === 'arweave' - ? urlJoin(config.arweaveGateway, (file as ArweaveFileObject).transactionId) - : file.type === 'ipfs' - ? urlJoin(config.ipfsGateway, (file as IpfsFileObject).hash) - : null + ? urlJoin(config.arweaveGateway, (file as ArweaveFileObject).transactionId) + : file.type === 'ipfs' + ? urlJoin(config.ipfsGateway, (file as IpfsFileObject).hash) + : null const { contentLength, contentType, contentChecksum } = await fetchFileMetadata( url, diff --git a/src/utils/blockchain.ts b/src/utils/blockchain.ts index efd5d83a4..38da1abd5 100644 --- a/src/utils/blockchain.ts +++ b/src/utils/blockchain.ts @@ -200,24 +200,24 @@ export class Blockchain { Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_POLYGON ? MIN_GAS_FEE_POLYGON : chainId === BigInt(SEPOLIA_NETWORK_ID) && - Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SEPOLIA - ? MIN_GAS_FEE_SEPOLIA - : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && - Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SAPPHIRE - ? MIN_GAS_FEE_SAPPHIRE - : Number(aggressiveFeePriorityFeePerGas), + Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SEPOLIA + ? MIN_GAS_FEE_SEPOLIA + : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && + Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SAPPHIRE + ? MIN_GAS_FEE_SAPPHIRE + : Number(aggressiveFeePriorityFeePerGas), maxFeePerGas: (chainId === BigInt(MUMBAI_NETWORK_ID) || chainId === BigInt(POLYGON_NETWORK_ID)) && Number(aggressiveFeePerGas) < MIN_GAS_FEE_POLYGON ? MIN_GAS_FEE_POLYGON : chainId === BigInt(SEPOLIA_NETWORK_ID) && - Number(aggressiveFeePerGas) < MIN_GAS_FEE_SEPOLIA - ? MIN_GAS_FEE_SEPOLIA - : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && - Number(aggressiveFeePerGas) < MIN_GAS_FEE_SAPPHIRE - ? MIN_GAS_FEE_SAPPHIRE - : Number(aggressiveFeePerGas) + Number(aggressiveFeePerGas) < MIN_GAS_FEE_SEPOLIA + ? MIN_GAS_FEE_SEPOLIA + : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && + Number(aggressiveFeePerGas) < MIN_GAS_FEE_SAPPHIRE + ? MIN_GAS_FEE_SAPPHIRE + : Number(aggressiveFeePerGas) } return overrides } else { From 41c138a237916b7225a5515113b62d72a0b4a59c Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 14:59:24 +0200 Subject: [PATCH 03/43] fix peer id key generation --- src/components/P2P/index.ts | 4 ++-- src/components/core/handler/downloadHandler.ts | 2 +- src/components/core/utils/feesHandler.ts | 4 ++-- src/test/unit/oceanP2P.test.ts | 9 +++++++-- src/utils/config/builder.ts | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 48236f364..a0121edff 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -234,7 +234,7 @@ export class OceanP2P extends EventEmitter { P2P_LOGGER.info(`Starting P2P Node with peerID: ${this._publicAddress}`) this._publicKey = config.keys.publicKey - this._privateKey = config.keys.privateKey + this._privateKey = config.keys.privateKey.raw /** @type {import('libp2p').Libp2pOptions} */ // start with some default, overwrite based on config later const bindInterfaces = [] @@ -341,7 +341,7 @@ export class OceanP2P extends EventEmitter { let options = { addresses, - peerId: config.keys.peerId, + privateKey: config.keys.privateKey, transports, streamMuxers: [yamux()], connectionEncryption: [ diff --git a/src/components/core/handler/downloadHandler.ts b/src/components/core/handler/downloadHandler.ts index 92aa2d7ea..7615a82bd 100644 --- a/src/components/core/handler/downloadHandler.ts +++ b/src/components/core/handler/downloadHandler.ts @@ -108,7 +108,7 @@ export async function handleDownloadUrlCommand( // we parse the string into the object again const encryptedObject = ethCrypto.cipher.parse(task.aes_encrypted_key) // get the key from configuration - const nodePrivateKey = Buffer.from(config.keys.privateKey).toString('hex') + const nodePrivateKey = Buffer.from(config.keys.privateKey.raw).toString('hex') const decrypted = await ethCrypto.decryptWithPrivateKey( nodePrivateKey, encryptedObject diff --git a/src/components/core/utils/feesHandler.ts b/src/components/core/utils/feesHandler.ts index 92d356731..450aafc4a 100644 --- a/src/components/core/utils/feesHandler.ts +++ b/src/components/core/utils/feesHandler.ts @@ -452,7 +452,7 @@ export async function checkFee( */ export async function getProviderWallet(chainId?: string): Promise { return new ethers.Wallet( - Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') + Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') ) } export async function getProviderWalletAddress(): Promise { @@ -460,7 +460,7 @@ export async function getProviderWalletAddress(): Promise { } export async function getProviderKey(): Promise { - return Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') + return Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') } /** diff --git a/src/test/unit/oceanP2P.test.ts b/src/test/unit/oceanP2P.test.ts index 1636ae987..0ba470f92 100644 --- a/src/test/unit/oceanP2P.test.ts +++ b/src/test/unit/oceanP2P.test.ts @@ -9,12 +9,13 @@ import { setupEnvironment, tearDownEnvironment } from '../utils/utils.js' +import { OceanNodeConfig } from '../../@types/OceanNode.js' describe('OceanP2P Test', () => { let node1: OceanP2P let node2: OceanP2P - let config1: any - let config2: any + let config1: OceanNodeConfig + let config2: OceanNodeConfig const mDNSInterval: number = 1 const envOverrides = buildEnvOverrideConfig( @@ -67,6 +68,10 @@ describe('OceanP2P Test', () => { assert(node2, 'Failed to create P2P Node instance') }) it('Start check peerID of each node', () => { + console.log(config1.keys.peerId.toString()) + console.log(node1._libp2p.peerId.toString()) + console.log(config2.keys.peerId.toString()) + console.log(node2._libp2p.peerId.toString()) assert( config1.keys.peerId.toString() === node1._libp2p.peerId.toString(), 'Peer missmatch for node1' diff --git a/src/utils/config/builder.ts b/src/utils/config/builder.ts index e50f6307b..aafd0482c 100644 --- a/src/utils/config/builder.ts +++ b/src/utils/config/builder.ts @@ -90,7 +90,7 @@ export function getPeerIdFromPrivateKey(privateKey: string): OceanNodeKeys { return { peerId: peerIdFromPrivateKey(key), publicKey: key.publicKey.raw, - privateKey: key.raw, + privateKey: key, ethAddress: new Wallet(privateKey.substring(2)).address } } From 67c9be978567a2a9c3cbd3adf2d787f5177f17b7 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 15:04:10 +0200 Subject: [PATCH 04/43] fix crypt --- src/utils/crypt.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/crypt.ts b/src/utils/crypt.ts index daa755b2f..8912bac05 100644 --- a/src/utils/crypt.ts +++ b/src/utils/crypt.ts @@ -19,11 +19,11 @@ export async function encrypt( // use first 16 bytes of public key as an initialisation vector const initVector = publicKey.subarray(0, 16) // creates cipher object, with the given algorithm, key and initialization vector - const cipher = crypto.createCipheriv('aes-256-cbc', privateKey, initVector) + const cipher = crypto.createCipheriv('aes-256-cbc', privateKey.raw, initVector) // encoding is ignored because we are working with bytes and want to return a buffer encryptedData = Buffer.concat([cipher.update(data), cipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey) + const sk = new eciesjs.PrivateKey(privateKey.raw) // get public key from Elliptic curve encryptedData = eciesjs.encrypt(sk.publicKey.toHex(), data) } @@ -47,12 +47,12 @@ export async function decrypt( const initVector = publicKey.subarray(0, 16) // creates decipher object, with the given algorithm, key and initialization vector - const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey, initVector) + const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey.raw, initVector) // encoding is ignored because we are working with bytes and want to return a buffer decryptedData = Buffer.concat([decipher.update(data), decipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey) + const sk = new eciesjs.PrivateKey(privateKey.raw) decryptedData = eciesjs.decrypt(sk.secret, data) } return decryptedData From cf42c048235f5d3ddd29016fad42c2dc0005392b Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 15:15:26 +0200 Subject: [PATCH 05/43] fix integration assert --- src/test/integration/compute.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/integration/compute.test.ts b/src/test/integration/compute.test.ts index e4352de1d..c76154bca 100644 --- a/src/test/integration/compute.test.ts +++ b/src/test/integration/compute.test.ts @@ -1589,7 +1589,7 @@ describe('Compute Access Restrictions', () => { const AccessListFactory = await import( '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json', - { assert: { type: 'json' } } + { with: { type: 'json' } } ) const factoryContract = new ethers.Contract( @@ -1614,7 +1614,7 @@ describe('Compute Access Restrictions', () => { const AccessListAbi = await import( '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json', - { assert: { type: 'json' } } + { with: { type: 'json' } } ) const accessListContract = new ethers.Contract( accessListAddress, From 197920938e60490575227e0609e83774e0210efe Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 15:24:11 +0200 Subject: [PATCH 06/43] use v20 for system tests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a07853dca..b8c2d791d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,7 +178,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: "v22.5.1" + node-version: "v20.19.0" - name: Cache node_modules uses: actions/cache@v3 From 40c1fc23343bb52965c12a17bcda8f02b354aa0d Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 17 Dec 2025 16:06:24 +0200 Subject: [PATCH 07/43] back to 22.5.1 ci --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8c2d791d..a07853dca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,7 +178,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: "v20.19.0" + node-version: "v22.5.1" - name: Cache node_modules uses: actions/cache@v3 From 5a24f4d9395d8cef29aae26ca5aa32ea8226aeff Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 11:34:40 +0200 Subject: [PATCH 08/43] try force reload config --- src/components/Indexer/processors/MetadataEventProcessor.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 8e8c754b4..588b7ab96 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -95,7 +95,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // check authorized publishers - const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() + const { authorizedPublishers, authorizedPublishersList } = + await getConfiguration(true) if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => From 915927c1e672a807477a55a90d8a811ef641666b Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 11:41:11 +0200 Subject: [PATCH 09/43] Revert "try force reload config" This reverts commit 5a24f4d9395d8cef29aae26ca5aa32ea8226aeff. --- src/components/Indexer/processors/MetadataEventProcessor.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 588b7ab96..8e8c754b4 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -95,8 +95,7 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // check authorized publishers - const { authorizedPublishers, authorizedPublishersList } = - await getConfiguration(true) + const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => From 334798e1cf92c0335e73522e34ce2b0cde923852 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 14:18:42 +0200 Subject: [PATCH 10/43] equal check --- src/components/Indexer/processors/MetadataEventProcessor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 8e8c754b4..210daf32b 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -99,8 +99,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => - // do a case insensitive search - address.toLowerCase().includes(owner.toLowerCase()) + // do a case insensitive exact match + address.toLowerCase() === owner.toLowerCase() ) if (!authorized.length) { INDEXER_LOGGER.error( From bdf9f2f13dbc149ce8c43613ba49c67da9fef220 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 14:33:53 +0200 Subject: [PATCH 11/43] log ddo --- package.json | 2 +- src/components/Indexer/processors/MetadataEventProcessor.ts | 4 ++-- src/test/integration/credentials.test.ts | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 7c9c84303..c08e75529 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "mocha-light": "mocha --node-env=test --config .mocharc.json --exclude \"./dist/test/integration/compute.test.js\"", "test": "npm run lint && npm run test:unit:cover && npm run test:integration:cover", "test:unit": "npm run build-tests && npm run mocha \"./dist/test/unit/**/*.test.js\"", - "test:integration": "npm run build-tests && npm run mocha \"./dist/test/integration/**/*.test.js\"", + "test:integration": "npm run build-tests && npm run mocha \"./dist/test/integration/**/credentials.test.js\"", "test:computeunit": "npm run build-tests && npm run mocha \"./dist/test/unit/compute.test.js\"", "test:computeintegration": "npm run build-tests && npm run mocha \"./dist/test/integration/compute.test.js\"", "test:indexer": "npm run build-tests && npm run mocha \"./dist/test/integration/indexer.test.js\"", diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 210daf32b..8e8c754b4 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -99,8 +99,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => - // do a case insensitive exact match - address.toLowerCase() === owner.toLowerCase() + // do a case insensitive search + address.toLowerCase().includes(owner.toLowerCase()) ) if (!authorized.length) { INDEXER_LOGGER.error( diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 2d863ecb1..5d9d000f1 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -554,6 +554,9 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { EVENTS.METADATA_CREATED, DEFAULT_TEST_TIMEOUT ) + + console.log('ddo', ddo) + console.log('wasTimeout', wasTimeout) assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') }) From 1f8d2c8cd769218d8dc5cfd2726bbdb4920f4dcb Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 14:38:35 +0200 Subject: [PATCH 12/43] run all tests --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c08e75529..7c9c84303 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "mocha-light": "mocha --node-env=test --config .mocharc.json --exclude \"./dist/test/integration/compute.test.js\"", "test": "npm run lint && npm run test:unit:cover && npm run test:integration:cover", "test:unit": "npm run build-tests && npm run mocha \"./dist/test/unit/**/*.test.js\"", - "test:integration": "npm run build-tests && npm run mocha \"./dist/test/integration/**/credentials.test.js\"", + "test:integration": "npm run build-tests && npm run mocha \"./dist/test/integration/**/*.test.js\"", "test:computeunit": "npm run build-tests && npm run mocha \"./dist/test/unit/compute.test.js\"", "test:computeintegration": "npm run build-tests && npm run mocha \"./dist/test/integration/compute.test.js\"", "test:indexer": "npm run build-tests && npm run mocha \"./dist/test/integration/indexer.test.js\"", From 7768c7b425d4cc2ba104b215d0e068663d204549 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 14:55:11 +0200 Subject: [PATCH 13/43] new instantce --- src/test/integration/credentials.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 5d9d000f1..81abcd5c5 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -136,7 +136,14 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration const database = await Database.init(config.dbConfig) - oceanNode = await OceanNode.getInstance(config, database) + oceanNode = await OceanNode.getInstance( + config, + database, + undefined, + undefined, + undefined, + true + ) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) await oceanNode.addC2DEngines() From add6445e134a08215656faff12df5f03f1c9720b Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 15:03:38 +0200 Subject: [PATCH 14/43] Revert "new instantce" This reverts commit 7768c7b425d4cc2ba104b215d0e068663d204549. --- src/test/integration/credentials.test.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 81abcd5c5..5d9d000f1 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -136,14 +136,7 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration const database = await Database.init(config.dbConfig) - oceanNode = await OceanNode.getInstance( - config, - database, - undefined, - undefined, - undefined, - true - ) + oceanNode = await OceanNode.getInstance(config, database) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) await oceanNode.addC2DEngines() From bb377b2e86034a2f598a7b3b18a94d90355d5f16 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 15:05:08 +0200 Subject: [PATCH 15/43] log test --- src/test/integration/credentials.test.ts | 53 +++++++++++++----------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 5d9d000f1..d3d1876c3 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -531,33 +531,38 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { }) it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 2) - // this is not authorized - const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer - const authorizedAccount = await publisherAccount.getAddress() - - printCurrentConfig() - expect( - config.authorizedPublishers.length === 1 && - config.authorizedPublishers[0] === authorizedAccount, - 'Unable to set AUTHORIZED_PUBLISHERS' - ) + try { + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + // this is not authorized + const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const authorizedAccount = await publisherAccount.getAddress() + + printCurrentConfig() + expect( + config.authorizedPublishers.length === 1 && + config.authorizedPublishers[0] === authorizedAccount, + 'Unable to set AUTHORIZED_PUBLISHERS' + ) - const publishedDataset = await publishAsset( - downloadAssetWithCredentials, - nonAuthorizedAccount - ) + const publishedDataset = await publishAsset( + downloadAssetWithCredentials, + nonAuthorizedAccount + ) - // will timeout - const { ddo, wasTimeout } = await waitToIndex( - publishedDataset?.ddo.id, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT - ) + // will timeout + const { ddo, wasTimeout } = await waitToIndex( + publishedDataset?.ddo.id, + EVENTS.METADATA_CREATED, + DEFAULT_TEST_TIMEOUT + ) - console.log('ddo', ddo) - console.log('wasTimeout', wasTimeout) - assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') + console.log('-----> ddo', ddo) + console.log('-----> wasTimeout', wasTimeout) + assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') + } catch (error) { + console.error('-----> Error in test:', error) + throw error + } }) after(async () => { From 1eff4bcdd3c2d6a9a068c04de2634fed9cfb2bb6 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 15:26:08 +0200 Subject: [PATCH 16/43] logs --- .../Indexer/processors/MetadataEventProcessor.ts | 11 ++++++----- src/test/integration/credentials.test.ts | 12 ++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 8e8c754b4..1b3fd61d0 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -96,12 +96,14 @@ export class MetadataEventProcessor extends BaseEventProcessor { // check authorized publishers const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() + console.log('-----> authorizedPublishers', authorizedPublishers) if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => // do a case insensitive search address.toLowerCase().includes(owner.toLowerCase()) ) + console.log('-----> authorized', authorized) if (!authorized.length) { INDEXER_LOGGER.error( `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS.name} group.` @@ -125,6 +127,7 @@ export class MetadataEventProcessor extends BaseEventProcessor { owner, signer ) + console.log('-----> isAuthorized', isAuthorized) if (!isAuthorized) { INDEXER_LOGGER.error( `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name} access group.` @@ -151,8 +154,7 @@ export class MetadataEventProcessor extends BaseEventProcessor { }) INDEXER_LOGGER.logMessage( - `Processed new DDO data ${ddoInstance.getDid()} with txHash ${ - event.transactionHash + `Processed new DDO data ${ddoInstance.getDid()} with txHash ${event.transactionHash } from block ${event.blockNumber}`, true ) @@ -167,15 +169,14 @@ export class MetadataEventProcessor extends BaseEventProcessor { if ( previousDdoInstance && previousDdoInstance.getAssetFields().indexedMetadata.nft.state === - MetadataStates.ACTIVE + MetadataStates.ACTIVE ) { const previousTxId = previousDdoInstance.getAssetFields().indexedMetadata?.event?.txid // If it's the same transaction being reprocessed, just skip (idempotent) if (previousTxId === event.transactionHash) { INDEXER_LOGGER.logMessage( - `DDO ${ddoInstance.getDid()} already indexed from same transaction ${ - event.transactionHash + `DDO ${ddoInstance.getDid()} already indexed from same transaction ${event.transactionHash }. Skipping reprocessing.`, true ) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index d3d1876c3..ec9d818c6 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -126,10 +126,10 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { ]), `${homedir}/.ocean/ocean-contracts/artifacts/address.json`, '[{"socketPath":"/var/run/docker.sock","resources":[{"id":"disk","total":10}],"storageExpiry":604800,"maxJobDuration":3600,"minJobDuration":60,"fees":{"' + - DEVELOPMENT_CHAIN_ID + - '":[{"feeToken":"' + - paymentToken + - '","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"minJobDuration":10,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1},{"id":"disk","max":1}]}}]' + DEVELOPMENT_CHAIN_ID + + '":[{"feeToken":"' + + paymentToken + + '","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"minJobDuration":10,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1},{"id":"disk","max":1}]}}]' ] ) ) @@ -534,13 +534,13 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { try { this.timeout(DEFAULT_TEST_TIMEOUT * 2) // this is not authorized - const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const nonAuthorizedAccount = (await provider.getSigner(5)) as Signer const authorizedAccount = await publisherAccount.getAddress() printCurrentConfig() expect( config.authorizedPublishers.length === 1 && - config.authorizedPublishers[0] === authorizedAccount, + config.authorizedPublishers[0] === authorizedAccount, 'Unable to set AUTHORIZED_PUBLISHERS' ) From 3d82d2898b4526323e49ac3d13df738d94d22c3b Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 15:47:35 +0200 Subject: [PATCH 17/43] use correct ddo --- src/components/Indexer/processors/MetadataEventProcessor.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 1b3fd61d0..290888cc5 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -94,6 +94,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { return } + did = ddoInstance.getDid() + // check authorized publishers const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() console.log('-----> authorizedPublishers', authorizedPublishers) @@ -145,7 +147,6 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // stuff that we overwrite - did = ddoInstance.getDid() const { services } = ddoInstance.getDDOFields() ddoInstance.updateFields({ chainId, From 285dc08c6687b4e5c295b618fed66cf32663c5aa Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 16:19:48 +0200 Subject: [PATCH 18/43] revert changes --- .../processors/MetadataEventProcessor.ts | 11 ++-- src/test/integration/credentials.test.ts | 59 +++++++++---------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 290888cc5..259b8dad1 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -94,8 +94,6 @@ export class MetadataEventProcessor extends BaseEventProcessor { return } - did = ddoInstance.getDid() - // check authorized publishers const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() console.log('-----> authorizedPublishers', authorizedPublishers) @@ -147,6 +145,7 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // stuff that we overwrite + did = ddoInstance.getDid() const { services } = ddoInstance.getDDOFields() ddoInstance.updateFields({ chainId, @@ -155,7 +154,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { }) INDEXER_LOGGER.logMessage( - `Processed new DDO data ${ddoInstance.getDid()} with txHash ${event.transactionHash + `Processed new DDO data ${ddoInstance.getDid()} with txHash ${ + event.transactionHash } from block ${event.blockNumber}`, true ) @@ -170,14 +170,15 @@ export class MetadataEventProcessor extends BaseEventProcessor { if ( previousDdoInstance && previousDdoInstance.getAssetFields().indexedMetadata.nft.state === - MetadataStates.ACTIVE + MetadataStates.ACTIVE ) { const previousTxId = previousDdoInstance.getAssetFields().indexedMetadata?.event?.txid // If it's the same transaction being reprocessed, just skip (idempotent) if (previousTxId === event.transactionHash) { INDEXER_LOGGER.logMessage( - `DDO ${ddoInstance.getDid()} already indexed from same transaction ${event.transactionHash + `DDO ${ddoInstance.getDid()} already indexed from same transaction ${ + event.transactionHash }. Skipping reprocessing.`, true ) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index ec9d818c6..f30757f3e 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -126,10 +126,10 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { ]), `${homedir}/.ocean/ocean-contracts/artifacts/address.json`, '[{"socketPath":"/var/run/docker.sock","resources":[{"id":"disk","total":10}],"storageExpiry":604800,"maxJobDuration":3600,"minJobDuration":60,"fees":{"' + - DEVELOPMENT_CHAIN_ID + - '":[{"feeToken":"' + - paymentToken + - '","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"minJobDuration":10,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1},{"id":"disk","max":1}]}}]' + DEVELOPMENT_CHAIN_ID + + '":[{"feeToken":"' + + paymentToken + + '","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"minJobDuration":10,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1},{"id":"disk","max":1}]}}]' ] ) ) @@ -531,38 +531,33 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { }) it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { - try { - this.timeout(DEFAULT_TEST_TIMEOUT * 2) - // this is not authorized - const nonAuthorizedAccount = (await provider.getSigner(5)) as Signer - const authorizedAccount = await publisherAccount.getAddress() - - printCurrentConfig() - expect( - config.authorizedPublishers.length === 1 && + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + // this is not authorized + const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const authorizedAccount = await publisherAccount.getAddress() + + printCurrentConfig() + expect( + config.authorizedPublishers.length === 1 && config.authorizedPublishers[0] === authorizedAccount, - 'Unable to set AUTHORIZED_PUBLISHERS' - ) + 'Unable to set AUTHORIZED_PUBLISHERS' + ) - const publishedDataset = await publishAsset( - downloadAssetWithCredentials, - nonAuthorizedAccount - ) + const publishedDataset = await publishAsset( + downloadAssetWithCredentials, + nonAuthorizedAccount + ) - // will timeout - const { ddo, wasTimeout } = await waitToIndex( - publishedDataset?.ddo.id, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT - ) + // will timeout + const { ddo, wasTimeout } = await waitToIndex( + publishedDataset?.ddo.id, + EVENTS.METADATA_CREATED, + DEFAULT_TEST_TIMEOUT + ) - console.log('-----> ddo', ddo) - console.log('-----> wasTimeout', wasTimeout) - assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') - } catch (error) { - console.error('-----> Error in test:', error) - throw error - } + console.log('-----> ddo', ddo) + console.log('-----> wasTimeout', wasTimeout) + assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') }) after(async () => { From f7dfe2ca6437873162f81c306b0e8a656aac101f Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 18 Dec 2025 16:56:45 +0200 Subject: [PATCH 19/43] force refresh config --- .../Indexer/processors/MetadataEventProcessor.ts | 3 ++- src/test/integration/credentials.test.ts | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 259b8dad1..126415473 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -95,7 +95,8 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // check authorized publishers - const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() + const { authorizedPublishers, authorizedPublishersList } = + await getConfiguration(true) console.log('-----> authorizedPublishers', authorizedPublishers) if (authorizedPublishers.length > 0) { // if is not there, do not index diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index f30757f3e..44c6d34ca 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -536,10 +536,13 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer const authorizedAccount = await publisherAccount.getAddress() + // Reload config to ensure we have the latest values + const currentConfig = await getConfiguration(true) printCurrentConfig() expect( - config.authorizedPublishers.length === 1 && - config.authorizedPublishers[0] === authorizedAccount, + currentConfig.authorizedPublishers.length === 1 && + currentConfig.authorizedPublishers[0].toLowerCase() === + authorizedAccount.toLowerCase(), 'Unable to set AUTHORIZED_PUBLISHERS' ) From 3a308e0bd8cc4242e8207e63da1e0d38b80df1e0 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Fri, 19 Dec 2025 11:39:53 +0200 Subject: [PATCH 20/43] change order --- .../processors/MetadataEventProcessor.ts | 3 +- src/test/integration/credentials.test.ts | 63 +++++++++---------- 2 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 126415473..259b8dad1 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -95,8 +95,7 @@ export class MetadataEventProcessor extends BaseEventProcessor { } // check authorized publishers - const { authorizedPublishers, authorizedPublishersList } = - await getConfiguration(true) + const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() console.log('-----> authorizedPublishers', authorizedPublishers) if (authorizedPublishers.length > 0) { // if is not there, do not index diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 44c6d34ca..ac8f0445b 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -202,6 +202,36 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { expect(Number(balance)).to.equal(1) }) + it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + // this is not authorized + const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const authorizedAccount = await publisherAccount.getAddress() + + printCurrentConfig() + expect( + config.authorizedPublishers.length === 1 && + config.authorizedPublishers[0] === authorizedAccount, + 'Unable to set AUTHORIZED_PUBLISHERS' + ) + + const publishedDataset = await publishAsset( + downloadAssetWithCredentials, + nonAuthorizedAccount + ) + + // will timeout + const { ddo, wasTimeout } = await waitToIndex( + publishedDataset?.ddo.id, + EVENTS.METADATA_CREATED, + DEFAULT_TEST_TIMEOUT + ) + + console.log('-----> ddo', ddo) + console.log('-----> wasTimeout', wasTimeout) + assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') + }) + it('should publish download datasets', async function () { this.timeout(DEFAULT_TEST_TIMEOUT * 5) @@ -530,39 +560,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { await doCheck() }) - it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 2) - // this is not authorized - const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer - const authorizedAccount = await publisherAccount.getAddress() - - // Reload config to ensure we have the latest values - const currentConfig = await getConfiguration(true) - printCurrentConfig() - expect( - currentConfig.authorizedPublishers.length === 1 && - currentConfig.authorizedPublishers[0].toLowerCase() === - authorizedAccount.toLowerCase(), - 'Unable to set AUTHORIZED_PUBLISHERS' - ) - - const publishedDataset = await publishAsset( - downloadAssetWithCredentials, - nonAuthorizedAccount - ) - - // will timeout - const { ddo, wasTimeout } = await waitToIndex( - publishedDataset?.ddo.id, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT - ) - - console.log('-----> ddo', ddo) - console.log('-----> wasTimeout', wasTimeout) - assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') - }) - after(async () => { await tearDownEnvironment(previousConfiguration) oceanNode.getIndexer().stopAllThreads() From d08d638a7749295dddcbb60fd76b8a00631151de Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Fri, 19 Dec 2025 11:41:39 +0200 Subject: [PATCH 21/43] remove logs --- src/components/Indexer/processors/MetadataEventProcessor.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts index 259b8dad1..8e8c754b4 100644 --- a/src/components/Indexer/processors/MetadataEventProcessor.ts +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -96,14 +96,12 @@ export class MetadataEventProcessor extends BaseEventProcessor { // check authorized publishers const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() - console.log('-----> authorizedPublishers', authorizedPublishers) if (authorizedPublishers.length > 0) { // if is not there, do not index const authorized: string[] = authorizedPublishers.filter((address) => // do a case insensitive search address.toLowerCase().includes(owner.toLowerCase()) ) - console.log('-----> authorized', authorized) if (!authorized.length) { INDEXER_LOGGER.error( `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS.name} group.` @@ -127,7 +125,6 @@ export class MetadataEventProcessor extends BaseEventProcessor { owner, signer ) - console.log('-----> isAuthorized', isAuthorized) if (!isAuthorized) { INDEXER_LOGGER.error( `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name} access group.` From 5282ca66bd80e11cc6fd403102c6cb8530a7ee90 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Fri, 19 Dec 2025 15:32:33 +0200 Subject: [PATCH 22/43] tear down envs after tests --- src/test/integration/auth.test.ts | 4 ++ src/test/integration/configAdmin.test.ts | 4 ++ src/test/integration/credentials.test.ts | 63 +++++++++++++----------- 3 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/test/integration/auth.test.ts b/src/test/integration/auth.test.ts index 72eb72cdf..2a0672032 100644 --- a/src/test/integration/auth.test.ts +++ b/src/test/integration/auth.test.ts @@ -239,4 +239,8 @@ describe('Auth Token Integration Tests', () => { }) }) }) + + after(async () => { + await tearDownEnvironment(previousConfiguration) + }) }) diff --git a/src/test/integration/configAdmin.test.ts b/src/test/integration/configAdmin.test.ts index 6b2700d6e..a444a2c27 100644 --- a/src/test/integration/configAdmin.test.ts +++ b/src/test/integration/configAdmin.test.ts @@ -367,5 +367,9 @@ describe('Config Admin Endpoints Integration Tests', () => { config: { rateLimit: configBefore.rateLimit } }) }) + + after(async () => { + await tearDownEnvironment(previousConfiguration) + }) }) }) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index ac8f0445b..44c6d34ca 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -202,36 +202,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { expect(Number(balance)).to.equal(1) }) - it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 2) - // this is not authorized - const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer - const authorizedAccount = await publisherAccount.getAddress() - - printCurrentConfig() - expect( - config.authorizedPublishers.length === 1 && - config.authorizedPublishers[0] === authorizedAccount, - 'Unable to set AUTHORIZED_PUBLISHERS' - ) - - const publishedDataset = await publishAsset( - downloadAssetWithCredentials, - nonAuthorizedAccount - ) - - // will timeout - const { ddo, wasTimeout } = await waitToIndex( - publishedDataset?.ddo.id, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT - ) - - console.log('-----> ddo', ddo) - console.log('-----> wasTimeout', wasTimeout) - assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') - }) - it('should publish download datasets', async function () { this.timeout(DEFAULT_TEST_TIMEOUT * 5) @@ -560,6 +530,39 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { await doCheck() }) + it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + // this is not authorized + const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const authorizedAccount = await publisherAccount.getAddress() + + // Reload config to ensure we have the latest values + const currentConfig = await getConfiguration(true) + printCurrentConfig() + expect( + currentConfig.authorizedPublishers.length === 1 && + currentConfig.authorizedPublishers[0].toLowerCase() === + authorizedAccount.toLowerCase(), + 'Unable to set AUTHORIZED_PUBLISHERS' + ) + + const publishedDataset = await publishAsset( + downloadAssetWithCredentials, + nonAuthorizedAccount + ) + + // will timeout + const { ddo, wasTimeout } = await waitToIndex( + publishedDataset?.ddo.id, + EVENTS.METADATA_CREATED, + DEFAULT_TEST_TIMEOUT + ) + + console.log('-----> ddo', ddo) + console.log('-----> wasTimeout', wasTimeout) + assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') + }) + after(async () => { await tearDownEnvironment(previousConfiguration) oceanNode.getIndexer().stopAllThreads() From 953c65f97055a834b1e6ba49656f7c5edc726128 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Fri, 19 Dec 2025 15:46:55 +0200 Subject: [PATCH 23/43] tear down --- src/test/integration/configDatabase.test.ts | 18 ++++++++++++++++-- src/test/integration/credentials.test.ts | 6 +++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/test/integration/configDatabase.test.ts b/src/test/integration/configDatabase.test.ts index 96bd11ebc..97060d327 100644 --- a/src/test/integration/configDatabase.test.ts +++ b/src/test/integration/configDatabase.test.ts @@ -1,7 +1,14 @@ import { Database } from '../../components/database/index.js' import { expect, assert } from 'chai' import { OceanIndexer } from '../../components/Indexer/index.js' -import { getMockSupportedNetworks } from '../utils/utils.js' +import { + buildEnvOverrideConfig, + getMockSupportedNetworks, + OverrideEnvConfig, + setupEnvironment, + tearDownEnvironment, + TEST_ENV_CONFIG_FILE +} from '../utils/utils.js' import { SQLLiteConfigDatabase } from '../../components/database/SQLLiteConfigDatabase.js' import { DB_TYPES } from '../../utils/constants.js' import { OceanNodeDBConfig } from '../../@types/OceanNode.js' @@ -20,10 +27,16 @@ describe('Config Database', () => { let database: Database let oceanIndexer: OceanIndexer let initialVersionNull: any + let previousConfiguration: OverrideEnvConfig[] before(async () => { database = await Database.init(versionConfig) + previousConfiguration = await setupEnvironment( + TEST_ENV_CONFIG_FILE, + buildEnvOverrideConfig([], []) + ) + it('should have null version initially', async () => { initialVersionNull = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() assert(initialVersionNull.value === null, 'Initial version should be null') @@ -66,8 +79,9 @@ describe('Config Database', () => { version = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() assert(version.value === updatedVersion, `Version should be ${updatedVersion}`) }) - after(() => { + after(async () => { oceanIndexer.stopAllThreads() + await tearDownEnvironment(previousConfiguration) }) }) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 44c6d34ca..96ff5f034 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -19,7 +19,7 @@ import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' -import { streamToObject } from '../../utils/util.js' +import { sleep, streamToObject } from '../../utils/util.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { @@ -101,6 +101,8 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { artifactsAddresses = getOceanArtifactsAdresses() paymentToken = artifactsAddresses.development.Ocean + await sleep(5000) + // override and save configuration (always before calling getConfig()) previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, @@ -558,8 +560,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { DEFAULT_TEST_TIMEOUT ) - console.log('-----> ddo', ddo) - console.log('-----> wasTimeout', wasTimeout) assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') }) From 4a25e77a208b4c9fa0bc39351d72eb4fe6865b07 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Fri, 19 Dec 2025 16:55:56 +0200 Subject: [PATCH 24/43] new instance --- src/test/integration/credentials.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 96ff5f034..3962a3a64 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -138,7 +138,7 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration const database = await Database.init(config.dbConfig) - oceanNode = await OceanNode.getInstance(config, database) + oceanNode = await OceanNode.getInstance(config, database, null, null, null, true) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) await oceanNode.addC2DEngines() From 865f32421e32ea6c880e0b863e5965b4ecc1acfd Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 12:35:37 +0200 Subject: [PATCH 25/43] restart indexer --- src/test/integration/credentials.test.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 3962a3a64..4feca6c09 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -19,7 +19,7 @@ import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' -import { sleep, streamToObject } from '../../utils/util.js' +import { streamToObject, sleep } from '../../utils/util.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { @@ -101,8 +101,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { artifactsAddresses = getOceanArtifactsAdresses() paymentToken = artifactsAddresses.development.Ocean - await sleep(5000) - // override and save configuration (always before calling getConfig()) previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, @@ -534,6 +532,10 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { this.timeout(DEFAULT_TEST_TIMEOUT * 2) + + oceanNode.getIndexer().stopAllThreads() + await sleep(2000) + // this is not authorized const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer const authorizedAccount = await publisherAccount.getAddress() @@ -542,12 +544,15 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { const currentConfig = await getConfiguration(true) printCurrentConfig() expect( - currentConfig.authorizedPublishers.length === 1 && - currentConfig.authorizedPublishers[0].toLowerCase() === - authorizedAccount.toLowerCase(), + config.authorizedPublishers.length === 1 && + config.authorizedPublishers[0] === authorizedAccount, 'Unable to set AUTHORIZED_PUBLISHERS' ) + // Restart the indexer + await oceanNode.getIndexer().startThreads() + await sleep(1000) + const publishedDataset = await publishAsset( downloadAssetWithCredentials, nonAuthorizedAccount From 193d3652dda99ae29d5edb101d9251f7bd5182ba Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 13:06:39 +0200 Subject: [PATCH 26/43] skip db checks --- src/test/integration/configDatabase.test.ts | 2 +- src/test/integration/credentials.test.ts | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/test/integration/configDatabase.test.ts b/src/test/integration/configDatabase.test.ts index 97060d327..7cb48fd6d 100644 --- a/src/test/integration/configDatabase.test.ts +++ b/src/test/integration/configDatabase.test.ts @@ -23,7 +23,7 @@ const emptyDBConfig: OceanNodeDBConfig = { dbType: null } -describe('Config Database', () => { +describe.skip('Config Database', () => { let database: Database let oceanIndexer: OceanIndexer let initialVersionNull: any diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 4feca6c09..f6384fb55 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -19,7 +19,7 @@ import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' -import { streamToObject, sleep } from '../../utils/util.js' +import { streamToObject } from '../../utils/util.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { @@ -533,15 +533,12 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { this.timeout(DEFAULT_TEST_TIMEOUT * 2) - oceanNode.getIndexer().stopAllThreads() - await sleep(2000) - // this is not authorized const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer const authorizedAccount = await publisherAccount.getAddress() // Reload config to ensure we have the latest values - const currentConfig = await getConfiguration(true) + await getConfiguration(true) printCurrentConfig() expect( config.authorizedPublishers.length === 1 && @@ -549,10 +546,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { 'Unable to set AUTHORIZED_PUBLISHERS' ) - // Restart the indexer - await oceanNode.getIndexer().startThreads() - await sleep(1000) - const publishedDataset = await publishAsset( downloadAssetWithCredentials, nonAuthorizedAccount From 6d19c81cd635e8ecb35f581ee6a6ad3778346ab1 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 13:27:45 +0200 Subject: [PATCH 27/43] global check threads --- src/components/Indexer/index.ts | 19 ++++++++++++++++++- src/test/integration/configDatabase.test.ts | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/Indexer/index.ts b/src/components/Indexer/index.ts index 462d43dea..e23b38a76 100644 --- a/src/components/Indexer/index.ts +++ b/src/components/Indexer/index.ts @@ -31,6 +31,7 @@ const MAX_CRAWL_RETRIES = 10 let numCrawlAttempts = 0 const runningThreads: Map = new Map() +const globalWorkers: Map = new Map() export class OceanIndexer { private db: Database private networks: RPCS @@ -85,10 +86,11 @@ export class OceanIndexer { // stops crawling for a specific chain public stopThread(chainID: number): boolean { - const worker = this.workers[chainID] + const worker = this.workers[chainID] || globalWorkers.get(chainID) if (worker) { worker.postMessage({ method: 'stop-crawling' }) runningThreads.set(chainID, false) + globalWorkers.delete(chainID) return true } INDEXER_LOGGER.error('Unable to find running worker thread for chain ' + chainID) @@ -153,6 +155,20 @@ export class OceanIndexer { // starts crawling for a specific chain public async startThread(chainID: number): Promise { + // If a thread is already running globally, stop it first + if (runningThreads.get(chainID)) { + const existingWorker = globalWorkers.get(chainID) + if (existingWorker) { + INDEXER_LOGGER.logMessage( + `Stopping existing worker for chain ${chainID} before starting new one...` + ) + existingWorker.postMessage({ method: 'stop-crawling' }) + runningThreads.set(chainID, false) + globalWorkers.delete(chainID) + await sleep(1000) // Give the worker time to stop + } + } + const rpcDetails: SupportedNetwork = this.getSupportedNetwork(chainID) if (!rpcDetails) { INDEXER_LOGGER.error( @@ -193,6 +209,7 @@ export class OceanIndexer { true ) runningThreads.set(chainID, true) + globalWorkers.set(chainID, worker) return worker } diff --git a/src/test/integration/configDatabase.test.ts b/src/test/integration/configDatabase.test.ts index 7cb48fd6d..97060d327 100644 --- a/src/test/integration/configDatabase.test.ts +++ b/src/test/integration/configDatabase.test.ts @@ -23,7 +23,7 @@ const emptyDBConfig: OceanNodeDBConfig = { dbType: null } -describe.skip('Config Database', () => { +describe('Config Database', () => { let database: Database let oceanIndexer: OceanIndexer let initialVersionNull: any From 30098e9e1f7e3504a9d7f5eb309439b08bc7e9df Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 13:44:12 +0200 Subject: [PATCH 28/43] cleanup --- src/test/integration/credentials.test.ts | 4 +--- src/test/unit/oceanP2P.test.ts | 4 ---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index f6384fb55..4caf05b6f 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -136,7 +136,7 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration const database = await Database.init(config.dbConfig) - oceanNode = await OceanNode.getInstance(config, database, null, null, null, true) + oceanNode = await OceanNode.getInstance(config, database) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) await oceanNode.addC2DEngines() @@ -537,8 +537,6 @@ describe('[Credentials Flow] - Should run a complete node flow.', () => { const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer const authorizedAccount = await publisherAccount.getAddress() - // Reload config to ensure we have the latest values - await getConfiguration(true) printCurrentConfig() expect( config.authorizedPublishers.length === 1 && diff --git a/src/test/unit/oceanP2P.test.ts b/src/test/unit/oceanP2P.test.ts index 0ba470f92..020448230 100644 --- a/src/test/unit/oceanP2P.test.ts +++ b/src/test/unit/oceanP2P.test.ts @@ -68,10 +68,6 @@ describe('OceanP2P Test', () => { assert(node2, 'Failed to create P2P Node instance') }) it('Start check peerID of each node', () => { - console.log(config1.keys.peerId.toString()) - console.log(node1._libp2p.peerId.toString()) - console.log(config2.keys.peerId.toString()) - console.log(node2._libp2p.peerId.toString()) assert( config1.keys.peerId.toString() === node1._libp2p.peerId.toString(), 'Peer missmatch for node1' From 79f1f67be4a71a9680adc07f94be7a974bfa9afc Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 15:40:24 +0200 Subject: [PATCH 29/43] revert p2p changes --- package-lock.json | 2433 +++++++++++------ package.json | 40 +- src/components/P2P/index.ts | 14 +- .../core/handler/downloadHandler.ts | 2 +- src/components/core/utils/feesHandler.ts | 4 +- src/utils/config/builder.ts | 24 +- src/utils/crypt.ts | 8 +- 7 files changed, 1631 insertions(+), 894 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e5c8d938..3659dcd24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,25 +9,25 @@ "version": "0.2.3", "license": "Apache-2.0", "dependencies": { - "@chainsafe/libp2p-noise": "^17.0.0", - "@chainsafe/libp2p-yamux": "^8.0.1", + "@chainsafe/libp2p-noise": "^15.1.0", + "@chainsafe/libp2p-yamux": "^6.0.2", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^3.0.9", - "@libp2p/bootstrap": "^12.0.10", - "@libp2p/circuit-relay-v2": "^4.1.2", - "@libp2p/crypto": "^5.1.13", - "@libp2p/dcutr": "^3.0.9", - "@libp2p/identify": "^4.0.9", - "@libp2p/kad-dht": "^16.1.2", - "@libp2p/mdns": "^12.0.10", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-id-factory": "^4.2.4", - "@libp2p/ping": "^3.0.9", - "@libp2p/pubsub": "^10.1.18", - "@libp2p/pubsub-peer-discovery": "^12.0.0", - "@libp2p/tcp": "^11.0.9", - "@libp2p/upnp-nat": "^4.0.9", - "@libp2p/websockets": "^10.1.2", + "@libp2p/autonat": "^2.0.0", + "@libp2p/bootstrap": "^10.1.1", + "@libp2p/circuit-relay-v2": "^1.1.1", + "@libp2p/crypto": "^4.1.5", + "@libp2p/dcutr": "^1.1.1", + "@libp2p/identify": "^2.1.1", + "@libp2p/kad-dht": "^12.1.1", + "@libp2p/mdns": "^10.1.1", + "@libp2p/peer-id": "^4.1.4", + "@libp2p/peer-id-factory": "^4.1.4", + "@libp2p/ping": "^1.1.1", + "@libp2p/pubsub": "^9.0.22", + "@libp2p/pubsub-peer-discovery": "^10.0.2", + "@libp2p/tcp": "^9.1.1", + "@libp2p/upnp-nat": "^1.2.1", + "@libp2p/websockets": "^8.1.1", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -46,7 +46,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^3.1.2", + "libp2p": "^1.8.0", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -101,19 +101,18 @@ } }, "node_modules/@achingbrain/nat-port-mapper": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-4.0.5.tgz", - "integrity": "sha512-YAA4MW6jO6W7pmJaFzQ0AOLpu8iQClUkdT2HbfKLmtFjrpoZugnFj9wH8EONV9LxnIW+0W1J98ri+oApKyAKLQ==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.18.tgz", + "integrity": "sha512-B3sD+1KmD6qtmnCSdTtoMIwsw5Lj8XNDWnPakXnChm92eaFO7JRfS76oCts6iMFttJzOHq7FT0sNY7sDcbvosA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/ssdp": "^4.1.0", - "@chainsafe/is-ip": "^2.0.2", - "@libp2p/logger": "^6.0.5", - "abort-error": "^1.0.0", + "@achingbrain/ssdp": "^4.0.1", + "@libp2p/logger": "^5.0.1", + "default-gateway": "^7.2.2", "err-code": "^3.0.1", - "netmask": "^2.0.2", + "it-first": "^3.0.1", "p-defer": "^4.0.0", - "race-signal": "^2.0.0", + "p-timeout": "^6.1.1", "xml2js": "^0.6.0" } }, @@ -438,9 +437,9 @@ "license": "Apache-2.0" }, "node_modules/@chainsafe/as-sha256": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-1.2.0.tgz", - "integrity": "sha512-H2BNHQ5C3RS+H0ZvOdovK6GjFAyq5T6LClad8ivwj9Oaiy28uvdsGVS7gNJKuZmg0FGHAI+n7F0Qju6U0QkKDA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", + "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==", "license": "Apache-2.0" }, "node_modules/@chainsafe/is-ip": { @@ -450,51 +449,32 @@ "license": "MIT" }, "node_modules/@chainsafe/libp2p-noise": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-17.0.0.tgz", - "integrity": "sha512-vwrmY2Y+L1xYhIDiEpl61KHxwrLCZoXzTpwhyk34u+3+6zCAZPL3GxH3i2cs+u5IYNoyLptORdH17RKFXy7upA==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.2.tgz", + "integrity": "sha512-o6mqsAbaCBucgdLOOHtkwtGVL1c8RLKhlTnHQY+leazY+thiE1Sm6qPCwsTHKQnWii1q5hDVI2Q0l9QgYi5v4Q==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^1.2.0", - "@libp2p/crypto": "^5.1.9", - "@libp2p/interface": "^3.0.0", - "@libp2p/peer-id": "^6.0.0", - "@libp2p/utils": "^7.0.0", - "@noble/ciphers": "^2.0.1", - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0", + "@chainsafe/as-sha256": "^0.4.1", + "@libp2p/crypto": "^4.0.0", + "@libp2p/interface": "^1.5.0", + "@libp2p/peer-id": "^4.0.0", + "@noble/ciphers": "^0.6.0", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "it-length-prefixed": "^9.0.1", + "it-length-prefixed-stream": "^1.0.0", + "it-pair": "^2.0.6", + "it-pipe": "^3.0.1", + "it-stream-types": "^2.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.0", "wherearewe": "^2.0.1" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/curves": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", - "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "2.0.1" }, "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/hashes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", - "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, "node_modules/@chainsafe/libp2p-noise/node_modules/multiformats": { @@ -511,14 +491,17 @@ } }, "node_modules/@chainsafe/libp2p-yamux": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-8.0.1.tgz", - "integrity": "sha512-pJsqmUg1cZRJZn/luAtQaq0uLcVfExo51Rg7iRtAEceNYtsKUi/exfegnvTBzTnF1CGmTzVEV3MCLsRhqiNyoA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", + "integrity": "sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.0.0", - "@libp2p/utils": "^7.0.0", - "race-signal": "^2.0.0", + "@libp2p/interface": "^1.1.3", + "@libp2p/utils": "^5.2.5", + "get-iterator": "^2.0.1", + "it-foreach": "^2.0.6", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", "uint8arraylist": "^2.4.8" } }, @@ -2154,66 +2137,55 @@ "license": "MIT" }, "node_modules/@libp2p/autonat": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-3.0.9.tgz", - "integrity": "sha512-jqNxiGVpf4iBaQA2Bc1b/Uesxf6pO1Cn7tEsnIF01Hf973sRka9sKm372Zw0KMZw/hMTjJvZkt6KkwsOM6x6aw==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-2.0.38.tgz", + "integrity": "sha512-SuJUbXsF0YQg926hxb6d/f7x4NEHqWHLSXnR6Og5fJSOv2A1i1xRUe8zXaCuxQkPa+CguH2tAPZ+l1A+NZlF5A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-collections": "^7.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", + "@libp2p/interface": "^2.11.0", + "@libp2p/interface-internal": "^2.3.19", + "@libp2p/peer-collections": "^6.0.35", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "@multiformats/multiaddr": "^12.4.4", "any-signal": "^4.1.1", + "it-protobuf-stream": "^2.0.2", "main-event": "^1.0.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", + "multiformats": "^13.3.6", + "protons-runtime": "^5.5.0", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/autonat/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/autonat/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^13.0.0" + "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/bootstrap": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-12.0.10.tgz", - "integrity": "sha512-TXU88UintWDolGjN183HSzMHdQRzyL95PYAY5TtKetYCd8Z6WFg92LlxjRvIpKb5w/1OMeeI3rZBzC9qivoTYA==", + "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-id": "^6.0.4", + "@multiformats/dns": "^1.0.6", "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "main-event": "^1.0.1" + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { + "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", @@ -2225,90 +2197,81 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/bootstrap/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" + "node_modules/@libp2p/autonat/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" + } }, - "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "node_modules/@libp2p/autonat/node_modules/@libp2p/peer-id": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", + "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^13.0.0" + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/circuit-relay-v2": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-4.1.2.tgz", - "integrity": "sha512-zGYIJUfqzddnxtrrsJE3K6sHxL65Gx8oIAaG90S6vPiL2KBuQUXjbkSShdN9QiK7HbdEY+LWCYVsH0ex7c+C9Q==", + "node_modules/@libp2p/autonat/node_modules/@libp2p/utils": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", + "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-collections": "^7.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-record": "^9.0.4", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/logger": "^5.2.0", + "@multiformats/multiaddr": "^12.4.4", + "@sindresorhus/fnv1a": "^3.1.0", "any-signal": "^4.1.1", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", + "is-loopback-addr": "^2.0.2", + "is-plain-obj": "^4.1.0", + "it-foreach": "^2.1.3", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", "main-event": "^1.0.1", - "multiformats": "^13.4.0", - "nanoid": "^5.1.5", - "progress-events": "^1.0.1", - "protons-runtime": "^5.6.0", - "retimeable-signal": "^1.0.1", + "netmask": "^2.0.2", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.1.3", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/crypto": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", - "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^3.1.0", - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/crypto/node_modules/@noble/curves": { + "node_modules/@libp2p/autonat/node_modules/@noble/curves": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", @@ -2323,7 +2286,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { + "node_modules/@libp2p/autonat/node_modules/@noble/hashes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", @@ -2335,64 +2298,326 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/crypto/node_modules/multiformats": { + "node_modules/@libp2p/autonat/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@libp2p/autonat/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@libp2p/autonat/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/crypto/node_modules/uint8arrays": { + "node_modules/@libp2p/autonat/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/autonat/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/dcutr": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-3.0.9.tgz", - "integrity": "sha512-oO+2dECZ1HEIc9OrFW+mrXSAU5C7uzrdVy+Zdt+wVQHiYPmBBa6gUK0LMMbn4l9n4MlHxG+AqV2Y9WtkrLPJxA==", + "node_modules/@libp2p/bootstrap": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.5.tgz", + "integrity": "sha512-cXn/Wl7X4uaVGRyh/uSU/crRbhsPkyzH59hzoLP3727f7w82o+sIHVr4SkJcJewt+LZELBLgkJTibZxAntA1dA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "delay": "^7.0.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3" } }, - "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "multiformats": "^13.0.0", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/dcutr/node_modules/delay": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", - "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", + "node_modules/@libp2p/bootstrap/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/circuit-relay-v2": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.5.tgz", + "integrity": "sha512-WVIHaj61LJd2JB6vvPikd049NhC2R3vrkuu4T00WJSMNWobmhrKPvFyQMN+1miL6KmdL8Yt1AjK0gog2oT4vDw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@libp2p/utils": "^5.4.9", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "any-signal": "^4.1.1", + "it-protobuf-stream": "^1.1.3", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "protons-runtime": "^5.4.0", + "race-signal": "^1.0.2", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/it-protobuf-stream": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", + "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/crypto": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", + "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "asn1js": "^3.0.5", + "multiformats": "^13.1.0", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { - "random-int": "^3.1.0", - "unlimited-timeout": "^0.1.0" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">=20" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@libp2p/crypto/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/crypto/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/dcutr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.1.5.tgz", + "integrity": "sha512-1zDhZxLxrl+yqIAG9KzyLu3gzyvOT7UYTislw4EwhcMGMviot/pgR87SSVqbT+HDpAoj1sM/3F5VUT/sCDa9WA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "delay": "^6.0.0", + "it-protobuf-stream": "^1.1.3", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/dcutr/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/dcutr/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, + "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/dcutr/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", + "engines": { + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@libp2p/dcutr/node_modules/it-protobuf-stream": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", + "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/@libp2p/dcutr/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -2409,39 +2634,76 @@ } }, "node_modules/@libp2p/identify": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-4.0.9.tgz", - "integrity": "sha512-tZ6Q+eCDcGan0TowBvp7sd86jgXIHs7PRIZeBduhjYV24QYSQ1V4mS71RygNRadhn4TVoZkuXwgIByc30eZWhw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.5.tgz", + "integrity": "sha512-uVghY2KfZ3ffDkPmcivfiRDlq1h5rCcoHAW+Kb7JF2qrDfg6BgHAn6IRN4pe/DnYXOuJXIIm6+jjcReTPGBKBQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-record": "^9.0.4", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "it-drain": "^3.0.10", - "it-parallel": "^3.0.13", - "main-event": "^1.0.1", - "protons-runtime": "^5.6.0", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "it-drain": "^3.0.7", + "it-parallel": "^3.0.7", + "it-protobuf-stream": "^1.1.3", + "protons-runtime": "^5.4.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "uint8arrays": "^5.1.0", + "wherearewe": "^2.0.1" + } + }, + "node_modules/@libp2p/identify/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/identify/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" } }, "node_modules/@libp2p/identify/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, + "node_modules/@libp2p/identify/node_modules/it-protobuf-stream": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", + "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/@libp2p/identify/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -2458,38 +2720,57 @@ } }, "node_modules/@libp2p/interface": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", - "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", + "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^13.0.1", - "main-event": "^1.0.1", - "multiformats": "^13.4.0", - "progress-events": "^1.0.1", + "@multiformats/multiaddr": "^12.2.3", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "progress-events": "^1.0.0", "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/interface-internal": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-3.0.9.tgz", - "integrity": "sha512-g6hqsrorej945uh/iwA4MY4n7vAFq5mtuMXOf1vo4CS2v8Zl3RMOl0mQZIhUpHLq8XV2aZ3C5rSe4+KsOmZM5A==", + "version": "2.3.19", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", + "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/peer-collections": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-collections": "^6.0.35", + "@multiformats/multiaddr": "^12.4.4", "progress-events": "^1.0.1" } }, + "node_modules/@libp2p/interface-internal/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/@libp2p/interface-internal/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2511,12 +2792,15 @@ } }, "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2538,62 +2822,105 @@ } }, "node_modules/@libp2p/kad-dht": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-16.1.2.tgz", - "integrity": "sha512-s/S859NPnF2DaLcV7ynPhFHvW2wGhaHdKQbOI6yziICe/A6/eJtTM4hjjHHCoqo+hG7Duj8Tnk/GYsrfG6Qdrg==", + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.1.5.tgz", + "integrity": "sha512-n/Tdd3zVa2p1S4L6wRIBUAo3ctCbiEkp1aewpOUthL6rOwBh6U/RQ+dssiZNEDHCsF1ta/mZkREuXqxOPpplFQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-collections": "^7.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/ping": "^3.0.9", - "@libp2p/record": "^4.0.8", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/record": "^4.0.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", "any-signal": "^4.1.1", - "interface-datastore": "^9.0.1", - "it-all": "^3.0.9", - "it-drain": "^3.0.10", - "it-length": "^3.0.9", - "it-map": "^3.1.4", - "it-merge": "^3.0.12", - "it-parallel": "^3.0.13", + "hashlru": "^2.3.0", + "interface-datastore": "^8.2.11", + "it-drain": "^3.0.7", + "it-length": "^3.0.6", + "it-length-prefixed": "^9.0.4", + "it-map": "^3.1.0", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-take": "^3.0.9", - "main-event": "^1.0.1", - "multiformats": "^13.4.0", + "it-protobuf-stream": "^1.1.3", + "it-take": "^3.0.5", + "multiformats": "^13.1.0", "p-defer": "^4.0.1", - "p-event": "^7.0.0", - "progress-events": "^1.0.1", - "protons-runtime": "^5.6.0", - "race-signal": "^2.0.0", + "p-event": "^6.0.1", + "p-queue": "^8.0.1", + "progress-events": "^1.0.0", + "protons-runtime": "^5.4.0", + "race-signal": "^1.0.2", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/kad-dht/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/kad-dht/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, "node_modules/@libp2p/kad-dht/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, + "node_modules/@libp2p/kad-dht/node_modules/it-protobuf-stream": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", + "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/@libp2p/kad-dht/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/@libp2p/kad-dht/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/kad-dht/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -2604,25 +2931,44 @@ } }, "node_modules/@libp2p/logger": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-6.2.2.tgz", - "integrity": "sha512-XtanXDT+TuMuZoCK760HGV1AmJsZbwAw5AiRUxWDbsZPwAroYq64nb41AHRu9Gyc0TK9YD+p72+5+FIxbw0hzw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", + "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@multiformats/multiaddr": "^13.0.1", - "interface-datastore": "^9.0.1", - "multiformats": "^13.4.0", - "weald": "^1.1.0" + "@libp2p/interface": "^2.11.0", + "@multiformats/multiaddr": "^12.4.4", + "interface-datastore": "^8.3.1", + "multiformats": "^13.3.6", + "weald": "^1.0.4" + } + }, + "node_modules/@libp2p/logger/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2644,29 +2990,55 @@ } }, "node_modules/@libp2p/mdns": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-12.0.10.tgz", - "integrity": "sha512-dghYN1g74KA5GaeL4g9s6eDmca5fZy1oMREU0R0eF8g+astHpWzx5UzTBeco4Q67bPs6o0b5NxtDGlwFh4oTBw==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.1.5.tgz", + "integrity": "sha512-iSBnjaUgPdPudXP3ZPXJMWzJkT+I+TQHRCBTh6OMPa0V2C/MhL+FfCGn0SDMWKSDDwqK6I6UOeTflf4YUzy/8w==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", "@types/multicast-dns": "^7.2.4", "dns-packet": "^5.6.1", - "main-event": "^1.0.1", "multicast-dns": "^7.2.5" } }, + "node_modules/@libp2p/mdns/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/mdns/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, "node_modules/@libp2p/mdns/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2688,14 +3060,18 @@ } }, "node_modules/@libp2p/multistream-select": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-7.0.9.tgz", - "integrity": "sha512-2WAaYuTD1B5FtC0+qFVyglMBnzI0KC8Xmiw7nX9XnlYwrnLj2LIBi/XK7MpsGU1LiphSxT8UfmngwnAWf4t1Dg==", + "version": "5.1.17", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.17.tgz", + "integrity": "sha512-QOMGjCzKGf/W+qzWw5OxaqLEYhK45XjMCxGJYQ7L5eUkcwAv6rlPZAYw6YslaMLpJTa61/yfh8D4u7EuoMFsUw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/utils": "^7.0.9", - "it-length-prefixed": "^10.0.1", + "@libp2p/interface": "^1.7.0", + "it-length-prefixed": "^9.0.4", + "it-length-prefixed-stream": "^1.1.7", + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.1", + "race-signal": "^1.0.2", + "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } @@ -2706,6 +3082,12 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/@libp2p/multistream-select/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -2716,91 +3098,118 @@ } }, "node_modules/@libp2p/peer-collections": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-7.0.9.tgz", - "integrity": "sha512-pAMRxmT5V31V0gy2MfwVE1TMAcTnbyBYFOv60OWnkKth4hD+HvQ9DLW1z+opYDqRNON5sIWjcnDsIQDm2VUS7A==", + "version": "6.0.35", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", + "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/utils": "^7.0.9", - "multiformats": "^13.4.0" + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "multiformats": "^13.3.6" } }, - "node_modules/@libp2p/peer-collections/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/peer-id": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-6.0.4.tgz", - "integrity": "sha512-Z3xK0lwwKn4bPg3ozEpPr1HxsRi2CxZdghOL+MXoFah/8uhJJHxHFA8A/jxtKn4BB8xkk6F8R5vKNIS05yaCYw==", + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-id-factory": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", - "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^13.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/crypto": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", - "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0", - "asn1js": "^3.0.5", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/interface": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", - "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^12.2.3", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "progress-events": "^1.0.0", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/peer-id": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", - "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/peer-id": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", + "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "multiformats": "^13.1.0", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-collections/node_modules/@libp2p/utils": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", + "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/logger": "^5.2.0", + "@multiformats/multiaddr": "^12.4.4", + "@sindresorhus/fnv1a": "^3.1.0", + "any-signal": "^4.1.1", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", + "is-loopback-addr": "^2.0.2", + "is-plain-obj": "^4.1.0", + "it-foreach": "^2.1.3", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "netmask": "^2.0.2", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.1.3", + "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@multiformats/multiaddr": { + "node_modules/@libp2p/peer-collections/node_modules/@multiformats/multiaddr": { "version": "12.5.1", "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", @@ -2815,33 +3224,103 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "node_modules/@libp2p/peer-collections/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.8.0" + "@noble/hashes": "2.0.1" }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/peer-id-factory/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "node_modules/@libp2p/peer-collections/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, + "node_modules/@libp2p/peer-collections/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@libp2p/peer-collections/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@libp2p/peer-collections/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/peer-collections/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/peer-collections/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/peer-id": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", + "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "multiformats": "^13.1.0", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-id-factory": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", + "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, "node_modules/@libp2p/peer-id-factory/node_modules/multiformats": { "version": "13.1.3", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", @@ -2870,29 +3349,32 @@ } }, "node_modules/@libp2p/peer-record": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-9.0.4.tgz", - "integrity": "sha512-c8NrP2q0FPIiEef2IKOQFi7k0CJK1vr0uk+jbn6KjF85YUWVyaVvuncZG7EwAjO68tuwGS0LLrvJWJbjHFqAwQ==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.25.tgz", + "integrity": "sha512-b54P3cSeQniW/HPJjBVbeF3KaVUQkWa431gotuIFUS1PYgtz69uzkRrVY6Qt+RBb4R4fcmH4K4jWyZi3xyLGfQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/peer-id": "^6.0.4", - "@multiformats/multiaddr": "^13.0.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", + "protons-runtime": "^5.4.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/peer-record/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2913,35 +3395,47 @@ "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/peer-store": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-12.0.9.tgz", - "integrity": "sha512-+OOKqrllUUACE3IcfFEVcByJo1fMUy9kztxwfy5wmOxybcysxmJ5p3NmETDCqRhlY2sEk55NuRLh5vzDfJIcQQ==", + "node_modules/@libp2p/peer-store": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.5.tgz", + "integrity": "sha512-JqQcIcxZS7kicCPabGRyrKD+qZlOdaooL00hdHogVb4MIMqfjiQMmOEpzIvTQLCKHKM2mmfnV3P7kc6hYzPq8g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "it-all": "^3.0.6", + "mortice": "^3.0.4", + "multiformats": "^13.1.0", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-store/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/peer-collections": "^7.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-record": "^9.0.4", - "@multiformats/multiaddr": "^13.0.1", - "interface-datastore": "^9.0.1", - "it-all": "^3.0.9", - "main-event": "^1.0.1", - "mortice": "^3.3.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" } }, "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2963,28 +3457,54 @@ } }, "node_modules/@libp2p/ping": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-3.0.9.tgz", - "integrity": "sha512-PeOH3jH+f4cjczxNMKsAf67x/ai3/YQIAc8rq+fkhRWzIuYKjSG8omgiIJJ9sGbaI0b7Ap8vFVbVflvb52qEDg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.6.tgz", + "integrity": "sha512-tzTL0BzS1JaHE8v4PhRZ5K8wQQQcTMXM/0baCkLTLIaSMe1fzhj+KHbFNoUrY3yni4yfsVY1uR0qchhc1/J9qg==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@multiformats/multiaddr": "^13.0.1", - "p-event": "^7.0.0", - "race-signal": "^2.0.0", - "uint8arraylist": "^2.4.8", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@multiformats/multiaddr": "^12.2.3", + "it-first": "^3.0.6", + "it-pipe": "^3.0.1", "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/ping/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/ping/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3006,50 +3526,75 @@ } }, "node_modules/@libp2p/pubsub": { - "version": "10.1.18", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-10.1.18.tgz", - "integrity": "sha512-Bxa0cwkaQvadyJNlJlzH0m1eo7m03G2nCpuKbcv+i0qNbyyTOydBcuoslG/UWFYhRBB9Js9R6zNIsaIgpo+iGw==", + "version": "9.0.26", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.26.tgz", + "integrity": "sha512-69sFv5DAHSXrQdu4THX9WSZuEfCjEbbk6bKiTtbNGpq1Vaf57rjsTWk/EXMS/veeMl95xJs3/BR7dQal2PtJmw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "it-length-prefixed": "^10.0.1", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9", + "it-length-prefixed": "^9.0.4", "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "p-queue": "^8.1.0", + "multiformats": "^13.1.0", + "p-queue": "^8.0.1", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/pubsub-peer-discovery": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-12.0.0.tgz", - "integrity": "sha512-72sZwTDBH/iowRumycPLjSlaUd3cwQcjSN2xUagdzNtMt9ryWt7dL4fDGM+VsktSdYmzzOHhL9ZftNfUk7XG7A==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-10.0.3.tgz", + "integrity": "sha512-9UL7j24SoXBHPulUUWpHiFjrI1rdbIZS8mN4+tRCF8e9J99fr7EcHpyN/kB0o31KXDKFA6zr8H0hniHhuqMPKA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.0.0", - "@libp2p/interface": "^3.0.0", - "@libp2p/interface-internal": "^3.0.1", - "@libp2p/peer-id": "^6.0.1", - "@multiformats/multiaddr": "^13.0.1", + "@libp2p/interface": "^1.0.1", + "@libp2p/interface-internal": "^1.0.1", + "@libp2p/peer-id": "^4.0.1", + "@multiformats/multiaddr": "^12.0.0", "protons-runtime": "^5.0.0", "uint8arraylist": "^2.4.3", "uint8arrays": "^5.0.2" } }, + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3070,100 +3615,28 @@ "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface-internal": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", - "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-collections": "^6.0.35", - "@multiformats/multiaddr": "^12.4.4", - "progress-events": "^1.0.1" - } - }, - "node_modules/@libp2p/pubsub/node_modules/@libp2p/logger": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", - "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@multiformats/multiaddr": "^12.4.4", - "interface-datastore": "^8.3.1", - "multiformats": "^13.3.6", - "weald": "^1.0.4" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-collections": { - "version": "6.0.35", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", - "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "multiformats": "^13.3.6" - } - }, - "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-id": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", - "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "multiformats": "^13.3.6", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/pubsub/node_modules/@libp2p/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/logger": "^5.2.0", - "@multiformats/multiaddr": "^12.4.4", - "@sindresorhus/fnv1a": "^3.1.0", - "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", - "is-loopback-addr": "^2.0.2", - "is-plain-obj": "^4.1.0", - "it-foreach": "^2.1.3", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "netmask": "^2.0.2", - "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" } }, "node_modules/@libp2p/pubsub/node_modules/@multiformats/multiaddr": { @@ -3181,62 +3654,17 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/pubsub/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/pubsub/node_modules/interface-datastore": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", - "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "interface-store": "^6.0.0", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/pubsub/node_modules/interface-store": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", - "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/pubsub/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@libp2p/pubsub/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/pubsub/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@libp2p/pubsub/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } @@ -3268,43 +3696,35 @@ } }, "node_modules/@libp2p/tcp": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-11.0.9.tgz", - "integrity": "sha512-/Fjy2TQR5rMBp0DbKYiP43wRM+CYsWVLc+hOpFrPp5EOS3yu/38/0F7EISFdk2vsijqll7iD0BA4+/Zt4U1kwQ==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.6.tgz", + "integrity": "sha512-zbhHDY5txl8ypCL50JQWej/fZ8X7Lh+qfZw1HXDQEJZvgIrdYDPXrXfjIFflN0m/6hPoU/VAkKOr+RIuhIE8wQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "@types/sinon": "^20.0.0", - "main-event": "^1.0.1", - "p-event": "^7.0.0", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" + "@libp2p/interface": "^1.7.0", + "@libp2p/utils": "^5.4.9", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "@types/sinon": "^17.0.3", + "progress-events": "^1.0.0", + "stream-to-it": "^1.0.1" } }, "node_modules/@libp2p/tcp/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/tcp/node_modules/@types/sinon": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-20.0.0.tgz", - "integrity": "sha512-etYGUC6IEevDGSWvR9WrECRA01ucR2/Oi9XMBUAdV0g4bLkNf4HlZWGiGlDOq5lgwXRwcV+PSeKgFcW4QzzYOg==", - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, "node_modules/@libp2p/tcp/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -3317,34 +3737,57 @@ "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^13.0.0" + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/upnp-nat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.2.5.tgz", + "integrity": "sha512-bxW4jB4p4T/i8V5BrwUzPLsQvFleC7EZIkqS0r8JbNiFy5iYIvU/WOMB6s7VJkiX3m1RxOxkKU6DcuAPuIJPzQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@achingbrain/nat-port-mapper": "^1.0.13", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", + "wherearewe": "^2.0.1" + } + }, + "node_modules/@libp2p/upnp-nat/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/upnp-nat": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-4.0.9.tgz", - "integrity": "sha512-+f564UNNc0ZMACqdTJCgIfXe3QHevJKwzXq703gJ6Gm8HV2zVuh9W+2CQhDjdizMsnCJdDhmml14cEL1iXkPOw==", + "node_modules/@libp2p/upnp-nat/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/nat-port-mapper": "^4.0.4", - "@chainsafe/is-ip": "^2.1.0", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "main-event": "^1.0.1", - "p-defer": "^4.0.1", - "race-signal": "^2.0.0" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" } }, "node_modules/@libp2p/upnp-nat/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3366,59 +3809,69 @@ } }, "node_modules/@libp2p/utils": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-7.0.9.tgz", - "integrity": "sha512-2wYhsgfbFXfh5ui0ME9MNHc7uUIuZwpeZ/yagKmDSjIP7B+L3/9mj+vVXO14AhmjfwnKx2xUDQvzGZeq5to4ow==", + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.9.tgz", + "integrity": "sha512-0fRdX98WqhTmXU2WEVLegLFxs/kKTtUHanHk5Lzs4oGsIzlPHR7zE6lj/U1WfsFA+Xo1eYQpNLiXEL29hG+Nyw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/logger": "^6.2.2", - "@multiformats/multiaddr": "^13.0.1", + "@chainsafe/is-ip": "^2.0.2", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/logger": "^4.0.20", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", "@sindresorhus/fnv1a": "^3.1.0", + "@types/murmurhash3js-revisited": "^3.0.3", "any-signal": "^4.1.1", - "cborg": "^4.2.14", - "delay": "^7.0.0", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", "is-loopback-addr": "^2.0.2", - "it-length-prefixed": "^10.0.1", - "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", + "it-stream-types": "^2.0.1", + "murmurhash3js-revisited": "^3.0.0", "netmask": "^2.0.2", "p-defer": "^4.0.1", - "p-event": "^7.0.0", - "race-signal": "^2.0.0", - "uint8-varint": "^2.0.4", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/utils/node_modules/@libp2p/logger": { + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", + "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "multiformats": "^13.1.0", + "weald": "^1.0.2" + } + }, "node_modules/@libp2p/utils/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/utils/node_modules/delay": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", - "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", "license": "MIT", - "dependencies": { - "random-int": "^3.1.0", - "unlimited-timeout": "^0.1.0" - }, "engines": { - "node": ">=20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3430,6 +3883,12 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/@libp2p/utils/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/utils/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -3440,31 +3899,35 @@ } }, "node_modules/@libp2p/websockets": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-10.1.2.tgz", - "integrity": "sha512-WjUxzVpniENxclwSRZpFtk3riV846WCf02Rm7MsAL9ui6szWcCEXzmMIjuo5mOzCUGOn0NPol6Uiz11nadC4iQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.2.0.tgz", + "integrity": "sha512-UNjqkQ8/emnYswp1ohIIuZCnhI5DlvWF9IaIND2MoTCDavi7yubWfMp8jSWBsAqPnMeLMO8MQ6YlOo4FFC104Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@libp2p/utils": "^7.0.9", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", - "@multiformats/multiaddr-to-uri": "^12.0.0", - "main-event": "^1.0.1", - "p-event": "^7.0.0", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0", - "ws": "^8.18.3" + "@libp2p/interface": "^1.7.0", + "@libp2p/utils": "^5.4.9", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-to-uri": "^10.0.1", + "@types/ws": "^8.5.10", + "it-ws": "^6.1.1", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "race-signal": "^1.0.2", + "wherearewe": "^2.0.1", + "ws": "^8.17.0" } }, "node_modules/@libp2p/websockets/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3476,6 +3939,12 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/@libp2p/websockets/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/websockets/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -3563,6 +4032,45 @@ "multiformats": "^13.0.0" } }, + "node_modules/@multiformats/mafmt": { + "version": "12.1.6", + "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz", + "integrity": "sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" + } + }, + "node_modules/@multiformats/mafmt/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@multiformats/mafmt/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@multiformats/mafmt/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, "node_modules/@multiformats/multiaddr": { "version": "10.5.0", "license": "Apache-2.0 OR MIT", @@ -3580,21 +4088,26 @@ } }, "node_modules/@multiformats/multiaddr-matcher": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-3.0.1.tgz", - "integrity": "sha512-jvjwzCPysVTQ53F4KqwmcqZw73BqHMk0UUZrMP9P4OtJ/YHrfs122ikTqhVA2upe0P/Qz9l8HVlhEifVYB2q9A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.8.0.tgz", + "integrity": "sha512-tR/HFhDucXjvwCef5lfXT7kikqR2ffUjliuYlg/RKYGPySVKVlvrDufz86cIuHNc+i/fNR16FWWgD/pMJ6RW4w==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^13.0.0" + "@chainsafe/is-ip": "^2.0.1", + "@multiformats/multiaddr": "^12.0.0", + "multiformats": "^13.0.0" } }, "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3616,21 +4129,24 @@ } }, "node_modules/@multiformats/multiaddr-to-uri": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-12.0.0.tgz", - "integrity": "sha512-3uIEBCiy8tfzxYYBl81x1tISiNBQ7mHU4pGjippbJRoQYHzy/ZdZM/7JvTldr8pc/dzpkaNJxnsuxxlhsPOJsA==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.1.2.tgz", + "integrity": "sha512-6sicfYRjJlHJn4bwsQancs8kXncWU4dDN/+V9sMVTYp9hi8ovWgVkK75AbAv4SfhztmmI+oufVUncQ1n+SukKQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^13.0.0" + "@multiformats/multiaddr": "^12.3.0" } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3663,13 +4179,10 @@ } }, "node_modules/@noble/ciphers": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz", - "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", + "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, "funding": { "url": "https://paulmillr.com/funding/" } @@ -4907,6 +5420,12 @@ "@types/node": "*" } }, + "node_modules/@types/murmurhash3js-revisited": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", + "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "25.0.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", @@ -5185,7 +5704,6 @@ "version": "17.0.4", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", - "dev": true, "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" @@ -5229,6 +5747,15 @@ "version": "1.3.4", "license": "MIT" }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.9.1", "dev": true, @@ -6547,15 +7074,6 @@ "version": "1.0.8", "license": "Apache-2.0" }, - "node_modules/cborg": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.3.2.tgz", - "integrity": "sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==", - "license": "Apache-2.0", - "bin": { - "cborg": "lib/bin.js" - } - }, "node_modules/chai": { "version": "4.3.10", "dev": true, @@ -7087,21 +7605,72 @@ } }, "node_modules/datastore-core": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-11.0.2.tgz", - "integrity": "sha512-0pN4hMcaCWcnUBo5OL/8j14Lt1l/p1v2VvzryRYeJAKRLqnFrzy2FhAQ7y0yTA63ki760ImQHfm2XlZrfIdFpQ==", + "version": "9.2.9", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", + "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/logger": "^6.0.0", - "interface-datastore": "^9.0.0", - "interface-store": "^7.0.0", - "it-drain": "^3.0.9", - "it-filter": "^3.1.3", - "it-map": "^3.1.3", - "it-merge": "^3.0.11", + "@libp2p/logger": "^4.0.6", + "err-code": "^3.0.1", + "interface-datastore": "^8.0.0", + "interface-store": "^5.0.0", + "it-drain": "^3.0.5", + "it-filter": "^3.0.4", + "it-map": "^3.0.5", + "it-merge": "^3.0.3", "it-pipe": "^3.0.1", - "it-sort": "^3.0.8", - "it-take": "^3.0.8" + "it-pushable": "^3.2.3", + "it-sort": "^3.0.4", + "it-take": "^3.0.4" + } + }, + "node_modules/datastore-core/node_modules/@libp2p/logger": { + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", + "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "multiformats": "^13.1.0", + "weald": "^1.0.2" + } + }, + "node_modules/datastore-core/node_modules/@multiformats/multiaddr": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/datastore-core/node_modules/interface-store": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz", + "integrity": "sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/datastore-core/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/datastore-core/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, "node_modules/date-fns": { @@ -7225,30 +7794,73 @@ "titleize": "^3.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" } }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "dev": true, - "license": "MIT", + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "license": "BSD-2-Clause", "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" + "execa": "^7.1.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 16" } }, - "node_modules/default-browser/node_modules/execa": { + "node_modules/default-gateway/node_modules/execa": { "version": "7.2.0", - "dev": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -7268,9 +7880,10 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/default-browser/node_modules/human-signals": { + "node_modules/default-gateway/node_modules/human-signals": { "version": "4.3.1", - "dev": true, + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "license": "Apache-2.0", "engines": { "node": ">=14.18.0" @@ -8800,6 +9413,12 @@ "es5-ext": "~0.10.14" } }, + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", + "license": "MIT" + }, "node_modules/event-target-shim": { "version": "5.0.1", "license": "MIT", @@ -9512,7 +10131,6 @@ }, "node_modules/get-stream": { "version": "6.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10184,12 +10802,12 @@ } }, "node_modules/interface-datastore": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-9.0.2.tgz", - "integrity": "sha512-jebn+GV/5LTDDoyicNIB4D9O0QszpPqT09Z/MpEWvf3RekjVKpXJCDguM5Au2fwIFxFDAQMZe5bSla0jMamCNg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", + "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "interface-store": "^7.0.0", + "interface-store": "^6.0.0", "uint8arrays": "^5.1.0" } }, @@ -10209,9 +10827,9 @@ } }, "node_modules/interface-store": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-7.0.1.tgz", - "integrity": "sha512-OPRRUO3Cs6Jr/t98BrJLQp1jUTPgrRH0PqFfuNoPAqd+J7ABN1tjFVjQdaOBiybYJTS/AyBSZnZVWLPvp3dW3w==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", + "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", "license": "Apache-2.0 OR MIT" }, "node_modules/internal-slot": { @@ -10520,18 +11138,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10631,7 +11237,6 @@ }, "node_modules/is-stream": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -10902,6 +11507,33 @@ "integrity": "sha512-fz1oJJ36ciGnu2LntAlE6SA97bFZpW7Rnt0uEc1yazzR2nKokZLr8lIRtgnpex4NsmaBcvHF+Z9krljWFy/mmg==", "license": "Apache-2.0 OR MIT" }, + "node_modules/it-byte-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.1.tgz", + "integrity": "sha512-OIOb8PvK9ZV7MHvyxIDNyN3jmrxrJdx99G0RIYYb3Tzo1OWv+O1C6mfg7nnlDuuTQz2POYFXe87AShKAEl+POw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-queueless-pushable": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/it-byte-stream/node_modules/it-queueless-pushable": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.2.tgz", + "integrity": "sha512-BFIm48C4O8+i+oVEPQpZ70+CaAsVUircvZtZCrpG2Q64933aLp+tDmas1mTBwqVBfIUUlg09d+e6SWW1CBuykQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "p-defer": "^4.0.1", + "race-signal": "^1.1.3" + } + }, + "node_modules/it-byte-stream/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/it-drain": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.10.tgz", @@ -10917,6 +11549,12 @@ "it-peekable": "^3.0.0" } }, + "node_modules/it-first": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.9.tgz", + "integrity": "sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/it-foreach": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.5.tgz", @@ -10933,9 +11571,9 @@ "license": "Apache-2.0 OR MIT" }, "node_modules/it-length-prefixed": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", - "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", + "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-reader": "^6.0.1", @@ -10949,6 +11587,18 @@ "npm": ">=7.0.0" } }, + "node_modules/it-length-prefixed-stream": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.1.tgz", + "integrity": "sha512-FYqlxc2toUoK+aPO5r3KDBIUG1mOvk2DzmjQcsfLUTHRWMJP4Va9855tVzg/22Bj+VUUaT7gxBg7HmbiCxTK4w==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-byte-stream": "^1.0.0", + "it-stream-types": "^2.0.2", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/it-length-prefixed/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -10982,6 +11632,20 @@ "it-queueless-pushable": "^2.0.0" } }, + "node_modules/it-pair": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", + "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/it-parallel": { "version": "3.0.13", "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.13.tgz", @@ -11010,6 +11674,44 @@ "npm": ">=7.0.0" } }, + "node_modules/it-protobuf-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-2.0.3.tgz", + "integrity": "sha512-Dus9qyylOSnC7l75/3qs6j3Fe9MCM2K5luXi9o175DYijFRne5FPucdOGIYdwaDBDQ4Oy34dNCuFobOpcusvEQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1", + "it-length-prefixed-stream": "^2.0.0", + "it-stream-types": "^2.0.2", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/it-protobuf-stream/node_modules/it-byte-stream": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.4.tgz", + "integrity": "sha512-8pS0OvkBYwQ206pRLgoLDAiHP6c8wYZJ1ig8KDmP5NOrzMxeH2Wv2ktXIjYHwdu7RPOsnxQb0vKo+O784L/m5g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1", + "it-queueless-pushable": "^2.0.0", + "it-stream-types": "^2.0.2", + "race-signal": "^2.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/it-protobuf-stream/node_modules/it-length-prefixed-stream": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.4.tgz", + "integrity": "sha512-ugHDOQCkC2Dx2pQaJ+W4OIM6nZFBwlpgdQVVOfdX4c1Os47d6PMsfrkTrzRwZdBCMZb+JISZNP2gjU/DHN/z9A==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "abort-error": "^1.0.1", + "it-byte-stream": "^2.0.0", + "it-stream-types": "^2.0.2", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8" + } + }, "node_modules/it-pushable": { "version": "3.2.3", "license": "Apache-2.0 OR MIT", @@ -11076,6 +11778,38 @@ "integrity": "sha512-XMeUbnjOcgrhFXPUqa7H0VIjYSV/BvyxxjCp76QHVAFDJw2LmR1SHxUFiqyGeobgzJr7P2ZwSRRJQGn4D2BVlA==", "license": "Apache-2.0 OR MIT" }, + "node_modules/it-ws": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.1.5.tgz", + "integrity": "sha512-uWjMtpy5HqhSd/LlrlP3fhYrr7rUfJFFMABv0F5d6n13Q+0glhZthwUKpEAVhDrXY95Tb1RB5lLqqef+QbVNaw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@types/ws": "^8.2.2", + "event-iterator": "^2.0.0", + "it-stream-types": "^2.0.1", + "uint8arrays": "^5.0.0", + "ws": "^8.4.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/it-ws/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-ws/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, "node_modules/iterator.prototype": { "version": "1.1.2", "dev": true, @@ -11400,47 +12134,86 @@ } }, "node_modules/libp2p": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-3.1.2.tgz", - "integrity": "sha512-E14/IznfuJnmelwrsTIRqtds+XzbtIYdnfskv9ulmL+7fwM+7fsUl1z5wBlWFzPNs46t1MF9fPi9m1ytuzs2xw==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.9.4.tgz", + "integrity": "sha512-OCMQqJ0Po8jhgb4CilWhI5EWhppn9ENdhg63PQL8Yi1tk2rOwJJt+NBec85AU18zBc0jv7Q6SgQRkzCefAuyIQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.13", - "@libp2p/interface": "^3.1.0", - "@libp2p/interface-internal": "^3.0.9", - "@libp2p/logger": "^6.2.2", - "@libp2p/multistream-select": "^7.0.9", - "@libp2p/peer-collections": "^7.0.9", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-store": "^12.0.9", - "@libp2p/utils": "^7.0.9", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/logger": "^4.0.20", + "@libp2p/multistream-select": "^5.1.17", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/peer-store": "^10.1.5", + "@libp2p/utils": "^5.4.9", "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^13.0.1", - "@multiformats/multiaddr-matcher": "^3.0.1", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", "any-signal": "^4.1.1", - "datastore-core": "^11.0.1", - "interface-datastore": "^9.0.1", - "it-merge": "^3.0.12", - "it-parallel": "^3.0.13", - "main-event": "^1.0.1", - "multiformats": "^13.4.0", + "datastore-core": "^9.2.9", + "interface-datastore": "^8.2.11", + "it-byte-stream": "^1.0.12", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", + "merge-options": "^3.0.4", + "multiformats": "^13.1.0", "p-defer": "^4.0.1", - "p-event": "^7.0.0", - "p-retry": "^7.0.0", - "progress-events": "^1.0.1", - "race-signal": "^2.0.0", + "progress-events": "^1.0.0", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", "uint8arrays": "^5.1.0" } }, + "node_modules/libp2p/node_modules/@libp2p/interface-internal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/libp2p/node_modules/@libp2p/logger": { + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", + "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "multiformats": "^13.1.0", + "weald": "^1.0.2" + } + }, + "node_modules/libp2p/node_modules/@libp2p/peer-collections": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" + } + }, "node_modules/libp2p/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", + "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@multiformats/dns": "^1.0.3", + "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -11452,6 +12225,12 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/libp2p/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/libp2p/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -11805,7 +12584,6 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -11856,7 +12634,6 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -12224,6 +13001,15 @@ "npm": ">=7.0.0" } }, + "node_modules/murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/mute-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", @@ -12265,24 +13051,6 @@ "version": "2.14.0", "license": "MIT" }, - "node_modules/nanoid": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", - "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -12605,7 +13373,6 @@ }, "node_modules/npm-run-path": { "version": "5.1.0", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -12619,7 +13386,6 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13034,7 +13800,6 @@ }, "node_modules/onetime": { "version": "6.0.0", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -13252,15 +14017,15 @@ } }, "node_modules/p-event": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.0.1.tgz", - "integrity": "sha512-SI8GHTMMv6dAIMMHBG0g6PyZIEal+CCaKCje24NxkgEJrPvfdfEP0xXVoDC3OGxlfjM8qqSs/luTaobCkGdEUA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", "license": "MIT", "dependencies": { - "p-timeout": "^6.1.4" + "p-timeout": "^6.1.2" }, "engines": { - "node": ">=20" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13310,21 +14075,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", - "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", - "license": "MIT", - "dependencies": { - "is-network-error": "^1.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -14089,18 +14839,6 @@ "integrity": "sha512-P31bLhE4ByBX/70QDXMutxnqgwrF1WUXea1O8DXuviAgkdbQ1iQMQotNgzJIBC9yUSn08u/acZrMUhgw7w6GpA==", "license": "Apache-2.0 OR MIT" }, - "node_modules/random-int": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/random-int/-/random-int-3.1.0.tgz", - "integrity": "sha512-h8CRz8cpvzj0hC/iH/1Gapgcl2TQ6xtnCpyOI5WvWfXf/yrDx2DOU+tD9rX23j36IF11xg1KqB9W11Z18JPMdw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/randombytes": { "version": "2.1.0", "license": "MIT", @@ -14558,12 +15296,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/retimeable-signal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/retimeable-signal/-/retimeable-signal-1.0.1.tgz", - "integrity": "sha512-Cy26CYfbWnYu8HMoJeDhaMpW/EYFIbne3vMf6G9RSrOyWYXbPehja/BEdzpqmM84uy2bfBD7NPZhoQ4GZEtgvg==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/retry": { "version": "0.13.1", "dev": true, @@ -15125,7 +15857,6 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "devOptional": true, "license": "ISC" }, "node_modules/simple-concat": { @@ -15440,6 +16171,15 @@ "node": ">=12" } }, + "node_modules/stream-to-it": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-1.0.1.tgz", + "integrity": "sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-stream-types": "^2.0.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -15588,7 +16328,6 @@ }, "node_modules/strip-final-newline": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -16369,18 +17108,6 @@ "dev": true, "license": "ISC" }, - "node_modules/unlimited-timeout": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unlimited-timeout/-/unlimited-timeout-0.1.0.tgz", - "integrity": "sha512-D4g+mxFeQGQHzCfnvij+R35ukJ0658Zzudw7j16p4tBBbNasKkKM4SocYxqhwT5xA7a9JYWDzKkEFyMlRi5sng==", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 7c9c84303..8e5ce703c 100644 --- a/package.json +++ b/package.json @@ -48,25 +48,25 @@ "changelog": "auto-changelog -p" }, "dependencies": { - "@chainsafe/libp2p-noise": "^17.0.0", - "@chainsafe/libp2p-yamux": "^8.0.1", + "@chainsafe/libp2p-noise": "^15.1.0", + "@chainsafe/libp2p-yamux": "^6.0.2", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^3.0.9", - "@libp2p/bootstrap": "^12.0.10", - "@libp2p/circuit-relay-v2": "^4.1.2", - "@libp2p/crypto": "^5.1.13", - "@libp2p/dcutr": "^3.0.9", - "@libp2p/identify": "^4.0.9", - "@libp2p/kad-dht": "^16.1.2", - "@libp2p/mdns": "^12.0.10", - "@libp2p/peer-id": "^6.0.4", - "@libp2p/peer-id-factory": "^4.2.4", - "@libp2p/ping": "^3.0.9", - "@libp2p/pubsub": "^10.1.18", - "@libp2p/pubsub-peer-discovery": "^12.0.0", - "@libp2p/tcp": "^11.0.9", - "@libp2p/upnp-nat": "^4.0.9", - "@libp2p/websockets": "^10.1.2", + "@libp2p/autonat": "^2.0.0", + "@libp2p/bootstrap": "^10.1.1", + "@libp2p/circuit-relay-v2": "^1.1.1", + "@libp2p/crypto": "^4.1.5", + "@libp2p/dcutr": "^1.1.1", + "@libp2p/identify": "^2.1.1", + "@libp2p/kad-dht": "^12.1.1", + "@libp2p/mdns": "^10.1.1", + "@libp2p/peer-id": "^4.1.4", + "@libp2p/peer-id-factory": "^4.1.4", + "@libp2p/ping": "^1.1.1", + "@libp2p/pubsub": "^9.0.22", + "@libp2p/pubsub-peer-discovery": "^10.0.2", + "@libp2p/tcp": "^9.1.1", + "@libp2p/upnp-nat": "^1.2.1", + "@libp2p/websockets": "^8.1.1", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -85,7 +85,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^3.1.2", + "libp2p": "^1.8.0", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -159,4 +159,4 @@ "publish": false } } -} +} \ No newline at end of file diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index a0121edff..7156d5e22 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -234,7 +234,7 @@ export class OceanP2P extends EventEmitter { P2P_LOGGER.info(`Starting P2P Node with peerID: ${this._publicAddress}`) this._publicKey = config.keys.publicKey - this._privateKey = config.keys.privateKey.raw + this._privateKey = config.keys.privateKey /** @type {import('libp2p').Libp2pOptions} */ // start with some default, overwrite based on config later const bindInterfaces = [] @@ -337,11 +337,17 @@ export class OceanP2P extends EventEmitter { let transports = [] P2P_LOGGER.info('Enabling P2P Transports: websockets, tcp, circuitRelay') - transports = [webSockets(), tcp(), circuitRelayTransport()] + transports = [ + webSockets(), + tcp(), + circuitRelayTransport({ + discoverRelays: config.p2pConfig.circuitRelays + }) + ] let options = { addresses, - privateKey: config.keys.privateKey, + peerId: config.keys.peerId, transports, streamMuxers: [yamux()], connectionEncryption: [ @@ -500,7 +506,7 @@ export class OceanP2P extends EventEmitter { // UPDATE: no need to slice 4 bytes here, actually we need those on client side to verify the node id and perform the encryption of the keys + iv // See config.ts => getPeerIdFromPrivateKey() - const pubKey = Buffer.from(peerId.publicKey.raw).toString('hex') // no need to do .subarray(4).toString('hex') + const pubKey = Buffer.from(peerId.publicKey).toString('hex') // no need to do .subarray(4).toString('hex') const peer = await this._libp2p.peerStore.get(peerId) // write the publicKey as well diff --git a/src/components/core/handler/downloadHandler.ts b/src/components/core/handler/downloadHandler.ts index 7615a82bd..92aa2d7ea 100644 --- a/src/components/core/handler/downloadHandler.ts +++ b/src/components/core/handler/downloadHandler.ts @@ -108,7 +108,7 @@ export async function handleDownloadUrlCommand( // we parse the string into the object again const encryptedObject = ethCrypto.cipher.parse(task.aes_encrypted_key) // get the key from configuration - const nodePrivateKey = Buffer.from(config.keys.privateKey.raw).toString('hex') + const nodePrivateKey = Buffer.from(config.keys.privateKey).toString('hex') const decrypted = await ethCrypto.decryptWithPrivateKey( nodePrivateKey, encryptedObject diff --git a/src/components/core/utils/feesHandler.ts b/src/components/core/utils/feesHandler.ts index 450aafc4a..92d356731 100644 --- a/src/components/core/utils/feesHandler.ts +++ b/src/components/core/utils/feesHandler.ts @@ -452,7 +452,7 @@ export async function checkFee( */ export async function getProviderWallet(chainId?: string): Promise { return new ethers.Wallet( - Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') + Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') ) } export async function getProviderWalletAddress(): Promise { @@ -460,7 +460,7 @@ export async function getProviderWalletAddress(): Promise { } export async function getProviderKey(): Promise { - return Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') + return Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') } /** diff --git a/src/utils/config/builder.ts b/src/utils/config/builder.ts index aafd0482c..f606fec9e 100644 --- a/src/utils/config/builder.ts +++ b/src/utils/config/builder.ts @@ -3,8 +3,8 @@ import type { C2DClusterInfo, C2DDockerConfig } from '../../@types/C2D/C2D.js' import type { RPCS } from '../../@types/blockchain.js' import type { FeeTokens } from '../../@types/Fees.js' import { C2DClusterType } from '../../@types/C2D/C2D.js' -import { privateKeyFromRaw } from '@libp2p/crypto/keys' -import { peerIdFromPrivateKey } from '@libp2p/peer-id' +import { keys } from '@libp2p/crypto' +import { createFromPrivKey } from '@libp2p/peer-id-factory' import { Wallet } from 'ethers' import fs from 'fs' import os from 'os' @@ -84,13 +84,17 @@ function preprocessConfigData(data: any): void { } } -export function getPeerIdFromPrivateKey(privateKey: string): OceanNodeKeys { - const key = privateKeyFromRaw(hexStringToByteArray(privateKey.slice(2))) +export async function getPeerIdFromPrivateKey( + privateKey: string +): Promise { + const key = new keys.supportedKeys.secp256k1.Secp256k1PrivateKey( + hexStringToByteArray(privateKey.slice(2)) + ) return { - peerId: peerIdFromPrivateKey(key), - publicKey: key.publicKey.raw, - privateKey: key, + peerId: await createFromPrivKey(key), + publicKey: key.public.bytes, + privateKey: (key as any)._key, ethAddress: new Wallet(privateKey.substring(2)).address } } @@ -208,7 +212,7 @@ export function loadConfigFromFile(configPath?: string): OceanNodeConfig { return config } -export function buildMergedConfig(): OceanNodeConfig { +export async function buildMergedConfig(): Promise { const baseConfig = loadConfigFromFile() const privateKey = process.env.PRIVATE_KEY if (!privateKey || privateKey.length !== 66) { @@ -221,7 +225,7 @@ export function buildMergedConfig(): OceanNodeConfig { throw new Error('Invalid PRIVATE_KEY') } - const keys = getPeerIdFromPrivateKey(privateKey) + const keys = await getPeerIdFromPrivateKey(privateKey) const { env } = process const envOverrides: Record = { keys } @@ -279,7 +283,7 @@ export async function getConfiguration( isStartup: boolean = false ): Promise { if (!previousConfiguration || forceReload) { - previousConfiguration = buildMergedConfig() + previousConfiguration = await buildMergedConfig() } if (!previousConfiguration.codeHash) { diff --git a/src/utils/crypt.ts b/src/utils/crypt.ts index 8912bac05..daa755b2f 100644 --- a/src/utils/crypt.ts +++ b/src/utils/crypt.ts @@ -19,11 +19,11 @@ export async function encrypt( // use first 16 bytes of public key as an initialisation vector const initVector = publicKey.subarray(0, 16) // creates cipher object, with the given algorithm, key and initialization vector - const cipher = crypto.createCipheriv('aes-256-cbc', privateKey.raw, initVector) + const cipher = crypto.createCipheriv('aes-256-cbc', privateKey, initVector) // encoding is ignored because we are working with bytes and want to return a buffer encryptedData = Buffer.concat([cipher.update(data), cipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey.raw) + const sk = new eciesjs.PrivateKey(privateKey) // get public key from Elliptic curve encryptedData = eciesjs.encrypt(sk.publicKey.toHex(), data) } @@ -47,12 +47,12 @@ export async function decrypt( const initVector = publicKey.subarray(0, 16) // creates decipher object, with the given algorithm, key and initialization vector - const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey.raw, initVector) + const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey, initVector) // encoding is ignored because we are working with bytes and want to return a buffer decryptedData = Buffer.concat([decipher.update(data), decipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey.raw) + const sk = new eciesjs.PrivateKey(privateKey) decryptedData = eciesjs.decrypt(sk.secret, data) } return decryptedData From a701ce4fbe62e213f390137b120352c3a02eb4b1 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 5 Jan 2026 16:13:03 +0200 Subject: [PATCH 30/43] Revert "revert p2p changes" This reverts commit 79f1f67be4a71a9680adc07f94be7a974bfa9afc. --- package-lock.json | 2437 ++++++----------- package.json | 40 +- src/components/P2P/index.ts | 14 +- .../core/handler/downloadHandler.ts | 2 +- src/components/core/utils/feesHandler.ts | 4 +- src/utils/config/builder.ts | 24 +- src/utils/crypt.ts | 8 +- 7 files changed, 896 insertions(+), 1633 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3659dcd24..9e5c8d938 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,25 +9,25 @@ "version": "0.2.3", "license": "Apache-2.0", "dependencies": { - "@chainsafe/libp2p-noise": "^15.1.0", - "@chainsafe/libp2p-yamux": "^6.0.2", + "@chainsafe/libp2p-noise": "^17.0.0", + "@chainsafe/libp2p-yamux": "^8.0.1", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^2.0.0", - "@libp2p/bootstrap": "^10.1.1", - "@libp2p/circuit-relay-v2": "^1.1.1", - "@libp2p/crypto": "^4.1.5", - "@libp2p/dcutr": "^1.1.1", - "@libp2p/identify": "^2.1.1", - "@libp2p/kad-dht": "^12.1.1", - "@libp2p/mdns": "^10.1.1", - "@libp2p/peer-id": "^4.1.4", - "@libp2p/peer-id-factory": "^4.1.4", - "@libp2p/ping": "^1.1.1", - "@libp2p/pubsub": "^9.0.22", - "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.1.1", - "@libp2p/upnp-nat": "^1.2.1", - "@libp2p/websockets": "^8.1.1", + "@libp2p/autonat": "^3.0.9", + "@libp2p/bootstrap": "^12.0.10", + "@libp2p/circuit-relay-v2": "^4.1.2", + "@libp2p/crypto": "^5.1.13", + "@libp2p/dcutr": "^3.0.9", + "@libp2p/identify": "^4.0.9", + "@libp2p/kad-dht": "^16.1.2", + "@libp2p/mdns": "^12.0.10", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/pubsub": "^10.1.18", + "@libp2p/pubsub-peer-discovery": "^12.0.0", + "@libp2p/tcp": "^11.0.9", + "@libp2p/upnp-nat": "^4.0.9", + "@libp2p/websockets": "^10.1.2", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -46,7 +46,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^1.8.0", + "libp2p": "^3.1.2", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -101,18 +101,19 @@ } }, "node_modules/@achingbrain/nat-port-mapper": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.18.tgz", - "integrity": "sha512-B3sD+1KmD6qtmnCSdTtoMIwsw5Lj8XNDWnPakXnChm92eaFO7JRfS76oCts6iMFttJzOHq7FT0sNY7sDcbvosA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-4.0.5.tgz", + "integrity": "sha512-YAA4MW6jO6W7pmJaFzQ0AOLpu8iQClUkdT2HbfKLmtFjrpoZugnFj9wH8EONV9LxnIW+0W1J98ri+oApKyAKLQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/ssdp": "^4.0.1", - "@libp2p/logger": "^5.0.1", - "default-gateway": "^7.2.2", + "@achingbrain/ssdp": "^4.1.0", + "@chainsafe/is-ip": "^2.0.2", + "@libp2p/logger": "^6.0.5", + "abort-error": "^1.0.0", "err-code": "^3.0.1", - "it-first": "^3.0.1", + "netmask": "^2.0.2", "p-defer": "^4.0.0", - "p-timeout": "^6.1.1", + "race-signal": "^2.0.0", "xml2js": "^0.6.0" } }, @@ -437,9 +438,9 @@ "license": "Apache-2.0" }, "node_modules/@chainsafe/as-sha256": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", - "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-1.2.0.tgz", + "integrity": "sha512-H2BNHQ5C3RS+H0ZvOdovK6GjFAyq5T6LClad8ivwj9Oaiy28uvdsGVS7gNJKuZmg0FGHAI+n7F0Qju6U0QkKDA==", "license": "Apache-2.0" }, "node_modules/@chainsafe/is-ip": { @@ -449,32 +450,51 @@ "license": "MIT" }, "node_modules/@chainsafe/libp2p-noise": { - "version": "15.1.2", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.2.tgz", - "integrity": "sha512-o6mqsAbaCBucgdLOOHtkwtGVL1c8RLKhlTnHQY+leazY+thiE1Sm6qPCwsTHKQnWii1q5hDVI2Q0l9QgYi5v4Q==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-17.0.0.tgz", + "integrity": "sha512-vwrmY2Y+L1xYhIDiEpl61KHxwrLCZoXzTpwhyk34u+3+6zCAZPL3GxH3i2cs+u5IYNoyLptORdH17RKFXy7upA==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", - "@libp2p/crypto": "^4.0.0", - "@libp2p/interface": "^1.5.0", - "@libp2p/peer-id": "^4.0.0", - "@noble/ciphers": "^0.6.0", - "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", - "it-pair": "^2.0.6", - "it-pipe": "^3.0.1", - "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.0", + "@chainsafe/as-sha256": "^1.2.0", + "@libp2p/crypto": "^5.1.9", + "@libp2p/interface": "^3.0.0", + "@libp2p/peer-id": "^6.0.0", + "@libp2p/utils": "^7.0.0", + "@noble/ciphers": "^2.0.1", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0", "wherearewe": "^2.0.1" + } + }, + "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/curves": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", + "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@chainsafe/libp2p-noise/node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@chainsafe/libp2p-noise/node_modules/multiformats": { @@ -491,17 +511,14 @@ } }, "node_modules/@chainsafe/libp2p-yamux": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", - "integrity": "sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-8.0.1.tgz", + "integrity": "sha512-pJsqmUg1cZRJZn/luAtQaq0uLcVfExo51Rg7iRtAEceNYtsKUi/exfegnvTBzTnF1CGmTzVEV3MCLsRhqiNyoA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/utils": "^5.2.5", - "get-iterator": "^2.0.1", - "it-foreach": "^2.0.6", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", + "@libp2p/interface": "^3.0.0", + "@libp2p/utils": "^7.0.0", + "race-signal": "^2.0.0", "uint8arraylist": "^2.4.8" } }, @@ -2137,55 +2154,66 @@ "license": "MIT" }, "node_modules/@libp2p/autonat": { - "version": "2.0.38", - "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-2.0.38.tgz", - "integrity": "sha512-SuJUbXsF0YQg926hxb6d/f7x4NEHqWHLSXnR6Og5fJSOv2A1i1xRUe8zXaCuxQkPa+CguH2tAPZ+l1A+NZlF5A==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-3.0.9.tgz", + "integrity": "sha512-jqNxiGVpf4iBaQA2Bc1b/Uesxf6pO1Cn7tEsnIF01Hf973sRka9sKm372Zw0KMZw/hMTjJvZkt6KkwsOM6x6aw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "@multiformats/multiaddr": "^12.4.4", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", "any-signal": "^4.1.1", - "it-protobuf-stream": "^2.0.2", "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "protons-runtime": "^5.5.0", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", - "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", + "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^3.1.0", - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", - "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", - "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", + "node_modules/@libp2p/autonat/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/autonat/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/dns": "^1.0.6", + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/bootstrap": { + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-12.0.10.tgz", + "integrity": "sha512-TXU88UintWDolGjN183HSzMHdQRzyL95PYAY5TtKetYCd8Z6WFg92LlxjRvIpKb5w/1OMeeI3rZBzC9qivoTYA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", "@multiformats/multiaddr": "^13.0.1", - "main-event": "^1.0.1", - "multiformats": "^13.4.0", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" + "@multiformats/multiaddr-matcher": "^3.0.1", + "main-event": "^1.0.1" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { + "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", @@ -2197,81 +2225,90 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" - } + "node_modules/@libp2p/bootstrap/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/peer-id": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", - "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", + "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "multiformats": "^13.3.6", - "uint8arrays": "^5.1.0" + "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@libp2p/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "node_modules/@libp2p/circuit-relay-v2": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-4.1.2.tgz", + "integrity": "sha512-zGYIJUfqzddnxtrrsJE3K6sHxL65Gx8oIAaG90S6vPiL2KBuQUXjbkSShdN9QiK7HbdEY+LWCYVsH0ex7c+C9Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/logger": "^5.2.0", - "@multiformats/multiaddr": "^12.4.4", - "@sindresorhus/fnv1a": "^3.1.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", - "is-loopback-addr": "^2.0.2", - "is-plain-obj": "^4.1.0", - "it-foreach": "^2.1.3", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", "main-event": "^1.0.1", - "netmask": "^2.0.2", - "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.1.3", + "multiformats": "^13.4.0", + "nanoid": "^5.1.5", + "progress-events": "^1.0.1", + "protons-runtime": "^5.6.0", + "retimeable-signal": "^1.0.1", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/autonat/node_modules/@noble/curves": { + "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/crypto": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", + "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^3.1.0", + "@noble/curves": "^2.0.1", + "@noble/hashes": "^2.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/crypto/node_modules/@noble/curves": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", @@ -2286,7 +2323,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/autonat/node_modules/@noble/hashes": { + "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", @@ -2298,326 +2335,64 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/autonat/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/autonat/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/autonat/node_modules/multiformats": { + "node_modules/@libp2p/crypto/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/autonat/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/autonat/node_modules/uint8arrays": { + "node_modules/@libp2p/crypto/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/bootstrap": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.5.tgz", - "integrity": "sha512-cXn/Wl7X4uaVGRyh/uSU/crRbhsPkyzH59hzoLP3727f7w82o+sIHVr4SkJcJewt+LZELBLgkJTibZxAntA1dA==", + "node_modules/@libp2p/dcutr": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-3.0.9.tgz", + "integrity": "sha512-oO+2dECZ1HEIc9OrFW+mrXSAU5C7uzrdVy+Zdt+wVQHiYPmBBa6gUK0LMMbn4l9n4MlHxG+AqV2Y9WtkrLPJxA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3" + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "delay": "^7.0.0", + "protons-runtime": "^5.6.0", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/bootstrap/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.5.tgz", - "integrity": "sha512-WVIHaj61LJd2JB6vvPikd049NhC2R3vrkuu4T00WJSMNWobmhrKPvFyQMN+1miL6KmdL8Yt1AjK0gog2oT4vDw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/peer-collections": "^5.2.9", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/peer-record": "^7.0.25", - "@libp2p/utils": "^5.4.9", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "any-signal": "^4.1.1", - "it-protobuf-stream": "^1.1.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/it-protobuf-stream": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", - "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/crypto": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", - "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0", - "asn1js": "^3.0.5", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/crypto/node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "node_modules/@libp2p/dcutr/node_modules/delay": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", + "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" + "random-int": "^3.1.0", + "unlimited-timeout": "^0.1.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@libp2p/crypto/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@libp2p/crypto/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/crypto/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/dcutr": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.1.5.tgz", - "integrity": "sha512-1zDhZxLxrl+yqIAG9KzyLu3gzyvOT7UYTislw4EwhcMGMviot/pgR87SSVqbT+HDpAoj1sM/3F5VUT/sCDa9WA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/utils": "^5.4.9", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "delay": "^6.0.0", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/dcutr/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/dcutr/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, - "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/dcutr/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@libp2p/dcutr/node_modules/it-protobuf-stream": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", - "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/@libp2p/dcutr/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -2634,76 +2409,39 @@ } }, "node_modules/@libp2p/identify": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.5.tgz", - "integrity": "sha512-uVghY2KfZ3ffDkPmcivfiRDlq1h5rCcoHAW+Kb7JF2qrDfg6BgHAn6IRN4pe/DnYXOuJXIIm6+jjcReTPGBKBQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-4.0.9.tgz", + "integrity": "sha512-tZ6Q+eCDcGan0TowBvp7sd86jgXIHs7PRIZeBduhjYV24QYSQ1V4mS71RygNRadhn4TVoZkuXwgIByc30eZWhw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/peer-record": "^7.0.25", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "it-drain": "^3.0.7", - "it-parallel": "^3.0.7", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "it-drain": "^3.0.10", + "it-parallel": "^3.0.13", + "main-event": "^1.0.1", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0", - "wherearewe": "^2.0.1" - } - }, - "node_modules/@libp2p/identify/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/identify/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" + "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/identify/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/identify/node_modules/it-protobuf-stream": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", - "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/@libp2p/identify/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -2720,57 +2458,38 @@ } }, "node_modules/@libp2p/interface": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", - "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", + "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^12.2.3", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "progress-events": "^1.0.0", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^13.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", + "progress-events": "^1.0.1", "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/interface-internal": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", - "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-3.0.9.tgz", + "integrity": "sha512-g6hqsrorej945uh/iwA4MY4n7vAFq5mtuMXOf1vo4CS2v8Zl3RMOl0mQZIhUpHLq8XV2aZ3C5rSe4+KsOmZM5A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-collections": "^6.0.35", - "@multiformats/multiaddr": "^12.4.4", + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-collections": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", "progress-events": "^1.0.1" } }, - "node_modules/@libp2p/interface-internal/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/@libp2p/interface-internal/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2792,15 +2511,12 @@ } }, "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2822,105 +2538,62 @@ } }, "node_modules/@libp2p/kad-dht": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.1.5.tgz", - "integrity": "sha512-n/Tdd3zVa2p1S4L6wRIBUAo3ctCbiEkp1aewpOUthL6rOwBh6U/RQ+dssiZNEDHCsF1ta/mZkREuXqxOPpplFQ==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-16.1.2.tgz", + "integrity": "sha512-s/S859NPnF2DaLcV7ynPhFHvW2wGhaHdKQbOI6yziICe/A6/eJtTM4hjjHHCoqo+hG7Duj8Tnk/GYsrfG6Qdrg==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/peer-collections": "^5.2.9", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/record": "^4.0.4", - "@libp2p/utils": "^5.4.9", - "@multiformats/multiaddr": "^12.2.3", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/record": "^4.0.8", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "hashlru": "^2.3.0", - "interface-datastore": "^8.2.11", - "it-drain": "^3.0.7", - "it-length": "^3.0.6", - "it-length-prefixed": "^9.0.4", - "it-map": "^3.1.0", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", + "interface-datastore": "^9.0.1", + "it-all": "^3.0.9", + "it-drain": "^3.0.10", + "it-length": "^3.0.9", + "it-map": "^3.1.4", + "it-merge": "^3.0.12", + "it-parallel": "^3.0.13", "it-pipe": "^3.0.1", - "it-protobuf-stream": "^1.1.3", - "it-take": "^3.0.5", - "multiformats": "^13.1.0", + "it-pushable": "^3.2.3", + "it-take": "^3.0.9", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", "p-defer": "^4.0.1", - "p-event": "^6.0.1", - "p-queue": "^8.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "protons-runtime": "^5.6.0", + "race-signal": "^2.0.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/kad-dht/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/kad-dht/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, "node_modules/@libp2p/kad-dht/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/kad-dht/node_modules/it-protobuf-stream": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.6.tgz", - "integrity": "sha512-TxqgDHXTBt1XkYhrGKP8ubNsYD4zuTClSg6S1M0xTPsskGKA4nPFOGM60zrkh4NMB1Wt3EnsqM5U7kXkx60EXQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/@libp2p/kad-dht/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/kad-dht/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@libp2p/kad-dht/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -2931,44 +2604,25 @@ } }, "node_modules/@libp2p/logger": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", - "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^2.11.0", - "@multiformats/multiaddr": "^12.4.4", - "interface-datastore": "^8.3.1", - "multiformats": "^13.3.6", - "weald": "^1.0.4" - } - }, - "node_modules/@libp2p/logger/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-6.2.2.tgz", + "integrity": "sha512-XtanXDT+TuMuZoCK760HGV1AmJsZbwAw5AiRUxWDbsZPwAroYq64nb41AHRu9Gyc0TK9YD+p72+5+FIxbw0hzw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" + "@libp2p/interface": "^3.1.0", + "@multiformats/multiaddr": "^13.0.1", + "interface-datastore": "^9.0.1", + "multiformats": "^13.4.0", + "weald": "^1.1.0" } }, "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -2986,59 +2640,33 @@ "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/mdns": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.1.5.tgz", - "integrity": "sha512-iSBnjaUgPdPudXP3ZPXJMWzJkT+I+TQHRCBTh6OMPa0V2C/MhL+FfCGn0SDMWKSDDwqK6I6UOeTflf4YUzy/8w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9", - "@multiformats/multiaddr": "^12.2.3", - "@types/multicast-dns": "^7.2.4", - "dns-packet": "^5.6.1", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/@libp2p/mdns/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" + "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/mdns/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "node_modules/@libp2p/mdns": { + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-12.0.10.tgz", + "integrity": "sha512-dghYN1g74KA5GaeL4g9s6eDmca5fZy1oMREU0R0eF8g+astHpWzx5UzTBeco4Q67bPs6o0b5NxtDGlwFh4oTBw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@types/multicast-dns": "^7.2.4", + "dns-packet": "^5.6.1", + "main-event": "^1.0.1", + "multicast-dns": "^7.2.5" } }, "node_modules/@libp2p/mdns/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3060,18 +2688,14 @@ } }, "node_modules/@libp2p/multistream-select": { - "version": "5.1.17", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.17.tgz", - "integrity": "sha512-QOMGjCzKGf/W+qzWw5OxaqLEYhK45XjMCxGJYQ7L5eUkcwAv6rlPZAYw6YslaMLpJTa61/yfh8D4u7EuoMFsUw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-7.0.9.tgz", + "integrity": "sha512-2WAaYuTD1B5FtC0+qFVyglMBnzI0KC8Xmiw7nX9XnlYwrnLj2LIBi/XK7MpsGU1LiphSxT8UfmngwnAWf4t1Dg==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "it-length-prefixed": "^9.0.4", - "it-length-prefixed-stream": "^1.1.7", - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.0.2", - "uint8-varint": "^2.0.4", + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "it-length-prefixed": "^10.0.1", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } @@ -3082,12 +2706,6 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/multistream-select/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -3098,118 +2716,91 @@ } }, "node_modules/@libp2p/peer-collections": { - "version": "6.0.35", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", - "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-7.0.9.tgz", + "integrity": "sha512-pAMRxmT5V31V0gy2MfwVE1TMAcTnbyBYFOv60OWnkKth4hD+HvQ9DLW1z+opYDqRNON5sIWjcnDsIQDm2VUS7A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^2.11.0", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/utils": "^6.7.2", - "multiformats": "^13.3.6" + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/utils": "^7.0.9", + "multiformats": "^13.4.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", - "integrity": "sha512-8NN9cQP3jDn+p9+QE9ByiEoZ2lemDFf/unTgiKmS3JF93ph240EUVdbCyyEgOMfykzb0okTM4gzvwfx9osJebQ==", + "node_modules/@libp2p/peer-collections/node_modules/multiformats": { + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", + "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/peer-id": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-6.0.4.tgz", + "integrity": "sha512-Z3xK0lwwKn4bPg3ozEpPr1HxsRi2CxZdghOL+MXoFah/8uhJJHxHFA8A/jxtKn4BB8xkk6F8R5vKNIS05yaCYw==", "license": "Apache-2.0 OR MIT", "dependencies": { + "@libp2p/crypto": "^5.1.13", "@libp2p/interface": "^3.1.0", - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", "multiformats": "^13.4.0", - "protons-runtime": "^5.6.0", - "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto/node_modules/@libp2p/interface": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.1.0.tgz", - "integrity": "sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==", + "node_modules/@libp2p/peer-id-factory": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", + "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^13.0.1", - "main-event": "^1.0.1", - "multiformats": "^13.4.0", - "progress-events": "^1.0.1", - "uint8arraylist": "^2.4.8" + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/crypto/node_modules/@multiformats/multiaddr": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", - "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/crypto": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", + "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" + "@libp2p/interface": "^1.7.0", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "asn1js": "^3.0.5", + "multiformats": "^13.1.0", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/interface": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", - "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/interface": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", + "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", + "@multiformats/multiaddr": "^12.2.3", "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "progress-events": "^1.0.1", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "progress-events": "^1.0.0", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/peer-id": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", - "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "multiformats": "^13.3.6", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-collections/node_modules/@libp2p/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "node_modules/@libp2p/peer-id-factory/node_modules/@libp2p/peer-id": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", + "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.1.0", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/crypto": "^5.1.8", - "@libp2p/interface": "^2.11.0", - "@libp2p/logger": "^5.2.0", - "@multiformats/multiaddr": "^12.4.4", - "@sindresorhus/fnv1a": "^3.1.0", - "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", - "is-loopback-addr": "^2.0.2", - "is-plain-obj": "^4.1.0", - "it-foreach": "^2.1.3", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.2", - "main-event": "^1.0.1", - "netmask": "^2.0.2", - "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.1.3", - "uint8arraylist": "^2.4.8", + "@libp2p/interface": "^1.7.0", + "multiformats": "^13.1.0", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@multiformats/multiaddr": { + "node_modules/@libp2p/peer-id-factory/node_modules/@multiformats/multiaddr": { "version": "12.5.1", "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", @@ -3224,103 +2815,33 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/peer-collections/node_modules/@noble/curves": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", - "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", + "node_modules/@libp2p/peer-id-factory/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { - "@noble/hashes": "2.0.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">= 20.19.0" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/peer-collections/node_modules/@noble/hashes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", - "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "node_modules/@libp2p/peer-id-factory/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { - "node": ">= 20.19.0" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@libp2p/peer-collections/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/peer-collections/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/peer-collections/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/peer-collections/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@libp2p/peer-collections/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/peer-id": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", - "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "multiformats": "^13.1.0", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-id-factory": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", - "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, "node_modules/@libp2p/peer-id-factory/node_modules/multiformats": { "version": "13.1.3", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.3.tgz", @@ -3349,32 +2870,29 @@ } }, "node_modules/@libp2p/peer-record": { - "version": "7.0.25", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.25.tgz", - "integrity": "sha512-b54P3cSeQniW/HPJjBVbeF3KaVUQkWa431gotuIFUS1PYgtz69uzkRrVY6Qt+RBb4R4fcmH4K4jWyZi3xyLGfQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-9.0.4.tgz", + "integrity": "sha512-c8NrP2q0FPIiEef2IKOQFi7k0CJK1vr0uk+jbn6KjF85YUWVyaVvuncZG7EwAjO68tuwGS0LLrvJWJbjHFqAwQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9", - "@multiformats/multiaddr": "^12.2.3", - "protons-runtime": "^5.4.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-id": "^6.0.4", + "@multiformats/multiaddr": "^13.0.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/peer-record/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3396,46 +2914,34 @@ } }, "node_modules/@libp2p/peer-store": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.5.tgz", - "integrity": "sha512-JqQcIcxZS7kicCPabGRyrKD+qZlOdaooL00hdHogVb4MIMqfjiQMmOEpzIvTQLCKHKM2mmfnV3P7kc6hYzPq8g==", + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-12.0.9.tgz", + "integrity": "sha512-+OOKqrllUUACE3IcfFEVcByJo1fMUy9kztxwfy5wmOxybcysxmJ5p3NmETDCqRhlY2sEk55NuRLh5vzDfJIcQQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/peer-record": "^7.0.25", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "it-all": "^3.0.6", - "mortice": "^3.0.4", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-record": "^9.0.4", + "@multiformats/multiaddr": "^13.0.1", + "interface-datastore": "^9.0.1", + "it-all": "^3.0.9", + "main-event": "^1.0.1", + "mortice": "^3.3.1", + "multiformats": "^13.4.0", + "protons-runtime": "^5.6.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-store/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3457,54 +2963,28 @@ } }, "node_modules/@libp2p/ping": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.6.tgz", - "integrity": "sha512-tzTL0BzS1JaHE8v4PhRZ5K8wQQQcTMXM/0baCkLTLIaSMe1fzhj+KHbFNoUrY3yni4yfsVY1uR0qchhc1/J9qg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-3.0.9.tgz", + "integrity": "sha512-PeOH3jH+f4cjczxNMKsAf67x/ai3/YQIAc8rq+fkhRWzIuYKjSG8omgiIJJ9sGbaI0b7Ap8vFVbVflvb52qEDg==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-pipe": "^3.0.1", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@multiformats/multiaddr": "^13.0.1", + "p-event": "^7.0.0", + "race-signal": "^2.0.0", + "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/ping/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/ping/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3526,75 +3006,50 @@ } }, "node_modules/@libp2p/pubsub": { - "version": "9.0.26", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.26.tgz", - "integrity": "sha512-69sFv5DAHSXrQdu4THX9WSZuEfCjEbbk6bKiTtbNGpq1Vaf57rjsTWk/EXMS/veeMl95xJs3/BR7dQal2PtJmw==", + "version": "10.1.18", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-10.1.18.tgz", + "integrity": "sha512-Bxa0cwkaQvadyJNlJlzH0m1eo7m03G2nCpuKbcv+i0qNbyyTOydBcuoslG/UWFYhRBB9Js9R6zNIsaIgpo+iGw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/peer-collections": "^5.2.9", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9", - "it-length-prefixed": "^9.0.4", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/interface-internal": "^2.3.19", + "@libp2p/peer-collections": "^6.0.35", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "it-length-prefixed": "^10.0.1", "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "multiformats": "^13.1.0", - "p-queue": "^8.0.1", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "p-queue": "^8.1.0", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/pubsub-peer-discovery": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-10.0.3.tgz", - "integrity": "sha512-9UL7j24SoXBHPulUUWpHiFjrI1rdbIZS8mN4+tRCF8e9J99fr7EcHpyN/kB0o31KXDKFA6zr8H0hniHhuqMPKA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-12.0.0.tgz", + "integrity": "sha512-72sZwTDBH/iowRumycPLjSlaUd3cwQcjSN2xUagdzNtMt9ryWt7dL4fDGM+VsktSdYmzzOHhL9ZftNfUk7XG7A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.0.1", - "@libp2p/interface-internal": "^1.0.1", - "@libp2p/peer-id": "^4.0.1", - "@multiformats/multiaddr": "^12.0.0", + "@libp2p/crypto": "^5.0.0", + "@libp2p/interface": "^3.0.0", + "@libp2p/interface-internal": "^3.0.1", + "@libp2p/peer-id": "^6.0.1", + "@multiformats/multiaddr": "^13.0.1", "protons-runtime": "^5.0.0", "uint8arraylist": "^2.4.3", "uint8arrays": "^5.0.2" } }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3615,28 +3070,100 @@ "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz", + "integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "progress-events": "^1.0.1", "uint8arraylist": "^2.4.8" } }, + "node_modules/@libp2p/pubsub/node_modules/@libp2p/interface-internal": { + "version": "2.3.19", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz", + "integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-collections": "^6.0.35", + "@multiformats/multiaddr": "^12.4.4", + "progress-events": "^1.0.1" + } + }, + "node_modules/@libp2p/pubsub/node_modules/@libp2p/logger": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz", + "integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^2.11.0", + "@multiformats/multiaddr": "^12.4.4", + "interface-datastore": "^8.3.1", + "multiformats": "^13.3.6", + "weald": "^1.0.4" + } + }, "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "version": "6.0.35", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz", + "integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" + "@libp2p/interface": "^2.11.0", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/utils": "^6.7.2", + "multiformats": "^13.3.6" + } + }, + "node_modules/@libp2p/pubsub/node_modules/@libp2p/peer-id": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz", + "integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "multiformats": "^13.3.6", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/pubsub/node_modules/@libp2p/utils": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz", + "integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.8", + "@libp2p/interface": "^2.11.0", + "@libp2p/logger": "^5.2.0", + "@multiformats/multiaddr": "^12.4.4", + "@sindresorhus/fnv1a": "^3.1.0", + "any-signal": "^4.1.1", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", + "is-loopback-addr": "^2.0.2", + "is-plain-obj": "^4.1.0", + "it-foreach": "^2.1.3", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", + "netmask": "^2.0.2", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.1.3", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/pubsub/node_modules/@multiformats/multiaddr": { @@ -3654,17 +3181,62 @@ "uint8arrays": "^5.0.0" } }, + "node_modules/@libp2p/pubsub/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@libp2p/pubsub/node_modules/interface-datastore": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", + "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "interface-store": "^6.0.0", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/pubsub/node_modules/interface-store": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", + "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/@libp2p/pubsub/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@libp2p/pubsub/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, + "node_modules/@libp2p/pubsub/node_modules/race-signal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", + "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/@libp2p/pubsub/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" } @@ -3696,35 +3268,43 @@ } }, "node_modules/@libp2p/tcp": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.6.tgz", - "integrity": "sha512-zbhHDY5txl8ypCL50JQWej/fZ8X7Lh+qfZw1HXDQEJZvgIrdYDPXrXfjIFflN0m/6hPoU/VAkKOr+RIuhIE8wQ==", + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-11.0.9.tgz", + "integrity": "sha512-/Fjy2TQR5rMBp0DbKYiP43wRM+CYsWVLc+hOpFrPp5EOS3yu/38/0F7EISFdk2vsijqll7iD0BA4+/Zt4U1kwQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/utils": "^5.4.9", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@types/sinon": "^17.0.3", - "progress-events": "^1.0.0", - "stream-to-it": "^1.0.1" + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "@types/sinon": "^20.0.0", + "main-event": "^1.0.1", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8" } }, "node_modules/@libp2p/tcp/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, + "node_modules/@libp2p/tcp/node_modules/@types/sinon": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-20.0.0.tgz", + "integrity": "sha512-etYGUC6IEevDGSWvR9WrECRA01ucR2/Oi9XMBUAdV0g4bLkNf4HlZWGiGlDOq5lgwXRwcV+PSeKgFcW4QzzYOg==", + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, "node_modules/@libp2p/tcp/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -3734,60 +3314,37 @@ "node_modules/@libp2p/tcp/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/upnp-nat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.2.5.tgz", - "integrity": "sha512-bxW4jB4p4T/i8V5BrwUzPLsQvFleC7EZIkqS0r8JbNiFy5iYIvU/WOMB6s7VJkiX3m1RxOxkKU6DcuAPuIJPzQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@achingbrain/nat-port-mapper": "^1.0.13", - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/utils": "^5.4.9", - "@multiformats/multiaddr": "^12.2.3", - "wherearewe": "^2.0.1" - } - }, - "node_modules/@libp2p/upnp-nat/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" + "multiformats": "^13.0.0" } }, - "node_modules/@libp2p/upnp-nat/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", + "node_modules/@libp2p/upnp-nat": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-4.0.9.tgz", + "integrity": "sha512-+f564UNNc0ZMACqdTJCgIfXe3QHevJKwzXq703gJ6Gm8HV2zVuh9W+2CQhDjdizMsnCJdDhmml14cEL1iXkPOw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" + "@achingbrain/nat-port-mapper": "^4.0.4", + "@chainsafe/is-ip": "^2.1.0", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "main-event": "^1.0.1", + "p-defer": "^4.0.1", + "race-signal": "^2.0.0" } }, "node_modules/@libp2p/upnp-nat/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3809,69 +3366,59 @@ } }, "node_modules/@libp2p/utils": { - "version": "5.4.9", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.9.tgz", - "integrity": "sha512-0fRdX98WqhTmXU2WEVLegLFxs/kKTtUHanHk5Lzs4oGsIzlPHR7zE6lj/U1WfsFA+Xo1eYQpNLiXEL29hG+Nyw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-7.0.9.tgz", + "integrity": "sha512-2wYhsgfbFXfh5ui0ME9MNHc7uUIuZwpeZ/yagKmDSjIP7B+L3/9mj+vVXO14AhmjfwnKx2xUDQvzGZeq5to4ow==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.2", - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/logger": "^4.0.20", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/logger": "^6.2.2", + "@multiformats/multiaddr": "^13.0.1", "@sindresorhus/fnv1a": "^3.1.0", - "@types/murmurhash3js-revisited": "^3.0.3", "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", + "cborg": "^4.2.14", + "delay": "^7.0.0", "is-loopback-addr": "^2.0.2", + "it-length-prefixed": "^10.0.1", + "it-pipe": "^3.0.1", "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "murmurhash3js-revisited": "^3.0.0", + "it-stream-types": "^2.0.2", + "main-event": "^1.0.1", "netmask": "^2.0.2", "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "race-signal": "^2.0.0", + "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/utils/node_modules/@libp2p/logger": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", - "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0", - "weald": "^1.0.2" - } - }, "node_modules/@libp2p/utils/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/utils/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-7.0.0.tgz", + "integrity": "sha512-C3vaGs818qzZjCvVJ98GQUMVyWeg7dr5w2Nwwb2t5K8G98jOyyVO2ti2bKYk5yoYElqH3F2yA53ykuEnwD6MCg==", "license": "MIT", + "dependencies": { + "random-int": "^3.1.0", + "unlimited-timeout": "^0.1.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3883,12 +3430,6 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/utils/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@libp2p/utils/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -3899,35 +3440,31 @@ } }, "node_modules/@libp2p/websockets": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.2.0.tgz", - "integrity": "sha512-UNjqkQ8/emnYswp1ohIIuZCnhI5DlvWF9IaIND2MoTCDavi7yubWfMp8jSWBsAqPnMeLMO8MQ6YlOo4FFC104Q==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-10.1.2.tgz", + "integrity": "sha512-WjUxzVpniENxclwSRZpFtk3riV846WCf02Rm7MsAL9ui6szWcCEXzmMIjuo5mOzCUGOn0NPol6Uiz11nadC4iQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/utils": "^5.4.9", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-to-uri": "^10.0.1", - "@types/ws": "^8.5.10", - "it-ws": "^6.1.1", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-signal": "^1.0.2", - "wherearewe": "^2.0.1", - "ws": "^8.17.0" + "@libp2p/interface": "^3.1.0", + "@libp2p/utils": "^7.0.9", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", + "@multiformats/multiaddr-to-uri": "^12.0.0", + "main-event": "^1.0.1", + "p-event": "^7.0.0", + "progress-events": "^1.0.1", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0", + "ws": "^8.18.3" } }, "node_modules/@libp2p/websockets/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -3939,12 +3476,6 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/@libp2p/websockets/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@libp2p/websockets/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -4032,45 +3563,6 @@ "multiformats": "^13.0.0" } }, - "node_modules/@multiformats/mafmt": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz", - "integrity": "sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - } - }, - "node_modules/@multiformats/mafmt/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@multiformats/mafmt/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/@multiformats/mafmt/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, "node_modules/@multiformats/multiaddr": { "version": "10.5.0", "license": "Apache-2.0 OR MIT", @@ -4088,26 +3580,21 @@ } }, "node_modules/@multiformats/multiaddr-matcher": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.8.0.tgz", - "integrity": "sha512-tR/HFhDucXjvwCef5lfXT7kikqR2ffUjliuYlg/RKYGPySVKVlvrDufz86cIuHNc+i/fNR16FWWgD/pMJ6RW4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-3.0.1.tgz", + "integrity": "sha512-jvjwzCPysVTQ53F4KqwmcqZw73BqHMk0UUZrMP9P4OtJ/YHrfs122ikTqhVA2upe0P/Qz9l8HVlhEifVYB2q9A==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@multiformats/multiaddr": "^12.0.0", - "multiformats": "^13.0.0" + "@multiformats/multiaddr": "^13.0.0" } }, "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -4129,24 +3616,21 @@ } }, "node_modules/@multiformats/multiaddr-to-uri": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.1.2.tgz", - "integrity": "sha512-6sicfYRjJlHJn4bwsQancs8kXncWU4dDN/+V9sMVTYp9hi8ovWgVkK75AbAv4SfhztmmI+oufVUncQ1n+SukKQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-12.0.0.tgz", + "integrity": "sha512-3uIEBCiy8tfzxYYBl81x1tISiNBQ7mHU4pGjippbJRoQYHzy/ZdZM/7JvTldr8pc/dzpkaNJxnsuxxlhsPOJsA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/multiaddr": "^12.3.0" + "@multiformats/multiaddr": "^13.0.0" } }, "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -4179,10 +3663,13 @@ } }, "node_modules/@noble/ciphers": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", - "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz", + "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==", "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, "funding": { "url": "https://paulmillr.com/funding/" } @@ -5420,12 +4907,6 @@ "@types/node": "*" } }, - "node_modules/@types/murmurhash3js-revisited": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", - "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==", - "license": "MIT" - }, "node_modules/@types/node": { "version": "25.0.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", @@ -5704,6 +5185,7 @@ "version": "17.0.4", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "dev": true, "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" @@ -5747,15 +5229,6 @@ "version": "1.3.4", "license": "MIT" }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.9.1", "dev": true, @@ -7074,6 +6547,15 @@ "version": "1.0.8", "license": "Apache-2.0" }, + "node_modules/cborg": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.3.2.tgz", + "integrity": "sha512-l+QzebEAG0vb09YKkaOrMi2zmm80UNjmbvocMIeW5hO7JOXWdrQ/H49yOKfYX0MBgrj/KWgatBnEgRXyNyKD+A==", + "license": "Apache-2.0", + "bin": { + "cborg": "lib/bin.js" + } + }, "node_modules/chai": { "version": "4.3.10", "dev": true, @@ -7605,72 +7087,21 @@ } }, "node_modules/datastore-core": { - "version": "9.2.9", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", - "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-11.0.2.tgz", + "integrity": "sha512-0pN4hMcaCWcnUBo5OL/8j14Lt1l/p1v2VvzryRYeJAKRLqnFrzy2FhAQ7y0yTA63ki760ImQHfm2XlZrfIdFpQ==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/logger": "^4.0.6", - "err-code": "^3.0.1", - "interface-datastore": "^8.0.0", - "interface-store": "^5.0.0", - "it-drain": "^3.0.5", - "it-filter": "^3.0.4", - "it-map": "^3.0.5", - "it-merge": "^3.0.3", + "@libp2p/logger": "^6.0.0", + "interface-datastore": "^9.0.0", + "interface-store": "^7.0.0", + "it-drain": "^3.0.9", + "it-filter": "^3.1.3", + "it-map": "^3.1.3", + "it-merge": "^3.0.11", "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-sort": "^3.0.4", - "it-take": "^3.0.4" - } - }, - "node_modules/datastore-core/node_modules/@libp2p/logger": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", - "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0", - "weald": "^1.0.2" - } - }, - "node_modules/datastore-core/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/datastore-core/node_modules/interface-store": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz", - "integrity": "sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/datastore-core/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/datastore-core/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" + "it-sort": "^3.0.8", + "it-take": "^3.0.8" } }, "node_modules/date-fns": { @@ -7794,73 +7225,30 @@ "titleize": "^3.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/execa": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-browser/node_modules/human-signals": { - "version": "4.3.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "license": "BSD-2-Clause", + "node_modules/default-browser-id": { + "version": "3.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "execa": "^7.1.1" + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" }, "engines": { - "node": ">= 16" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-gateway/node_modules/execa": { + "node_modules/default-browser/node_modules/execa": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -7880,10 +7268,9 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/default-gateway/node_modules/human-signals": { + "node_modules/default-browser/node_modules/human-signals": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=14.18.0" @@ -9413,12 +8800,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "license": "MIT" - }, "node_modules/event-target-shim": { "version": "5.0.1", "license": "MIT", @@ -10131,6 +9512,7 @@ }, "node_modules/get-stream": { "version": "6.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10802,12 +10184,12 @@ } }, "node_modules/interface-datastore": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.2.tgz", - "integrity": "sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-9.0.2.tgz", + "integrity": "sha512-jebn+GV/5LTDDoyicNIB4D9O0QszpPqT09Z/MpEWvf3RekjVKpXJCDguM5Au2fwIFxFDAQMZe5bSla0jMamCNg==", "license": "Apache-2.0 OR MIT", "dependencies": { - "interface-store": "^6.0.0", + "interface-store": "^7.0.0", "uint8arrays": "^5.1.0" } }, @@ -10827,9 +10209,9 @@ } }, "node_modules/interface-store": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.3.tgz", - "integrity": "sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-7.0.1.tgz", + "integrity": "sha512-OPRRUO3Cs6Jr/t98BrJLQp1jUTPgrRH0PqFfuNoPAqd+J7ABN1tjFVjQdaOBiybYJTS/AyBSZnZVWLPvp3dW3w==", "license": "Apache-2.0 OR MIT" }, "node_modules/internal-slot": { @@ -11138,6 +10520,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -11237,6 +10631,7 @@ }, "node_modules/is-stream": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -11507,33 +10902,6 @@ "integrity": "sha512-fz1oJJ36ciGnu2LntAlE6SA97bFZpW7Rnt0uEc1yazzR2nKokZLr8lIRtgnpex4NsmaBcvHF+Z9krljWFy/mmg==", "license": "Apache-2.0 OR MIT" }, - "node_modules/it-byte-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.1.tgz", - "integrity": "sha512-OIOb8PvK9ZV7MHvyxIDNyN3jmrxrJdx99G0RIYYb3Tzo1OWv+O1C6mfg7nnlDuuTQz2POYFXe87AShKAEl+POw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-queueless-pushable": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-byte-stream/node_modules/it-queueless-pushable": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.2.tgz", - "integrity": "sha512-BFIm48C4O8+i+oVEPQpZ70+CaAsVUircvZtZCrpG2Q64933aLp+tDmas1mTBwqVBfIUUlg09d+e6SWW1CBuykQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, - "node_modules/it-byte-stream/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/it-drain": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.10.tgz", @@ -11549,12 +10917,6 @@ "it-peekable": "^3.0.0" } }, - "node_modules/it-first": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.9.tgz", - "integrity": "sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/it-foreach": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.5.tgz", @@ -11571,9 +10933,9 @@ "license": "Apache-2.0 OR MIT" }, "node_modules/it-length-prefixed": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz", - "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", + "integrity": "sha512-BhyluvGps26u9a7eQIpOI1YN7mFgi8lFwmiPi07whewbBARKAG9LE09Odc8s1Wtbt2MB6rNUrl7j9vvfXTJwdQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-reader": "^6.0.1", @@ -11587,18 +10949,6 @@ "npm": ">=7.0.0" } }, - "node_modules/it-length-prefixed-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.1.tgz", - "integrity": "sha512-FYqlxc2toUoK+aPO5r3KDBIUG1mOvk2DzmjQcsfLUTHRWMJP4Va9855tVzg/22Bj+VUUaT7gxBg7HmbiCxTK4w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-byte-stream": "^1.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/it-length-prefixed/node_modules/multiformats": { "version": "13.4.2", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", @@ -11632,20 +10982,6 @@ "it-queueless-pushable": "^2.0.0" } }, - "node_modules/it-pair": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", - "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/it-parallel": { "version": "3.0.13", "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.13.tgz", @@ -11674,44 +11010,6 @@ "npm": ">=7.0.0" } }, - "node_modules/it-protobuf-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-2.0.3.tgz", - "integrity": "sha512-Dus9qyylOSnC7l75/3qs6j3Fe9MCM2K5luXi9o175DYijFRne5FPucdOGIYdwaDBDQ4Oy34dNCuFobOpcusvEQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-length-prefixed-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-protobuf-stream/node_modules/it-byte-stream": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.4.tgz", - "integrity": "sha512-8pS0OvkBYwQ206pRLgoLDAiHP6c8wYZJ1ig8KDmP5NOrzMxeH2Wv2ktXIjYHwdu7RPOsnxQb0vKo+O784L/m5g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-queueless-pushable": "^2.0.0", - "it-stream-types": "^2.0.2", - "race-signal": "^2.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-protobuf-stream/node_modules/it-length-prefixed-stream": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-2.0.4.tgz", - "integrity": "sha512-ugHDOQCkC2Dx2pQaJ+W4OIM6nZFBwlpgdQVVOfdX4c1Os47d6PMsfrkTrzRwZdBCMZb+JISZNP2gjU/DHN/z9A==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "abort-error": "^1.0.1", - "it-byte-stream": "^2.0.0", - "it-stream-types": "^2.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } - }, "node_modules/it-pushable": { "version": "3.2.3", "license": "Apache-2.0 OR MIT", @@ -11778,38 +11076,6 @@ "integrity": "sha512-XMeUbnjOcgrhFXPUqa7H0VIjYSV/BvyxxjCp76QHVAFDJw2LmR1SHxUFiqyGeobgzJr7P2ZwSRRJQGn4D2BVlA==", "license": "Apache-2.0 OR MIT" }, - "node_modules/it-ws": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.1.5.tgz", - "integrity": "sha512-uWjMtpy5HqhSd/LlrlP3fhYrr7rUfJFFMABv0F5d6n13Q+0glhZthwUKpEAVhDrXY95Tb1RB5lLqqef+QbVNaw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@types/ws": "^8.2.2", - "event-iterator": "^2.0.0", - "it-stream-types": "^2.0.1", - "uint8arrays": "^5.0.0", - "ws": "^8.4.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/it-ws/node_modules/multiformats": { - "version": "13.4.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.4.2.tgz", - "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/it-ws/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, "node_modules/iterator.prototype": { "version": "1.1.2", "dev": true, @@ -12134,86 +11400,47 @@ } }, "node_modules/libp2p": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.9.4.tgz", - "integrity": "sha512-OCMQqJ0Po8jhgb4CilWhI5EWhppn9ENdhg63PQL8Yi1tk2rOwJJt+NBec85AU18zBc0jv7Q6SgQRkzCefAuyIQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-3.1.2.tgz", + "integrity": "sha512-E14/IznfuJnmelwrsTIRqtds+XzbtIYdnfskv9ulmL+7fwM+7fsUl1z5wBlWFzPNs46t1MF9fPi9m1ytuzs2xw==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@libp2p/crypto": "^4.1.9", - "@libp2p/interface": "^1.7.0", - "@libp2p/interface-internal": "^1.3.4", - "@libp2p/logger": "^4.0.20", - "@libp2p/multistream-select": "^5.1.17", - "@libp2p/peer-collections": "^5.2.9", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/peer-id-factory": "^4.2.4", - "@libp2p/peer-store": "^10.1.5", - "@libp2p/utils": "^5.4.9", + "@chainsafe/is-ip": "^2.1.0", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/crypto": "^5.1.13", + "@libp2p/interface": "^3.1.0", + "@libp2p/interface-internal": "^3.0.9", + "@libp2p/logger": "^6.2.2", + "@libp2p/multistream-select": "^7.0.9", + "@libp2p/peer-collections": "^7.0.9", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-store": "^12.0.9", + "@libp2p/utils": "^7.0.9", "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", + "@multiformats/multiaddr": "^13.0.1", + "@multiformats/multiaddr-matcher": "^3.0.1", "any-signal": "^4.1.1", - "datastore-core": "^9.2.9", - "interface-datastore": "^8.2.11", - "it-byte-stream": "^1.0.12", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", + "datastore-core": "^11.0.1", + "interface-datastore": "^9.0.1", + "it-merge": "^3.0.12", + "it-parallel": "^3.0.13", + "main-event": "^1.0.1", + "multiformats": "^13.4.0", "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", + "p-event": "^7.0.0", + "p-retry": "^7.0.0", + "progress-events": "^1.0.1", + "race-signal": "^2.0.0", "uint8arrays": "^5.1.0" } }, - "node_modules/libp2p/node_modules/@libp2p/interface-internal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", - "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-collections": "^5.2.9", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/libp2p/node_modules/@libp2p/logger": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", - "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0", - "weald": "^1.0.2" - } - }, - "node_modules/libp2p/node_modules/@libp2p/peer-collections": { - "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", - "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.7.0", - "@libp2p/peer-id": "^4.2.4", - "@libp2p/utils": "^5.4.9" - } - }, "node_modules/libp2p/node_modules/@multiformats/multiaddr": { - "version": "12.5.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz", - "integrity": "sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-13.0.1.tgz", + "integrity": "sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@multiformats/dns": "^1.0.3", - "abort-error": "^1.0.1", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" @@ -12225,12 +11452,6 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/libp2p/node_modules/race-signal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.3.tgz", - "integrity": "sha512-Mt2NznMgepLfORijhQMncE26IhkmjEphig+/1fKC0OtaKwys/gpvpmswSjoN01SS+VO951mj0L4VIDXdXsjnfA==", - "license": "Apache-2.0 OR MIT" - }, "node_modules/libp2p/node_modules/uint8arrays": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", @@ -12584,6 +11805,7 @@ }, "node_modules/merge-stream": { "version": "2.0.0", + "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -12634,6 +11856,7 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13001,15 +12224,6 @@ "npm": ">=7.0.0" } }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/mute-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", @@ -13051,6 +12265,24 @@ "version": "2.14.0", "license": "MIT" }, + "node_modules/nanoid": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -13373,6 +12605,7 @@ }, "node_modules/npm-run-path": { "version": "5.1.0", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -13386,6 +12619,7 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13800,6 +13034,7 @@ }, "node_modules/onetime": { "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -14017,15 +13252,15 @@ } }, "node_modules/p-event": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", - "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.0.1.tgz", + "integrity": "sha512-SI8GHTMMv6dAIMMHBG0g6PyZIEal+CCaKCje24NxkgEJrPvfdfEP0xXVoDC3OGxlfjM8qqSs/luTaobCkGdEUA==", "license": "MIT", "dependencies": { - "p-timeout": "^6.1.2" + "p-timeout": "^6.1.4" }, "engines": { - "node": ">=16.17" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14075,6 +13310,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-retry": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", + "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", + "license": "MIT", + "dependencies": { + "is-network-error": "^1.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -14839,6 +14089,18 @@ "integrity": "sha512-P31bLhE4ByBX/70QDXMutxnqgwrF1WUXea1O8DXuviAgkdbQ1iQMQotNgzJIBC9yUSn08u/acZrMUhgw7w6GpA==", "license": "Apache-2.0 OR MIT" }, + "node_modules/random-int": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/random-int/-/random-int-3.1.0.tgz", + "integrity": "sha512-h8CRz8cpvzj0hC/iH/1Gapgcl2TQ6xtnCpyOI5WvWfXf/yrDx2DOU+tD9rX23j36IF11xg1KqB9W11Z18JPMdw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "license": "MIT", @@ -15296,6 +14558,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/retimeable-signal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/retimeable-signal/-/retimeable-signal-1.0.1.tgz", + "integrity": "sha512-Cy26CYfbWnYu8HMoJeDhaMpW/EYFIbne3vMf6G9RSrOyWYXbPehja/BEdzpqmM84uy2bfBD7NPZhoQ4GZEtgvg==", + "license": "Apache-2.0 OR MIT" + }, "node_modules/retry": { "version": "0.13.1", "dev": true, @@ -15857,6 +15125,7 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "devOptional": true, "license": "ISC" }, "node_modules/simple-concat": { @@ -16171,15 +15440,6 @@ "node": ">=12" } }, - "node_modules/stream-to-it": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-1.0.1.tgz", - "integrity": "sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-stream-types": "^2.0.1" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -16328,6 +15588,7 @@ }, "node_modules/strip-final-newline": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -17108,6 +16369,18 @@ "dev": true, "license": "ISC" }, + "node_modules/unlimited-timeout": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unlimited-timeout/-/unlimited-timeout-0.1.0.tgz", + "integrity": "sha512-D4g+mxFeQGQHzCfnvij+R35ukJ0658Zzudw7j16p4tBBbNasKkKM4SocYxqhwT5xA7a9JYWDzKkEFyMlRi5sng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 8e5ce703c..7c9c84303 100644 --- a/package.json +++ b/package.json @@ -48,25 +48,25 @@ "changelog": "auto-changelog -p" }, "dependencies": { - "@chainsafe/libp2p-noise": "^15.1.0", - "@chainsafe/libp2p-yamux": "^6.0.2", + "@chainsafe/libp2p-noise": "^17.0.0", + "@chainsafe/libp2p-yamux": "^8.0.1", "@elastic/elasticsearch": "^8.14.0", - "@libp2p/autonat": "^2.0.0", - "@libp2p/bootstrap": "^10.1.1", - "@libp2p/circuit-relay-v2": "^1.1.1", - "@libp2p/crypto": "^4.1.5", - "@libp2p/dcutr": "^1.1.1", - "@libp2p/identify": "^2.1.1", - "@libp2p/kad-dht": "^12.1.1", - "@libp2p/mdns": "^10.1.1", - "@libp2p/peer-id": "^4.1.4", - "@libp2p/peer-id-factory": "^4.1.4", - "@libp2p/ping": "^1.1.1", - "@libp2p/pubsub": "^9.0.22", - "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.1.1", - "@libp2p/upnp-nat": "^1.2.1", - "@libp2p/websockets": "^8.1.1", + "@libp2p/autonat": "^3.0.9", + "@libp2p/bootstrap": "^12.0.10", + "@libp2p/circuit-relay-v2": "^4.1.2", + "@libp2p/crypto": "^5.1.13", + "@libp2p/dcutr": "^3.0.9", + "@libp2p/identify": "^4.0.9", + "@libp2p/kad-dht": "^16.1.2", + "@libp2p/mdns": "^12.0.10", + "@libp2p/peer-id": "^6.0.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/ping": "^3.0.9", + "@libp2p/pubsub": "^10.1.18", + "@libp2p/pubsub-peer-discovery": "^12.0.0", + "@libp2p/tcp": "^11.0.9", + "@libp2p/upnp-nat": "^4.0.9", + "@libp2p/websockets": "^10.1.2", "@multiformats/multiaddr": "^10.2.0", "@oceanprotocol/contracts": "^2.5.0", "@oceanprotocol/ddo-js": "^0.1.4", @@ -85,7 +85,7 @@ "ipaddr.js": "^2.3.0", "it-pipe": "^3.0.1", "jsonwebtoken": "^9.0.2", - "libp2p": "^1.8.0", + "libp2p": "^3.1.2", "lodash": "^4.17.21", "lzma-purejs-requirejs": "^1.0.0", "node-cron": "^3.0.3", @@ -159,4 +159,4 @@ "publish": false } } -} \ No newline at end of file +} diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 7156d5e22..a0121edff 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -234,7 +234,7 @@ export class OceanP2P extends EventEmitter { P2P_LOGGER.info(`Starting P2P Node with peerID: ${this._publicAddress}`) this._publicKey = config.keys.publicKey - this._privateKey = config.keys.privateKey + this._privateKey = config.keys.privateKey.raw /** @type {import('libp2p').Libp2pOptions} */ // start with some default, overwrite based on config later const bindInterfaces = [] @@ -337,17 +337,11 @@ export class OceanP2P extends EventEmitter { let transports = [] P2P_LOGGER.info('Enabling P2P Transports: websockets, tcp, circuitRelay') - transports = [ - webSockets(), - tcp(), - circuitRelayTransport({ - discoverRelays: config.p2pConfig.circuitRelays - }) - ] + transports = [webSockets(), tcp(), circuitRelayTransport()] let options = { addresses, - peerId: config.keys.peerId, + privateKey: config.keys.privateKey, transports, streamMuxers: [yamux()], connectionEncryption: [ @@ -506,7 +500,7 @@ export class OceanP2P extends EventEmitter { // UPDATE: no need to slice 4 bytes here, actually we need those on client side to verify the node id and perform the encryption of the keys + iv // See config.ts => getPeerIdFromPrivateKey() - const pubKey = Buffer.from(peerId.publicKey).toString('hex') // no need to do .subarray(4).toString('hex') + const pubKey = Buffer.from(peerId.publicKey.raw).toString('hex') // no need to do .subarray(4).toString('hex') const peer = await this._libp2p.peerStore.get(peerId) // write the publicKey as well diff --git a/src/components/core/handler/downloadHandler.ts b/src/components/core/handler/downloadHandler.ts index 92aa2d7ea..7615a82bd 100644 --- a/src/components/core/handler/downloadHandler.ts +++ b/src/components/core/handler/downloadHandler.ts @@ -108,7 +108,7 @@ export async function handleDownloadUrlCommand( // we parse the string into the object again const encryptedObject = ethCrypto.cipher.parse(task.aes_encrypted_key) // get the key from configuration - const nodePrivateKey = Buffer.from(config.keys.privateKey).toString('hex') + const nodePrivateKey = Buffer.from(config.keys.privateKey.raw).toString('hex') const decrypted = await ethCrypto.decryptWithPrivateKey( nodePrivateKey, encryptedObject diff --git a/src/components/core/utils/feesHandler.ts b/src/components/core/utils/feesHandler.ts index 92d356731..450aafc4a 100644 --- a/src/components/core/utils/feesHandler.ts +++ b/src/components/core/utils/feesHandler.ts @@ -452,7 +452,7 @@ export async function checkFee( */ export async function getProviderWallet(chainId?: string): Promise { return new ethers.Wallet( - Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') + Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') ) } export async function getProviderWalletAddress(): Promise { @@ -460,7 +460,7 @@ export async function getProviderWalletAddress(): Promise { } export async function getProviderKey(): Promise { - return Buffer.from((await getConfiguration()).keys.privateKey).toString('hex') + return Buffer.from((await getConfiguration()).keys.privateKey.raw).toString('hex') } /** diff --git a/src/utils/config/builder.ts b/src/utils/config/builder.ts index f606fec9e..aafd0482c 100644 --- a/src/utils/config/builder.ts +++ b/src/utils/config/builder.ts @@ -3,8 +3,8 @@ import type { C2DClusterInfo, C2DDockerConfig } from '../../@types/C2D/C2D.js' import type { RPCS } from '../../@types/blockchain.js' import type { FeeTokens } from '../../@types/Fees.js' import { C2DClusterType } from '../../@types/C2D/C2D.js' -import { keys } from '@libp2p/crypto' -import { createFromPrivKey } from '@libp2p/peer-id-factory' +import { privateKeyFromRaw } from '@libp2p/crypto/keys' +import { peerIdFromPrivateKey } from '@libp2p/peer-id' import { Wallet } from 'ethers' import fs from 'fs' import os from 'os' @@ -84,17 +84,13 @@ function preprocessConfigData(data: any): void { } } -export async function getPeerIdFromPrivateKey( - privateKey: string -): Promise { - const key = new keys.supportedKeys.secp256k1.Secp256k1PrivateKey( - hexStringToByteArray(privateKey.slice(2)) - ) +export function getPeerIdFromPrivateKey(privateKey: string): OceanNodeKeys { + const key = privateKeyFromRaw(hexStringToByteArray(privateKey.slice(2))) return { - peerId: await createFromPrivKey(key), - publicKey: key.public.bytes, - privateKey: (key as any)._key, + peerId: peerIdFromPrivateKey(key), + publicKey: key.publicKey.raw, + privateKey: key, ethAddress: new Wallet(privateKey.substring(2)).address } } @@ -212,7 +208,7 @@ export function loadConfigFromFile(configPath?: string): OceanNodeConfig { return config } -export async function buildMergedConfig(): Promise { +export function buildMergedConfig(): OceanNodeConfig { const baseConfig = loadConfigFromFile() const privateKey = process.env.PRIVATE_KEY if (!privateKey || privateKey.length !== 66) { @@ -225,7 +221,7 @@ export async function buildMergedConfig(): Promise { throw new Error('Invalid PRIVATE_KEY') } - const keys = await getPeerIdFromPrivateKey(privateKey) + const keys = getPeerIdFromPrivateKey(privateKey) const { env } = process const envOverrides: Record = { keys } @@ -283,7 +279,7 @@ export async function getConfiguration( isStartup: boolean = false ): Promise { if (!previousConfiguration || forceReload) { - previousConfiguration = await buildMergedConfig() + previousConfiguration = buildMergedConfig() } if (!previousConfiguration.codeHash) { diff --git a/src/utils/crypt.ts b/src/utils/crypt.ts index daa755b2f..8912bac05 100644 --- a/src/utils/crypt.ts +++ b/src/utils/crypt.ts @@ -19,11 +19,11 @@ export async function encrypt( // use first 16 bytes of public key as an initialisation vector const initVector = publicKey.subarray(0, 16) // creates cipher object, with the given algorithm, key and initialization vector - const cipher = crypto.createCipheriv('aes-256-cbc', privateKey, initVector) + const cipher = crypto.createCipheriv('aes-256-cbc', privateKey.raw, initVector) // encoding is ignored because we are working with bytes and want to return a buffer encryptedData = Buffer.concat([cipher.update(data), cipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey) + const sk = new eciesjs.PrivateKey(privateKey.raw) // get public key from Elliptic curve encryptedData = eciesjs.encrypt(sk.publicKey.toHex(), data) } @@ -47,12 +47,12 @@ export async function decrypt( const initVector = publicKey.subarray(0, 16) // creates decipher object, with the given algorithm, key and initialization vector - const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey, initVector) + const decipher = crypto.createDecipheriv('aes-256-cbc', privateKey.raw, initVector) // encoding is ignored because we are working with bytes and want to return a buffer decryptedData = Buffer.concat([decipher.update(data), decipher.final()]) } else if (algorithm === EncryptMethod.ECIES) { - const sk = new eciesjs.PrivateKey(privateKey) + const sk = new eciesjs.PrivateKey(privateKey.raw) decryptedData = eciesjs.decrypt(sk.secret, data) } return decryptedData From afb8e093c18eafe151a5314d6daf256dc920f69f Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Tue, 6 Jan 2026 09:54:17 +0200 Subject: [PATCH 31/43] custom dial logic --- src/components/P2P/index.ts | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index a0121edff..728be9658 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -162,6 +162,22 @@ export class OceanP2P extends EventEmitter { try { const peerInfo = details.detail P2P_LOGGER.debug('Discovered new peer:' + peerInfo.id.toString()) + + // v2/v3: autodialer was removed - we implement custom dial logic + const currentConnections = this._libp2p.getConnections().length + const { minConnections, maxConnections } = this._config.p2pConfig + + // Only dial if we're below minConnections or have room for more + if (currentConnections < minConnections || currentConnections < maxConnections) { + const existingConnections = this._libp2p.getConnections(peerInfo.id) + if (existingConnections.length === 0) { + this._libp2p.dial(peerInfo.id).catch((err: Error) => { + P2P_LOGGER.debug( + `Failed to dial discovered peer ${peerInfo.id}: ${err.message}` + ) + }) + } + } } catch (e) { // no panic if it failed // console.error(e) @@ -337,6 +353,7 @@ export class OceanP2P extends EventEmitter { let transports = [] P2P_LOGGER.info('Enabling P2P Transports: websockets, tcp, circuitRelay') + // relay discovery is now automatic through the network's RandomWalk component transports = [webSockets(), tcp(), circuitRelayTransport()] let options = { @@ -344,20 +361,16 @@ export class OceanP2P extends EventEmitter { privateKey: config.keys.privateKey, transports, streamMuxers: [yamux()], - connectionEncryption: [ + connectionEncrypters: [ noise() // plaintext() ], services: servicesConfig, connectionManager: { - maxParallelDials: config.p2pConfig.connectionsMaxParallelDials, // 150 total parallel multiaddr dials - dialTimeout: config.p2pConfig.connectionsDialTimeout, // 10 second dial timeout per peer dial - minConnections: config.p2pConfig.minConnections, + maxParallelDials: config.p2pConfig.connectionsMaxParallelDials, + dialTimeout: config.p2pConfig.connectionsDialTimeout, maxConnections: config.p2pConfig.maxConnections, - autoDialPeerRetryThreshold: config.p2pConfig.autoDialPeerRetryThreshold, - autoDialConcurrency: config.p2pConfig.autoDialConcurrency, - maxPeerAddrsToDial: config.p2pConfig.maxPeerAddrsToDial, - autoDialInterval: config.p2pConfig.autoDialInterval + maxPeerAddrsToDial: config.p2pConfig.maxPeerAddrsToDial } } if (config.p2pConfig.bootstrapNodes && config.p2pConfig.bootstrapNodes.length > 0) { @@ -654,7 +667,7 @@ export class OceanP2P extends EventEmitter { const options = { signal: AbortSignal.timeout(10000), priority: 100, - runOnTransientConnection: true + runOnLimitedConnection: true } const connection = await this._libp2p.dial(multiaddrs, options) if (connection.remotePeer.toString() !== peerId.toString()) { From 9574285bd6a312b1b8031af737d5d48d62e0c50c Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Tue, 6 Jan 2026 14:38:28 +0200 Subject: [PATCH 32/43] event target and close connection --- src/components/P2P/index.ts | 75 +++++++++++++++++++----------- src/components/core/handler/p2p.ts | 2 +- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 728be9658..c18ed9598 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -11,13 +11,13 @@ import { noise } from '@chainsafe/libp2p-noise' import { mdns } from '@libp2p/mdns' import { yamux } from '@chainsafe/libp2p-yamux' import { peerIdFromString } from '@libp2p/peer-id' -import { pipe } from 'it-pipe' // import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery' import { tcp } from '@libp2p/tcp' import { webSockets } from '@libp2p/websockets' import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2' import { createLibp2p, Libp2p } from 'libp2p' +import type { AddressManager, TransportManager } from '@libp2p/interface-internal' import { identify, identifyPush } from '@libp2p/identify' import { autoNAT } from '@libp2p/autonat' import { uPnPNAT } from '@libp2p/upnp-nat' @@ -61,7 +61,7 @@ type DDOCache = { let index = 0 export class OceanP2P extends EventEmitter { - _libp2p: any + _libp2p: Libp2p _topic: string _options: any _peers: any[] @@ -450,13 +450,23 @@ export class OceanP2P extends EventEmitter { // } } - async getNetworkingStats() { + getNetworkingStats() { const ret: any = {} - ret.binds = await this._libp2p.components.addressManager.getListenAddrs() - ret.listen = await this._libp2p.components.transportManager.getAddrs() - ret.observing = await this._libp2p.components.addressManager.getObservedAddrs() - ret.announce = await this._libp2p.components.addressManager.getAnnounceAddrs() - ret.connections = await this._libp2p.getConnections() + ret.announce = this._libp2p.getMultiaddrs() + ret.connections = this._libp2p.getConnections() + + const libp2pInternal = this._libp2p as Libp2p & { + components: { + addressManager: AddressManager + transportManager: TransportManager + } + } + if (libp2pInternal.components) { + ret.binds = libp2pInternal.components.addressManager.getListenAddrs() + ret.listen = libp2pInternal.components.transportManager.getAddrs() + ret.observing = libp2pInternal.components.addressManager.getObservedAddrs() + } + return ret } @@ -516,8 +526,6 @@ export class OceanP2P extends EventEmitter { const pubKey = Buffer.from(peerId.publicKey.raw).toString('hex') // no need to do .subarray(4).toString('hex') const peer = await this._libp2p.peerStore.get(peerId) - // write the publicKey as well - peer.publicKey = pubKey // Note: this is a 'compressed' version of the publicKey, we need to decompress it on client side (not working with bellow attempts) // otherwise the encryption will fail due to public key size mismatch @@ -526,7 +534,10 @@ export class OceanP2P extends EventEmitter { // Buffer.from(decompressedKey).toString('hex') // in any case is not working (it crashes here) - return peer + return { + ...peer, + publicKey: pubKey + } } catch (e) { return null } @@ -552,7 +563,8 @@ export class OceanP2P extends EventEmitter { }) if (peerData) { for (const x of peerData.addresses) { - multiaddrs.push(x.multiaddr) + // v3: Convert to local Multiaddr type to avoid type mismatch + multiaddrs.push(multiaddr(x.multiaddr.toString())) } } } catch (e) { @@ -567,7 +579,8 @@ export class OceanP2P extends EventEmitter { }) if (peerData) { for (const index in peerData.multiaddrs) { - multiaddrs.push(peerData.multiaddrs[index]) + // v3: Convert to local Multiaddr type to avoid type mismatch + multiaddrs.push(multiaddr(peerData.multiaddrs[index].toString())) } } } catch (e) { @@ -629,7 +642,7 @@ export class OceanP2P extends EventEmitter { status: { httpStatus: 200, error: '' }, stream: null } - let peerId: any + let peerId try { peerId = peerIdFromString(peerName) } catch (e) { @@ -651,7 +664,7 @@ export class OceanP2P extends EventEmitter { } else { // just used what we were instructed to use for (const addr of multiAddrs) { - multiaddrs.push(new Multiaddr(addr)) + multiaddrs.push(multiaddr(addr)) } } if (multiaddrs.length < 1) { @@ -669,7 +682,7 @@ export class OceanP2P extends EventEmitter { priority: 100, runOnLimitedConnection: true } - const connection = await this._libp2p.dial(multiaddrs, options) + const connection = await this._libp2p.dial(peerId, options) if (connection.remotePeer.toString() !== peerId.toString()) { response.status.httpStatus = 404 response.status.error = `Invalid peer on the other side: ${connection.remotePeer.toString()}` @@ -685,18 +698,19 @@ export class OceanP2P extends EventEmitter { } if (stream) { + // @ts-ignore libp2p v3 Stream type differs from Node.js Stream response.stream = stream try { - await pipe( - // Source data - [uint8ArrayFromString(message)], - // Write to the stream, and pass its output to the next function - stream, - // this is the anayze function - // doubler as any, - // Sink function - sink - ) + // v3: Use EventTarget stream API + // Send the message + stream.send(uint8ArrayFromString(message)) + // Close write side to signal end of message (v1 receivers wait for stream to end) + // v3 close() closes writes but keeps readable until remote also closes + await stream.close() + + // Pass stream data to sink function (for response handling) + // v3 streams are still AsyncIterable + await sink(stream) } catch (err) { P2P_LOGGER.error( `Cannot connect to peer - Unable to send P2P message: ${err.message}` @@ -788,8 +802,9 @@ export class OceanP2P extends EventEmitter { P2P_LOGGER.debug('Advertising "' + did + `" as CID:` + cid) const x = (await this.getAllOceanPeers()).length if (x > 0) { - const multiAddrs = this._libp2p.components.addressManager.getAddresses() + const multiAddrs = this._libp2p.getMultiaddrs() // console.log('multiaddrs: ', multiAddrs) + // @ts-ignore ignore the type mismatch this._libp2p.contentRouting.provide(cid, multiAddrs).catch((err: any) => { P2P_LOGGER.error(`Error advertising DDO: ${err}`) }) @@ -839,6 +854,7 @@ export class OceanP2P extends EventEmitter { const cid = await cidFromRawString(input) const peersFound = [] try { + // @ts-ignore ignore the type mismatch const f = await this._libp2p.contentRouting.findProviders(cid, { queryFuncTimeout: timeout || 20000 // 20 seconds // on timeout the query ends with an abort signal => CodeError: Query aborted @@ -849,7 +865,10 @@ export class OceanP2P extends EventEmitter { } catch (e) { P2P_LOGGER.error('getProvidersForString()' + e.message) } - return peersFound + return peersFound.map((peer) => ({ + id: peer.id.toString(), + multiaddrs: peer.multiaddrs + })) } // cache a ddos object diff --git a/src/components/core/handler/p2p.ts b/src/components/core/handler/p2p.ts index c0ff41625..fa87f367d 100644 --- a/src/components/core/handler/p2p.ts +++ b/src/components/core/handler/p2p.ts @@ -132,7 +132,7 @@ export class GetP2PNetworkStatsHandler extends CommandHandler { try { const config = await getConfiguration() if (config.p2pConfig.enableNetworkStats) { - const stats = await this.getOceanNode().getP2PNode().getNetworkingStats() + const stats = this.getOceanNode().getP2PNode().getNetworkingStats() return { stream: Readable.from(JSON.stringify(stats, null, 4)), status: { httpStatus: 200 } From c3c71f7b2e46cdab6e9ff9fdc60d6a3b84465144 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 7 Jan 2026 09:17:04 +0200 Subject: [PATCH 33/43] remove sinks --- src/OceanNode.ts | 75 +++---- .../Indexer/processors/BaseProcessor.ts | 55 ++--- src/components/P2P/handleProtocolCommands.ts | 194 ++++++------------ src/components/P2P/index.ts | 120 ++++++----- src/components/core/handler/ddoHandler.ts | 123 ++++------- src/components/httpRoutes/commands.ts | 156 ++++++-------- src/utils/util.ts | 8 + 7 files changed, 290 insertions(+), 441 deletions(-) diff --git a/src/OceanNode.ts b/src/OceanNode.ts index 9e7846c04..a3cc7057d 100644 --- a/src/OceanNode.ts +++ b/src/OceanNode.ts @@ -6,13 +6,11 @@ import { Database } from './components/database/index.js' import { Escrow } from './components/core/utils/escrow.js' import { CoreHandlersRegistry } from './components/core/handler/coreHandlersRegistry.js' import { OCEAN_NODE_LOGGER } from './utils/logging/common.js' -import { ReadableString } from './components/P2P/handleProtocolCommands.js' -import StreamConcat from 'stream-concat' -import { pipe } from 'it-pipe' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from './utils/logging/Logger.js' import { BaseHandler } from './components/core/handler/handler.js' import { C2DEngines } from './components/c2d/compute_engines.js' import { Auth } from './components/Auth/index.js' +import { Readable } from 'stream' export interface RequestLimiter { requester: string | string[] // IP address or peer ID @@ -147,57 +145,50 @@ export class OceanNode { } /** - * Use this method to direct calls to the node as node cannot dial into itself - * @param message command message - * @param sink transform function + * v3: Direct protocol command handler - no P2P, just call handler directly + * Returns a clean {status, data} response + * @param message - JSON command string */ - async handleDirectProtocolCommand( - message: string, - sink: any - ): Promise { + async handleDirectProtocolCommand(message: string): Promise { OCEAN_NODE_LOGGER.logMessage('Incoming direct command for ocean peer', true) - let status = null - // let statusStream - let sendStream = null - let response: P2PCommandResponse = null - OCEAN_NODE_LOGGER.logMessage('Performing task: ' + message, true) try { const task = JSON.parse(message) const handler: BaseHandler = this.coreHandlers.getHandler(task.command) - if (handler === null) { - status = { - httpStatus: 501, - error: 'Unknown command or unexisting handler for command: ' + task.command + + if (!handler) { + return { + stream: null, + status: { + httpStatus: 501, + error: 'Unknown command or missing handler for: ' + task.command + } } - } else { - response = await handler.handle(task) } - if (response) { - // eslint-disable-next-line prefer-destructuring - status = response.status - sendStream = response.stream - } + const response: P2PCommandResponse = await handler.handle(task) - const statusStream = new ReadableString(JSON.stringify(status)) - if (sendStream == null) { - pipe(statusStream, sink) - } else { - const combinedStream = new StreamConcat([statusStream, sendStream], { - highWaterMark: JSON.stringify(status).length - // the size of the buffer is important! - }) - pipe(combinedStream, sink) + let data: Uint8Array | undefined + if (response.stream) { + const chunks: Buffer[] = [] + for await (const chunk of response.stream as Readable) { + chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)) + } + data = new Uint8Array(Buffer.concat(chunks)) } - return ( - response || { - status, - stream: null + if (!data) { + return { + stream: null, + status: { httpStatus: 500, error: 'No data received' } } - ) + } + + return { + status: response.status, + stream: Readable.from(data) + } } catch (err) { OCEAN_NODE_LOGGER.logMessageWithEmoji( 'handleDirectProtocolCommands Error: ' + err.message, @@ -207,8 +198,8 @@ export class OceanNode { ) return { - status: { httpStatus: 500, error: err.message }, - stream: null + stream: null, + status: { httpStatus: 500, error: err.message } } } } diff --git a/src/components/Indexer/processors/BaseProcessor.ts b/src/components/Indexer/processors/BaseProcessor.ts index b8833b429..fe486a2de 100644 --- a/src/components/Indexer/processors/BaseProcessor.ts +++ b/src/components/Indexer/processors/BaseProcessor.ts @@ -359,42 +359,7 @@ export abstract class BaseEventProcessor { } else { try { const p2pNode = await node.getP2PNode() - let isBinaryContent = false - const sink = async function (source: any) { - let first = true - for await (const chunk of source) { - if (first) { - first = false - try { - const str = uint8ArrayToString(chunk.subarray()) // Obs: we need to specify the length of the subarrays - const decoded = JSON.parse(str) - if ('headers' in decoded) { - if (str?.toLowerCase().includes('application/octet-stream')) { - isBinaryContent = true - } - } - if (decoded.httpStatus !== 200) { - INDEXER_LOGGER.logMessage( - `Error in sink method : ${decoded.httpStatus} errro: ${decoded.error}` - ) - throw new Error('Error in sink method', decoded.error) - } - } catch (e) { - INDEXER_LOGGER.logMessage( - `Error in sink method } error: ${e.message}` - ) - throw new Error(`Error in sink method ${e.message}`) - } - } else { - if (isBinaryContent) { - return chunk.subarray() - } else { - const str = uint8ArrayToString(chunk.subarray()) - return str - } - } - } - } + const message = { command: PROTOCOL_COMMANDS.DECRYPT_DDO, transactionId: txId, @@ -406,12 +371,18 @@ export abstract class BaseEventProcessor { signature, nonce } - const response = await p2pNode.sendTo( - decryptorURL, - JSON.stringify(message), - sink - ) - ddo = JSON.parse(await streamToString(response.stream as Readable)) + + const response = await p2pNode.sendTo(decryptorURL, JSON.stringify(message)) + + if (response.status.httpStatus !== 200) { + throw new Error(`Decrypt failed: ${response.status.error}`) + } + + if (!response.data) { + throw new Error('No data received from decrypt') + } + + ddo = JSON.parse(uint8ArrayToString(response.data)) } catch (error) { const message = `Node exception on decrypt DDO. Status: ${error.message}` INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) diff --git a/src/components/P2P/handleProtocolCommands.ts b/src/components/P2P/handleProtocolCommands.ts index 507234d19..f31dece64 100644 --- a/src/components/P2P/handleProtocolCommands.ts +++ b/src/components/P2P/handleProtocolCommands.ts @@ -1,18 +1,19 @@ -import { pipe } from 'it-pipe' import { Readable } from 'stream' import { toString as uint8ArrayToString } from 'uint8arrays/to-string' +import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' import { P2P_LOGGER } from '../../utils/logging/common.js' import { Command } from '../../@types/commands.js' import { P2PCommandResponse } from '../../@types/OceanNode' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../utils/logging/Logger.js' -import StreamConcat from 'stream-concat' import { BaseHandler } from '../core/handler/handler.js' import { getConfiguration } from '../../utils/index.js' import { checkGlobalConnectionsRateLimit, checkRequestsRateLimit } from '../../utils/validators.js' +import type { Stream } from '@libp2p/interface' +import { streamToUint8Array } from '../../utils/util.js' export class ReadableString extends Readable { private sent = false @@ -31,182 +32,109 @@ export class ReadableString extends Readable { } } -// close the stream after sending data, libp2p will handle stream status -async function closeStreamConnection(connection: any, remotePeer: string) { - if (connection) { - try { - P2P_LOGGER.debug('Closing connection to remote peer:' + remotePeer) - await connection.close() - } catch (e) { - P2P_LOGGER.error(`Error closing connection for peer ${remotePeer}: ${e.message}`) - } - } -} - -export async function handleProtocolCommands(otherPeerConnection: any) { - const { remotePeer, remoteAddr } = otherPeerConnection.connection +export async function handleProtocolCommands(stream: Stream, connection: any) { + const { remotePeer, remoteAddr } = connection - // only write if stream is in 'open' status - const connectionStatus = otherPeerConnection.connection.status P2P_LOGGER.logMessage('Incoming connection from peer ' + remotePeer, true) P2P_LOGGER.logMessage('Using ' + remoteAddr, true) - let status = null - let task: Command - let statusStream - let sendStream = null - - const buildWrongCommandStatus = function (errorCode: number, message: string) { - status = { - httpStatus: errorCode, - error: message + const sendErrorAndClose = async (httpStatus: number, error: string) => { + try { + const status = { httpStatus, error } + stream.send(uint8ArrayFromString(JSON.stringify(status))) + await stream.close() + } catch (e) { + P2P_LOGGER.error(`Error sending error response: ${e.message}`) + try { + stream.abort(e as Error) + } catch {} } - return status } + // Rate limiting and deny list checks const configuration = await getConfiguration() - // check deny list configs const { denyList } = configuration - if (denyList.peers.length > 0) { - if (denyList.peers.includes(remotePeer.toString())) { - P2P_LOGGER.warn( - `Incoming request denied to peer: ${remotePeer} (peer its on deny list)` - ) - - if (connectionStatus === 'open') { - statusStream = new ReadableString( - JSON.stringify(buildWrongCommandStatus(403, 'Unauthorized request')) - ) - try { - await pipe(statusStream, otherPeerConnection.stream.sink) - } catch (e) { - P2P_LOGGER.error(e) - } - } - await closeStreamConnection(otherPeerConnection.connection, remotePeer) - return - } + + if (denyList.peers.includes(remotePeer.toString())) { + P2P_LOGGER.warn(`Incoming request denied to peer: ${remotePeer} (peer on deny list)`) + await sendErrorAndClose(403, 'Unauthorized request') + return } - // check connections rate limit - const now = Date.now() + const now = Date.now() const rateLimitCheck = checkRequestsRateLimit(remoteAddr, configuration, now) if (!rateLimitCheck.valid) { P2P_LOGGER.warn( `Incoming request denied to peer: ${remotePeer} (rate limit exceeded)` ) - if (connectionStatus === 'open') { - statusStream = new ReadableString( - JSON.stringify(buildWrongCommandStatus(403, 'Rate limit exceeded')) - ) - try { - await pipe(statusStream, otherPeerConnection.stream.sink) - } catch (e) { - P2P_LOGGER.error(e) - } - } - await closeStreamConnection(otherPeerConnection.connection, remotePeer) + await sendErrorAndClose(403, 'Rate limit exceeded') return } - // check global rate limits (not ip related) const connectionsRateValidation = checkGlobalConnectionsRateLimit(configuration, now) if (!connectionsRateValidation.valid) { P2P_LOGGER.warn( `Exceeded limit of connections per minute ${configuration.maxConnections}: ${connectionsRateValidation.error}` ) - if (connectionStatus === 'open') { - statusStream = new ReadableString( - JSON.stringify(buildWrongCommandStatus(403, 'Rate limit exceeded')) - ) - try { - await pipe(statusStream, otherPeerConnection.stream.sink) - } catch (e) { - P2P_LOGGER.error(e) - } - } - await closeStreamConnection(otherPeerConnection.connection, remotePeer) + await sendErrorAndClose(403, 'Rate limit exceeded') return } + // v3 streams are AsyncIterable + let task: Command try { - // eslint-disable-next-line no-unreachable-loop - for await (const chunk of otherPeerConnection.stream.source) { + for await (const chunk of stream) { try { const str = uint8ArrayToString(chunk.subarray()) task = JSON.parse(str) as Command } catch (e) { - if (connectionStatus === 'open') { - statusStream = new ReadableString( - JSON.stringify(buildWrongCommandStatus(400, 'Invalid command')) - ) - await pipe(statusStream, otherPeerConnection.stream.sink) - } - - await closeStreamConnection(otherPeerConnection.connection, remotePeer) + await sendErrorAndClose(400, 'Invalid command') return } } - if (!task) { - P2P_LOGGER.error('Invalid or missing task/command data!') - if (connectionStatus === 'open') { - statusStream = new ReadableString( - JSON.stringify(buildWrongCommandStatus(400, 'Invalid command')) - ) - await pipe(statusStream, otherPeerConnection.stream.sink) - } - - await closeStreamConnection(otherPeerConnection.connection, remotePeer) - return - } } catch (err) { P2P_LOGGER.log( LOG_LEVELS_STR.LEVEL_ERROR, `Unable to process P2P command: ${err.message}` ) - await closeStreamConnection(otherPeerConnection.connection, remotePeer) + await sendErrorAndClose(400, 'Invalid command') + return + } + + if (!task) { + P2P_LOGGER.error('Invalid or missing task/command data!') + await sendErrorAndClose(400, 'Invalid command') return } P2P_LOGGER.logMessage('Performing P2P task: ' + JSON.stringify(task), true) - // we get the handler from the running instance - // no need to create a new instance of Handler on every request + + // Get and execute handler const handler: BaseHandler = this.getCoreHandlers().getHandler(task.command) - let response: P2PCommandResponse = null - if (handler === null) { - status = { httpStatus: 501, error: `No handler found for command: ${task.command}` } - } else { - try { - // who is calling this handler? - handler.getOceanNode().setRemoteCaller(remotePeer.toString()) - response = await handler.handle(task) - if (response) { - // eslint-disable-next-line prefer-destructuring - status = response.status - sendStream = response.stream - } - statusStream = new ReadableString(JSON.stringify(status)) - - if (connectionStatus === 'open') { - if (sendStream == null) { - await pipe(statusStream, otherPeerConnection.stream.sink) - await closeStreamConnection(otherPeerConnection.connection, remotePeer) - } else { - const combinedStream = new StreamConcat([statusStream, sendStream], { - highWaterMark: JSON.stringify(status).length // important for reading chunks correctly on sink! - }) - await pipe(combinedStream, otherPeerConnection.stream.sink) - // Don't close for data streams - sender closes when done reading - } - } - } catch (err) { - P2P_LOGGER.logMessageWithEmoji( - 'handleProtocolCommands Error: ' + err.message, - true, - GENERIC_EMOJIS.EMOJI_CROSS_MARK, - LOG_LEVELS_STR.LEVEL_ERROR - ) - await closeStreamConnection(otherPeerConnection.connection, remotePeer) + if (!handler) { + await sendErrorAndClose(501, `No handler found for command: ${task.command}`) + return + } + + try { + handler.getOceanNode().setRemoteCaller(remotePeer.toString()) + const response: P2PCommandResponse = await handler.handle(task) + + stream.send(uint8ArrayFromString(JSON.stringify(response.status))) + + if (response.stream) { + const dataBytes = await streamToUint8Array(response.stream as Readable) + stream.send(dataBytes) } + + await stream.close() + } catch (err) { + P2P_LOGGER.logMessageWithEmoji( + 'handleProtocolCommands Error: ' + err.message, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + await sendErrorAndClose(500, err.message) } } diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index c18ed9598..c0507ab79 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -1,10 +1,11 @@ // import diff from 'hyperdiff' -import { P2PCommandResponse } from '../../@types/index' import EventEmitter from 'node:events' import lodash from 'lodash' import { handleProtocolCommands } from './handlers.js' import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' +import { toString as uint8ArrayToString } from 'uint8arrays/to-string' +import type { Stream } from '@libp2p/interface' import { bootstrap } from '@libp2p/bootstrap' import { noise } from '@chainsafe/libp2p-noise' @@ -633,49 +634,39 @@ export class OceanP2P extends EventEmitter { async sendTo( peerName: string, message: string, - sink: any, multiAddrs?: string[] - ): Promise { + ): Promise<{ status: any; data?: Uint8Array }> { P2P_LOGGER.logMessage('SendTo() node ' + peerName + ' task: ' + message, true) - const response: P2PCommandResponse = { - status: { httpStatus: 200, error: '' }, - stream: null - } let peerId try { peerId = peerIdFromString(peerName) } catch (e) { P2P_LOGGER.logMessageWithEmoji( - 'Invalid peer (for id): ' + peerId, + 'Invalid peer (for id): ' + peerName, true, GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - response.status.httpStatus = 404 - response.status.error = 'Invalid peer' - return response + return { status: { httpStatus: 404, error: 'Invalid peer' } } } - let multiaddrs: Multiaddr[] = [] + let multiaddrs: Multiaddr[] = [] if (!multiAddrs || multiAddrs.length < 1) { - // if they are no forced multiaddrs, try to find node multiaddr from peerStore/dht multiaddrs = await this.getPeerMultiaddrs(peerName) } else { - // just used what we were instructed to use for (const addr of multiAddrs) { multiaddrs.push(multiaddr(addr)) } } + if (multiaddrs.length < 1) { - response.status.httpStatus = 404 - response.status.error = `Cannot find any address to dial for peer: ${peerId}` - P2P_LOGGER.error(response.status.error) - return response + const error = `Cannot find any address to dial for peer: ${peerId}` + P2P_LOGGER.error(error) + return { status: { httpStatus: 404, error } } } - let stream - // dial/connect to the target node + let stream: Stream try { const options = { signal: AbortSignal.timeout(10000), @@ -684,48 +675,67 @@ export class OceanP2P extends EventEmitter { } const connection = await this._libp2p.dial(peerId, options) if (connection.remotePeer.toString() !== peerId.toString()) { - response.status.httpStatus = 404 - response.status.error = `Invalid peer on the other side: ${connection.remotePeer.toString()}` - P2P_LOGGER.error(response.status.error) - return response + const error = `Invalid peer on the other side: ${connection.remotePeer.toString()}` + P2P_LOGGER.error(error) + return { status: { httpStatus: 404, error } } } stream = await connection.newStream(this._protocol, options) } catch (e) { - response.status.httpStatus = 404 - response.status.error = `Cannot connect to peer ${peerId}: ${e.message}` - P2P_LOGGER.error(response.status.error) - return response + const error = `Cannot connect to peer ${peerId}: ${e.message}` + P2P_LOGGER.error(error) + return { status: { httpStatus: 404, error } } } - if (stream) { - // @ts-ignore libp2p v3 Stream type differs from Node.js Stream - response.stream = stream - try { - // v3: Use EventTarget stream API - // Send the message - stream.send(uint8ArrayFromString(message)) - // Close write side to signal end of message (v1 receivers wait for stream to end) - // v3 close() closes writes but keeps readable until remote also closes - await stream.close() - - // Pass stream data to sink function (for response handling) - // v3 streams are still AsyncIterable - await sink(stream) - } catch (err) { - P2P_LOGGER.error( - `Cannot connect to peer - Unable to send P2P message: ${err.message}` - ) - response.status.httpStatus = 500 - response.status.error = `Cannot connect to peer - Unable to send P2P message: ${err.message}` - response.stream = null - } - } else { - response.status.httpStatus = 404 - response.status.error = 'Unable to get remote P2P stream (null)' - P2P_LOGGER.error(response.status.error) + if (!stream) { + return { status: { httpStatus: 404, error: 'Unable to get remote P2P stream' } } } - return response + try { + // v3: send() writes a chunk, for await...of reads chunks + stream.send(uint8ArrayFromString(message)) + await stream.close() + + // first chunk is status, rest is data + let status: any + const dataChunks: Uint8Array[] = [] + let isFirstChunk = true + + for await (const chunk of stream) { + const bytes = chunk.subarray() + if (isFirstChunk) { + // First chunk is always status JSON + status = JSON.parse(uint8ArrayToString(bytes)) + isFirstChunk = false + } else { + // Subsequent chunks are data + dataChunks.push(bytes) + } + } + + if (!status) { + return { status: { httpStatus: 500, error: 'No response from peer' } } + } + + // Combine data chunks + let data: Uint8Array | undefined + if (dataChunks.length > 0) { + const totalLength = dataChunks.reduce((sum, chunk) => sum + chunk.length, 0) + data = new Uint8Array(totalLength) + let offset = 0 + for (const chunk of dataChunks) { + data.set(chunk, offset) + offset += chunk.length + } + } + + return { status, data } + } catch (err) { + P2P_LOGGER.error(`P2P communication error: ${err.message}`) + try { + stream.abort(err as Error) + } catch {} + return { status: { httpStatus: 500, error: `P2P error: ${err.message}` } } + } } // when the target is this node diff --git a/src/components/core/handler/ddoHandler.ts b/src/components/core/handler/ddoHandler.ts index 6573514e1..cf2f270a6 100644 --- a/src/components/core/handler/ddoHandler.ts +++ b/src/components/core/handler/ddoHandler.ts @@ -516,7 +516,6 @@ export class FindDdoHandler extends CommandHandler { } // otherwise we need to contact other providers and get DDO from them // ids of available providers - const providerIds: string[] = [] let processed = 0 let toProcess = 0 @@ -532,76 +531,48 @@ export class FindDdoHandler extends CommandHandler { updatedCache = true } - // sink fn - const sink = async function (source: any) { - const chunks: string[] = [] - let first = true + const processDDOResponse = async (peer: string, data: Uint8Array) => { try { - for await (const chunk of source) { - if (first) { - first = false - const str = uint8ArrayToString(chunk.subarray()) // Obs: we need to specify the length of the subarrays - const decoded = JSON.parse(str) - if (decoded.httpStatus !== 200) { - processed++ - break - } - } else { - const str = uint8ArrayToString(chunk.subarray()) - chunks.push(str) + const ddo: any = JSON.parse(uint8ArrayToString(data)) + const isResponseLegit = await checkIfDDOResponseIsLegit(ddo) + + if (isResponseLegit) { + const ddoInfo: FindDDOResponse = { + id: ddo.id, + lastUpdateTx: ddo.indexedMetadata.event.txid, + lastUpdateTime: ddo.metadata.updated, + provider: peer } - } // end for chunk - - const ddo: any = JSON.parse(chunks.toString()) - - chunks.length = 0 - // process it - if (providerIds.length > 0) { - const peer = providerIds.pop() - const isResponseLegit = await checkIfDDOResponseIsLegit(ddo) - if (isResponseLegit) { - const ddoInfo: FindDDOResponse = { - id: ddo.id, - lastUpdateTx: ddo.indexedMetadata.event.txid, - lastUpdateTime: ddo.metadata.updated, - provider: peer - } - resultList.push(ddoInfo) - - CORE_LOGGER.logMessage( - `Succesfully processed DDO info, id: ${ddo.id} from remote peer: ${peer}`, - true - ) + resultList.push(ddoInfo) + + CORE_LOGGER.logMessage( + `Successfully processed DDO info, id: ${ddo.id} from remote peer: ${peer}`, + true + ) + + // Update cache + const ddoCache = p2pNode.getDDOCache() + const localValue = ddoCache.dht.get(ddo.id) + if ( + !localValue || + new Date(ddoInfo.lastUpdateTime) > new Date(localValue.lastUpdateTime) + ) { + ddoCache.dht.set(ddo.id, ddoInfo) + } + updatedCache = true - // is it cached? - const ddoCache = p2pNode.getDDOCache() - if (ddoCache.dht.has(ddo.id)) { - const localValue: FindDDOResponse = ddoCache.dht.get(ddo.id) - if ( - new Date(ddoInfo.lastUpdateTime) > new Date(localValue.lastUpdateTime) - ) { - // update cached version - ddoCache.dht.set(ddo.id, ddoInfo) - } - } else { - // just add it to the list - ddoCache.dht.set(ddo.id, ddoInfo) - } - updatedCache = true - // also store it locally on db - if (configuration.hasIndexer) { - const ddoExistsLocally = await node.getDatabase().ddo.retrieve(ddo.id) - if (!ddoExistsLocally) { - p2pNode.storeAndAdvertiseDDOS([ddo]) - } + // Store locally if indexer is enabled + if (configuration.hasIndexer) { + const ddoExistsLocally = await node.getDatabase().ddo.retrieve(ddo.id) + if (!ddoExistsLocally) { + p2pNode.storeAndAdvertiseDDOS([ddo]) } - } else { - CORE_LOGGER.warn( - `Cannot confirm validity of ${ddo.id} fetch from remote node, skipping it...` - ) } + } else { + CORE_LOGGER.warn( + `Cannot confirm validity of ${ddo.id} from remote node, skipping...` + ) } - processed++ } catch (err) { CORE_LOGGER.logMessageWithEmoji( 'FindDDO: Error on sink function: ' + err.message, @@ -609,10 +580,9 @@ export class FindDdoHandler extends CommandHandler { GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - processed++ } + processed++ } - // end sink // if something goes really bad then exit after 60 secs const fnTimeout = setTimeout(() => { @@ -651,27 +621,20 @@ export class FindDdoHandler extends CommandHandler { id: task.id, command: PROTOCOL_COMMANDS.GET_DDO } - // NOTE: do not push to response until we verify that it is legitimate - providerIds.push(peer) try { - // problem here is that even if we get the P2PCommandResponse right after await(), we still don't know - // exactly when the chunks are written/processed/received on the sink function - // so, better to wait/sleep some small amount of time before proceeding to the next one - const response: P2PCommandResponse = await p2pNode.sendTo( - peer, - JSON.stringify(getCommand), - sink - ) - if (response.status.httpStatus !== 200) { - providerIds.pop() // move to the next one + const response = await p2pNode.sendTo(peer, JSON.stringify(getCommand)) + + if (response.status.httpStatus === 200 && response.data) { + await processDDOResponse(peer, response.data) + } else { processed++ } } catch (innerException) { - providerIds.pop() // ignore this one processed++ } // 'sleep 5 seconds...' + CORE_LOGGER.logMessage( `Sleeping for: ${MAX_WAIT_TIME_SECONDS_GET_DDO} seconds, while getting DDO info remote peer...`, true diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 6256def36..23768de6d 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -1,11 +1,26 @@ /* eslint-disable no-unreachable */ import express, { Request, Response } from 'express' -import { P2PCommandResponse } from '../../@types' +import { Readable } from 'stream' import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import { HTTP_LOGGER } from '../../utils/logging/common.js' import { hasP2PInterface } from '../../utils/config.js' import { validateCommandParameters } from './validateCommands.js' +import { streamToUint8Array } from '../../utils/util.js' + +function writeResponsePayload( + res: Response, + payload: Uint8Array | undefined, + isBinaryContent: boolean +): void { + if (!payload) return + + if (isBinaryContent) { + res.write(payload) + } else { + res.write(uint8ArrayToString(payload)) + } +} export const directCommandRoute = express.Router() directCommandRoute.post( @@ -20,114 +35,77 @@ directCommandRoute.post( } let closedResponse = false - - // detect connection closed res.on('close', () => { if (!closedResponse) { HTTP_LOGGER.error('TCP connection was closed before we could send a response!') } closedResponse = true }) - let isBinaryContent = false - const sink = async function (source: any) { - let first = true - for await (const chunk of source) { - if (first) { - first = false - try { - const str = uint8ArrayToString(chunk.subarray()) // Obs: we need to specify the length of the subarrays - const decoded = JSON.parse(str) - - res.status(decoded.httpStatus) - if ('headers' in decoded) { - res.header(decoded.headers) - // when streaming binary data we cannot convert to plain string, specially if encrypted data - if (str?.toLowerCase().includes('application/octet-stream')) { - isBinaryContent = true - } - } - } catch (e) { - res.status(500) - res.write(uint8ArrayToString(chunk.subarray())) - closedResponse = true - res.end() - HTTP_LOGGER.error(e.message) - } - } else { - try { - if (isBinaryContent) { - // Binary content, could be encrypted - res.write(chunk.subarray()) - } else { - const str = uint8ArrayToString(chunk.subarray()) - res.write(str) - } - } catch (e) { - HTTP_LOGGER.error(e.message) - } - } - } - closedResponse = true - res.end() - } HTTP_LOGGER.logMessage('Sending command : ' + JSON.stringify(req.body), true) - // TODO NOTES: We are sending all "/directCommand" requests to the P2P component as "req.oceanNode.getP2PNode()" - // even if we do not need any P2P functionality at all (as all our handlers are "inside" P2P) - // All ends up here => "handleProtocolCommands()" or here => "handleDirectProtocolCommands()", where we do not have - // any access to main OceanNode, neither Provider or Indexer components - // probably the handlers should be on the OceanNode level, and if they need P2P connectivity we pass them the getP2PNode() - // (we kinda do it already on most handlers anyway) - - let response: P2PCommandResponse = null - // send to this peer (we might not need P2P connectivity) - if ( + const isLocalCommand = !hasP2PInterface || !req.body.node || - req.oceanNode.getP2PNode().isTargetPeerSelf(req.body.node) - ) { - // send to this node - response = await req.oceanNode.handleDirectProtocolCommand( - JSON.stringify(req.body), - sink + req.oceanNode.getP2PNode()?.isTargetPeerSelf(req.body.node) + + if (isLocalCommand) { + // Local command - call handler directly + const response = await req.oceanNode.handleDirectProtocolCommand( + JSON.stringify(req.body) ) - // UPDATED: we can just call the handler directly here, once we have them - // moving some of the logic from "handleProtocolCommands()" and "handleDirectProtocolCommands()" to the OceanNode - // These actions do not need P2P connections directly + + res.status(response.status.httpStatus) + if (response.status.headers) { + res.header(response.status.headers) + } + + const isBinaryContent = + response.status.headers?.['content-type'] + ?.toLowerCase() + .includes('application/octet-stream') || false + + if (response.stream) { + const payload = await streamToUint8Array(response.stream as Readable) + writeResponsePayload(res, payload, isBinaryContent) + } else if (response.status.error) { + res.write(response.status.error) + } + + closedResponse = true + res.end() } else if (hasP2PInterface) { - // send to another peer (Only here we need P2P networking) - response = await req.oceanNode + // Remote command - use P2P sendTo + const response = await req.oceanNode .getP2PNode() - .sendTo( - req.body.node as string, - JSON.stringify(req.body), - sink, - req.body.multiAddrs - ) - } else { - response = { - stream: null, - status: { - httpStatus: 400, - error: 'Invalid or Non Existing P2P configuration' - } + .sendTo(req.body.node as string, JSON.stringify(req.body), req.body.multiAddrs) + + res.status(response.status.httpStatus) + if (response.status.headers) { + res.header(response.status.headers) } - } - // only if response was not already sent - if (response.stream == null && !closedResponse) { - try { - res.statusMessage = response.status.error - res.status(response.status.httpStatus).send(response.status.error) - closedResponse = true - res.end() - } catch (e) { - HTTP_LOGGER.error(e.message) + const isBinaryContent = + response.status.headers?.['content-type'] + ?.toLowerCase() + .includes('application/octet-stream') || false + + if (response.data) { + writeResponsePayload(res, response.data, isBinaryContent) + } else if (response.status.error) { + res.write(response.status.error) } + + closedResponse = true + res.end() + } else { + res.status(400).send('Invalid or Non Existing P2P configuration') + closedResponse = true + res.end() } } catch (err) { HTTP_LOGGER.error(err.message) + res.status(500).send(err.message) } } ) diff --git a/src/utils/util.ts b/src/utils/util.ts index a6c4b1339..16c73fb85 100644 --- a/src/utils/util.ts +++ b/src/utils/util.ts @@ -81,6 +81,14 @@ export function fetchEventFromTransaction( } } +export async function streamToUint8Array(stream: Readable): Promise { + const chunks: Buffer[] = [] + for await (const chunk of stream) { + chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)) + } + return new Uint8Array(Buffer.concat(chunks)) +} + // Helper function to read from a stream export function readStream(stream: Stream): Promise { return new Promise((resolve, reject) => { From f0f88f197f3d4544b48f9fe459c5a307589457f0 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 7 Jan 2026 09:29:36 +0200 Subject: [PATCH 34/43] fix local node command --- src/OceanNode.ts | 2 +- src/components/P2P/index.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/OceanNode.ts b/src/OceanNode.ts index a3cc7057d..cdf36a162 100644 --- a/src/OceanNode.ts +++ b/src/OceanNode.ts @@ -187,7 +187,7 @@ export class OceanNode { return { status: response.status, - stream: Readable.from(data) + stream: Readable.from([data]) } } catch (err) { OCEAN_NODE_LOGGER.logMessageWithEmoji( diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index c0507ab79..ba6dbd709 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -172,11 +172,15 @@ export class OceanP2P extends EventEmitter { if (currentConnections < minConnections || currentConnections < maxConnections) { const existingConnections = this._libp2p.getConnections(peerInfo.id) if (existingConnections.length === 0) { - this._libp2p.dial(peerInfo.id).catch((err: Error) => { - P2P_LOGGER.debug( - `Failed to dial discovered peer ${peerInfo.id}: ${err.message}` - ) - }) + this._libp2p + .dial(peerInfo.id, { + signal: AbortSignal.timeout(10000) + }) + .catch((err: Error) => { + P2P_LOGGER.debug( + `Failed to dial discovered peer ${peerInfo.id}: ${err.message}` + ) + }) } } } catch (e) { From 09afd5e49ae930c200967ae25da378dfe6ef54b3 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Wed, 7 Jan 2026 16:38:11 +0200 Subject: [PATCH 35/43] use peerstore if valid --- src/components/P2P/index.ts | 62 +++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index ba6dbd709..d3fedbde9 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -548,6 +548,34 @@ export class OceanP2P extends EventEmitter { } } + // we should have peer multiaddrs + // but there is a catch + // when dialing multiaddrs, either all of them have peerId, or none.. + // so decide which one to use + normalizeMultiaddrs(peerName: string, multiaddrs: Multiaddr[]): Multiaddr[] { + let finalmultiaddrs: Multiaddr[] = [] + const finalmultiaddrsWithAddress: Multiaddr[] = [] + const finalmultiaddrsWithoutAddress: Multiaddr[] = [] + for (const x of multiaddrs) { + if (x.toString().includes(peerName)) finalmultiaddrsWithAddress.push(x) + else { + let sd = x.toString() + if (x.toString().includes('p2p-circuit')) { + // because a p2p-circuit should always include peerId, if it's missing we will add it + sd = sd + '/p2p/' + peerName + finalmultiaddrsWithAddress.push(multiaddr(sd)) + } else { + finalmultiaddrsWithoutAddress.push(multiaddr(sd)) + } + } + } + if (finalmultiaddrsWithAddress.length > finalmultiaddrsWithoutAddress.length) + finalmultiaddrs = finalmultiaddrsWithAddress + else finalmultiaddrs = finalmultiaddrsWithoutAddress + + return finalmultiaddrs + } + async getPeerMultiaddrs( peerName: string, searchPeerStore: boolean = true, @@ -572,6 +600,15 @@ export class OceanP2P extends EventEmitter { multiaddrs.push(multiaddr(x.multiaddr.toString())) } } + + // If we have a connection, multiaddrs from peerStore are valid + const connection = await this._libp2p.dial(multiaddrs) + if ( + connection.remotePeer.toString() === peerId.toString() && + connection.status === 'open' + ) { + return this.normalizeMultiaddrs(peerName, multiaddrs) + } } catch (e) { // console.log(e) } @@ -593,30 +630,7 @@ export class OceanP2P extends EventEmitter { } } - // now we should have peer multiaddrs - // but there is a catch - // when dialing multiaddrs, either all of them have peerId, or none.. - // so decide which one to use - let finalmultiaddrs: Multiaddr[] = [] - const finalmultiaddrsWithAddress: Multiaddr[] = [] - const finalmultiaddrsWithoutAddress: Multiaddr[] = [] - for (const x of multiaddrs) { - if (x.toString().includes(peerName)) finalmultiaddrsWithAddress.push(x) - else { - let sd = x.toString() - if (x.toString().includes('p2p-circuit')) { - // because a p2p-circuit should always include peerId, if it's missing we will add it - sd = sd + '/p2p/' + peerName - finalmultiaddrsWithAddress.push(multiaddr(sd)) - } else { - finalmultiaddrsWithoutAddress.push(multiaddr(sd)) - } - } - } - if (finalmultiaddrsWithAddress.length > finalmultiaddrsWithoutAddress.length) - finalmultiaddrs = finalmultiaddrsWithAddress - else finalmultiaddrs = finalmultiaddrsWithoutAddress - return finalmultiaddrs + return this.normalizeMultiaddrs(peerName, multiaddrs) } async findPeerInDht(peerName: string, timeout?: number) { From 7acf2b7b4b395bb042b7e881419c86c9dc5cfac8 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 09:07:57 +0200 Subject: [PATCH 36/43] dial multiaddrs instead of peerid --- src/components/P2P/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index d3fedbde9..60d1023f7 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -691,7 +691,7 @@ export class OceanP2P extends EventEmitter { priority: 100, runOnLimitedConnection: true } - const connection = await this._libp2p.dial(peerId, options) + const connection = await this._libp2p.dial(multiaddrs, options) if (connection.remotePeer.toString() !== peerId.toString()) { const error = `Invalid peer on the other side: ${connection.remotePeer.toString()}` P2P_LOGGER.error(error) From 076f885a3749bf9cb216293a09a55ad3c95a4ba2 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 09:11:33 +0200 Subject: [PATCH 37/43] use helper --- src/OceanNode.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/OceanNode.ts b/src/OceanNode.ts index cdf36a162..538f3217b 100644 --- a/src/OceanNode.ts +++ b/src/OceanNode.ts @@ -11,6 +11,7 @@ import { BaseHandler } from './components/core/handler/handler.js' import { C2DEngines } from './components/c2d/compute_engines.js' import { Auth } from './components/Auth/index.js' import { Readable } from 'stream' +import { streamToUint8Array } from './utils/util.js' export interface RequestLimiter { requester: string | string[] // IP address or peer ID @@ -171,11 +172,7 @@ export class OceanNode { let data: Uint8Array | undefined if (response.stream) { - const chunks: Buffer[] = [] - for await (const chunk of response.stream as Readable) { - chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)) - } - data = new Uint8Array(Buffer.concat(chunks)) + data = await streamToUint8Array(response.stream as Readable) } if (!data) { From 0efd7277bc527a81ad5a204ad310b83d94f47908 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 10:36:17 +0200 Subject: [PATCH 38/43] streaming instead of buffering --- src/OceanNode.ts | 24 ++-------- .../Indexer/processors/BaseProcessor.ts | 8 ++-- src/components/P2P/handleProtocolCommands.ts | 15 ++++-- src/components/P2P/index.ts | 40 ++++------------ src/components/core/handler/ddoHandler.ts | 8 ++-- src/components/httpRoutes/commands.ts | 47 +++++++++++++------ 6 files changed, 66 insertions(+), 76 deletions(-) diff --git a/src/OceanNode.ts b/src/OceanNode.ts index 538f3217b..c75be8614 100644 --- a/src/OceanNode.ts +++ b/src/OceanNode.ts @@ -10,8 +10,6 @@ import { GENERIC_EMOJIS, LOG_LEVELS_STR } from './utils/logging/Logger.js' import { BaseHandler } from './components/core/handler/handler.js' import { C2DEngines } from './components/c2d/compute_engines.js' import { Auth } from './components/Auth/index.js' -import { Readable } from 'stream' -import { streamToUint8Array } from './utils/util.js' export interface RequestLimiter { requester: string | string[] // IP address or peer ID @@ -147,7 +145,7 @@ export class OceanNode { /** * v3: Direct protocol command handler - no P2P, just call handler directly - * Returns a clean {status, data} response + * Returns {status, stream} without buffering * @param message - JSON command string */ async handleDirectProtocolCommand(message: string): Promise { @@ -168,24 +166,8 @@ export class OceanNode { } } - const response: P2PCommandResponse = await handler.handle(task) - - let data: Uint8Array | undefined - if (response.stream) { - data = await streamToUint8Array(response.stream as Readable) - } - - if (!data) { - return { - stream: null, - status: { httpStatus: 500, error: 'No data received' } - } - } - - return { - status: response.status, - stream: Readable.from([data]) - } + // Return response directly without buffering + return await handler.handle(task) } catch (err) { OCEAN_NODE_LOGGER.logMessageWithEmoji( 'handleDirectProtocolCommands Error: ' + err.message, diff --git a/src/components/Indexer/processors/BaseProcessor.ts b/src/components/Indexer/processors/BaseProcessor.ts index fe486a2de..94bb097d9 100644 --- a/src/components/Indexer/processors/BaseProcessor.ts +++ b/src/components/Indexer/processors/BaseProcessor.ts @@ -22,7 +22,7 @@ import { getDatabase } from '../../../utils/database.js' import { INDEXER_LOGGER } from '../../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { URLUtils } from '../../../utils/url.js' -import { streamToString } from '../../../utils/util.js' +import { streamToString, streamToUint8Array } from '../../../utils/util.js' import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' with { type: 'json' } import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' with { type: 'json' } @@ -378,11 +378,13 @@ export abstract class BaseEventProcessor { throw new Error(`Decrypt failed: ${response.status.error}`) } - if (!response.data) { + if (!response.stream) { throw new Error('No data received from decrypt') } - ddo = JSON.parse(uint8ArrayToString(response.data)) + // Convert stream to Uint8Array + const data = await streamToUint8Array(response.stream as Readable) + ddo = JSON.parse(uint8ArrayToString(data)) } catch (error) { const message = `Node exception on decrypt DDO. Status: ${error.message}` INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) diff --git a/src/components/P2P/handleProtocolCommands.ts b/src/components/P2P/handleProtocolCommands.ts index f31dece64..09317cb6c 100644 --- a/src/components/P2P/handleProtocolCommands.ts +++ b/src/components/P2P/handleProtocolCommands.ts @@ -13,7 +13,6 @@ import { checkRequestsRateLimit } from '../../utils/validators.js' import type { Stream } from '@libp2p/interface' -import { streamToUint8Array } from '../../utils/util.js' export class ReadableString extends Readable { private sent = false @@ -120,11 +119,21 @@ export async function handleProtocolCommands(stream: Stream, connection: any) { handler.getOceanNode().setRemoteCaller(remotePeer.toString()) const response: P2PCommandResponse = await handler.handle(task) + // Send status first stream.send(uint8ArrayFromString(JSON.stringify(response.status))) + // Stream data chunks without buffering, with backpressure support if (response.stream) { - const dataBytes = await streamToUint8Array(response.stream as Readable) - stream.send(dataBytes) + for await (const chunk of response.stream as Readable) { + const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + + // Handle backpressure - if send returns false, wait for drain + if (!stream.send(bytes)) { + await stream.onDrain({ + signal: AbortSignal.timeout(30000) // 30 second timeout for drain + }) + } + } } await stream.close() diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 60d1023f7..857ca9c95 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -653,7 +653,7 @@ export class OceanP2P extends EventEmitter { peerName: string, message: string, multiAddrs?: string[] - ): Promise<{ status: any; data?: Uint8Array }> { + ): Promise<{ status: any; stream?: AsyncIterable }> { P2P_LOGGER.logMessage('SendTo() node ' + peerName + ' task: ' + message, true) let peerId @@ -709,44 +709,22 @@ export class OceanP2P extends EventEmitter { } try { - // v3: send() writes a chunk, for await...of reads chunks + // Send message and close write side stream.send(uint8ArrayFromString(message)) await stream.close() - // first chunk is status, rest is data - let status: any - const dataChunks: Uint8Array[] = [] - let isFirstChunk = true - - for await (const chunk of stream) { - const bytes = chunk.subarray() - if (isFirstChunk) { - // First chunk is always status JSON - status = JSON.parse(uint8ArrayToString(bytes)) - isFirstChunk = false - } else { - // Subsequent chunks are data - dataChunks.push(bytes) - } - } + // Read and parse status from first chunk + const iterator = stream[Symbol.asyncIterator]() + const { done, value } = await iterator.next() - if (!status) { + if (done || !value) { return { status: { httpStatus: 500, error: 'No response from peer' } } } - // Combine data chunks - let data: Uint8Array | undefined - if (dataChunks.length > 0) { - const totalLength = dataChunks.reduce((sum, chunk) => sum + chunk.length, 0) - data = new Uint8Array(totalLength) - let offset = 0 - for (const chunk of dataChunks) { - data.set(chunk, offset) - offset += chunk.length - } - } + const status = JSON.parse(uint8ArrayToString(value.subarray())) - return { status, data } + // Return status and remaining stream + return { status, stream: { [Symbol.asyncIterator]: () => iterator } } } catch (err) { P2P_LOGGER.error(`P2P communication error: ${err.message}`) try { diff --git a/src/components/core/handler/ddoHandler.ts b/src/components/core/handler/ddoHandler.ts index cf2f270a6..967f0a5c9 100644 --- a/src/components/core/handler/ddoHandler.ts +++ b/src/components/core/handler/ddoHandler.ts @@ -11,7 +11,7 @@ import { } from '../utils/findDdoHandler.js' import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' -import { sleep, readStream } from '../../../utils/util.js' +import { sleep, readStream, streamToUint8Array } from '../../../utils/util.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Blockchain } from '../../../utils/blockchain.js' import { ethers, isAddress } from 'ethers' @@ -625,8 +625,10 @@ export class FindDdoHandler extends CommandHandler { try { const response = await p2pNode.sendTo(peer, JSON.stringify(getCommand)) - if (response.status.httpStatus === 200 && response.data) { - await processDDOResponse(peer, response.data) + if (response.status.httpStatus === 200 && response.stream) { + // Convert stream to Uint8Array for processing + const data = await streamToUint8Array(response.stream as Readable) + await processDDOResponse(peer, data) } else { processed++ } diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 23768de6d..5f66473af 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -1,24 +1,41 @@ /* eslint-disable no-unreachable */ import express, { Request, Response } from 'express' -import { Readable } from 'stream' import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import { HTTP_LOGGER } from '../../utils/logging/common.js' import { hasP2PInterface } from '../../utils/config.js' import { validateCommandParameters } from './validateCommands.js' -import { streamToUint8Array } from '../../utils/util.js' +import { Readable } from 'stream' -function writeResponsePayload( +async function streamToResponse( res: Response, - payload: Uint8Array | undefined, + stream: any, isBinaryContent: boolean -): void { - if (!payload) return +): Promise { + if (!stream) { + HTTP_LOGGER.error('streamToResponse called with null/undefined stream') + throw new Error('Stream is null or undefined') + } + + try { + for await (const chunk of stream) { + if (!chunk) { + continue + } + + // Handle different chunk types (Uint8Array from libp2p or Buffer from Node.js) + const bytes = 'subarray' in chunk ? chunk.subarray() : chunk - if (isBinaryContent) { - res.write(payload) - } else { - res.write(uint8ArrayToString(payload)) + if (isBinaryContent) { + res.write(bytes) + } else { + const data = Buffer.isBuffer(bytes) ? bytes : Buffer.from(bytes) + res.write(uint8ArrayToString(data)) + } + } + } catch (err) { + HTTP_LOGGER.error(`Stream error: ${err.message}`) + throw err } } @@ -27,6 +44,8 @@ directCommandRoute.post( '/directCommand', express.json(), async (req: Request, res: Response): Promise => { + let closedResponse = false + try { const validate = validateCommandParameters(req.body, []) if (!validate.valid) { @@ -34,7 +53,6 @@ directCommandRoute.post( return } - let closedResponse = false res.on('close', () => { if (!closedResponse) { HTTP_LOGGER.error('TCP connection was closed before we could send a response!') @@ -66,8 +84,7 @@ directCommandRoute.post( .includes('application/octet-stream') || false if (response.stream) { - const payload = await streamToUint8Array(response.stream as Readable) - writeResponsePayload(res, payload, isBinaryContent) + await streamToResponse(res, response.stream as Readable, isBinaryContent) } else if (response.status.error) { res.write(response.status.error) } @@ -90,8 +107,8 @@ directCommandRoute.post( ?.toLowerCase() .includes('application/octet-stream') || false - if (response.data) { - writeResponsePayload(res, response.data, isBinaryContent) + if (response.stream) { + await streamToResponse(res, response.stream as Readable, isBinaryContent) } else if (response.status.error) { res.write(response.status.error) } From 9a1a626c6d6b2f6e12be4882d5e6f815b09aa0ff Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 11:13:17 +0200 Subject: [PATCH 39/43] map chunk to buffer --- src/components/httpRoutes/commands.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 5f66473af..342068b0c 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -7,6 +7,22 @@ import { hasP2PInterface } from '../../utils/config.js' import { validateCommandParameters } from './validateCommands.js' import { Readable } from 'stream' +async function mapChunkToBuffer(chunk: any): Promise { + if (typeof chunk === 'string') { + return Buffer.from(chunk) + } + + if (Buffer.isBuffer(chunk)) { + return chunk + } + + if (typeof chunk === 'object' && 'subarray' in chunk) { + return chunk.subarray() + } + + return Buffer.from(JSON.stringify(chunk)) +} + async function streamToResponse( res: Response, stream: any, @@ -23,13 +39,10 @@ async function streamToResponse( continue } - // Handle different chunk types (Uint8Array from libp2p or Buffer from Node.js) - const bytes = 'subarray' in chunk ? chunk.subarray() : chunk - + const data = await mapChunkToBuffer(chunk) if (isBinaryContent) { - res.write(bytes) + res.write(data) } else { - const data = Buffer.isBuffer(bytes) ? bytes : Buffer.from(bytes) res.write(uint8ArrayToString(data)) } } From f2b2bffe6d3dff4d70c77f541d6dce0e4e8b2acf Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 11:20:06 +0200 Subject: [PATCH 40/43] lint fix --- src/components/httpRoutes/commands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 342068b0c..2220ce761 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -7,7 +7,7 @@ import { hasP2PInterface } from '../../utils/config.js' import { validateCommandParameters } from './validateCommands.js' import { Readable } from 'stream' -async function mapChunkToBuffer(chunk: any): Promise { +function mapChunkToBuffer(chunk: any): Buffer | Uint8Array { if (typeof chunk === 'string') { return Buffer.from(chunk) } From 0ec1b6f506f7dae59e26d468791f10b424c492d4 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 8 Jan 2026 14:20:38 +0200 Subject: [PATCH 41/43] no await on mapchunk --- src/components/httpRoutes/commands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 2220ce761..746d4caf7 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -39,7 +39,7 @@ async function streamToResponse( continue } - const data = await mapChunkToBuffer(chunk) + const data = mapChunkToBuffer(chunk) if (isBinaryContent) { res.write(data) } else { From b0de415f90bf660e345253e4323d70a3cdcf9862 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 12 Jan 2026 09:12:58 +0200 Subject: [PATCH 42/43] pause the stream --- src/components/P2P/handleProtocolCommands.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/P2P/handleProtocolCommands.ts b/src/components/P2P/handleProtocolCommands.ts index 09317cb6c..3ca50a52e 100644 --- a/src/components/P2P/handleProtocolCommands.ts +++ b/src/components/P2P/handleProtocolCommands.ts @@ -12,7 +12,7 @@ import { checkGlobalConnectionsRateLimit, checkRequestsRateLimit } from '../../utils/validators.js' -import type { Stream } from '@libp2p/interface' +import type { Connection, Stream } from '@libp2p/interface' export class ReadableString extends Readable { private sent = false @@ -31,9 +31,12 @@ export class ReadableString extends Readable { } } -export async function handleProtocolCommands(stream: Stream, connection: any) { +export async function handleProtocolCommands(stream: Stream, connection: Connection) { const { remotePeer, remoteAddr } = connection + // Pause the stream. We do async operations here before writing. + stream.pause() + P2P_LOGGER.logMessage('Incoming connection from peer ' + remotePeer, true) P2P_LOGGER.logMessage('Using ' + remoteAddr, true) @@ -61,7 +64,7 @@ export async function handleProtocolCommands(stream: Stream, connection: any) { } const now = Date.now() - const rateLimitCheck = checkRequestsRateLimit(remoteAddr, configuration, now) + const rateLimitCheck = checkRequestsRateLimit(remoteAddr.toString(), configuration, now) if (!rateLimitCheck.valid) { P2P_LOGGER.warn( `Incoming request denied to peer: ${remotePeer} (rate limit exceeded)` @@ -79,6 +82,9 @@ export async function handleProtocolCommands(stream: Stream, connection: any) { return } + // Resume the stream. We can now write. + stream.resume() + // v3 streams are AsyncIterable let task: Command try { From 86dd427251fc54e836ba3bda7029ce053dbb63b1 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 12 Jan 2026 09:31:03 +0200 Subject: [PATCH 43/43] resume stream on error --- src/components/P2P/handleProtocolCommands.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/P2P/handleProtocolCommands.ts b/src/components/P2P/handleProtocolCommands.ts index 3ca50a52e..a4bb5a97b 100644 --- a/src/components/P2P/handleProtocolCommands.ts +++ b/src/components/P2P/handleProtocolCommands.ts @@ -42,6 +42,14 @@ export async function handleProtocolCommands(stream: Stream, connection: Connect const sendErrorAndClose = async (httpStatus: number, error: string) => { try { + // Check if stream is already closed + if (stream.status === 'closed' || stream.status === 'closing') { + P2P_LOGGER.warn('Stream already closed, cannot send error response') + return + } + + // Resume stream in case it's paused - we need to write + stream.resume() const status = { httpStatus, error } stream.send(uint8ArrayFromString(JSON.stringify(status))) await stream.close()