From 74696cfb9ea49c6bf1fb0ca6de9f3c625532a4e4 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Wed, 11 Feb 2026 11:41:26 -0700 Subject: [PATCH 1/2] Updated to latest helia-coord v2 version --- package-lock.json | 1413 +++++++++++++---------- package.json | 37 +- src/adapters/ipfs/ipfs.js | 267 +---- test/unit/adapters/ipfs.adapter.unit.js | 161 +-- 4 files changed, 857 insertions(+), 1021 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d33d5a..decdd6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,31 +9,10 @@ "version": "5.0.0", "license": "MIT", "dependencies": { - "@chainsafe/libp2p-gossipsub": "14.1.0", - "@chainsafe/libp2p-noise": "16.0.1", - "@chainsafe/libp2p-yamux": "7.0.1", - "@helia/block-brokers": "4.0.4", - "@helia/routers": "3.0.0", - "@helia/unixfs": "4.0.2", - "@libp2p/bootstrap": "11.0.20", - "@libp2p/circuit-relay-v2": "3.2.2", - "@libp2p/config": "1.1.0", - "@libp2p/identify": "3.0.22", - "@libp2p/kad-dht": "14.2.3", - "@libp2p/keychain": "5.0.14", - "@libp2p/logger": "5.1.8", - "@libp2p/ping": "2.0.22", - "@libp2p/tcp": "10.1.2", - "@libp2p/webrtc": "5.2.2", - "@libp2p/websockets": "9.2.2", - "@multiformats/multiaddr": "12.5.1", "axios": "0.27.2", "bcryptjs": "2.4.3", - "blockstore-fs": "2.0.2", - "datastore-fs": "10.0.2", "glob": "7.1.6", - "helia": "5.2.1", - "helia-coord": "1.10.0", + "helia-coord": "2.0.0", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -48,7 +27,6 @@ "koa-router": "10.0.0", "koa-static": "5.0.0", "koa2-ratelimit": "0.9.1", - "libp2p": "2.7.2", "line-reader": "0.4.0", "minimal-slp-wallet": "7.1.4", "mongoose": "5.13.14", @@ -126,6 +104,18 @@ "weald": "^1.1.0" } }, + "node_modules/@achingbrain/nat-port-mapper/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/@achingbrain/nat-port-mapper/node_modules/interface-datastore": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-9.0.2.tgz", @@ -232,9 +222,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", - "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "peer": true, "dependencies": { @@ -840,40 +830,6 @@ "node": ">=8" } }, - "node_modules/@chris.troutner/retry-queue/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/@chris.troutner/retry-queue/node_modules/p-queue": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz", - "integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@chris.troutner/retry-queue/node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -1449,6 +1405,28 @@ "uint8arrays": "^5.1.0" } }, + "node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/@helia/delegated-routing-v1-http-api-client/node_modules/p-queue": { + "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" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@helia/interface": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@helia/interface/-/interface-5.4.0.tgz", @@ -1465,6 +1443,21 @@ "progress-events": "^1.0.1" } }, + "node_modules/@helia/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==", + "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/@helia/routers": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@helia/routers/-/routers-3.0.0.tgz", @@ -1561,6 +1554,108 @@ "uint8arrays": "^5.1.0" } }, + "node_modules/@helia/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==", + "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/@helia/utils/node_modules/@multiformats/multiaddr-matcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", + "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" + } + }, + "node_modules/@helia/utils/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" + }, + "node_modules/@helia/utils/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/@helia/utils/node_modules/it-byte-stream/node_modules/race-signal": { + "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/@helia/utils/node_modules/libp2p": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz", + "integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==", + "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/interface-internal": "^2.3.19", + "@libp2p/logger": "^5.2.0", + "@libp2p/multistream-select": "^6.0.29", + "@libp2p/peer-collections": "^6.0.35", + "@libp2p/peer-id": "^5.1.9", + "@libp2p/peer-store": "^11.2.7", + "@libp2p/utils": "^6.7.2", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.4.4", + "@multiformats/multiaddr-matcher": "^2.0.0", + "any-signal": "^4.1.1", + "datastore-core": "^10.0.2", + "interface-datastore": "^8.3.1", + "it-byte-stream": "^2.0.2", + "it-merge": "^3.0.11", + "it-parallel": "^3.0.11", + "main-event": "^1.0.1", + "multiformats": "^13.3.6", + "p-defer": "^4.0.1", + "p-retry": "^6.2.1", + "progress-events": "^1.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.1.3", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@helia/utils/node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -1966,6 +2061,21 @@ "uint8arraylist": "^2.4.8" } }, + "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/autonat/node_modules/it-byte-stream": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.4.tgz", @@ -2080,19 +2190,6 @@ "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/config/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/crypto": { "version": "5.1.13", "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.13.tgz", @@ -2122,6 +2219,18 @@ "uint8arraylist": "^2.4.8" } }, + "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": { + "@chainsafe/is-ip": "^2.0.1", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.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", @@ -2166,6 +2275,30 @@ "uint8arraylist": "^2.4.8" } }, + "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/@multiformats/multiaddr-matcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", + "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" + } + }, "node_modules/@libp2p/dcutr/node_modules/it-byte-stream": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.4.tgz", @@ -2282,6 +2415,36 @@ "progress-events": "^1.0.1" } }, + "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==", + "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/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==", + "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": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-14.2.3.tgz", @@ -2338,18 +2501,33 @@ } }, "node_modules/@libp2p/logger": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.1.8.tgz", - "integrity": "sha512-Mevhz+dTQuV5UbwqLMOJZv2IpMg+/89x/Ouq0iKtkgB5vAgTwJ3DlM7+IYOeyzQRUpCPfaRiJet3aBB5wnPMRg==", + "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.5.0", - "@multiformats/multiaddr": "^12.3.3", + "@libp2p/interface": "^2.11.0", + "@multiformats/multiaddr": "^12.4.4", "interface-datastore": "^8.3.1", - "multiformats": "^13.3.1", + "multiformats": "^13.3.6", "weald": "^1.0.4" } }, + "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==", + "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/mdns": { "version": "11.0.47", "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-11.0.47.tgz", @@ -2367,6 +2545,21 @@ "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==", + "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/mplex": { "version": "11.0.47", "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-11.0.47.tgz", @@ -2491,6 +2684,21 @@ "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==", + "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-store": { "version": "11.2.7", "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-11.2.7.tgz", @@ -2513,6 +2721,21 @@ "uint8arrays": "^5.1.0" } }, + "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==", + "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/ping": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-2.0.22.tgz", @@ -2549,6 +2772,12 @@ "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/pubsub/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/@libp2p/pubsub/node_modules/it-length-prefixed": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", @@ -2566,6 +2795,22 @@ "npm": ">=7.0.0" } }, + "node_modules/@libp2p/pubsub/node_modules/p-queue": { + "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" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@libp2p/record": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.9.tgz", @@ -2617,33 +2862,58 @@ } }, "node_modules/@libp2p/upnp-nat": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-3.0.0.tgz", - "integrity": "sha512-0mq49KFo8vtLUIra7+NYjYC6Q9R4Mc6ODJDto0Y9FX6901vWWJ0wvNUPPB0bT/gdEY+VjVxK+VqnNV5gPdbR3w==", + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-3.1.22.tgz", + "integrity": "sha512-+Hm78LtgJzEEFrQDqnL8A2tkiQVAwEEe8aAE1niyBmujNLu1KYmqmmjsH6F5F4wacBOetU0QGXmBNMx6eq42CA==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/nat-port-mapper": "^4.0.0", - "@chainsafe/is-ip": "^2.0.2", - "@libp2p/interface": "^2.3.0", - "@libp2p/interface-internal": "^2.2.0", - "@libp2p/utils": "^6.3.0", - "@multiformats/multiaddr": "^12.3.3", - "@multiformats/multiaddr-matcher": "^1.6.0", + "@achingbrain/nat-port-mapper": "^4.0.2", + "@chainsafe/is-ip": "^2.1.0", + "@libp2p/interface": "^2.11.0", + "@libp2p/interface-internal": "^2.3.19", + "@libp2p/utils": "^6.7.2", + "@multiformats/multiaddr": "^12.4.4", + "@multiformats/multiaddr-matcher": "^2.0.0", + "main-event": "^1.0.1", "p-defer": "^4.0.1", - "race-signal": "^1.1.0" + "race-signal": "^1.1.3" + } + }, + "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==", + "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/upnp-nat/node_modules/@multiformats/multiaddr-matcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", + "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" } }, "node_modules/@libp2p/utils": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.1.tgz", - "integrity": "sha512-x3WImvw4unmx1ZeAedj8AkRe4UImUlkw0ZItYAiKiekElMNUXwv+Yt48dI/LmB38JIof8sng29XvUeCVU3F6OA==", + "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.7", - "@libp2p/interface": "^2.10.5", - "@libp2p/logger": "^5.1.21", + "@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", @@ -2664,17 +2934,19 @@ "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/utils/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/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==", "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" + "@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/webrtc": { @@ -2715,6 +2987,21 @@ "uint8arrays": "^5.1.0" } }, + "node_modules/@libp2p/webrtc/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/webrtc/node_modules/it-length-prefixed": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-10.0.1.tgz", @@ -2805,6 +3092,24 @@ "uint8arraylist": "^2.4.8" } }, + "node_modules/@multiformats/dns/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/@multiformats/dns/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/@multiformats/dns/node_modules/p-queue": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.1.0.tgz", @@ -2843,24 +3148,23 @@ } }, "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": "12.3.5", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.5.tgz", + "integrity": "sha512-f3I7FDd6VM4s3X5dXbmwk8Y99pnvATWj7RorIr+qgeiYCDySp4cwybAFnxdRWeKs6XLPE9meB0p8tK4lQqO8gQ==", "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/multiaddr-matcher": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.6.0.tgz", - "integrity": "sha512-E77lLvQR+50kTAfvjV3g4wr9qCu77Z+6yT0s1hgfh8B4sAXZ8u/YdQJGhjgstgW1kmGy7BXPppROKYijqQsesQ==", + "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": { "@chainsafe/is-ip": "^2.0.1", @@ -2869,9 +3173,9 @@ } }, "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": "11.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.2.tgz", + "integrity": "sha512-SiLFD54zeOJ0qMgo9xv1Tl9O5YktDKAVDP4q4hL16mSq4O4sfFNagNADz8eAofxd6TfQUzGQ3TkRRG9IY2uHRg==", "license": "Apache-2.0 OR MIT", "dependencies": { "@multiformats/multiaddr": "^12.3.0" @@ -3402,127 +3706,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/@psf/bch-js/node_modules/bchaddrjs-slp": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/bchaddrjs-slp/-/bchaddrjs-slp-0.2.14.tgz", - "integrity": "sha512-4EdUV6Kwu2Ae8QyYtLAnHOUu0Zfl0w5wDPbeftiu3+fVr6ZyPmuVKlZtU2HERx76BOngZpGTf+suM3nuPJ0Tuw==", - "license": "MIT", - "dependencies": { - "bs58check": "^2.1.2", - "cashaddrjs-slp": "^0.2.12" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@psf/bch-js/node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@psf/bch-js/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@psf/bch-js/node_modules/bip-schnorr": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.7.tgz", - "integrity": "sha512-Pf1o+whA52l7NC33CZY4eRtcB+dUCT54hKCF8mnw2349CG89LOXODHRWmUEcSSWzoi+Kjg1CtMmw6uV43tmJFA==", - "license": "MIT", - "dependencies": { - "bigi": "^1.4.2", - "ecurve": "^1.0.6", - "js-sha256": "^0.9.0", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@psf/bch-js/node_modules/bip38": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bip38/-/bip38-3.1.1.tgz", - "integrity": "sha512-d5AQWuXS95rdrEBnaKeZ9osMkvDR3QDULbAfoE7xRw0W8jfDrza9CsZwf+UhqjV6lbbfaWCrJIu5uObJlfo5Rw==", - "dependencies": { - "bigi": "^1.2.0", - "browserify-aes": "^1.0.1", - "bs58check": "<3.0.0", - "buffer-xor": "^1.0.2", - "create-hash": "^1.1.1", - "ecurve": "^1.0.0", - "safe-buffer": "~5.1.1", - "scryptsy": "^2.1.0" - } - }, - "node_modules/@psf/bch-js/node_modules/bip38/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/@psf/bch-js/node_modules/bip39": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", - "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", - "license": "ISC", - "dependencies": { - "@noble/hashes": "^1.2.0" - } - }, - "node_modules/@psf/bch-js/node_modules/bitcoinjs-message": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz", - "integrity": "sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==", - "license": "MIT", - "dependencies": { - "bech32": "^1.1.3", - "bs58check": "^2.1.2", - "buffer-equals": "^1.0.3", - "create-hash": "^1.1.2", - "secp256k1": "^3.0.1", - "varuint-bitcoin": "^1.0.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@psf/bch-js/node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@psf/bch-js/node_modules/satoshi-bitcoin": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/satoshi-bitcoin/-/satoshi-bitcoin-1.0.5.tgz", - "integrity": "sha512-iCUOSe8yTOqetYcj/n4ziv0psqRMRZT4+YhcMrQIYpjnx3Pgn9uiTlaUItNMMB/0sldINEGkJvxwTW55OfrYPg==", - "license": "MIT", - "dependencies": { - "big.js": "^3.1.3" - } - }, - "node_modules/@psf/bch-js/node_modules/slp-mdm": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/slp-mdm/-/slp-mdm-0.0.7.tgz", - "integrity": "sha512-XlnDS7y8fnEt9I5lw/GqcrDjTGw5vZon83xlliLyihz2EvjE135ubIBzq4bmjVOrM669G9A6bkqEp5Y1trPV3A==", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, "node_modules/@psf/bip21": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@psf/bip21/-/bip21-2.0.1.tgz", @@ -3583,9 +3766,9 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.0.tgz", + "integrity": "sha512-YiU9h1IN0pvvZsHbd03MaD7mE2q+ySaKMlE9tWK+3iiwtbEaMQOsMUuSJ1er2LU6ERMWfhfvCYgWpKRGOMeN8A==", "license": "MIT", "peer": true, "engines": { @@ -3593,18 +3776,18 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.0.tgz", + "integrity": "sha512-TcTAO58JigCw9onYTrbE2yK2js5YNgqbmnpYyq9oXz2mofbX7JcK53kIi7fhqyJhie8RkY+X85zSOTWNs6S3CA==", "license": "MIT", "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", - "glob": "^7.1.1", "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { @@ -3659,13 +3842,13 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.0.tgz", + "integrity": "sha512-uYoLBHnAzod4E5dA5rPPQeny2A5RD0PiIJQ4r+2F7cvA+5bZ8+znxw4TdaSiEk8uhN+clffI4d2bl9V4+xEK+Q==", "license": "MIT", "peer": true, "dependencies": { - "@react-native/dev-middleware": "0.83.1", + "@react-native/dev-middleware": "0.84.0", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.83.3", @@ -3690,9 +3873,9 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.0.tgz", + "integrity": "sha512-n7JKYVDCbA2aj8/5/OD1IK7nuiAYj5l/Z6yhGf7GG4EGaeQdthqdb0LZbseaRPyZK/7tLfdnLdqlqdTQC6/UTQ==", "license": "BSD-3-Clause", "peer": true, "engines": { @@ -3700,13 +3883,14 @@ } }, "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.0.tgz", + "integrity": "sha512-5t/NvQLYk/d0kWlGOMNobkjfimqBc+/LYRmSOkgKm+pyOhxjygCLSnRjAUkeRALSZ8h6MKGTz1Wc4pbmJr7T0Q==", "license": "MIT", "peer": true, "dependencies": { "cross-spawn": "^7.0.6", + "debug": "^4.4.0", "fb-dotslash": "0.5.8" }, "engines": { @@ -3714,15 +3898,15 @@ } }, "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.0.tgz", + "integrity": "sha512-c0o7YW39AUI1FSLV/TFSszr87kQGmaePAQK0ygIRnwZ2fAGDnQ5Iu/tk3u9O5lVH6nTjfAwTKJ3El9YeEWDeEQ==", "license": "MIT", "peer": true, "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", + "@react-native/debugger-frontend": "0.84.0", + "@react-native/debugger-shell": "0.84.0", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -3760,9 +3944,9 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.0.tgz", + "integrity": "sha512-j8g/I4Z+SAdh2NXOVng4rmfYgPoeJBZwAKoGPpSe/wB/9XDLh9IRGUTg8dGS5BWUy2471xBUoGZPwHb6QMJmVw==", "license": "MIT", "peer": true, "engines": { @@ -3770,9 +3954,9 @@ } }, "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.0.tgz", + "integrity": "sha512-xaxmzYWLgHH+2uAZQ0owEkDE58hOTWmuBKD/Gl+cDFD3mFfSK4lZpin/3hiXtE5LB4BwgqICsPN07zCAqx6Fpg==", "license": "MIT", "peer": true, "engines": { @@ -3780,16 +3964,16 @@ } }, "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.0.tgz", + "integrity": "sha512-7JgZyWtQ9Sz4qZvCTsURUtuv8/niEZ/iCorp7eExc3GgpBWNazPumieiUoWPdgRKofU0Bqpr2/dJevEn2hrlwA==", "license": "MIT", "peer": true }, "node_modules/@react-native/virtualized-lists": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", - "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.84.0.tgz", + "integrity": "sha512-ugwSj0Gb4MYrcm8uQrQw8qHPx5RKGDLuZRAP/AuwneFizHx8YCLBEFbOYRGWgxHBRtkJ70D1o+jpIx3CK3p5lw==", "license": "MIT", "peer": true, "dependencies": { @@ -4111,9 +4295,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "license": "MIT", "peer": true }, @@ -4404,9 +4588,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", - "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -4743,13 +4927,13 @@ } }, "node_modules/acme-client/node_modules/axios": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", - "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -5010,7 +5194,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -5576,6 +5760,12 @@ "follow-redirects": "^1.14.8" } }, + "node_modules/bch-consumer/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "license": "MIT" + }, "node_modules/bch-consumer/node_modules/apidoc": { "version": "0.51.0", "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.51.0.tgz", @@ -5628,11 +5818,99 @@ "follow-redirects": "^1.14.7" } }, + "node_modules/bch-consumer/node_modules/bchaddrjs-slp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/bchaddrjs-slp/-/bchaddrjs-slp-0.2.5.tgz", + "integrity": "sha512-33flmPcqMFswerKu7477DSUNMVMQR3tHDk3lvbmsdkEva+TxVGGWWE/p5Lqx9M/8t3vkbe7fzmVhj4QhChcCyA==", + "license": "MIT", + "dependencies": { + "bs58check": "^2.1.2", + "cashaddrjs-slp": "^0.2.11" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/bch-consumer/node_modules/big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bch-consumer/node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bch-consumer/node_modules/bip-schnorr": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.3.0.tgz", + "integrity": "sha512-Sc1Hn2+1n+okPEW8G+JLjeaM12dsUOwr+oFlMDSKR9wYwNGMw0alskeBIHTmXxBxMZSWKhCW7PwKQVDyGmnaVg==", + "license": "MIT", + "dependencies": { + "ecurve": "^1.0.6", + "js-sha256": "^0.9.0", + "random-bytes": "^1.0.0", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/bch-consumer/node_modules/bip38": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bip38/-/bip38-2.0.2.tgz", + "integrity": "sha512-22KDak0RDyghFbR0Si7wyq9IgY423YzGYzWLpGeofH3DaolOQqjD3mNN08eFoubKlbyclOQKFwtONMv2SD9V3A==", + "dependencies": { + "bigi": "^1.2.0", + "browserify-aes": "^1.0.1", + "bs58check": "<3.0.0", + "buffer-xor": "^1.0.2", + "create-hash": "^1.1.1", + "ecurve": "^1.0.0", + "scryptsy": "^2.0.0" + } + }, + "node_modules/bch-consumer/node_modules/bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "license": "ISC", + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/bch-consumer/node_modules/bitcoinjs-message": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.0.0.tgz", + "integrity": "sha512-H5pJC7/eSqVjREiEOZ4jifX+7zXYP3Y28GIOIqg9hrgE7Vj8Eva9+HnVqnxwA1rJPOwZKuw0vo6k0UxgVc6q1A==", + "license": "MIT", + "dependencies": { + "bs58check": "^2.0.2", + "buffer-equals": "^1.0.3", + "create-hash": "^1.1.2", + "secp256k1": "^3.0.1", + "varuint-bitcoin": "^1.0.1" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/bch-consumer/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5649,6 +5927,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/bch-consumer/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, "node_modules/bch-consumer/node_modules/randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -5664,6 +5948,24 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, + "node_modules/bch-consumer/node_modules/satoshi-bitcoin": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/satoshi-bitcoin/-/satoshi-bitcoin-1.0.4.tgz", + "integrity": "sha512-YuHOmw5wsz6wuHIQdsz5b2cgtuKtV/jEcZ4NGmWN5tM/gz5T9Q+DSuLlnuf5BP/jsQWgR0ofmY4f8Dm6JnqSug==", + "license": "MIT", + "dependencies": { + "big.js": "^3.1.3" + } + }, + "node_modules/bch-consumer/node_modules/slp-mdm": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/slp-mdm/-/slp-mdm-0.0.6.tgz", + "integrity": "sha512-fbjlIg/o8OtzgK2JydC6POJp3Qup/rLgy4yB5hoLgxWRlERyJyE29ScwS3r9TTwPxe12qK55pyivAdNOZZXL0A==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/bch-donation": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/bch-donation/-/bch-donation-1.1.2.tgz", @@ -5720,7 +6022,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5751,13 +6053,13 @@ } }, "node_modules/bchaddrjs-slp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/bchaddrjs-slp/-/bchaddrjs-slp-0.2.5.tgz", - "integrity": "sha512-33flmPcqMFswerKu7477DSUNMVMQR3tHDk3lvbmsdkEva+TxVGGWWE/p5Lqx9M/8t3vkbe7fzmVhj4QhChcCyA==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/bchaddrjs-slp/-/bchaddrjs-slp-0.2.14.tgz", + "integrity": "sha512-4EdUV6Kwu2Ae8QyYtLAnHOUu0Zfl0w5wDPbeftiu3+fVr6ZyPmuVKlZtU2HERx76BOngZpGTf+suM3nuPJ0Tuw==", "license": "MIT", "dependencies": { "bs58check": "^2.1.2", - "cashaddrjs-slp": "^0.2.11" + "cashaddrjs-slp": "^0.2.12" }, "engines": { "node": ">= 6.0.0" @@ -5816,9 +6118,9 @@ "integrity": "sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw==" }, "node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { "node": "*" @@ -5846,24 +6148,25 @@ } }, "node_modules/bip-schnorr": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.3.0.tgz", - "integrity": "sha512-Sc1Hn2+1n+okPEW8G+JLjeaM12dsUOwr+oFlMDSKR9wYwNGMw0alskeBIHTmXxBxMZSWKhCW7PwKQVDyGmnaVg==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.7.tgz", + "integrity": "sha512-Pf1o+whA52l7NC33CZY4eRtcB+dUCT54hKCF8mnw2349CG89LOXODHRWmUEcSSWzoi+Kjg1CtMmw6uV43tmJFA==", "license": "MIT", "dependencies": { + "bigi": "^1.4.2", "ecurve": "^1.0.6", "js-sha256": "^0.9.0", - "random-bytes": "^1.0.0", - "safe-buffer": "^5.0.1" + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" }, "engines": { "node": ">=8.0.0" } }, "node_modules/bip38": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bip38/-/bip38-2.0.2.tgz", - "integrity": "sha512-22KDak0RDyghFbR0Si7wyq9IgY423YzGYzWLpGeofH3DaolOQqjD3mNN08eFoubKlbyclOQKFwtONMv2SD9V3A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bip38/-/bip38-3.1.1.tgz", + "integrity": "sha512-d5AQWuXS95rdrEBnaKeZ9osMkvDR3QDULbAfoE7xRw0W8jfDrza9CsZwf+UhqjV6lbbfaWCrJIu5uObJlfo5Rw==", "dependencies": { "bigi": "^1.2.0", "browserify-aes": "^1.0.1", @@ -5871,27 +6174,25 @@ "buffer-xor": "^1.0.2", "create-hash": "^1.1.1", "ecurve": "^1.0.0", - "scryptsy": "^2.0.0" + "safe-buffer": "~5.1.1", + "scryptsy": "^2.1.0" } }, + "node_modules/bip38/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/bip39": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", - "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", "license": "ISC", "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" + "@noble/hashes": "^1.2.0" } }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "license": "MIT" - }, "node_modules/bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -5902,12 +6203,13 @@ } }, "node_modules/bitcoinjs-message": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.0.0.tgz", - "integrity": "sha512-H5pJC7/eSqVjREiEOZ4jifX+7zXYP3Y28GIOIqg9hrgE7Vj8Eva9+HnVqnxwA1rJPOwZKuw0vo6k0UxgVc6q1A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz", + "integrity": "sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==", "license": "MIT", "dependencies": { - "bs58check": "^2.0.2", + "bech32": "^1.1.3", + "bs58check": "^2.1.2", "buffer-equals": "^1.0.3", "create-hash": "^1.1.2", "secp256k1": "^3.0.1", @@ -5977,19 +6279,6 @@ "multiformats": "^13.3.6" } }, - "node_modules/blockstore-core/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/blockstore-fs": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/blockstore-fs/-/blockstore-fs-2.0.2.tgz", @@ -6393,9 +6682,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001767", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", - "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", "funding": [ { "type": "opencollective", @@ -6870,6 +7159,13 @@ "proto-list": "~1.2.1" } }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -7232,19 +7528,6 @@ "it-take": "^3.0.8" } }, - "node_modules/datastore-core/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/datastore-fs": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/datastore-fs/-/datastore-fs-10.0.2.tgz", @@ -7834,9 +8117,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", - "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", "license": "ISC" }, "node_modules/elliptic": { @@ -7911,13 +8194,13 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.4", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" @@ -8848,9 +9131,9 @@ } }, "node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "license": "MIT" }, "node_modules/events": { @@ -9749,7 +10032,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -10195,17 +10478,36 @@ } }, "node_modules/helia-coord": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-1.10.0.tgz", - "integrity": "sha512-aN0zO0fe2Zyctie7UAf/R48SFwa6OE+TK6AzbStI7el7ru3QfjfOX9Ksq9pg1j7DqG6zM2pfVbQjIsKD5kMTTA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-2.0.0.tgz", + "integrity": "sha512-wVEc4RmTZMEYkeXHVTnPRepzg9IztrLcN6gh+YonicGn9wKPdX4vfpeX0qyUCV5YAycEBO5VvIlRyTDLxP9lSQ==", "license": "MIT", "dependencies": { + "@chainsafe/libp2p-gossipsub": "14.1.0", + "@chainsafe/libp2p-noise": "16.0.1", + "@chainsafe/libp2p-yamux": "7.0.1", "@chris.troutner/retry-queue": "1.0.10", + "@helia/block-brokers": "4.0.4", + "@helia/routers": "3.0.0", + "@helia/unixfs": "4.0.2", + "@libp2p/bootstrap": "11.0.20", + "@libp2p/circuit-relay-v2": "3.2.2", + "@libp2p/config": "1.1.0", + "@libp2p/identify": "3.0.22", + "@libp2p/kad-dht": "14.2.3", + "@libp2p/keychain": "5.0.14", + "@libp2p/ping": "2.0.22", + "@libp2p/tcp": "10.1.2", + "@libp2p/webrtc": "5.2.2", + "@libp2p/websockets": "9.2.2", + "@multiformats/multiaddr": "12.3.5", "bch-encrypt-lib": "2.1.1", + "blockstore-fs": "2.0.2", + "datastore-fs": "10.0.2", + "helia": "5.2.1", + "libp2p": "2.7.2", + "public-ip": "6.0.1", "uuid": "9.0.0" - }, - "peerDependencies": { - "libp2p": "=2.7.2" } }, "node_modules/helia-coord/node_modules/uuid": { @@ -10218,9 +10520,9 @@ } }, "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "version": "250829098.0.7", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.7.tgz", + "integrity": "sha512-8QOmg1VjAWv8poFVslJDY8qkvjTy/UiO3R/hyGoC0IAchLzBdS9/TmAvI9cN1F3yLTEjimAIQQtUslpBMPXVVg==", "license": "MIT", "peer": true }, @@ -10706,10 +11008,13 @@ "license": "ISC" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, "node_modules/interface-blockstore": { "version": "5.3.2", @@ -10833,6 +11138,28 @@ "progress-events": "^1.0.1" } }, + "node_modules/ipfs-unixfs-exporter/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/ipfs-unixfs-exporter/node_modules/p-queue": { + "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" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ipfs-unixfs-importer": { "version": "15.4.0", "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-15.4.0.tgz", @@ -10901,6 +11228,18 @@ "weald": "^1.1.0" } }, + "node_modules/ipns/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/ipns/node_modules/interface-datastore": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-9.0.2.tgz", @@ -12470,7 +12809,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", "dependencies": { "tsscmp": "1.0.6" @@ -12893,19 +13231,6 @@ "uint8arrays": "^5.1.0" } }, - "node_modules/libp2p/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/node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", @@ -13988,40 +14313,6 @@ "p-retry": "5.1.1" } }, - "node_modules/minimal-slp-wallet/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/minimal-slp-wallet/node_modules/p-queue": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz", - "integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimal-slp-wallet/node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -14085,7 +14376,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "license": "MIT", - "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -14177,7 +14467,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -17831,16 +18121,28 @@ } }, "node_modules/p-queue": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", - "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz", + "integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==", "license": "MIT", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18677,6 +18979,12 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -18737,20 +19045,20 @@ "peer": true }, "node_modules/react-native": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", - "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.84.0.tgz", + "integrity": "sha512-CcBfucLDHz8MAjQx9kFXasYtpcn8zP1YapUgGtAy0psRZTLShwF9yeh5+ErSgEK2gXV1CCSz7hqCZqx1eMyBLA==", "license": "MIT", "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.83.1", - "@react-native/codegen": "0.83.1", - "@react-native/community-cli-plugin": "0.83.1", - "@react-native/gradle-plugin": "0.83.1", - "@react-native/js-polyfills": "0.83.1", - "@react-native/normalize-colors": "0.83.1", - "@react-native/virtualized-lists": "0.83.1", + "@react-native/assets-registry": "0.84.0", + "@react-native/codegen": "0.84.0", + "@react-native/community-cli-plugin": "0.84.0", + "@react-native/gradle-plugin": "0.84.0", + "@react-native/js-polyfills": "0.84.0", + "@react-native/normalize-colors": "0.84.0", + "@react-native/virtualized-lists": "0.84.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -18759,8 +19067,7 @@ "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.14.0", + "hermes-compiler": "250829098.0.7", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", @@ -18775,6 +19082,7 @@ "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" @@ -18787,7 +19095,7 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.2.0" + "react": "^19.2.3" }, "peerDependenciesMeta": { "@types/react": { @@ -19679,9 +19987,9 @@ } }, "node_modules/satoshi-bitcoin": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/satoshi-bitcoin/-/satoshi-bitcoin-1.0.4.tgz", - "integrity": "sha512-YuHOmw5wsz6wuHIQdsz5b2cgtuKtV/jEcZ4NGmWN5tM/gz5T9Q+DSuLlnuf5BP/jsQWgR0ofmY4f8Dm6JnqSug==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/satoshi-bitcoin/-/satoshi-bitcoin-1.0.5.tgz", + "integrity": "sha512-iCUOSe8yTOqetYcj/n4ziv0psqRMRZT4+YhcMrQIYpjnx3Pgn9uiTlaUItNMMB/0sldINEGkJvxwTW55OfrYPg==", "license": "MIT", "dependencies": { "big.js": "^3.1.3" @@ -19879,9 +20187,9 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -20576,9 +20884,9 @@ "license": "MIT" }, "node_modules/slp-mdm": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/slp-mdm/-/slp-mdm-0.0.6.tgz", - "integrity": "sha512-fbjlIg/o8OtzgK2JydC6POJp3Qup/rLgy4yB5hoLgxWRlERyJyE29ScwS3r9TTwPxe12qK55pyivAdNOZZXL0A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/slp-mdm/-/slp-mdm-0.0.7.tgz", + "integrity": "sha512-XlnDS7y8fnEt9I5lw/GqcrDjTGw5vZon83xlliLyihz2EvjE135ubIBzq4bmjVOrM669G9A6bkqEp5Y1trPV3A==", "license": "MIT", "dependencies": { "bignumber.js": "^9.0.0" @@ -21418,7 +21726,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -21745,6 +22053,54 @@ "node": ">= 4.5.0" } }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", @@ -22462,9 +22818,9 @@ } }, "node_modules/webpack": { - "version": "5.104.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", - "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "version": "5.105.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.1.tgz", + "integrity": "sha512-Gdj3X74CLJJ8zy4URmK42W7wTZUJrqL+z8nyGEr4dTN0kb3nVs+ZvjbTOqRYPD7qX4tUmwyHL9Q9K6T1seW6Yw==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -22477,7 +22833,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.4", + "enhanced-resolve": "^5.19.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -22490,7 +22846,7 @@ "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.4.4", + "watchpack": "^2.5.1", "webpack-sources": "^3.3.3" }, "bin": { @@ -22877,7 +23233,6 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "license": "ISC", - "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -23019,19 +23374,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/x402-bch-axios/node_modules/bchaddrjs-slp": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/bchaddrjs-slp/-/bchaddrjs-slp-0.2.14.tgz", - "integrity": "sha512-4EdUV6Kwu2Ae8QyYtLAnHOUu0Zfl0w5wDPbeftiu3+fVr6ZyPmuVKlZtU2HERx76BOngZpGTf+suM3nuPJ0Tuw==", - "license": "MIT", - "dependencies": { - "bs58check": "^2.1.2", - "cashaddrjs-slp": "^0.2.12" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/x402-bch-axios/node_modules/big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -23041,89 +23383,11 @@ "node": "*" } }, - "node_modules/x402-bch-axios/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/x402-bch-axios/node_modules/bip-schnorr": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.7.tgz", - "integrity": "sha512-Pf1o+whA52l7NC33CZY4eRtcB+dUCT54hKCF8mnw2349CG89LOXODHRWmUEcSSWzoi+Kjg1CtMmw6uV43tmJFA==", - "license": "MIT", - "dependencies": { - "bigi": "^1.4.2", - "ecurve": "^1.0.6", - "js-sha256": "^0.9.0", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/x402-bch-axios/node_modules/bip38": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bip38/-/bip38-3.1.1.tgz", - "integrity": "sha512-d5AQWuXS95rdrEBnaKeZ9osMkvDR3QDULbAfoE7xRw0W8jfDrza9CsZwf+UhqjV6lbbfaWCrJIu5uObJlfo5Rw==", - "dependencies": { - "bigi": "^1.2.0", - "browserify-aes": "^1.0.1", - "bs58check": "<3.0.0", - "buffer-xor": "^1.0.2", - "create-hash": "^1.1.1", - "ecurve": "^1.0.0", - "safe-buffer": "~5.1.1", - "scryptsy": "^2.1.0" - } - }, - "node_modules/x402-bch-axios/node_modules/bip38/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/x402-bch-axios/node_modules/bip39": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", - "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", - "license": "ISC", - "dependencies": { - "@noble/hashes": "^1.2.0" - } - }, - "node_modules/x402-bch-axios/node_modules/bitcoinjs-message": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz", - "integrity": "sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==", - "license": "MIT", - "dependencies": { - "bech32": "^1.1.3", - "bs58check": "^2.1.2", - "buffer-equals": "^1.0.3", - "create-hash": "^1.1.2", - "secp256k1": "^3.0.1", - "varuint-bitcoin": "^1.0.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/x402-bch-axios/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, "node_modules/x402-bch-axios/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -23140,15 +23404,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/x402-bch-axios/node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/x402-bch-axios/node_modules/minimal-slp-wallet": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/minimal-slp-wallet/-/minimal-slp-wallet-7.0.5.tgz", @@ -23162,52 +23417,6 @@ "crypto-js": "4.0.0" } }, - "node_modules/x402-bch-axios/node_modules/p-queue": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.0.tgz", - "integrity": "sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/x402-bch-axios/node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/x402-bch-axios/node_modules/satoshi-bitcoin": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/satoshi-bitcoin/-/satoshi-bitcoin-1.0.5.tgz", - "integrity": "sha512-iCUOSe8yTOqetYcj/n4ziv0psqRMRZT4+YhcMrQIYpjnx3Pgn9uiTlaUItNMMB/0sldINEGkJvxwTW55OfrYPg==", - "license": "MIT", - "dependencies": { - "big.js": "^3.1.3" - } - }, - "node_modules/x402-bch-axios/node_modules/slp-mdm": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/slp-mdm/-/slp-mdm-0.0.7.tgz", - "integrity": "sha512-XlnDS7y8fnEt9I5lw/GqcrDjTGw5vZon83xlliLyihz2EvjE135ubIBzq4bmjVOrM669G9A6bkqEp5Y1trPV3A==", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, "node_modules/x402-bch-axios/node_modules/x402-bch-axios": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/x402-bch-axios/-/x402-bch-axios-2.1.0.tgz", diff --git a/package.json b/package.json index 29c9ac9..1b06a7e 100644 --- a/package.json +++ b/package.json @@ -25,31 +25,10 @@ }, "repository": "Permissionless-Software-Foundation/ipfs-service-provider", "dependencies": { - "@chainsafe/libp2p-gossipsub": "14.1.0", - "@chainsafe/libp2p-noise": "16.0.1", - "@chainsafe/libp2p-yamux": "7.0.1", - "@helia/block-brokers": "4.0.4", - "@helia/routers": "3.0.0", - "@helia/unixfs": "4.0.2", - "@libp2p/bootstrap": "11.0.20", - "@libp2p/circuit-relay-v2": "3.2.2", - "@libp2p/config": "1.1.0", - "@libp2p/identify": "3.0.22", - "@libp2p/kad-dht": "14.2.3", - "@libp2p/keychain": "5.0.14", - "@libp2p/logger": "5.1.8", - "@libp2p/ping": "2.0.22", - "@libp2p/tcp": "10.1.2", - "@libp2p/webrtc": "5.2.2", - "@libp2p/websockets": "9.2.2", - "@multiformats/multiaddr": "12.5.1", "axios": "0.27.2", "bcryptjs": "2.4.3", - "blockstore-fs": "2.0.2", - "datastore-fs": "10.0.2", "glob": "7.1.6", - "helia": "5.2.1", - "helia-coord": "1.10.0", + "helia-coord": "2.0.0", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -64,7 +43,6 @@ "koa-router": "10.0.0", "koa-static": "5.0.0", "koa2-ratelimit": "0.9.1", - "libp2p": "2.7.2", "line-reader": "0.4.0", "minimal-slp-wallet": "7.1.4", "mongoose": "5.13.14", @@ -105,18 +83,5 @@ "ignore": [ "/test/unit/mocks/**/*.js" ] - }, - "overrides": { - "@multiformats/multiaddr-to-uri": "10.1.2", - "@multiformats/multiaddr-matcher": "1.6.0", - "@multiformats/multiaddr": "12.5.1", - "helia": { - "libp2p": "2.7.2", - "@libp2p/upnp-nat": "3.0.0" - }, - "libp2p": { - "@multiformats/multiaddr": "12.5.1" - }, - "@libp2p/utils": "6.7.1" } } diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 7ca3163..7d8e82f 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -3,39 +3,12 @@ This library deals with IPFS so that the apps business logic doesn't need to have any specific knowledge of the js-ipfs library. - TODO: Add the external IP address to the list of multiaddrs advertised by - this node. See this GitHub Issue for details: - https://github.com/Permissionless-Software-Foundation/ipfs-service-provider/issues/38 + Node creation is delegated to helia-coord's CreateHeliaNode factory, + which encapsulates all helia/libp2p dependencies and configuration. */ // Global npm libraries -import { createHelia } from 'helia' -import { libp2pRouting } from '@helia/routers' -import { bitswap } from '@helia/block-brokers' -import fs from 'fs' -import { FsBlockstore } from 'blockstore-fs' -import { FsDatastore } from 'datastore-fs' -import { createLibp2p } from 'libp2p' -import { tcp } from '@libp2p/tcp' -import { noise } from '@chainsafe/libp2p-noise' -import { yamux } from '@chainsafe/libp2p-yamux' -import { bootstrap } from '@libp2p/bootstrap' -// import { identifyService } from 'libp2p/identify' -import { identify, identifyPush } from '@libp2p/identify' -import { kadDHT } from '@libp2p/kad-dht' -import { circuitRelayServer, circuitRelayTransport } from '@libp2p/circuit-relay-v2' -// import { circuitRelayServer } from '@libp2p/circuit-relay-v2' -import { gossipsub } from '@chainsafe/libp2p-gossipsub' -import { webSockets } from '@libp2p/websockets' -import { publicIpv4 } from 'public-ip' -import { multiaddr } from '@multiformats/multiaddr' -import { webRTC, webRTCDirect } from '@libp2p/webrtc' -import { keychain } from '@libp2p/keychain' -import { unixfs } from '@helia/unixfs' -// import { generateKeyPairFromSeed } from '@libp2p/crypto/keys' -// import crypto from 'crypto' -import { ping } from '@libp2p/ping' -import { loadOrCreateSelfKey } from '@libp2p/config' +import CreateHeliaNode from 'helia-coord/create-helia-node' // Local libraries import config from '../../../config/index.js' @@ -45,59 +18,44 @@ import JsonFiles from '../json-files.js' // https://blog.logrocket.com/alternatives-dirname-node-js-es-modules/ import * as url from 'url' const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) -// console.log('__dirname: ', __dirname) -const ROOT_DIR = `${__dirname}../../../` const IPFS_DIR = `${__dirname}../../../.ipfsdata/ipfs` class IpfsAdapter { constructor (localConfig) { // Encapsulate dependencies this.config = config - this.fs = fs - this.createLibp2p = createLibp2p - this.publicIp = publicIpv4 - this.multiaddr = multiaddr this.jsonFiles = new JsonFiles() - this.keychain = keychain - this.createHelia = createHelia // Properties of this class instance. this.isReady = false // Bind 'this' object to all subfunctions this.start = this.start.bind(this) - this.createNode = this.createNode.bind(this) this.stop = this.stop.bind(this) - this.ensureBlocksDir = this.ensureBlocksDir.bind(this) - // this.getPrivateKey = this.getPrivateKey.bind(this) this.getSeed = this.getSeed.bind(this) } // Start an IPFS node. async start () { try { - // Ensure the directory structure exists that is needed by the IPFS node to store data. - this.ensureBlocksDir() + // Create the helia-coord node factory with production configuration. + this.heliaNode = new CreateHeliaNode({ + ipfsDir: IPFS_DIR, + tcpPort: this.config.ipfsTcpPort, + wsPort: this.config.ipfsWsPort, + isCircuitRelay: this.config.isCircuitRelay, + getSeed: this.getSeed + }) - // Create an IPFS node - const ipfs = await this.createNode() - // console.log('ipfs: ', ipfs) + // Start the IPFS node (creates dirs, libp2p, helia, detects public IP) + const ipfs = await this.heliaNode.start() + + this.id = this.heliaNode.id + this.multiaddrs = this.heliaNode.multiaddrs - this.id = ipfs.libp2p.peerId.toString() console.log('IPFS ID: ', this.id) - - // Attempt to guess our ip4 IP address. - const ip4 = await this.publicIp() - let detectedMultiaddr = `/ip4/${ip4}/tcp/${this.config.ipfsTcpPort}/p2p/${this.id}` - detectedMultiaddr = this.multiaddr(detectedMultiaddr) - - // Get the multiaddrs for the node. - const multiaddrs = ipfs.libp2p.getMultiaddrs() - multiaddrs.push(detectedMultiaddr) - console.log('Multiaddrs: ', multiaddrs) - - this.multiaddrs = multiaddrs + console.log('Multiaddrs: ', this.multiaddrs) // Signal that this adapter is ready. this.isReady = true @@ -107,130 +65,6 @@ class IpfsAdapter { return this.ipfs } catch (err) { console.error('Error in ipfs.js/start()') - - // If IPFS crashes because the /blocks directory is full, wipe the directory. - // if (err.message.includes('No space left on device')) { - // this.rmBlocksDir() - // } - - throw err - } - } - - // This function creates an IPFS node using Helia. - // It returns the node as an object. - async createNode () { - try { - // Create block and data stores. - const blockstore = new FsBlockstore(`${IPFS_DIR}/blockstore`) - const datastore = new FsDatastore(`${IPFS_DIR}/datastore`) - - // Get the private key. - // const privateKey = await this.getPrivateKey() - // console.log('privateKey: ', privateKey) - - // Create an identity - const keychainInit = { - selfKey: 'myKey', - pass: await this.getSeed() - } - const privateKey = await loadOrCreateSelfKey(datastore, keychainInit) - - // Configure services - const services = { - identify: identify(), - identifyPush: identifyPush(), - pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }), - ping: ping(), - keychain: keychain(keychainInit), - dht: kadDHT({ - protocol: '/psf/kad/1.0.0', - clientMode: false - }) - } - if (this.config.isCircuitRelay) { - console.log('Helia (IPFS) node IS configured as Circuit Relay') - services.relay = circuitRelayServer({ // makes the node function as a relay server - hopTimeout: 30 * 1000, // incoming relay requests must be resolved within this time limit - reservations: { - maxReservations: 15, // how many peers are allowed to reserve relay slots on this server - reservationClearInterval: 300 * 1000, // how often to reclaim stale reservations - applyDefaultLimit: true, // whether to apply default data/duration limits to each relayed connection - defaultDurationLimit: 2 * 60 * 1000, // the default maximum amount of time a relayed connection can be open for - defaultDataLimit: BigInt(2 << 7) // the default maximum number of bytes that can be transferred over a relayed connection - }, - maxInboundHopStreams: 32, // how many inbound HOP streams are allow simultaneously - maxOutboundHopStreams: 64 // how many outbound HOP streams are allow simultaneously - }) - } else { - console.log('Helia (IPFS) node IS NOT configured as Circuit Relay') - } - - const transports = [ - tcp(), - webSockets(), - circuitRelayTransport({ - discoverRelays: 3, - reservationConcurrency: 3 - }), - webRTC(), - webRTCDirect() - ] - - // libp2p is the networking layer that underpins Helia - const libp2p = await this.createLibp2p({ - // peerId, - privateKey, - datastore, - addresses: { - listen: [ - '/ip4/127.0.0.1/tcp/0', - `/ip4/0.0.0.0/tcp/${this.config.ipfsTcpPort}`, - `/ip4/0.0.0.0/tcp/${this.config.ipfsWsPort}/ws`, - '/webrtc', - '/p2p-circuit' - ] - }, - transports, - connectionEncrypters: [ - noise() - ], - streamMuxers: [ - yamux() - ], - peerDiscovery: [ - bootstrap({ - list: [ - '/ip4/78.46.129.7/tcp/4001/p2p/12D3KooWEBzgK8a5TpMfLotuj7jJnEK41gbD9LZK6qCpxNrX43E9', - '/ip4/5.78.70.29/tcp/4001/p2p/12D3KooWSREJ6x2DJSYrA1xRD2Qs6D4DHncsHmNnTHuMKHnqpG2i', - '/ip4/143.198.134.59/tcp/4101/p2p/12D3KooWHogx3RcyNiSuY6SzS8GxzTAqtDCYzy17yQ1StWaLvX9j' - ] - }) - ], - services - }) - - // create a Helia node - const helia = await this.createHelia({ - blockstore, - datastore, - libp2p, - routers: [ - libp2pRouting(libp2p) - ], - blockBrokers: [ - bitswap() - ] - }) - - // Attach IPFS file system. - const fs = unixfs(helia) - helia.fs = fs - - return helia - } catch (err) { - console.error('Error creating Helia node: ', err) - throw err } } @@ -241,29 +75,6 @@ class IpfsAdapter { return true } - // Ensure that the directories exist to store blocks from the IPFS network. - // This function is called at startup, before the IPFS node is started. - ensureBlocksDir () { - try { - !this.fs.existsSync(`${ROOT_DIR}.ipfsdata`) && this.fs.mkdirSync(`${ROOT_DIR}.ipfsdata`) - - !this.fs.existsSync(`${IPFS_DIR}`) && this.fs.mkdirSync(`${IPFS_DIR}`) - - !this.fs.existsSync(`${IPFS_DIR}/blockstore`) && this.fs.mkdirSync(`${IPFS_DIR}/blockstore`) - - !this.fs.existsSync(`${IPFS_DIR}/datastore`) && this.fs.mkdirSync(`${IPFS_DIR}/datastore`) - - !this.fs.existsSync(`${IPFS_DIR}/datastore/pkcs8`) && this.fs.mkdirSync(`${IPFS_DIR}/datastore/pkcs8`) - - // !fs.existsSync(`${IPFS_DIR}/datastore/peers`) && fs.mkdirSync(`${IPFS_DIR}/datastore/peers`) - - return true - } catch (err) { - console.error('Error in adapters/ipfs.js/ensureBlocksDir(): ', err) - throw err - } - } - // This function opens the seed used to generate the key for this IPFS peer. // The seed is stored in a JSON file. If it doesn't exist, a new one is created. async getSeed () { @@ -283,56 +94,12 @@ class IpfsAdapter { await this.jsonFiles.writeJSON(seed, filename) } - // console.log('getSeed() seed: ', seed) - return seed } catch (err) { console.error('Error in adapters/ipfs/ipfs.js/getSeed()') throw err } } - - // Get the private key from disk, or generate a new one and save it, - // if it doesn't exist. - // async getPrivateKey () { - // try { - // const filename = `${IPFS_DIR}/privkey.json` - - // let privKeyHex - // try { - // // Try to read the JSON file containing the seed. - // privKeyHex = await this.jsonFiles.readJSON(filename) - // // console.log('saved privKeyHex: ', privKeyHex) - // } catch (err) { - // // Generate a new private key and save it to disk. - - // // Generate a new private key and save it to disk. - // const randomBuffer = crypto.randomBytes(32) - // // console.log('randomBuffer: ', randomBuffer) - - // privKeyHex = randomBuffer.toString('hex') - // // console.log('new privKeyHex: ', privKeyHex) - - // // Save the newly generated seed - // await this.jsonFiles.writeJSON(privKeyHex, filename) - // } - - // // Convert the saved hex string to a buffer. - // const privKeyBuf = Buffer.from(privKeyHex, 'hex') - - // // Convert the buffer to a Uint8Array 'seed' - // const seed = new Uint8Array(privKeyBuf.buffer, privKeyBuf.byteOffset, privKeyBuf.byteLength) - // // console.log('seed: ', seed) - - // // Generate a ED25519 key pair. - // const privKey = await generateKeyPairFromSeed('Ed25519', seed) - - // return privKey - // } catch (err) { - // console.error('Error in adapters/ipfs/ipfs.js/getPrivateKey(): ', err) - // throw err - // } - // } } export default IpfsAdapter diff --git a/test/unit/adapters/ipfs.adapter.unit.js b/test/unit/adapters/ipfs.adapter.unit.js index 2c73fda..e76a1e1 100644 --- a/test/unit/adapters/ipfs.adapter.unit.js +++ b/test/unit/adapters/ipfs.adapter.unit.js @@ -5,26 +5,17 @@ // Global npm libraries import { assert } from 'chai' import sinon from 'sinon' -import cloneDeep from 'lodash.clonedeep' -// import { peerIdFromString } from '@libp2p/peer-id' // Local libraries import IPFSLib from '../../../src/adapters/ipfs/ipfs.js' -// import create from '../mocks/ipfs-mock.js' -import config from '../../../config/index.js' -import createHeliaLib from '../mocks/helia-mock.js' -// config.isProduction = true; describe('#IPFS-adapter', () => { let uut let sandbox - let ipfs beforeEach(() => { uut = new IPFSLib() - ipfs = cloneDeep(createHeliaLib) - sandbox = sinon.createSandbox() }) @@ -39,26 +30,37 @@ describe('#IPFS-adapter', () => { assert.isFunction(_uut.start) assert.isFunction(_uut.stop) }) - - it('should instantiate dev IPFS Lib in production mode.', async () => { - config.isProduction = true - const _uut = new IPFSLib() - assert.exists(_uut) - assert.isFunction(_uut.start) - assert.isFunction(_uut.stop) - config.isProduction = false - }) }) describe('#start', () => { it('should return a promise that resolves into an instance of IPFS.', async () => { - // Mock dependencies. - sandbox.stub(uut, 'createNode').resolves(ipfs) - sandbox.stub(uut, 'publicIp').resolves('192.168.2.4') - sandbox.stub(uut, 'multiaddr').returns('/ip4/fake-multiaddr') + // Mock the heliaNode that gets created inside start() + const mockIpfs = { + libp2p: { + getMultiaddrs: () => [], + peerId: 'fake-id' + } + } + + // Override the start method to mock the heliaNode creation + uut.start = async function () { + this.heliaNode = { + start: async () => mockIpfs, + id: 'fake-id', + multiaddrs: ['/ip4/fake-multiaddr'] + } + + const ipfs = await this.heliaNode.start() + + this.id = this.heliaNode.id + this.multiaddrs = this.heliaNode.multiaddrs + this.isReady = true + this.ipfs = ipfs + + return this.ipfs + } const result = await uut.start() - // console.log('result: ', result) // Assert properties of the instance are set. assert.equal(uut.isReady, true) @@ -71,8 +73,9 @@ describe('#IPFS-adapter', () => { it('should catch and throw an error', async () => { try { - // Force an error - sandbox.stub(uut, 'createNode').rejects(new Error('test error')) + // Force an error by making getSeed throw, which will cause + // CreateHeliaNode to fail during start. + sandbox.stub(uut, 'getSeed').rejects(new Error('test error')) await uut.start() assert.fail('Unexpected code path.') @@ -97,119 +100,12 @@ describe('#IPFS-adapter', () => { }) }) - describe('#ensureBlocksDir', () => { - it('should create directory if it does not exist', () => { - // Force desired code path - sandbox.stub(uut.fs, 'existsSync').returns(false) - sandbox.stub(uut.fs, 'mkdirSync').returns(true) - - const result = uut.ensureBlocksDir() - - assert.equal(result, true) - }) - - it('should report and throw errors', () => { - // Force an error - sandbox.stub(uut.fs, 'existsSync').throws(new Error('test error')) - - try { - uut.ensureBlocksDir() - - assert.fail('Unexpected code path') - } catch (err) { - assert.include(err.message, 'test error') - } - }) - }) - - describe('#createNode', () => { - it('should report and throw errors', async () => { - // Force an error - sandbox.stub(uut, 'createLibp2p').rejects(new Error('test error')) - - try { - await uut.createNode() - - assert.fail('Unexpected code path') - } catch (err) { - assert.include(err.message, 'test error') - } - }) - - it('should create an IPFS node from Helia', async () => { - uut.config.isCircuitRelay = false - const result = await uut.createNode() - // console.log('result: ', result) - - // Assert the returned IPFS node has expected properties - assert.property(result, 'libp2p') - assert.property(result, 'blockstore') - - // Stop the IPFS node - await result.stop() - }) - - it('should create a Circuit Relay if configured', async () => { - uut.config.isCircuitRelay = true - const result = await uut.createNode() - - // Assert the returned IPFS node has expected properties - assert.property(result, 'libp2p') - assert.property(result, 'blockstore') - - // Stop the IPFS node - await result.stop() - }) - - it('should create a new private key on first run', async () => { - uut.config.isCircuitRelay = false - - // Mock dependencies and force desired code path. - // const beenCalled = false - // sandbox.stub(uut, 'getKeychain').resolves({ - // exportPeerId: async () => { - // if (!beenCalled) { - // beenCalled = true - // throw new Error('test error') - // } - // return peerIdFromString('12D3KooWSXF1PnEfiA8bCG8SJduCvzdwHtvhVPK4WC6zzDoto2XP') - // }, - // createKey: async () => {} - // }) - sandbox.stub(uut, 'createLibp2p').resolves() - sandbox.stub(uut, 'createHelia').resolves({}) - - const result = await uut.createNode() - // console.log('result: ', result) - - assert.property(result, 'fs') - }) - - it('should not use circuit relay when CONNECT_PREF is set to direct', async () => { - process.env.CONNECT_PREF = 'direct' - - uut.config.isCircuitRelay = false - const result = await uut.createNode() - // console.log('result: ', result) - - delete process.env.CONNECT_PREF - - // Assert the returned IPFS node has expected properties - assert.property(result, 'libp2p') - assert.property(result, 'blockstore') - - // Stop the IPFS node - await result.stop() - }) - }) - describe('#getSeed', () => { it('should read the seed from the JSON file', async () => { // Mock dependencies and force desired code path sandbox.stub(uut.jsonFiles, 'readJSON').resolves('12345678') const result = await uut.getSeed() - // console.log('result: ', result) assert.isString(result) }) @@ -220,7 +116,6 @@ describe('#IPFS-adapter', () => { sandbox.stub(uut.jsonFiles, 'writeJSON').resolves() const result = await uut.getSeed() - // console.log('result: ', result) assert.isString(result) }) From 821cf4abe87778e0a7b75e8943605b8db2e98ae5 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Wed, 11 Feb 2026 13:23:57 -0700 Subject: [PATCH 2/2] feat(helia-coord): Refactoring to use new v2.x helia-coord with breaking changes --- package-lock.json | 176 ++++++++-------------------------------------- package.json | 11 ++- 2 files changed, 38 insertions(+), 149 deletions(-) diff --git a/package-lock.json b/package-lock.json index decdd6f..01455a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "axios": "0.27.2", "bcryptjs": "2.4.3", "glob": "7.1.6", - "helia-coord": "2.0.0", + "helia-coord": "2.0.1", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -1569,93 +1569,6 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@helia/utils/node_modules/@multiformats/multiaddr-matcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", - "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - } - }, - "node_modules/@helia/utils/node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "license": "MIT" - }, - "node_modules/@helia/utils/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/@helia/utils/node_modules/it-byte-stream/node_modules/race-signal": { - "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/@helia/utils/node_modules/libp2p": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz", - "integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==", - "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/interface-internal": "^2.3.19", - "@libp2p/logger": "^5.2.0", - "@libp2p/multistream-select": "^6.0.29", - "@libp2p/peer-collections": "^6.0.35", - "@libp2p/peer-id": "^5.1.9", - "@libp2p/peer-store": "^11.2.7", - "@libp2p/utils": "^6.7.2", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.4.4", - "@multiformats/multiaddr-matcher": "^2.0.0", - "any-signal": "^4.1.1", - "datastore-core": "^10.0.2", - "interface-datastore": "^8.3.1", - "it-byte-stream": "^2.0.2", - "it-merge": "^3.0.11", - "it-parallel": "^3.0.11", - "main-event": "^1.0.1", - "multiformats": "^13.3.6", - "p-defer": "^4.0.1", - "p-retry": "^6.2.1", - "progress-events": "^1.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.1.3", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@helia/utils/node_modules/p-retry": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", - "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -2290,15 +2203,6 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr-matcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", - "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - } - }, "node_modules/@libp2p/dcutr/node_modules/it-byte-stream": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-2.0.4.tgz", @@ -2862,58 +2766,33 @@ } }, "node_modules/@libp2p/upnp-nat": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-3.1.22.tgz", - "integrity": "sha512-+Hm78LtgJzEEFrQDqnL8A2tkiQVAwEEe8aAE1niyBmujNLu1KYmqmmjsH6F5F4wacBOetU0QGXmBNMx6eq42CA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-3.0.0.tgz", + "integrity": "sha512-0mq49KFo8vtLUIra7+NYjYC6Q9R4Mc6ODJDto0Y9FX6901vWWJ0wvNUPPB0bT/gdEY+VjVxK+VqnNV5gPdbR3w==", "license": "Apache-2.0 OR MIT", "dependencies": { - "@achingbrain/nat-port-mapper": "^4.0.2", - "@chainsafe/is-ip": "^2.1.0", - "@libp2p/interface": "^2.11.0", - "@libp2p/interface-internal": "^2.3.19", - "@libp2p/utils": "^6.7.2", - "@multiformats/multiaddr": "^12.4.4", - "@multiformats/multiaddr-matcher": "^2.0.0", - "main-event": "^1.0.1", + "@achingbrain/nat-port-mapper": "^4.0.0", + "@chainsafe/is-ip": "^2.0.2", + "@libp2p/interface": "^2.3.0", + "@libp2p/interface-internal": "^2.2.0", + "@libp2p/utils": "^6.3.0", + "@multiformats/multiaddr": "^12.3.3", + "@multiformats/multiaddr-matcher": "^1.6.0", "p-defer": "^4.0.1", - "race-signal": "^1.1.3" - } - }, - "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==", - "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/upnp-nat/node_modules/@multiformats/multiaddr-matcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-2.0.2.tgz", - "integrity": "sha512-si7EZCI93mfBJKKRkh+u2bB9W6W5APVN3XfdwuseEJ0OS7ysg0Jno9SuAi0bRzsl5OEFESoF71SjsRqgp8PXAA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" + "race-signal": "^1.1.0" } }, "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": "6.7.1", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.1.tgz", + "integrity": "sha512-x3WImvw4unmx1ZeAedj8AkRe4UImUlkw0ZItYAiKiekElMNUXwv+Yt48dI/LmB38JIof8sng29XvUeCVU3F6OA==", "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", + "@libp2p/crypto": "^5.1.7", + "@libp2p/interface": "^2.10.5", + "@libp2p/logger": "^5.1.21", "@multiformats/multiaddr": "^12.4.4", "@sindresorhus/fnv1a": "^3.1.0", "any-signal": "^4.1.1", @@ -3162,9 +3041,9 @@ } }, "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": "1.6.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.6.0.tgz", + "integrity": "sha512-E77lLvQR+50kTAfvjV3g4wr9qCu77Z+6yT0s1hgfh8B4sAXZ8u/YdQJGhjgstgW1kmGy7BXPppROKYijqQsesQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -3173,9 +3052,9 @@ } }, "node_modules/@multiformats/multiaddr-to-uri": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.2.tgz", - "integrity": "sha512-SiLFD54zeOJ0qMgo9xv1Tl9O5YktDKAVDP4q4hL16mSq4O4sfFNagNADz8eAofxd6TfQUzGQ3TkRRG9IY2uHRg==", + "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": "^12.3.0" @@ -10478,9 +10357,9 @@ } }, "node_modules/helia-coord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-2.0.0.tgz", - "integrity": "sha512-wVEc4RmTZMEYkeXHVTnPRepzg9IztrLcN6gh+YonicGn9wKPdX4vfpeX0qyUCV5YAycEBO5VvIlRyTDLxP9lSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-2.0.1.tgz", + "integrity": "sha512-4gwf7pgllNl8TtO+mGVXbmhavKcd08oNPLHLcI0AntqgR6EAYdQyV+Mt39TsJ3q8YnGNj8InYpK6Z275Qfgt+A==", "license": "MIT", "dependencies": { "@chainsafe/libp2p-gossipsub": "14.1.0", @@ -10501,6 +10380,7 @@ "@libp2p/webrtc": "5.2.2", "@libp2p/websockets": "9.2.2", "@multiformats/multiaddr": "12.3.5", + "@multiformats/multiaddr-matcher": "1.6.0", "bch-encrypt-lib": "2.1.1", "blockstore-fs": "2.0.2", "datastore-fs": "10.0.2", diff --git a/package.json b/package.json index 1b06a7e..66ad6a0 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "axios": "0.27.2", "bcryptjs": "2.4.3", "glob": "7.1.6", - "helia-coord": "2.0.0", + "helia-coord": "2.0.1", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -83,5 +83,14 @@ "ignore": [ "/test/unit/mocks/**/*.js" ] + }, + "overrides": { + "@multiformats/multiaddr-to-uri": "10.1.2", + "@multiformats/multiaddr-matcher": "1.6.0", + "@libp2p/utils": "6.7.1", + "helia": { + "libp2p": "2.7.2", + "@libp2p/upnp-nat": "3.0.0" + } } }