From 69f00054451389b2588ad14ab3c2df0d7ff1f22d Mon Sep 17 00:00:00 2001 From: Franck R Date: Wed, 2 Feb 2022 15:12:08 +1100 Subject: [PATCH] Bump libp2p from 0.32.4 to 0.36.2, libp2p-gossipsub from 0.12.1 to 0.13.0 (#470) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- CHANGELOG.md | 4 + examples/eth-pm-wallet-encryption/src/App.tsx | 10 +- examples/eth-pm/src/App.tsx | 10 +- examples/web-chat/src/App.tsx | 15 +- examples/web-chat/src/Room.tsx | 43 +- examples/web-chat/src/command.ts | 17 +- package-lock.json | 1179 ++++++----------- package.json | 4 +- src/lib/select_peer.ts | 23 +- src/lib/waku.node.spec.ts | 18 +- src/lib/waku.ts | 25 +- src/lib/waku_light_push/index.ts | 8 +- src/lib/waku_relay/index.node.spec.ts | 9 +- src/lib/waku_relay/index.ts | 68 +- src/lib/waku_store/index.node.spec.ts | 36 +- src/lib/waku_store/index.ts | 8 +- 16 files changed, 620 insertions(+), 857 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89bff4c428..a381971192 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- **Breaking**: Upgrade `libp2p` to `0.36.2` & `libp2p-gossipsub` to `0.13.0`. Some APIs are now async. + ## [0.16.0] - 2022-01-31 ### Changed diff --git a/examples/eth-pm-wallet-encryption/src/App.tsx b/examples/eth-pm-wallet-encryption/src/App.tsx index ab8590bc6f..7b720f85a9 100644 --- a/examples/eth-pm-wallet-encryption/src/App.tsx +++ b/examples/eth-pm-wallet-encryption/src/App.tsx @@ -143,10 +143,16 @@ function App() { useEffect(() => { if (!waku) return; - const interval = setInterval(() => { + const interval = setInterval(async () => { + let lightPushPeers = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for await (const _peer of waku.store.peers) { + lightPushPeers++; + } + setPeerStats({ relayPeers: waku.relay.getPeers().size, - lightPushPeers: waku.lightPush.peers.length, + lightPushPeers, }); }, 1000); return () => clearInterval(interval); diff --git a/examples/eth-pm/src/App.tsx b/examples/eth-pm/src/App.tsx index 600d639d60..a318b693a3 100644 --- a/examples/eth-pm/src/App.tsx +++ b/examples/eth-pm/src/App.tsx @@ -162,10 +162,16 @@ function App() { useEffect(() => { if (!waku) return; - const interval = setInterval(() => { + const interval = setInterval(async () => { + let lightPushPeers = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for await (const _peer of waku.store.peers) { + lightPushPeers++; + } + setPeerStats({ relayPeers: waku.relay.getPeers().size, - lightPushPeers: waku.lightPush.peers.length, + lightPushPeers, }); }, 1000); return () => clearInterval(interval); diff --git a/examples/web-chat/src/App.tsx b/examples/web-chat/src/App.tsx index dae8d1db06..93008abb06 100644 --- a/examples/web-chat/src/App.tsx +++ b/examples/web-chat/src/App.tsx @@ -130,7 +130,7 @@ export default function App() { const retrieveMessages = async () => { await waku.waitForRemotePeer(); - console.log(`Retrieving archived messages}`); + console.log(`Retrieving archived messages`); try { retrieveStoreMessages(waku, dispatchMessages).then((length) => { @@ -156,11 +156,14 @@ export default function App() { nick={nick} messages={messages} commandHandler={(input: string) => { - const { command, response } = handleCommand(input, waku, setNick); - const commandMessages = response.map((msg) => { - return Message.fromUtf8String(command, msg); - }); - dispatchMessages(commandMessages); + handleCommand(input, waku, setNick).then( + ({ command, response }) => { + const commandMessages = response.map((msg) => { + return Message.fromUtf8String(command, msg); + }); + dispatchMessages(commandMessages); + } + ); }} /> diff --git a/examples/web-chat/src/Room.tsx b/examples/web-chat/src/Room.tsx index ff08f0ec15..e8c23037b5 100644 --- a/examples/web-chat/src/Room.tsx +++ b/examples/web-chat/src/Room.tsx @@ -6,6 +6,8 @@ import { useWaku } from './WakuContext'; import { TitleBar } from '@livechat/ui-kit'; import { Message } from './Message'; import { ChatMessage } from './chat_message'; +import { useEffect, useState } from 'react'; +import PeerId from 'peer-id'; interface Props { messages: Message[]; @@ -16,12 +18,41 @@ interface Props { export default function Room(props: Props) { const { waku } = useWaku(); - let relayPeers = 0; - let storePeers = 0; - if (waku) { - relayPeers = waku.relay.getPeers().size; - storePeers = waku.store.peers.length; - } + const [peers, setPeers] = useState([]); + const [storePeers, setStorePeers] = useState(0); + const [relayPeers, setRelayPeers] = useState(0); + + useEffect(() => { + // Add a peer to the list every time a connection happen to ensure the stats update correctly + if (!waku) return; + + const addPeer = (event: { peerId: PeerId }) => { + setPeers((peers) => { + return [...peers, event.peerId]; + }); + }; + + waku.libp2p.peerStore.on('change:protocols', addPeer); + + return () => { + waku.libp2p.connectionManager.removeListener('change:protocols', addPeer); + }; + }, [waku]); + + useEffect(() => { + if (!waku) return; + + setRelayPeers(waku.relay.getPeers().size); + + (async () => { + let counter = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for await (const _peer of waku.store.peers) { + counter++; + } + setStorePeers(counter); + })(); + }, [waku, peers]); return (
{ if (!waku) { return ['Waku node is starting']; } let response: string[] = []; - waku.libp2p.peerStore.peers.forEach((peer, peerId) => { - response.push(peerId + ':'); + const peers = []; + + for await (const peer of waku.libp2p.peerStore.getPeers()) { + peers.push(peer); + } + Array.from(peers).forEach((peer) => { + response.push(peer.id.toB58String() + ':'); let addresses = ' addresses: ['; peer.addresses.forEach(({ multiaddr }) => { addresses += ' ' + multiaddr.toString() + ','; @@ -104,11 +109,11 @@ function connections(waku: Waku | undefined): string[] { return response; } -export default function handleCommand( +export default async function handleCommand( input: string, waku: Waku | undefined, setNick: (nick: string) => void -): { command: string; response: string[] } { +): Promise<{ command: string; response: string[] }> { let response: string[] = []; const args = parseInput(input); const command = args.shift()!; @@ -126,7 +131,7 @@ export default function handleCommand( connect(args.shift(), waku).map((str) => response.push(str)); break; case '/peers': - peers(waku).map((str) => response.push(str)); + (await peers(waku)).map((str) => response.push(str)); break; case '/connections': connections(waku).map((str) => response.push(str)); diff --git a/package-lock.json b/package-lock.json index be7b273864..01cd500387 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,9 +20,9 @@ "it-concat": "^2.0.0", "it-length-prefixed": "^5.0.2", "js-sha3": "^0.8.0", - "libp2p": "^0.32.4", + "libp2p": "^0.36.2", "libp2p-bootstrap": "^0.14.0", - "libp2p-gossipsub": "^0.12.1", + "libp2p-gossipsub": "^0.13.0", "libp2p-mplex": "^0.10.4", "libp2p-websockets": "^0.16.1", "multiaddr": "^10.0.1", @@ -1540,47 +1540,6 @@ "uint8arrays": "^3.0.0" } }, - "node_modules/@chainsafe/libp2p-noise/node_modules/libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", - "dependencies": { - "@noble/ed25519": "^1.3.0", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "dependencies": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/@cnakazawa/watch": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", @@ -2113,36 +2072,21 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" }, - "node_modules/@motrix/nat-api": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@motrix/nat-api/-/nat-api-0.3.2.tgz", - "integrity": "sha512-T3LSHnEUULbSU1o1zCZZ1ul8l8Jm98f0fz/0BeF7DhNvrV63YllLCD4vUR9hFZWu/+WTIVPnbH8dBK5Ckuveuw==", - "dependencies": { - "async": "^3.2.0", - "debug": "^4.3.1", - "default-gateway": "^6.0.3", - "request": "^2.88.2", - "unordered-array-remove": "^1.0.2", - "xml2js": "^0.4.23" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@motrix/nat-api/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, "node_modules/@multiformats/base-x": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, "node_modules/@noble/ed25519": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.3.3.tgz", - "integrity": "sha512-8RG2Iu0rll3U+A95IpdRmFxpkUQeUSEPyEL8c3QxjnGp2fRNf9eVBTBd/fgJh1/JiBXyWz1VP65/DfnEov9big==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.5.1.tgz", + "integrity": "sha512-VX0TyIhKghm/NoTno/k71oCQO55f36yiSwuNOqEHu9BvxQuzel0tsvcsU2KjX/iN6pCkN53Bvfq1+gWNiwXDGQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, "node_modules/@noble/secp256k1": { "version": "1.3.4", @@ -3121,9 +3065,12 @@ "dev": true }, "node_modules/@types/debug": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", - "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } }, "node_modules/@types/dns-packet": { "version": "5.2.4", @@ -3215,6 +3162,11 @@ "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", "dev": true }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, "node_modules/@types/node": { "version": "17.0.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz", @@ -4051,9 +4003,9 @@ "peer": true }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { "safer-buffer": "~2.1.0" } @@ -4062,6 +4014,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -5956,6 +5909,28 @@ "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", "dev": true }, + "node_modules/datastore-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-7.0.0.tgz", + "integrity": "sha512-FdudjeH+GHjbuU8X1mIKIv8uHAErF6qtjqWFJiVKOdITk6KdiSKis4Hsfu80RWDEFQ9l9s47XIVf5FMKTtoeWA==", + "dependencies": { + "debug": "^4.1.1", + "err-code": "^3.0.1", + "interface-datastore": "^6.0.2", + "it-drain": "^1.0.4", + "it-filter": "^1.0.2", + "it-map": "^1.0.5", + "it-merge": "^1.0.1", + "it-pipe": "^1.1.0", + "it-pushable": "^1.4.2", + "it-take": "^1.0.1", + "uint8arrays": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -6576,9 +6551,12 @@ "dev": true }, "node_modules/es6-promisify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", - "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", + "engines": { + "node": ">=6" + } }, "node_modules/escalade": { "version": "3.1.1", @@ -8729,25 +8707,19 @@ } }, "node_modules/interface-datastore": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-5.1.1.tgz", - "integrity": "sha512-HG/P3kr3N/51MfsW55Q692hD7kmegXobPaZOFu5rNWWeJ27tnes7L/yma3vylrvrTCEUpVgJYigDqHXFICdvRg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.0.tgz", + "integrity": "sha512-oNHdsrWBsI/kDwUtEgt+aaZtQFKtQYN0TGZzc3SGiIA6m+plZ6malhmsygtbmDpfpIsNNC7ce9Gyaj+Tki+gVw==", "dependencies": { - "err-code": "^3.0.1", - "interface-store": "^0.1.1", - "ipfs-utils": "^8.1.2", - "it-all": "^1.0.2", - "it-drain": "^1.0.1", - "it-filter": "^1.0.2", - "it-take": "^1.0.1", + "interface-store": "^2.0.1", "nanoid": "^3.0.2", - "uint8arrays": "^2.1.5" + "uint8arrays": "^3.0.0" } }, "node_modules/interface-store": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-0.1.1.tgz", - "integrity": "sha512-ynnjIOybDZc0Brep3HHSa2RVlo/M5g7kuL/leui7o21EusKcLJS170vCJ8rliisc3c4jyd9ao5PthkGlBaX29g==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -9426,9 +9398,9 @@ } }, "node_modules/it-all": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.5.tgz", - "integrity": "sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" }, "node_modules/it-buffer": { "version": "0.1.3", @@ -9448,19 +9420,24 @@ } }, "node_modules/it-drain": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.4.tgz", - "integrity": "sha512-coB7mcyZ4lWBQKoQGJuqM+P94pvpn2T3KY27vcVWPqeB1WmoysRC76VZnzAqrBWzpWcoEJMjZ+fsMBslxNaWfQ==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", + "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" }, "node_modules/it-filter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.2.tgz", - "integrity": "sha512-rxFUyPCrhk7WrNxD8msU10iEPhQmROoqwuyWmQUYY1PtopwUGBYyra9EYG2nRZADYeuT83cohKWmKCWPzpeyiw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", + "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" }, "node_modules/it-first": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.6.tgz", - "integrity": "sha512-wiI02c+G1BVuu0jz30Nsr1/et0cpSRulKUusN8HDZXxuX4MdUzfMp2P4JUk+a49Wr1kHitRLrnnh3+UzJ6neaQ==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==" + }, + "node_modules/it-foreach": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-0.1.1.tgz", + "integrity": "sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==" }, "node_modules/it-glob": { "version": "0.0.11", @@ -9497,9 +9474,9 @@ "integrity": "sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ==" }, "node_modules/it-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.0.tgz", - "integrity": "sha512-bs40LMjG/9JMOcJ7pgyGLoOeWBpw28ZoMmZIk/1NCa5SUxd4elXCuadAr2qSjPiHz2GxrqoWGFAP7SePGddatw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.4.tgz", + "integrity": "sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==", "dependencies": { "it-pushable": "^1.4.0" } @@ -9565,10 +9542,18 @@ "bl": "^5.0.0" } }, - "node_modules/it-take": { + "node_modules/it-sort": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.1.tgz", - "integrity": "sha512-6H6JAWYcyumKSpcIPLs6tHN4xnibphmyU79WQaYVCBtaBOzf4fn75wzvSH8fH8fcMlPBTWY1RlmOWleQxBt2Ug==" + "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-1.0.1.tgz", + "integrity": "sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==", + "dependencies": { + "it-all": "^1.0.6" + } + }, + "node_modules/it-take": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", + "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" }, "node_modules/it-to-stream": { "version": "1.0.0", @@ -9867,9 +9852,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -9928,17 +9913,17 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/karma": { @@ -10144,11 +10129,6 @@ "node": ">=8.17.0" } }, - "node_modules/keypair": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.3.tgz", - "integrity": "sha512-0wjZ2z/SfZZq01+3/8jYLd8aEShSa+aat1zyPGQY3IuKoEAp6DJGvu2zt6snELrQU9jbCkIlCyNOD7RdQbHhkQ==" - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -10198,63 +10178,67 @@ } }, "node_modules/libp2p": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.32.4.tgz", - "integrity": "sha512-GSImpWJmjFqjXrv9sgJfwaWhMF+J07nNZJknobvgWXXki9W/1a5UsNVyw/1Z2licvsc+aUmCxDgV92lbUvTeSw==", + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", + "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", "dependencies": { - "@motrix/nat-api": "^0.3.1", "@vascosantos/moving-average": "^1.1.0", - "abort-controller": "^3.0.0", + "abortable-iterator": "^3.0.0", "aggregate-error": "^3.1.0", - "any-signal": "^2.1.1", + "any-signal": "^3.0.0", "bignumber.js": "^9.0.1", "class-is": "^1.1.0", + "datastore-core": "^7.0.0", "debug": "^4.3.1", "err-code": "^3.0.0", - "es6-promisify": "^6.1.1", + "es6-promisify": "^7.0.0", "events": "^3.3.0", "hashlru": "^2.3.0", - "interface-datastore": "^5.1.1", + "interface-datastore": "^6.0.2", "it-all": "^1.0.4", "it-buffer": "^0.1.2", "it-drain": "^1.0.3", "it-filter": "^1.0.1", "it-first": "^1.0.4", + "it-foreach": "^0.1.1", "it-handshake": "^2.0.0", "it-length-prefixed": "^5.0.2", "it-map": "^1.0.4", "it-merge": "^1.0.0", "it-pipe": "^1.1.0", + "it-sort": "^1.0.1", "it-take": "^1.0.0", - "libp2p-crypto": "^0.19.4", - "libp2p-interfaces": "^1.0.0", + "libp2p-crypto": "^0.21.2", + "libp2p-interfaces": "^4.0.0", "libp2p-utils": "^0.4.0", "mafmt": "^10.0.0", "merge-options": "^3.0.4", + "mortice": "^2.0.1", "multiaddr": "^10.0.0", "multiformats": "^9.0.0", - "multistream-select": "^2.0.0", + "multistream-select": "^3.0.0", "mutable-proxy": "^1.0.0", - "node-forge": "^0.10.0", + "nat-api": "^0.3.1", + "node-forge": "^1.2.1", "p-any": "^3.0.0", "p-fifo": "^1.0.0", "p-retry": "^4.4.0", "p-settle": "^4.1.1", - "peer-id": "^0.15.0", + "peer-id": "^0.16.0", "private-ip": "^2.1.0", "protobufjs": "^6.10.2", "retimer": "^3.0.0", "sanitize-filename": "^1.6.3", "set-delayed-interval": "^1.0.0", "streaming-iterables": "^6.0.0", - "timeout-abort-controller": "^1.1.1", + "timeout-abort-controller": "^3.0.0", "uint8arrays": "^3.0.0", "varint": "^6.0.0", "wherearewe": "^1.0.0", "xsalsa20": "^1.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=15.0.0" } }, "node_modules/libp2p-bootstrap": { @@ -10271,17 +10255,17 @@ "node": ">=15.0.0" } }, - "node_modules/libp2p-bootstrap/node_modules/libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", + "node_modules/libp2p-crypto": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dependencies": { - "@noble/ed25519": "^1.3.0", + "@noble/ed25519": "^1.5.1", "@noble/secp256k1": "^1.3.0", "err-code": "^3.0.1", "iso-random-stream": "^2.0.0", "multiformats": "^9.4.5", - "node-forge": "^0.10.0", + "node-forge": "^1.2.1", "protobufjs": "^6.11.2", "uint8arrays": "^3.0.0" }, @@ -10289,99 +10273,27 @@ "node": ">=12.0.0" } }, - "node_modules/libp2p-bootstrap/node_modules/peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "dependencies": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/libp2p-bootstrap/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/libp2p-crypto": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz", - "integrity": "sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA==", - "dependencies": { - "err-code": "^3.0.1", - "is-typedarray": "^1.0.0", - "iso-random-stream": "^2.0.0", - "keypair": "^1.0.1", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "pem-jwk": "^2.0.0", - "protobufjs": "^6.11.2", - "secp256k1": "^4.0.0", - "uint8arrays": "^3.0.0", - "ursa-optional": "^0.10.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/libp2p-crypto/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/libp2p-gossipsub": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.12.1.tgz", - "integrity": "sha512-b7puc8cH0vQAikqPjuybsJBtZJzle5wH9TTTsn5i8t3vsQykv4so8k/4VKnCskwGSWOBNPo2Df3dO6InIYY0GA==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.13.0.tgz", + "integrity": "sha512-xy2jRZGmJpjy++Di6f1admtjve8Fx0z5l8NISTQS282egwbRMmTPE6/UeYktb6hNGAgtSTIwXdHjXmMOiTarFA==", "dependencies": { - "@types/debug": "^4.1.5", + "@types/debug": "^4.1.7", "debug": "^4.3.1", "denque": "^1.5.0", "err-code": "^3.0.1", "it-pipe": "^1.1.0", - "libp2p-interfaces": "^2.0.1", + "libp2p-interfaces": "^4.0.4", "peer-id": "^0.16.0", "protobufjs": "^6.11.2", - "time-cache": "^0.3.0", "uint8arrays": "^3.0.0" } }, - "node_modules/libp2p-gossipsub/node_modules/libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", + "node_modules/libp2p-interfaces": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", + "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", "dependencies": { - "@noble/ed25519": "^1.3.0", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/libp2p-gossipsub/node_modules/libp2p-interfaces": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-2.0.6.tgz", - "integrity": "sha512-0iVradk961cSD4qxjYoHioD54ZvOIEXEmrWdK0dChgE+0k+qqy7Xfnpu9zqRzZDqtJxSymN3GOvSyHsSWPmh3Q==", - "dependencies": { - "abort-controller": "^3.0.0", "abortable-iterator": "^3.0.0", "debug": "^4.3.1", "err-code": "^3.0.1", @@ -10397,49 +10309,6 @@ "uint8arrays": "^3.0.0" } }, - "node_modules/libp2p-gossipsub/node_modules/peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "dependencies": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/libp2p-gossipsub/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/libp2p-interfaces": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.0.1.tgz", - "integrity": "sha512-OKUpCL07oiaRi4wygDCi/TPuAZTDCj6efz0I5CBtXCV20k/onelR4xB312LvX6fW6H563JEg4UrUL+7uunFZ3w==", - "dependencies": { - "abort-controller": "^3.0.0", - "abortable-iterator": "^3.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.19.5", - "multiaddr": "^10.0.0", - "multiformats": "^9.1.2", - "peer-id": "^0.15.0", - "protobufjs": "^6.10.2", - "uint8arrays": "^2.1.3" - } - }, "node_modules/libp2p-mplex": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.5.tgz", @@ -10488,6 +10357,11 @@ "p-timeout": "^4.1.0" } }, + "node_modules/libp2p/node_modules/any-signal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.0.tgz", + "integrity": "sha512-l1H1GEkGGIXVGfCtvq8N68YI7gHajmfzRdKhmb8sGyAQpLCblirLa8eB09j4uKaiwe7vodAChocUf7AT3mYq5g==" + }, "node_modules/libp2p/node_modules/streaming-iterables": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.0.0.tgz", @@ -10496,14 +10370,6 @@ "node": ">=10" } }, - "node_modules/libp2p/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10601,7 +10467,8 @@ "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -11993,6 +11860,17 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mortice": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz", + "integrity": "sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==", + "dependencies": { + "nanoid": "^3.1.20", + "observable-webworkers": "^1.0.0", + "p-queue": "^6.0.0", + "promise-timeout": "^1.3.0" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -12019,14 +11897,6 @@ "multiaddr": "^10.0.0" } }, - "node_modules/multiaddr/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/multibase": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.4.tgz", @@ -12058,24 +11928,17 @@ "npm": ">=6.0.0" } }, - "node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/multihashes/node_modules/varint": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" }, "node_modules/multistream-select": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-2.0.0.tgz", - "integrity": "sha512-MhzWeoIh2Rojqm32glGNmWbzyffrGrYtg68sWKwj8ZuALHGDySNiU5j6wV69BpUtKRQmQ6zWNUB5few57VB7/w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", + "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", "dependencies": { + "abortable-iterator": "^3.0.0", "bl": "^5.0.0", "debug": "^4.1.1", "err-code": "^3.0.1", @@ -12085,7 +11948,7 @@ "it-pipe": "^1.0.1", "it-reader": "^3.0.0", "p-defer": "^3.0.0", - "uint8arrays": "^2.1.4" + "uint8arrays": "^3.0.0" } }, "node_modules/mutable-proxy": { @@ -12097,11 +11960,6 @@ "npm": ">=3.X.X" } }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" - }, "node_modules/nanoid": { "version": "3.1.25", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", @@ -12135,6 +11993,27 @@ "node": ">=0.10.0" } }, + "node_modules/nat-api": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/nat-api/-/nat-api-0.3.1.tgz", + "integrity": "sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==", + "dependencies": { + "async": "^3.2.0", + "debug": "^4.2.0", + "default-gateway": "^6.0.2", + "request": "^2.88.2", + "unordered-array-remove": "^1.0.2", + "xml2js": "^0.1.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/nat-api/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + }, "node_modules/native-abort-controller": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.3.tgz", @@ -12208,11 +12087,11 @@ } }, "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/node-gyp-build": { @@ -12877,6 +12756,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/observable-webworkers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-1.0.0.tgz", + "integrity": "sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==" + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -13458,44 +13342,18 @@ } }, "node_modules/peer-id": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.3.tgz", - "integrity": "sha512-pass5tk6Fbaz7PTD/3fJg2KWqaproHY0B0Ki8GQMEuMjkoLRcS2Vqt9yy6ob/+8uGBmWjRLtbMhaLV4HTyMDfw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dependencies": { "class-is": "^1.1.0", - "libp2p-crypto": "^0.19.0", - "minimist": "^1.2.5", + "libp2p-crypto": "^0.21.0", "multiformats": "^9.4.5", "protobufjs": "^6.10.2", "uint8arrays": "^3.0.0" }, - "bin": { - "peer-id": "src/bin.js" - }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/peer-id/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/pem-jwk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-2.0.0.tgz", - "integrity": "sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA==", - "dependencies": { - "asn1.js": "^5.0.1" - }, - "bin": { - "pem-jwk": "bin/pem-jwk.js" - }, - "engines": { - "node": ">=5.10.0" + "node": ">=15.0.0" } }, "node_modules/pend": { @@ -13747,6 +13605,11 @@ "asap": "~2.0.6" } }, + "node_modules/promise-timeout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", + "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==" + }, "node_modules/prompts": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", @@ -14011,9 +13874,9 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "engines": { "node": ">=0.6" } @@ -15709,9 +15572,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -16399,28 +16262,14 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/time-cache": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/time-cache/-/time-cache-0.3.0.tgz", - "integrity": "sha1-7Q388P2kXNyV+9YB/agw6/G9XYs=", - "dependencies": { - "lodash.throttle": "^4.1.1" - } - }, "node_modules/timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", + "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", "dependencies": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" + "retimer": "^3.0.0" } }, - "node_modules/timeout-abort-controller/node_modules/retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" - }, "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", @@ -16886,11 +16735,11 @@ } }, "node_modules/uint8arrays": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.5.tgz", - "integrity": "sha512-CSR7AO+4AHUeSOnZ/NBNCElDeWfRh9bXtOck27083kc7SznmmHIhNEkEOCQOn0wvrIMjS3IH0TNLR16vuc46mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", "dependencies": { - "multibase": "^4.0.1" + "multiformats": "^9.4.2" } }, "node_modules/ultron": { @@ -17130,19 +16979,6 @@ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true }, - "node_modules/ursa-optional": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/ursa-optional/-/ursa-optional-0.10.2.tgz", - "integrity": "sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.14.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -17680,23 +17516,14 @@ } }, "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz", + "integrity": "sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=", "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "sax": ">=0.1.1" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xml2js/node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" + "node": "*" } }, "node_modules/xmlbuilder": { @@ -18904,43 +18731,6 @@ "peer-id": "^0.16.0", "protobufjs": "^6.11.2", "uint8arrays": "^3.0.0" - }, - "dependencies": { - "libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", - "requires": { - "@noble/ed25519": "^1.3.0", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "requires": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } } }, "@cnakazawa/watch": { @@ -19413,35 +19203,15 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" }, - "@motrix/nat-api": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@motrix/nat-api/-/nat-api-0.3.2.tgz", - "integrity": "sha512-T3LSHnEUULbSU1o1zCZZ1ul8l8Jm98f0fz/0BeF7DhNvrV63YllLCD4vUR9hFZWu/+WTIVPnbH8dBK5Ckuveuw==", - "requires": { - "async": "^3.2.0", - "debug": "^4.3.1", - "default-gateway": "^6.0.3", - "request": "^2.88.2", - "unordered-array-remove": "^1.0.2", - "xml2js": "^0.4.23" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - } - } - }, "@multiformats/base-x": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, "@noble/ed25519": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.3.3.tgz", - "integrity": "sha512-8RG2Iu0rll3U+A95IpdRmFxpkUQeUSEPyEL8c3QxjnGp2fRNf9eVBTBd/fgJh1/JiBXyWz1VP65/DfnEov9big==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.5.1.tgz", + "integrity": "sha512-VX0TyIhKghm/NoTno/k71oCQO55f36yiSwuNOqEHu9BvxQuzel0tsvcsU2KjX/iN6pCkN53Bvfq1+gWNiwXDGQ==" }, "@noble/secp256k1": { "version": "1.3.4", @@ -20293,9 +20063,12 @@ "dev": true }, "@types/debug": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", - "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } }, "@types/dns-packet": { "version": "5.2.4", @@ -20387,6 +20160,11 @@ "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", "dev": true }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, "@types/node": { "version": "17.0.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz", @@ -21050,9 +20828,9 @@ "peer": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -21061,6 +20839,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -22578,6 +22357,24 @@ "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", "dev": true }, + "datastore-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-7.0.0.tgz", + "integrity": "sha512-FdudjeH+GHjbuU8X1mIKIv8uHAErF6qtjqWFJiVKOdITk6KdiSKis4Hsfu80RWDEFQ9l9s47XIVf5FMKTtoeWA==", + "requires": { + "debug": "^4.1.1", + "err-code": "^3.0.1", + "interface-datastore": "^6.0.2", + "it-drain": "^1.0.4", + "it-filter": "^1.0.2", + "it-map": "^1.0.5", + "it-merge": "^1.0.1", + "it-pipe": "^1.1.0", + "it-pushable": "^1.4.2", + "it-take": "^1.0.1", + "uint8arrays": "^3.0.0" + } + }, "date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -23077,9 +22874,9 @@ "dev": true }, "es6-promisify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", - "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==" }, "escalade": { "version": "3.1.1", @@ -24686,25 +24483,19 @@ } }, "interface-datastore": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-5.1.1.tgz", - "integrity": "sha512-HG/P3kr3N/51MfsW55Q692hD7kmegXobPaZOFu5rNWWeJ27tnes7L/yma3vylrvrTCEUpVgJYigDqHXFICdvRg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.0.tgz", + "integrity": "sha512-oNHdsrWBsI/kDwUtEgt+aaZtQFKtQYN0TGZzc3SGiIA6m+plZ6malhmsygtbmDpfpIsNNC7ce9Gyaj+Tki+gVw==", "requires": { - "err-code": "^3.0.1", - "interface-store": "^0.1.1", - "ipfs-utils": "^8.1.2", - "it-all": "^1.0.2", - "it-drain": "^1.0.1", - "it-filter": "^1.0.2", - "it-take": "^1.0.1", + "interface-store": "^2.0.1", "nanoid": "^3.0.2", - "uint8arrays": "^2.1.5" + "uint8arrays": "^3.0.0" } }, "interface-store": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-0.1.1.tgz", - "integrity": "sha512-ynnjIOybDZc0Brep3HHSa2RVlo/M5g7kuL/leui7o21EusKcLJS170vCJ8rliisc3c4jyd9ao5PthkGlBaX29g==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==" }, "internal-slot": { "version": "1.0.3", @@ -25195,9 +24986,9 @@ } }, "it-all": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.5.tgz", - "integrity": "sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" }, "it-buffer": { "version": "0.1.3", @@ -25217,19 +25008,24 @@ } }, "it-drain": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.4.tgz", - "integrity": "sha512-coB7mcyZ4lWBQKoQGJuqM+P94pvpn2T3KY27vcVWPqeB1WmoysRC76VZnzAqrBWzpWcoEJMjZ+fsMBslxNaWfQ==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", + "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" }, "it-filter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.2.tgz", - "integrity": "sha512-rxFUyPCrhk7WrNxD8msU10iEPhQmROoqwuyWmQUYY1PtopwUGBYyra9EYG2nRZADYeuT83cohKWmKCWPzpeyiw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", + "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" }, "it-first": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.6.tgz", - "integrity": "sha512-wiI02c+G1BVuu0jz30Nsr1/et0cpSRulKUusN8HDZXxuX4MdUzfMp2P4JUk+a49Wr1kHitRLrnnh3+UzJ6neaQ==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==" + }, + "it-foreach": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-0.1.1.tgz", + "integrity": "sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==" }, "it-glob": { "version": "0.0.11", @@ -25266,9 +25062,9 @@ "integrity": "sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ==" }, "it-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.0.tgz", - "integrity": "sha512-bs40LMjG/9JMOcJ7pgyGLoOeWBpw28ZoMmZIk/1NCa5SUxd4elXCuadAr2qSjPiHz2GxrqoWGFAP7SePGddatw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.4.tgz", + "integrity": "sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==", "requires": { "it-pushable": "^1.4.0" } @@ -25319,10 +25115,18 @@ "bl": "^5.0.0" } }, - "it-take": { + "it-sort": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.1.tgz", - "integrity": "sha512-6H6JAWYcyumKSpcIPLs6tHN4xnibphmyU79WQaYVCBtaBOzf4fn75wzvSH8fH8fcMlPBTWY1RlmOWleQxBt2Ug==" + "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-1.0.1.tgz", + "integrity": "sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==", + "requires": { + "it-all": "^1.0.6" + } + }, + "it-take": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", + "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" }, "it-to-stream": { "version": "1.0.0", @@ -25575,9 +25379,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -25625,13 +25429,13 @@ "peer": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -25802,11 +25606,6 @@ } } }, - "keypair": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.3.tgz", - "integrity": "sha512-0wjZ2z/SfZZq01+3/8jYLd8aEShSa+aat1zyPGQY3IuKoEAp6DJGvu2zt6snELrQU9jbCkIlCyNOD7RdQbHhkQ==" - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -25844,74 +25643,75 @@ } }, "libp2p": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.32.4.tgz", - "integrity": "sha512-GSImpWJmjFqjXrv9sgJfwaWhMF+J07nNZJknobvgWXXki9W/1a5UsNVyw/1Z2licvsc+aUmCxDgV92lbUvTeSw==", + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", + "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", "requires": { - "@motrix/nat-api": "^0.3.1", "@vascosantos/moving-average": "^1.1.0", - "abort-controller": "^3.0.0", + "abortable-iterator": "^3.0.0", "aggregate-error": "^3.1.0", - "any-signal": "^2.1.1", + "any-signal": "^3.0.0", "bignumber.js": "^9.0.1", "class-is": "^1.1.0", + "datastore-core": "^7.0.0", "debug": "^4.3.1", "err-code": "^3.0.0", - "es6-promisify": "^6.1.1", + "es6-promisify": "^7.0.0", "events": "^3.3.0", "hashlru": "^2.3.0", - "interface-datastore": "^5.1.1", + "interface-datastore": "^6.0.2", "it-all": "^1.0.4", "it-buffer": "^0.1.2", "it-drain": "^1.0.3", "it-filter": "^1.0.1", "it-first": "^1.0.4", + "it-foreach": "^0.1.1", "it-handshake": "^2.0.0", "it-length-prefixed": "^5.0.2", "it-map": "^1.0.4", "it-merge": "^1.0.0", "it-pipe": "^1.1.0", + "it-sort": "^1.0.1", "it-take": "^1.0.0", - "libp2p-crypto": "^0.19.4", - "libp2p-interfaces": "^1.0.0", + "libp2p-crypto": "^0.21.2", + "libp2p-interfaces": "^4.0.0", "libp2p-utils": "^0.4.0", "mafmt": "^10.0.0", "merge-options": "^3.0.4", + "mortice": "^2.0.1", "multiaddr": "^10.0.0", "multiformats": "^9.0.0", - "multistream-select": "^2.0.0", + "multistream-select": "^3.0.0", "mutable-proxy": "^1.0.0", - "node-forge": "^0.10.0", + "nat-api": "^0.3.1", + "node-forge": "^1.2.1", "p-any": "^3.0.0", "p-fifo": "^1.0.0", "p-retry": "^4.4.0", "p-settle": "^4.1.1", - "peer-id": "^0.15.0", + "peer-id": "^0.16.0", "private-ip": "^2.1.0", "protobufjs": "^6.10.2", "retimer": "^3.0.0", "sanitize-filename": "^1.6.3", "set-delayed-interval": "^1.0.0", "streaming-iterables": "^6.0.0", - "timeout-abort-controller": "^1.1.1", + "timeout-abort-controller": "^3.0.0", "uint8arrays": "^3.0.0", "varint": "^6.0.0", "wherearewe": "^1.0.0", "xsalsa20": "^1.1.0" }, "dependencies": { + "any-signal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.0.tgz", + "integrity": "sha512-l1H1GEkGGIXVGfCtvq8N68YI7gHajmfzRdKhmb8sGyAQpLCblirLa8eB09j4uKaiwe7vodAChocUf7AT3mYq5g==" + }, "streaming-iterables": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.0.0.tgz", "integrity": "sha512-GYbJh0ife8PvryWSyFifY1m1uj6zO12d9duuP6xltiOolUz44eKasp5gbFhRbFbLy50ik6hcKn4Pbxl9AkxB+Q==" - }, - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } } } }, @@ -25924,166 +25724,57 @@ "mafmt": "^10.0.0", "multiaddr": "^10.0.0", "peer-id": "^0.16.0" - }, - "dependencies": { - "libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", - "requires": { - "@noble/ed25519": "^1.3.0", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "requires": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } } }, "libp2p-crypto": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz", - "integrity": "sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "requires": { + "@noble/ed25519": "^1.5.1", + "@noble/secp256k1": "^1.3.0", "err-code": "^3.0.1", - "is-typedarray": "^1.0.0", "iso-random-stream": "^2.0.0", - "keypair": "^1.0.1", "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "pem-jwk": "^2.0.0", + "node-forge": "^1.2.1", "protobufjs": "^6.11.2", - "secp256k1": "^4.0.0", - "uint8arrays": "^3.0.0", - "ursa-optional": "^0.10.1" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } + "uint8arrays": "^3.0.0" } }, "libp2p-gossipsub": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.12.1.tgz", - "integrity": "sha512-b7puc8cH0vQAikqPjuybsJBtZJzle5wH9TTTsn5i8t3vsQykv4so8k/4VKnCskwGSWOBNPo2Df3dO6InIYY0GA==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.13.0.tgz", + "integrity": "sha512-xy2jRZGmJpjy++Di6f1admtjve8Fx0z5l8NISTQS282egwbRMmTPE6/UeYktb6hNGAgtSTIwXdHjXmMOiTarFA==", "requires": { - "@types/debug": "^4.1.5", + "@types/debug": "^4.1.7", "debug": "^4.3.1", "denque": "^1.5.0", "err-code": "^3.0.1", "it-pipe": "^1.1.0", - "libp2p-interfaces": "^2.0.1", + "libp2p-interfaces": "^4.0.4", "peer-id": "^0.16.0", "protobufjs": "^6.11.2", - "time-cache": "^0.3.0", "uint8arrays": "^3.0.0" - }, - "dependencies": { - "libp2p-crypto": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.0.tgz", - "integrity": "sha512-fBBzK4v1xwDt8xktWpDPCTeoBhKzxc9JMv4EyPJpoqAcuoS06+0/OLODhYod5LFiSu3lsWW+JnxblLRs5O+mjA==", - "requires": { - "@noble/ed25519": "^1.3.0", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "libp2p-interfaces": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-2.0.6.tgz", - "integrity": "sha512-0iVradk961cSD4qxjYoHioD54ZvOIEXEmrWdK0dChgE+0k+qqy7Xfnpu9zqRzZDqtJxSymN3GOvSyHsSWPmh3Q==", - "requires": { - "abort-controller": "^3.0.0", - "abortable-iterator": "^3.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.21.0", - "multiaddr": "^10.0.0", - "multiformats": "^9.1.2", - "p-queue": "^6.6.2", - "peer-id": "^0.16.0", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "requires": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } } }, "libp2p-interfaces": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.0.1.tgz", - "integrity": "sha512-OKUpCL07oiaRi4wygDCi/TPuAZTDCj6efz0I5CBtXCV20k/onelR4xB312LvX6fW6H563JEg4UrUL+7uunFZ3w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", + "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", "requires": { - "abort-controller": "^3.0.0", "abortable-iterator": "^3.0.0", "debug": "^4.3.1", "err-code": "^3.0.1", "it-length-prefixed": "^5.0.2", "it-pipe": "^1.1.0", "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.19.5", + "libp2p-crypto": "^0.21.0", "multiaddr": "^10.0.0", "multiformats": "^9.1.2", - "peer-id": "^0.15.0", + "p-queue": "^6.6.2", + "peer-id": "^0.16.0", "protobufjs": "^6.10.2", - "uint8arrays": "^2.1.3" + "uint8arrays": "^3.0.0" } }, "libp2p-mplex": { @@ -26218,7 +25909,8 @@ "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "peer": true }, "log-symbols": { "version": "4.1.0", @@ -27366,6 +27058,17 @@ } } }, + "mortice": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz", + "integrity": "sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==", + "requires": { + "nanoid": "^3.1.20", + "observable-webworkers": "^1.0.0", + "p-queue": "^6.0.0", + "promise-timeout": "^1.3.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -27382,16 +27085,6 @@ "multiformats": "^9.4.5", "uint8arrays": "^3.0.0", "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } } }, "multiaddr-to-uri": { @@ -27425,14 +27118,6 @@ "varint": "^5.0.2" }, "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - }, "varint": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", @@ -27441,10 +27126,11 @@ } }, "multistream-select": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-2.0.0.tgz", - "integrity": "sha512-MhzWeoIh2Rojqm32glGNmWbzyffrGrYtg68sWKwj8ZuALHGDySNiU5j6wV69BpUtKRQmQ6zWNUB5few57VB7/w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", + "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", "requires": { + "abortable-iterator": "^3.0.0", "bl": "^5.0.0", "debug": "^4.1.1", "err-code": "^3.0.1", @@ -27454,7 +27140,7 @@ "it-pipe": "^1.0.1", "it-reader": "^3.0.0", "p-defer": "^3.0.0", - "uint8arrays": "^2.1.4" + "uint8arrays": "^3.0.0" } }, "mutable-proxy": { @@ -27462,11 +27148,6 @@ "resolved": "https://registry.npmjs.org/mutable-proxy/-/mutable-proxy-1.0.0.tgz", "integrity": "sha512-4OvNRr1DJpy2QuDUV74m+BWZ//n4gG4bmd21MzDSPqHEidIDWqwyOjcadU1LBMO3vXYGurVKjfBrxrSQIHFu9A==" }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" - }, "nanoid": { "version": "3.1.25", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", @@ -27491,6 +27172,26 @@ "to-regex": "^3.0.1" } }, + "nat-api": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/nat-api/-/nat-api-0.3.1.tgz", + "integrity": "sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==", + "requires": { + "async": "^3.2.0", + "debug": "^4.2.0", + "default-gateway": "^6.0.2", + "request": "^2.88.2", + "unordered-array-remove": "^1.0.2", + "xml2js": "^0.1.0" + }, + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + } + } + }, "native-abort-controller": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.3.tgz", @@ -27547,9 +27248,9 @@ "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" }, "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==" }, "node-gyp-build": { "version": "4.2.3", @@ -28056,6 +27757,11 @@ "es-abstract": "^1.19.1" } }, + "observable-webworkers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-1.0.0.tgz", + "integrity": "sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -28486,34 +28192,15 @@ } }, "peer-id": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.3.tgz", - "integrity": "sha512-pass5tk6Fbaz7PTD/3fJg2KWqaproHY0B0Ki8GQMEuMjkoLRcS2Vqt9yy6ob/+8uGBmWjRLtbMhaLV4HTyMDfw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "requires": { "class-is": "^1.1.0", - "libp2p-crypto": "^0.19.0", - "minimist": "^1.2.5", + "libp2p-crypto": "^0.21.0", "multiformats": "^9.4.5", "protobufjs": "^6.10.2", "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "pem-jwk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-2.0.0.tgz", - "integrity": "sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA==", - "requires": { - "asn1.js": "^5.0.1" } }, "pend": { @@ -28709,6 +28396,11 @@ "asap": "~2.0.6" } }, + "promise-timeout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", + "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==" + }, "prompts": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", @@ -28909,9 +28601,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "querystring": { "version": "0.2.0", @@ -30289,9 +29981,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -30822,28 +30514,12 @@ } } }, - "time-cache": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/time-cache/-/time-cache-0.3.0.tgz", - "integrity": "sha1-7Q388P2kXNyV+9YB/agw6/G9XYs=", - "requires": { - "lodash.throttle": "^4.1.1" - } - }, "timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", + "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", "requires": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" - }, - "dependencies": { - "retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" - } + "retimer": "^3.0.0" } }, "timers-browserify": { @@ -31188,11 +30864,11 @@ } }, "uint8arrays": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.5.tgz", - "integrity": "sha512-CSR7AO+4AHUeSOnZ/NBNCElDeWfRh9bXtOck27083kc7SznmmHIhNEkEOCQOn0wvrIMjS3IH0TNLR16vuc46mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", "requires": { - "multibase": "^4.0.1" + "multiformats": "^9.4.2" } }, "ultron": { @@ -31385,15 +31061,6 @@ } } }, - "ursa-optional": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/ursa-optional/-/ursa-optional-0.10.2.tgz", - "integrity": "sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A==", - "requires": { - "bindings": "^1.5.0", - "nan": "^2.14.2" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -31809,19 +31476,11 @@ "dev": true }, "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz", + "integrity": "sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=", "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "dependencies": { - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - } + "sax": ">=0.1.1" } }, "xmlbuilder": { diff --git a/package.json b/package.json index 234da1bc32..a066ea2e29 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,9 @@ "it-concat": "^2.0.0", "it-length-prefixed": "^5.0.2", "js-sha3": "^0.8.0", - "libp2p": "^0.32.4", + "libp2p": "^0.36.2", "libp2p-bootstrap": "^0.14.0", - "libp2p-gossipsub": "^0.12.1", + "libp2p-gossipsub": "^0.13.0", "libp2p-mplex": "^0.10.4", "libp2p-websockets": "^0.16.1", "multiaddr": "^10.0.1", diff --git a/src/lib/select_peer.ts b/src/lib/select_peer.ts index c509236bba..125e76cfd1 100644 --- a/src/lib/select_peer.ts +++ b/src/lib/select_peer.ts @@ -5,7 +5,14 @@ import { Peer } from 'libp2p/src/peer-store'; * Returns a pseudo-random peer that supports the given protocol. * Useful for protocols such as store and light push */ -export function selectRandomPeer(peers: Peer[]): Peer | undefined { +export async function selectRandomPeer( + peersIter: AsyncIterable +): Promise { + const peers = []; + for await (const peer of peersIter) { + peers.push(peer); + } + if (peers.length === 0) return; const index = Math.round(Math.random() * (peers.length - 1)); @@ -15,8 +22,14 @@ export function selectRandomPeer(peers: Peer[]): Peer | undefined { /** * Returns the list of peers that supports the given protocol. */ -export function getPeersForProtocol(libp2p: Libp2p, protocol: string): Peer[] { - return Array.from(libp2p.peerStore.peers.values()).filter((peer) => - peer.protocols.includes(protocol) - ); +export async function* getPeersForProtocol( + libp2p: Libp2p, + protocol: string +): AsyncIterable { + for await (const peer of libp2p.peerStore.getPeers()) { + if (!peer.protocols.includes(protocol)) { + continue; + } + yield peer; + } } diff --git a/src/lib/waku.node.spec.ts b/src/lib/waku.node.spec.ts index 455af33231..e1872683fb 100644 --- a/src/lib/waku.node.spec.ts +++ b/src/lib/waku.node.spec.ts @@ -40,9 +40,7 @@ describe('Waku Dial [node only]', function () { await waku.waitForRemotePeer([Protocols.Relay]); const nimPeerId = await nimWaku.getPeerId(); - const jsPeers = waku.libp2p.peerStore.peers; - - expect(jsPeers.has(nimPeerId.toB58String())).to.be.true; + expect(await waku.libp2p.peerStore.has(nimPeerId)).to.be.true; }); }); @@ -245,7 +243,12 @@ describe('Wait for remote peer / get peers', function () { }); await waku.dial(multiAddrWithId); await waku.waitForRemotePeer([Protocols.Store]); - const peers = waku.store.peers.map((peer) => peer.id.toB58String()); + + const peers = []; + for await (const peer of waku.store.peers) { + peers.push(peer.id.toB58String()); + } + const nimPeerId = multiAddrWithId.getPeerId(); expect(nimPeerId).to.not.be.undefined; @@ -263,7 +266,12 @@ describe('Wait for remote peer / get peers', function () { }); await waku.dial(multiAddrWithId); await waku.waitForRemotePeer([Protocols.LightPush]); - const peers = waku.lightPush.peers.map((peer) => peer.id.toB58String()); + + const peers = []; + for await (const peer of waku.lightPush.peers) { + peers.push(peer.id.toB58String()); + } + const nimPeerId = multiAddrWithId.getPeerId(); expect(nimPeerId).to.not.be.undefined; diff --git a/src/lib/waku.ts b/src/lib/waku.ts index e1e322d296..1a790d1ee8 100644 --- a/src/lib/waku.ts +++ b/src/lib/waku.ts @@ -13,7 +13,7 @@ import Websockets from 'libp2p-websockets'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore: No types available import filters from 'libp2p-websockets/src/filters'; -import Ping from 'libp2p/src/ping'; +import PingService from 'libp2p/src/ping'; import { Multiaddr, multiaddr } from 'multiaddr'; import PeerId from 'peer-id'; @@ -336,9 +336,14 @@ export class Waku { } if (desiredProtocols.includes(Protocols.Store)) { - const peers = this.store.peers; + let storePeerFound = false; - if (peers.length == 0) { + for await (const _peer of this.store.peers) { + storePeerFound = true; + break; + } + + if (!storePeerFound) { // No peer available for this protocol, waiting to connect to one. const promise = new Promise((resolve) => { this.libp2p.peerStore.on( @@ -356,9 +361,14 @@ export class Waku { } if (desiredProtocols.includes(Protocols.LightPush)) { - const peers = this.lightPush.peers; + let lightPushPeerFound = false; - if (peers.length == 0) { + for await (const _peer of this.lightPush.peers) { + lightPushPeerFound = true; + break; + } + + if (!lightPushPeerFound) { // No peer available for this protocol, waiting to connect to one. const promise = new Promise((resolve) => { this.libp2p.peerStore.on( @@ -390,8 +400,11 @@ export class Waku { const peerIdStr = peerId.toB58String(); if (pingPeriodSecs !== 0) { + const pingService = new PingService(this.libp2p); this.pingKeepAliveTimers[peerIdStr] = setInterval(() => { - Ping(this.libp2p, peerId); + pingService.ping(peerId).catch((e) => { + dbg(`Ping failed (${peerIdStr})`, e); + }); }, pingPeriodSecs * 1000); } diff --git a/src/lib/waku_light_push/index.ts b/src/lib/waku_light_push/index.ts index e9fe73066f..c4a7efb8f9 100644 --- a/src/lib/waku_light_push/index.ts +++ b/src/lib/waku_light_push/index.ts @@ -52,10 +52,10 @@ export class WakuLightPush { ): Promise { let peer; if (opts?.peerId) { - peer = this.libp2p.peerStore.get(opts.peerId); + peer = await this.libp2p.peerStore.get(opts.peerId); if (!peer) throw 'Peer is unknown'; } else { - peer = this.randomPeer; + peer = await this.randomPeer; } if (!peer) throw 'No peer available'; if (!peer.protocols.includes(LightPushCodec)) @@ -99,7 +99,7 @@ export class WakuLightPush { * Returns known peers from the address book (`libp2p.peerStore`) that support * light push protocol. Waku may or may not be currently connected to these peers. */ - get peers(): Peer[] { + get peers(): AsyncIterable { return getPeersForProtocol(this.libp2p, LightPushCodec); } @@ -108,7 +108,7 @@ export class WakuLightPush { * book (`libp2p.peerStore`). Waku may or may not be currently connected to * this peer. */ - get randomPeer(): Peer | undefined { + get randomPeer(): Promise { return selectRandomPeer(this.peers); } } diff --git a/src/lib/waku_relay/index.node.spec.ts b/src/lib/waku_relay/index.node.spec.ts index 92f0956742..2d6649bdfd 100644 --- a/src/lib/waku_relay/index.node.spec.ts +++ b/src/lib/waku_relay/index.node.spec.ts @@ -428,12 +428,9 @@ describe('Waku Relay [node only]', () => { await delay(2000); // Check that the two JS peers are NOT directly connected - expect( - waku1.libp2p.peerStore.peers.has(waku2.libp2p.peerId.toB58String()) - ).to.be.false; - expect( - waku2.libp2p.peerStore.peers.has(waku1.libp2p.peerId.toB58String()) - ).to.be.false; + expect(await waku1.libp2p.peerStore.has(waku2.libp2p.peerId)).to.be + .false; + expect(waku2.libp2p.peerStore.has(waku1.libp2p.peerId)).to.be.false; const msgStr = 'Hello there!'; const message = await WakuMessage.fromUtf8String( diff --git a/src/lib/waku_relay/index.ts b/src/lib/waku_relay/index.ts index 1005179b30..212839aed8 100644 --- a/src/lib/waku_relay/index.ts +++ b/src/lib/waku_relay/index.ts @@ -8,11 +8,7 @@ import { PeerScoreParams, PeerScoreThresholds, } from 'libp2p-gossipsub/src/score'; -import { - createGossipRpc, - messageIdToString, - shuffle, -} from 'libp2p-gossipsub/src/utils'; +import { createGossipRpc, shuffle } from 'libp2p-gossipsub/src/utils'; import { InMessage } from 'libp2p-interfaces/src/pubsub'; import { SignaturePolicy } from 'libp2p-interfaces/src/pubsub/signature-policy'; import PeerId from 'peer-id'; @@ -112,8 +108,8 @@ export class WakuRelay extends Gossipsub { * @override * @returns {void} */ - public start(): void { - super.start(); + public async start(): Promise { + await super.start(); this.subscribe(this.pubSubTopic); } @@ -331,17 +327,16 @@ export class WakuRelay extends Gossipsub { * @returns {void} */ async _publish(msg: InMessage): Promise { + const msgIdStr = await this.getCanonicalMsgIdStr(msg); if (msg.receivedFrom !== this.peerId.toB58String()) { - this.score.deliverMessage(msg); - this.gossipTracer.deliverMessage(msg); + this.score.deliverMessage(msg, msgIdStr); + this.gossipTracer.deliverMessage(msgIdStr); } - const msgID = await this.getMsgId(msg); - const msgIdStr = messageIdToString(msgID); // put in seen cache this.seenCache.put(msgIdStr); - this.messageCache.put(msg); + this.messageCache.put(msg, msgIdStr); const toSend = new Set(); msg.topicIDs.forEach((topic) => { @@ -489,36 +484,47 @@ export class WakuRelay extends Gossipsub { * @param {string} id * @param {string} topic * @param {boolean} doPX - * @returns {RPC.IControlPrune} + * @returns {Promise} */ - _makePrune(id: string, topic: string, doPX: boolean): RPC.IControlPrune { + async _makePrune( + id: string, + topic: string, + doPX: boolean + ): Promise { // backoff is measured in seconds // RelayPruneBackoff is measured in milliseconds const backoff = constants.RelayPruneBackoff / 1000; - const px: RPC.IPeerInfo[] = []; - if (doPX) { - // select peers for Peer eXchange - const peers = getRelayPeers( - this, - topic, - constants.RelayPrunePeers, - (xid: string): boolean => { - return xid !== id && this.score.score(xid) >= 0; - } - ); - peers.forEach((p) => { + if (!doPX) { + return { + topicID: topic, + peers: [], + backoff: backoff, + }; + } + + // select peers for Peer eXchange + const peers = getRelayPeers( + this, + topic, + constants.RelayPrunePeers, + (xid: string): boolean => { + return xid !== id && this.score.score(xid) >= 0; + } + ); + const px = await Promise.all( + Array.from(peers).map(async (p) => { // see if we have a signed record to send back; if we don't, just send // the peer ID and let the pruned peer find them in the DHT -- we can't trust // unsigned address records through PX anyways // Finding signed records in the DHT is not supported at the time of writing in js-libp2p const peerId = PeerId.createFromB58String(p); - px.push({ + return { peerID: peerId.toBytes(), signedPeerRecord: - this._libp2p.peerStore.addressBook.getRawEnvelope(peerId), - }); - }); - } + await this._libp2p.peerStore.addressBook.getRawEnvelope(peerId), + }; + }) + ); return { topicID: topic, peers: px, diff --git a/src/lib/waku_store/index.node.spec.ts b/src/lib/waku_store/index.node.spec.ts index e1b96f0f31..33bcaa9c94 100644 --- a/src/lib/waku_store/index.node.spec.ts +++ b/src/lib/waku_store/index.node.spec.ts @@ -268,10 +268,13 @@ describe('Waku Store', () => { dbg('Waku nodes connected to nim Waku'); - let lightPushPeers = waku1.lightPush.peers; - while (lightPushPeers.length == 0) { + let lightPushPeerFound = false; + while (!lightPushPeerFound) { await delay(100); - lightPushPeers = waku1.lightPush.peers; + for await (const _peer of waku1.lightPush.peers) { + lightPushPeerFound = true; + break; + } } dbg('Sending messages using light push'); @@ -282,10 +285,13 @@ describe('Waku Store', () => { waku1.lightPush.push(clearMessage), ]); - let storePeers = waku2.store.peers; - while (storePeers.length == 0) { + let storePeerFound = false; + while (!storePeerFound) { await delay(100); - storePeers = waku2.store.peers; + for await (const _peer of waku2.store.peers) { + storePeerFound = true; + break; + } } waku2.store.addDecryptionKey(symKey); @@ -380,10 +386,13 @@ describe('Waku Store', () => { dbg('Waku nodes connected to nim Waku'); - let lightPushPeers = waku1.lightPush.peers; - while (lightPushPeers.length == 0) { + let lightPushPeerFound = false; + while (!lightPushPeerFound) { await delay(100); - lightPushPeers = waku1.lightPush.peers; + for await (const _peer of waku1.lightPush.peers) { + lightPushPeerFound = true; + break; + } } dbg('Sending messages using light push'); @@ -394,10 +403,13 @@ describe('Waku Store', () => { waku1.lightPush.push(clearMessage), ]); - let storePeers = waku2.store.peers; - while (storePeers.length == 0) { + let storePeerFound = false; + while (!storePeerFound) { await delay(100); - storePeers = waku2.store.peers; + for await (const _peer of waku2.store.peers) { + storePeerFound = true; + break; + } } waku2.addDecryptionKey(symKey, { diff --git a/src/lib/waku_store/index.ts b/src/lib/waku_store/index.ts index a2bc857ce5..91f1db4fba 100644 --- a/src/lib/waku_store/index.ts +++ b/src/lib/waku_store/index.ts @@ -150,11 +150,11 @@ export class WakuStore { let peer; if (opts.peerId) { - peer = this.libp2p.peerStore.get(opts.peerId); + peer = await this.libp2p.peerStore.get(opts.peerId); if (!peer) throw `Failed to retrieve connection details for provided peer in peer store: ${opts.peerId.toB58String()}`; } else { - peer = this.randomPeer; + peer = await this.randomPeer; if (!peer) throw 'Failed to find known peer that registers waku store protocol'; } @@ -290,7 +290,7 @@ export class WakuStore { * Returns known peers from the address book (`libp2p.peerStore`) that support * store protocol. Waku may or may not be currently connected to these peers. */ - get peers(): Peer[] { + get peers(): AsyncIterable { return getPeersForProtocol(this.libp2p, StoreCodec); } @@ -299,7 +299,7 @@ export class WakuStore { * book (`libp2p.peerStore`). Waku may or may not be currently connected to * this peer. */ - get randomPeer(): Peer | undefined { + get randomPeer(): Promise { return selectRandomPeer(this.peers); } }