Compare commits

..

1 Commits

Author SHA1 Message Date
7781075a7a chore: use npm install for examples 2021-11-12 17:48:09 +01:00
53 changed files with 193 additions and 376 deletions

View File

@ -12,9 +12,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: npx aegir lint - run: npx aegir lint
- run: npx aegir ts -p check - run: npx aegir ts -p check
@ -24,118 +21,82 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- auto-relay - run: cd examples && npm install && npm run test -- auto-relay
test-chat-example: test-chat-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- chat - run: cd examples && npm install && npm run test -- chat
test-connection-encryption-example: test-connection-encryption-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- connection-encryption - run: cd examples && npm install && npm run test -- connection-encryption
test-discovery-mechanisms-example: test-discovery-mechanisms-example:
needs: check needs: check
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- discovery-mechanisms - run: cd examples && npm install && npm run test -- discovery-mechanisms
test-echo-example: test-echo-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- echo - run: cd examples && npm install && npm run test -- echo
test-libp2p-in-the-browser-example: test-libp2p-in-the-browser-example:
needs: check needs: check
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- libp2p-in-the-browser - run: cd examples && npm install && npm run test -- libp2p-in-the-browser
test-peer-and-content-routing-example: test-peer-and-content-routing-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- peer-and-content-routing - run: cd examples && npm install && npm run test -- peer-and-content-routing
test-pnet-example: test-pnet-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- pnet - run: cd examples && npm install && npm run test -- pnet
test-protocol-and-stream-muxing-example: test-protocol-and-stream-muxing-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- protocol-and-stream-muxing - run: cd examples && npm install && npm run test -- protocol-and-stream-muxing
test-pubsub-example: test-pubsub-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- pubsub - run: cd examples && npm install && npm run test -- pubsub
test-transports-example: test-transports-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- run: npm install - run: npm install
- run: cd examples && npm i && npm run test -- transports - run: cd examples && npm install && npm run test -- transports
test-webrtc-direct-example: test-webrtc-direct-example:
needs: check needs: check
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v2 - run: npm install
with: - run: cd examples && npm install && npm run test -- webrtc-direct
node-version: 16
- run: npm install -g @mapbox/node-pre-gyp && npm install
- run: cd examples && npm i && npm run test -- webrtc-direct

View File

@ -17,6 +17,7 @@ jobs:
node-version: 14 node-version: 14
- run: npm install - run: npm install
- run: npx aegir lint - run: npx aegir lint
- uses: gozala/typescript-error-reporter-action@v1.0.8
- run: npx aegir build - run: npx aegir build
- run: npx aegir dep-check - run: npx aegir dep-check
- uses: ipfs/aegir/actions/bundle-size@v32.1.0 - uses: ipfs/aegir/actions/bundle-size@v32.1.0
@ -66,4 +67,4 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: npm install - run: npm install
- run: npm run test:interop -- --bail -- --exit - run: cd node_modules/interop-libp2p && yarn && LIBP2P_JS=${GITHUB_WORKSPACE}/src/index.js npx aegir test -t node --bail -- --exit

View File

@ -1,22 +1,3 @@
# [0.34.0](https://github.com/libp2p/js-libp2p/compare/v0.33.0...v0.34.0) (2021-11-25)
### Bug Fixes
* private ip ts compile has no call signatures ([#1020](https://github.com/libp2p/js-libp2p/issues/1020)) ([77d7cb8](https://github.com/libp2p/js-libp2p/commit/77d7cb8f0815f2cdd3bfdfa8b641a7a186fe9520))
### Features
* update dht ([#1009](https://github.com/libp2p/js-libp2p/issues/1009)) ([2f598eb](https://github.com/libp2p/js-libp2p/commit/2f598eba09cff4301474af08196158065e3602d8))
### BREAKING CHANGES
* libp2p-kad-dht has a new event-based API which is exposed as `_dht`
# [0.33.0](https://github.com/libp2p/js-libp2p/compare/v0.32.5...v0.33.0) (2021-09-24) # [0.33.0](https://github.com/libp2p/js-libp2p/compare/v0.32.5...v0.33.0) (2021-09-24)

View File

@ -2086,7 +2086,7 @@ the NatManager performing NAT hole punching.
[address]: https://github.com/libp2p/js-libp2p/tree/master/src/peer-store/address-book.js [address]: https://github.com/libp2p/js-libp2p/tree/master/src/peer-store/address-book.js
[cid]: https://github.com/multiformats/js-cid [cid]: https://github.com/multiformats/js-cid
[connection]: https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interfaces/src/connection [connection]: https://github.com/libp2p/js-interfaces/tree/master/src/connection
[multiaddr]: https://github.com/multiformats/js-multiaddr [multiaddr]: https://github.com/multiformats/js-multiaddr
[peer-id]: https://github.com/libp2p/js-peer-id [peer-id]: https://github.com/libp2p/js-peer-id
[keys]: https://github.com/libp2p/js-libp2p-crypto/tree/master/src/keys [keys]: https://github.com/libp2p/js-libp2p-crypto/tree/master/src/keys

View File

@ -1,7 +1,8 @@
# #
- [Overview](#overview) - [Configuration](#configuration)
- [Modules](#modules) - [Overview](#overview)
- [Modules](#modules)
- [Transport](#transport) - [Transport](#transport)
- [Stream Multiplexing](#stream-multiplexing) - [Stream Multiplexing](#stream-multiplexing)
- [Connection Encryption](#connection-encryption) - [Connection Encryption](#connection-encryption)
@ -10,7 +11,7 @@
- [Peer Routing](#peer-routing) - [Peer Routing](#peer-routing)
- [DHT](#dht) - [DHT](#dht)
- [Pubsub](#pubsub) - [Pubsub](#pubsub)
- [Customizing libp2p](#customizing-libp2p) - [Customizing libp2p](#customizing-libp2p)
- [Examples](#examples) - [Examples](#examples)
- [Basic setup](#basic-setup) - [Basic setup](#basic-setup)
- [Customizing Peer Discovery](#customizing-peer-discovery) - [Customizing Peer Discovery](#customizing-peer-discovery)
@ -30,8 +31,7 @@
- [Configuring the NAT Manager](#configuring-the-nat-manager) - [Configuring the NAT Manager](#configuring-the-nat-manager)
- [Browser support](#browser-support) - [Browser support](#browser-support)
- [UPnP and NAT-PMP](#upnp-and-nat-pmp) - [UPnP and NAT-PMP](#upnp-and-nat-pmp)
- [Configuring protocol name](#configuring-protocol-name) - [Configuration examples](#configuration-examples)
- [Configuration examples](#configuration-examples)
## Overview ## Overview
@ -374,7 +374,11 @@ const node = await Libp2p.create({
dht: { // The DHT options (and defaults) can be found in its documentation dht: { // The DHT options (and defaults) can be found in its documentation
kBucketSize: 20, kBucketSize: 20,
enabled: true, // This flag is required for DHT to run (disabled by default) enabled: true, // This flag is required for DHT to run (disabled by default)
clientMode: false // Whether to run the WAN DHT in client or server mode (default: client mode) randomWalk: {
enabled: true, // Allows to disable discovery (enabled by default)
interval: 300e3,
timeout: 10e3
}
} }
} }
}) })

View File

@ -7,7 +7,7 @@
"libp2p": "github:libp2p/js-libp2p#master", "libp2p": "github:libp2p/js-libp2p#master",
"libp2p-delegated-content-routing": "~0.2.2", "libp2p-delegated-content-routing": "~0.2.2",
"libp2p-delegated-peer-routing": "~0.2.2", "libp2p-delegated-peer-routing": "~0.2.2",
"libp2p-kad-dht": "^0.26.5", "libp2p-kad-dht": "~0.14.12",
"libp2p-mplex": "~0.8.5", "libp2p-mplex": "~0.8.5",
"libp2p-secio": "~0.11.1", "libp2p-secio": "~0.11.1",
"libp2p-webrtc-star": "~0.15.8", "libp2p-webrtc-star": "~0.15.8",

View File

@ -55,7 +55,7 @@ const node = await Libp2p.create({
peerId, peerId,
addresses: { addresses: {
listen: ['/ip4/0.0.0.0/tcp/0'] listen: ['/ip4/0.0.0.0/tcp/0']
}, }
modules: { modules: {
transport: [ TCP ], transport: [ TCP ],
streamMuxer: [ Mplex ], streamMuxer: [ Mplex ],
@ -117,7 +117,7 @@ const createNode = () => {
return Libp2p.create({ return Libp2p.create({
addresses: { addresses: {
listen: ['/ip4/0.0.0.0/tcp/0'] listen: ['/ip4/0.0.0.0/tcp/0']
}, }
modules: { modules: {
transport: [ TCP ], transport: [ TCP ],
streamMuxer: [ Mplex ], streamMuxer: [ Mplex ],
@ -144,13 +144,8 @@ const [node1, node2] = await Promise.all([
createNode() createNode()
]) ])
node1.on('peer:discovery', (peer) => console.log('Discovered:', peerId.toB58String())) node1.on('peer:discovery', (peer) => console.log('Discovered:', peer.id.toB58String()))
node2.on('peer:discovery', (peer) => console.log('Discovered:', peerId.toB58String())) node2.on('peer:discovery', (peer) => console.log('Discovered:', peer.id.toB58String()))
await Promise.all([
node1.start(),
node2.start()
])
``` ```
If you run this example, you will see the other peers being discovered. If you run this example, you will see the other peers being discovered.

View File

@ -38,7 +38,7 @@ async function run() {
) )
await browser.close(); await browser.close();
} catch (/** @type {any} */ err) { } catch (err) {
console.error(err) console.error(err)
process.exit(1) process.exit(1)
} finally { } finally {

View File

@ -81,7 +81,7 @@ function print ({ stream }) {
// node 3 (listening WebSockets) can dial node 1 (TCP) // node 3 (listening WebSockets) can dial node 1 (TCP)
try { try {
await node3.dialProtocol(node1.peerId, '/print') await node3.dialProtocol(node1.peerId, '/print')
} catch (/** @type {any} */ err) { } catch (err) {
console.log('node 3 failed to dial to node 1 with:', err.message) console.log('node 3 failed to dial to node 1 with:', err.message)
} }
})(); })();

View File

@ -9,7 +9,7 @@ async function isExecutable (command) {
await fs.access(command, fs.constants.X_OK) await fs.access(command, fs.constants.X_OK)
return true return true
} catch (/** @type {any} */ err) { } catch (err) {
if (err.code === 'ENOENT') { if (err.code === 'ENOENT') {
return isExecutable(await which(command)) return isExecutable(await which(command))
} }
@ -49,7 +49,7 @@ async function waitForOutput (expectedOutput, command, args = [], opts = {}) {
try { try {
await proc await proc
} catch (/** @type {any} */ err) { } catch (err) {
if (!err.killed) { if (!err.killed) {
throw err throw err
} }

View File

@ -72,7 +72,7 @@ async function test () {
{ timeout: 10000 } { timeout: 10000 }
) )
await browser.close(); await browser.close();
} catch (/** @type {any} */ err) { } catch (err) {
console.error(err) console.error(err)
process.exit(1) process.exit(1)
} finally { } finally {

View File

@ -1,6 +1,6 @@
{ {
"name": "libp2p", "name": "libp2p",
"version": "0.34.0", "version": "0.33.0",
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack", "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
"leadMaintainer": "Jacob Heun <jacobheun@gmail.com>", "leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
"main": "src/index.js", "main": "src/index.js",
@ -41,7 +41,6 @@
"test:node": "aegir test -t node -f \"./test/**/*.{node,spec}.js\"", "test:node": "aegir test -t node -f \"./test/**/*.{node,spec}.js\"",
"test:browser": "aegir test -t browser", "test:browser": "aegir test -t browser",
"test:examples": "cd examples && npm run test:all", "test:examples": "cd examples && npm run test:all",
"test:interop": "LIBP2P_JS=$PWD npx aegir test -t node -f ./node_modules/libp2p-interop/test/*",
"prepare": "aegir build --no-bundle", "prepare": "aegir build --no-bundle",
"release": "aegir release -t node -t browser", "release": "aegir release -t node -t browser",
"release-minor": "aegir release --type minor -t node -t browser", "release-minor": "aegir release --type minor -t node -t browser",
@ -75,8 +74,7 @@
"extends": "ipfs", "extends": "ipfs",
"ignorePatterns": [ "ignorePatterns": [
"!.aegir.js", "!.aegir.js",
"test/ts-use", "test/ts-use"
"*.d.ts"
] ]
}, },
"dependencies": { "dependencies": {
@ -139,10 +137,11 @@
"@types/node": "^16.0.1", "@types/node": "^16.0.1",
"@types/node-forge": "^0.10.1", "@types/node-forge": "^0.10.1",
"@types/varint": "^6.0.0", "@types/varint": "^6.0.0",
"aegir": "^36.0.0", "aegir": "^33.1.1",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"datastore-core": "^6.0.7", "datastore-core": "^6.0.7",
"delay": "^5.0.0", "delay": "^5.0.0",
"interop-libp2p": "^0.4.0",
"into-stream": "^7.0.0", "into-stream": "^7.0.0",
"ipfs-http-client": "^52.0.2", "ipfs-http-client": "^52.0.2",
"it-concat": "^2.0.0", "it-concat": "^2.0.0",
@ -155,8 +154,7 @@
"libp2p-floodsub": "^0.27.0", "libp2p-floodsub": "^0.27.0",
"libp2p-gossipsub": "^0.11.0", "libp2p-gossipsub": "^0.11.0",
"libp2p-interfaces-compliance-tests": "^1.0.0", "libp2p-interfaces-compliance-tests": "^1.0.0",
"libp2p-interop": "^0.5.0", "libp2p-kad-dht": "^0.24.2",
"libp2p-kad-dht": "^0.26.5",
"libp2p-mdns": "^0.17.0", "libp2p-mdns": "^0.17.0",
"libp2p-mplex": "^0.10.1", "libp2p-mplex": "^0.10.1",
"libp2p-tcp": "^0.17.0", "libp2p-tcp": "^0.17.0",
@ -188,22 +186,21 @@
"Richard Littauer <richard.littauer@gmail.com>", "Richard Littauer <richard.littauer@gmail.com>",
"a1300 <matthias-knopp@gmx.net>", "a1300 <matthias-knopp@gmx.net>",
"Ryan Bell <ryan@piing.net>", "Ryan Bell <ryan@piing.net>",
"Elven <mon.samuel@qq.com>",
"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>", "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>",
"Franck Royer <franck@royer.one>",
"Thomas Eizinger <thomas@eizinger.io>", "Thomas Eizinger <thomas@eizinger.io>",
"Robert Kiel <robert.kiel@hoprnet.org>", "Giovanni T. Parra <fiatjaf@gmail.com>",
"acolytec3 <17355484+acolytec3@users.noreply.github.com>",
"Elven <mon.samuel@qq.com>",
"Andrew Nesbitt <andrewnez@gmail.com>", "Andrew Nesbitt <andrewnez@gmail.com>",
"Samlior <samlior@foxmail.com>", "Samlior <samlior@foxmail.com>",
"acolytec3 <17355484+acolytec3@users.noreply.github.com>",
"Franck Royer <franck@royer.one>",
"Giovanni T. Parra <fiatjaf@gmail.com>",
"Didrik Nordström <didrik.nordstrom@gmail.com>", "Didrik Nordström <didrik.nordstrom@gmail.com>",
"RasmusErik Voel Jensen <github@solsort.com>", "RasmusErik Voel Jensen <github@solsort.com>",
"Robert Kiel <robert.kiel@hoprnet.org>",
"Smite Chow <xiaopengyou@live.com>", "Smite Chow <xiaopengyou@live.com>",
"Soeren <nikorpoulsen@gmail.com>", "Soeren <nikorpoulsen@gmail.com>",
"Sönke Hahn <soenkehahn@gmail.com>", "Sönke Hahn <soenkehahn@gmail.com>",
"TJKoury <TJKoury@gmail.com>", "TJKoury <TJKoury@gmail.com>",
"TheStarBoys <41286328+TheStarBoys@users.noreply.github.com>",
"Tiago Alves <alvesjtiago@gmail.com>", "Tiago Alves <alvesjtiago@gmail.com>",
"XiaoZhang <zxinmyth@gmail.com>", "XiaoZhang <zxinmyth@gmail.com>",
"Yusef Napora <yusef@napora.org>", "Yusef Napora <yusef@napora.org>",
@ -213,13 +210,11 @@
"isan_rivkin <isanrivkin@gmail.com>", "isan_rivkin <isanrivkin@gmail.com>",
"mayerwin <mayerwin@users.noreply.github.com>", "mayerwin <mayerwin@users.noreply.github.com>",
"mcclure <andi.m.mcclure@gmail.com>", "mcclure <andi.m.mcclure@gmail.com>",
"patrickwoodhead <91056047+patrickwoodhead@users.noreply.github.com>",
"phillmac <phillmac@users.noreply.github.com>", "phillmac <phillmac@users.noreply.github.com>",
"robertkiel <robert.kiel@validitylabs.org>", "robertkiel <robert.kiel@validitylabs.org>",
"shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>", "shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>",
"swedneck <40505480+swedneck@users.noreply.github.com>", "swedneck <40505480+swedneck@users.noreply.github.com>",
"greenSnot <greenSnot@users.noreply.github.com>", "greenSnot <greenSnot@users.noreply.github.com>",
"Alan Smithee <ggnore.alan.smithee@gmail.com>",
"Aleksei <vozhdb@gmail.com>", "Aleksei <vozhdb@gmail.com>",
"Bernd Strehl <bernd.strehl@gmail.com>", "Bernd Strehl <bernd.strehl@gmail.com>",
"Chris Bratlien <chrisbratlien@gmail.com>", "Chris Bratlien <chrisbratlien@gmail.com>",

View File

@ -116,7 +116,7 @@ class AutoRelay {
this._peerStore.metadataBook.set(peerId, HOP_METADATA_KEY, uint8ArrayFromString(HOP_METADATA_VALUE)) this._peerStore.metadataBook.set(peerId, HOP_METADATA_KEY, uint8ArrayFromString(HOP_METADATA_VALUE))
await this._addListenRelay(connection, id) await this._addListenRelay(connection, id)
} }
} catch (/** @type {any} */ err) { } catch (err) {
this._onError(err) this._onError(err)
} }
} }
@ -169,7 +169,7 @@ class AutoRelay {
try { try {
await this._transportManager.listen([new Multiaddr(listenAddr)]) await this._transportManager.listen([new Multiaddr(listenAddr)])
// Announce multiaddrs will update on listen success by TransportManager event being triggered // Announce multiaddrs will update on listen success by TransportManager event being triggered
} catch (/** @type {any} */ err) { } catch (err) {
this._onError(err) this._onError(err)
this._listenRelays.delete(id) this._listenRelays.delete(id)
} }
@ -267,7 +267,7 @@ class AutoRelay {
return return
} }
} }
} catch (/** @type {any} */ err) { } catch (err) {
this._onError(err) this._onError(err)
} }
} }
@ -279,7 +279,7 @@ class AutoRelay {
try { try {
const connection = await this._libp2p.dial(peerId) const connection = await this._libp2p.dial(peerId)
await this._addListenRelay(connection, peerId.toB58String()) await this._addListenRelay(connection, peerId.toB58String())
} catch (/** @type {any} */ err) { } catch (err) {
this._onError(err, `could not connect and listen on known hop relay ${peerId.toB58String()}`) this._onError(err, `could not connect and listen on known hop relay ${peerId.toB58String()}`)
} }
} }

View File

@ -54,7 +54,7 @@ async function handleHop ({
// Validate the HOP request has the required input // Validate the HOP request has the required input
try { try {
validateAddrs(request, streamHandler) validateAddrs(request, streamHandler)
} catch (/** @type {any} */ err) { } catch (err) {
return log.error('invalid hop request via peer %s', connection.remotePeer.toB58String(), err) return log.error('invalid hop request via peer %s', connection.remotePeer.toB58String(), err)
} }
@ -93,7 +93,7 @@ async function handleHop ({
connection: destinationConnection, connection: destinationConnection,
request: stopRequest request: stopRequest
}) })
} catch (/** @type {any} */ err) { } catch (err) {
return log.error(err) return log.error(err)
} }

View File

@ -34,7 +34,7 @@ module.exports.handleStop = function handleStop ({
// Validate the STOP request has the required input // Validate the STOP request has the required input
try { try {
validateAddrs(request, streamHandler) validateAddrs(request, streamHandler)
} catch (/** @type {any} */ err) { } catch (err) {
return log.error('invalid stop request via peer %s', connection.remotePeer.toB58String(), err) return log.error('invalid stop request via peer %s', connection.remotePeer.toB58String(), err)
} }

View File

@ -34,7 +34,7 @@ function validateAddrs (msg, streamHandler) {
return new Multiaddr(addr) return new Multiaddr(addr)
}) })
} }
} catch (/** @type {any} */ err) { } catch (err) {
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID ? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID
: CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID) : CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID)
@ -47,7 +47,7 @@ function validateAddrs (msg, streamHandler) {
return new Multiaddr(addr) return new Multiaddr(addr)
}) })
} }
} catch (/** @type {any} */ err) { } catch (err) {
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID ? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID
: CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID) : CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID)

View File

@ -87,7 +87,7 @@ class Relay {
try { try {
const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS) const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS)
await this._libp2p.contentRouting.provide(cid) await this._libp2p.contentRouting.provide(cid)
} catch (/** @type {any} */ err) { } catch (err) {
if (err.code === 'NO_ROUTERS_AVAILABLE') { if (err.code === 'NO_ROUTERS_AVAILABLE') {
log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err) log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err)
// Stop the advertise // Stop the advertise

View File

@ -171,7 +171,7 @@ class Circuit {
log('new outbound connection %s', maConn.remoteAddr) log('new outbound connection %s', maConn.remoteAddr)
return this._upgrader.upgradeOutbound(maConn) return this._upgrader.upgradeOutbound(maConn)
} catch (/** @type {any} */ err) { } catch (err) {
log.error('Circuit relay dial failed', err) log.error('Circuit relay dial failed', err)
disconnectOnFailure && await relayConnection.close() disconnectOnFailure && await relayConnection.close()
throw err throw err

View File

@ -350,7 +350,7 @@ class ConnectionManager extends EventEmitter {
if (!this._started) { if (!this._started) {
return return
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error('could not connect to peerStore stored peer', err) log.error('could not connect to peerStore stored peer', err)
} }
} }

View File

@ -8,10 +8,9 @@ const {
requirePeers, requirePeers,
maybeLimitSource maybeLimitSource
} = require('./utils') } = require('./utils')
const drain = require('it-drain')
const merge = require('it-merge') const merge = require('it-merge')
const { pipe } = require('it-pipe') const { pipe } = require('it-pipe')
const { DHTContentRouting } = require('../dht/dht-content-routing')
/** /**
* @typedef {import('peer-id')} PeerId * @typedef {import('peer-id')} PeerId
@ -39,7 +38,7 @@ class ContentRouting {
// If we have the dht, add it to the available content routers // If we have the dht, add it to the available content routers
if (this.dht && libp2p._config.dht.enabled) { if (this.dht && libp2p._config.dht.enabled) {
this.routers.push(new DHTContentRouting(this.dht)) this.routers.push(this.dht)
} }
} }
@ -92,12 +91,12 @@ class ContentRouting {
* @param {number} [options.minPeers] - minimum number of peers required to successfully put * @param {number} [options.minPeers] - minimum number of peers required to successfully put
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async put (key, value, options) { put (key, value, options) {
if (!this.libp2p.isStarted() || !this.dht.isStarted) { if (!this.libp2p.isStarted() || !this.dht.isStarted) {
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED) throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
} }
await drain(this.dht.put(key, value, options)) return this.dht.put(key, value, options)
} }
/** /**
@ -109,18 +108,12 @@ class ContentRouting {
* @param {number} [options.timeout] - optional timeout (default: 60000) * @param {number} [options.timeout] - optional timeout (default: 60000)
* @returns {Promise<GetData>} * @returns {Promise<GetData>}
*/ */
async get (key, options) { get (key, options) {
if (!this.libp2p.isStarted() || !this.dht.isStarted) { if (!this.libp2p.isStarted() || !this.dht.isStarted) {
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED) throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
} }
for await (const event of this.dht.get(key, options)) { return this.dht.get(key, options)
if (event.name === 'VALUE') {
return { from: event.peerId, val: event.value }
}
}
throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
} }
/** /**
@ -130,33 +123,14 @@ class ContentRouting {
* @param {number} nVals * @param {number} nVals
* @param {Object} [options] - get options * @param {Object} [options] - get options
* @param {number} [options.timeout] - optional timeout (default: 60000) * @param {number} [options.timeout] - optional timeout (default: 60000)
* @returns {Promise<GetData[]>}
*/ */
async * getMany (key, nVals, options) { // eslint-disable-line require-await async getMany (key, nVals, options) { // eslint-disable-line require-await
if (!this.libp2p.isStarted() || !this.dht.isStarted) { if (!this.libp2p.isStarted() || !this.dht.isStarted) {
throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED) throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
} }
if (!nVals) { return this.dht.getMany(key, nVals, options)
return
}
let gotValues = 0
for await (const event of this.dht.get(key, options)) {
if (event.name === 'VALUE') {
yield { from: event.peerId, val: event.value }
gotValues++
if (gotValues === nVals) {
break
}
}
}
if (gotValues === 0) {
throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
}
} }
} }

View File

@ -1,44 +0,0 @@
'use strict'
const drain = require('it-drain')
/**
* @typedef {import('peer-id')} PeerId
* @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
* @typedef {import('multiformats/cid').CID} CID
*/
/**
* Wrapper class to convert events into returned values
*
* @implements {ContentRoutingModule}
*/
class DHTContentRouting {
/**
* @param {import('libp2p-kad-dht').DHT} dht
*/
constructor (dht) {
this._dht = dht
}
/**
* @param {CID} cid
*/
async provide (cid) {
await drain(this._dht.provide(cid))
}
/**
* @param {CID} cid
* @param {*} options
*/
async * findProviders (cid, options) {
for await (const event of this._dht.findProviders(cid, options)) {
if (event.name === 'PROVIDER') {
yield * event.providers
}
}
}
}
module.exports = { DHTContentRouting }

View File

@ -1,51 +0,0 @@
'use strict'
const errCode = require('err-code')
const { messages, codes } = require('../errors')
/**
* @typedef {import('peer-id')} PeerId
* @typedef {import('libp2p-interfaces/src/peer-routing/types').PeerRouting} PeerRoutingModule
*/
/**
* Wrapper class to convert events into returned values
*
* @implements {PeerRoutingModule}
*/
class DHTPeerRouting {
/**
* @param {import('libp2p-kad-dht').DHT} dht
*/
constructor (dht) {
this._dht = dht
}
/**
* @param {PeerId} peerId
* @param {any} options
*/
async findPeer (peerId, options = {}) {
for await (const event of this._dht.findPeer(peerId, options)) {
if (event.name === 'FINAL_PEER') {
return event.peer
}
}
throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
}
/**
* @param {Uint8Array} key
* @param {any} options
*/
async * getClosestPeers (key, options = {}) {
for await (const event of this._dht.getClosestPeers(key, options)) {
if (event.name === 'PEER_RESPONSE') {
yield * event.closer
}
}
}
}
module.exports = { DHTPeerRouting }

View File

@ -95,7 +95,7 @@ class Dialer {
for (const dial of this._pendingDials.values()) { for (const dial of this._pendingDials.values()) {
try { try {
dial.controller.abort() dial.controller.abort()
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }
@ -129,7 +129,7 @@ class Dialer {
const connection = await pendingDial.promise const connection = await pendingDial.promise
log('dial succeeded to %s', dialTarget.id) log('dial succeeded to %s', dialTarget.id)
return connection return connection
} catch (/** @type {any} */ err) { } catch (err) {
// Error is a timeout // Error is a timeout
if (pendingDial.controller.signal.aborted) { if (pendingDial.controller.signal.aborted) {
err.code = codes.ERR_TIMEOUT err.code = codes.ERR_TIMEOUT

View File

@ -3,8 +3,7 @@
exports.messages = { exports.messages = {
NOT_STARTED_YET: 'The libp2p node is not started yet', NOT_STARTED_YET: 'The libp2p node is not started yet',
DHT_DISABLED: 'DHT is not available', DHT_DISABLED: 'DHT is not available',
CONN_ENCRYPTION_REQUIRED: 'At least one connection encryption module is required', CONN_ENCRYPTION_REQUIRED: 'At least one connection encryption module is required'
NOT_FOUND: 'Not found'
} }
exports.codes = { exports.codes = {
@ -30,7 +29,6 @@ exports.codes = {
ERR_INVALID_PARAMETERS: 'ERR_INVALID_PARAMETERS', ERR_INVALID_PARAMETERS: 'ERR_INVALID_PARAMETERS',
ERR_INVALID_PEER: 'ERR_INVALID_PEER', ERR_INVALID_PEER: 'ERR_INVALID_PEER',
ERR_MUXER_UNAVAILABLE: 'ERR_MUXER_UNAVAILABLE', ERR_MUXER_UNAVAILABLE: 'ERR_MUXER_UNAVAILABLE',
ERR_NOT_FOUND: 'ERR_NOT_FOUND',
ERR_TIMEOUT: 'ERR_TIMEOUT', ERR_TIMEOUT: 'ERR_TIMEOUT',
ERR_TRANSPORT_UNAVAILABLE: 'ERR_TRANSPORT_UNAVAILABLE', ERR_TRANSPORT_UNAVAILABLE: 'ERR_TRANSPORT_UNAVAILABLE',
ERR_TRANSPORT_DIAL_FAILED: 'ERR_TRANSPORT_DIAL_FAILED', ERR_TRANSPORT_DIAL_FAILED: 'ERR_TRANSPORT_DIAL_FAILED',

View File

@ -32,7 +32,7 @@ function getPeer (peer) {
try { try {
peer = PeerId.createFromB58String(idStr) peer = PeerId.createFromB58String(idStr)
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode( throw errCode(
new Error(`${peer} is not a valid peer type`), new Error(`${peer} is not a valid peer type`),
codes.ERR_INVALID_MULTIADDR codes.ERR_INVALID_MULTIADDR

View File

@ -124,7 +124,7 @@ class IdentifyService {
stream, stream,
consume consume
) )
} catch (/** @type {any} */ err) { } catch (err) {
// Just log errors // Just log errors
log.error('could not push identify update to peer', err) log.error('could not push identify update to peer', err)
} }
@ -182,7 +182,7 @@ class IdentifyService {
let message let message
try { try {
message = Message.Identify.decode(data) message = Message.Identify.decode(data)
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_INVALID_MESSAGE) throw errCode(err, codes.ERR_INVALID_MESSAGE)
} }
@ -211,14 +211,14 @@ class IdentifyService {
this.peerStore.metadataBook.set(id, 'ProtocolVersion', uint8ArrayFromString(message.protocolVersion)) this.peerStore.metadataBook.set(id, 'ProtocolVersion', uint8ArrayFromString(message.protocolVersion))
return return
} }
} catch (/** @type {any} */ err) { } catch (err) {
log('received invalid envelope, discard it and fallback to listenAddrs is available', err) log('received invalid envelope, discard it and fallback to listenAddrs is available', err)
} }
// LEGACY: Update peers data in PeerStore // LEGACY: Update peers data in PeerStore
try { try {
this.peerStore.addressBook.set(id, listenAddrs.map((addr) => new Multiaddr(addr))) this.peerStore.addressBook.set(id, listenAddrs.map((addr) => new Multiaddr(addr)))
} catch (/** @type {any} */ err) { } catch (err) {
log.error('received invalid addrs', err) log.error('received invalid addrs', err)
} }
@ -287,7 +287,7 @@ class IdentifyService {
stream, stream,
consume consume
) )
} catch (/** @type {any} */ err) { } catch (err) {
log.error('could not respond to identify request', err) log.error('could not respond to identify request', err)
} }
} }
@ -313,7 +313,7 @@ class IdentifyService {
collect collect
) )
message = Message.Identify.decode(data) message = Message.Identify.decode(data)
} catch (/** @type {any} */ err) { } catch (err) {
return log.error('received invalid message', err) return log.error('received invalid message', err)
} }
@ -325,7 +325,7 @@ class IdentifyService {
this.peerStore.protoBook.set(id, message.protocols) this.peerStore.protoBook.set(id, message.protocols)
return return
} }
} catch (/** @type {any} */ err) { } catch (err) {
log('received invalid envelope, discard it and fallback to listenAddrs is available', err) log('received invalid envelope, discard it and fallback to listenAddrs is available', err)
} }
@ -333,7 +333,7 @@ class IdentifyService {
try { try {
this.peerStore.addressBook.set(id, this.peerStore.addressBook.set(id,
message.listenAddrs.map((addr) => new Multiaddr(addr))) message.listenAddrs.map((addr) => new Multiaddr(addr)))
} catch (/** @type {any} */ err) { } catch (err) {
log.error('received invalid addrs', err) log.error('received invalid addrs', err)
} }

View File

@ -301,9 +301,14 @@ class Libp2p extends EventEmitter {
// dht provided components (peerRouting, contentRouting, dht) // dht provided components (peerRouting, contentRouting, dht)
if (this._modules.dht) { if (this._modules.dht) {
const DHT = this._modules.dht const DHT = this._modules.dht
// @ts-ignore TODO: types need fixing - DHT is an `object` which has no `create` method // @ts-ignore Object is not constructable
this._dht = DHT.create({ this._dht = new DHT({
libp2p: this, libp2p: this,
dialer: this.dialer,
peerId: this.peerId,
peerStore: this.peerStore,
registrar: this.registrar,
datastore: this.datastore,
...this._config.dht ...this._config.dht
}) })
} }
@ -358,7 +363,7 @@ class Libp2p extends EventEmitter {
await this._onStarting() await this._onStarting()
await this._onDidStart() await this._onDidStart()
log('libp2p has started') log('libp2p has started')
} catch (/** @type {any} */ err) { } catch (err) {
this.emit('error', err) this.emit('error', err)
log.error('An error occurred starting libp2p', err) log.error('An error occurred starting libp2p', err)
await this.stop() await this.stop()
@ -403,7 +408,7 @@ class Libp2p extends EventEmitter {
ping.unmount(this) ping.unmount(this)
this.dialer.destroy() this.dialer.destroy()
} catch (/** @type {any} */ err) { } catch (err) {
if (err) { if (err) {
log.error(err) log.error(err)
this.emit('error', err) this.emit('error', err)
@ -426,7 +431,7 @@ class Libp2p extends EventEmitter {
try { try {
await this.keychain.findKeyByName('self') await this.keychain.findKeyByName('self')
} catch (/** @type {any} */ err) { } catch (err) {
await this.keychain.importPeer('self', this.peerId) await this.keychain.importPeer('self', this.peerId)
} }
} }
@ -619,7 +624,7 @@ class Libp2p extends EventEmitter {
// DHT subsystem // DHT subsystem
if (this._config.dht.enabled) { if (this._config.dht.enabled) {
this._dht && await this._dht.start() this._dht && this._dht.start()
// TODO: this should be modified once random-walk is used as // TODO: this should be modified once random-walk is used as
// the other discovery modules // the other discovery modules
@ -693,7 +698,7 @@ class Libp2p extends EventEmitter {
log('connecting to discovered peer %s', peerId.toB58String()) log('connecting to discovered peer %s', peerId.toB58String())
try { try {
await this.dialer.connectToPeer(peerId) await this.dialer.connectToPeer(peerId)
} catch (/** @type {any} */ err) { } catch (err) {
log.error(`could not connect to discovered peer ${peerId.toB58String()} with ${err}`) log.error(`could not connect to discovered peer ${peerId.toB58String()} with ${err}`)
} }
} }

View File

@ -55,7 +55,7 @@ async function encrypt (localId, conn, remoteId) {
let peerId let peerId
try { try {
peerId = await PeerId.createFromPubKey(id.pubkey.Data) peerId = await PeerId.createFromPubKey(id.pubkey.Data)
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
throw new InvalidCryptoExchangeError('Remote did not provide its public key') throw new InvalidCryptoExchangeError('Remote did not provide its public key')
} }

View File

@ -90,7 +90,7 @@ class CMS {
const obj = forge.asn1.fromDer(buf) const obj = forge.asn1.fromDer(buf)
// @ts-ignore not defined // @ts-ignore not defined
cms = forge.pkcs7.messageFromAsn1(obj) cms = forge.pkcs7.messageFromAsn1(obj)
} catch (/** @type {any} */ err) { } catch (err) {
throw errcode(new Error('Invalid CMS: ' + err.message), 'ERR_INVALID_CMS') throw errcode(new Error('Invalid CMS: ' + err.message), 'ERR_INVALID_CMS')
} }
@ -114,7 +114,7 @@ class CMS {
try { try {
const key = await this.keychain.findKeyById(recipient.keyId) const key = await this.keychain.findKeyById(recipient.keyId)
if (key) return true if (key) return true
} catch (/** @type {any} */ err) { } catch (err) {
return false return false
} }
return false return false

View File

@ -248,7 +248,7 @@ class Keychain {
batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo))) batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)))
await batch.commit() await batch.commit()
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
@ -284,7 +284,7 @@ class Keychain {
try { try {
const keys = await this.listKeys() const keys = await this.listKeys()
return keys.find((k) => k.id === id) return keys.find((k) => k.id === id)
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
} }
@ -304,7 +304,7 @@ class Keychain {
try { try {
const res = await this.store.get(dsname) const res = await this.store.get(dsname)
return JSON.parse(uint8ArrayToString(res)) return JSON.parse(uint8ArrayToString(res))
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(errcode(new Error(`Key '${name}' does not exist. ${err.message}`), 'ERR_KEY_NOT_FOUND')) return throwDelayed(errcode(new Error(`Key '${name}' does not exist. ${err.message}`), 'ERR_KEY_NOT_FOUND'))
} }
} }
@ -365,7 +365,7 @@ class Keychain {
batch.delete(oldInfoName) batch.delete(oldInfoName)
await batch.commit() await batch.commit()
return keyInfo return keyInfo
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
} }
@ -393,7 +393,7 @@ class Keychain {
const dek = privates.get(this).dek const dek = privates.get(this).dek
const privateKey = await crypto.keys.import(pem, dek) const privateKey = await crypto.keys.import(pem, dek)
return privateKey.export(password) return privateKey.export(password)
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
} }
@ -421,7 +421,7 @@ class Keychain {
let privateKey let privateKey
try { try {
privateKey = await crypto.keys.import(pem, password) privateKey = await crypto.keys.import(pem, password)
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(errcode(new Error('Cannot read the key, most likely the password is wrong'), 'ERR_CANNOT_READ_KEY')) return throwDelayed(errcode(new Error('Cannot read the key, most likely the password is wrong'), 'ERR_CANNOT_READ_KEY'))
} }
@ -431,7 +431,7 @@ class Keychain {
/** @type {string} */ /** @type {string} */
const dek = privates.get(this).dek const dek = privates.get(this).dek
pem = await privateKey.export(dek) pem = await privateKey.export(dek)
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
@ -482,7 +482,7 @@ class Keychain {
batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo))) batch.put(DsInfoName(name), uint8ArrayFromString(JSON.stringify(keyInfo)))
await batch.commit() await batch.commit()
return keyInfo return keyInfo
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(err) return throwDelayed(err)
} }
} }
@ -502,7 +502,7 @@ class Keychain {
const dsname = DsName(name) const dsname = DsName(name)
const res = await this.store.get(dsname) const res = await this.store.get(dsname)
return uint8ArrayToString(res) return uint8ArrayToString(res)
} catch (/** @type {any} */ err) { } catch (err) {
return throwDelayed(errcode(new Error(`Key '${name}' does not exist. ${err.message}`), 'ERR_KEY_NOT_FOUND')) return throwDelayed(errcode(new Error(`Key '${name}' does not exist. ${err.message}`), 'ERR_KEY_NOT_FOUND'))
} }
} }

View File

@ -114,7 +114,7 @@ class NatManager {
const client = this._getClient() const client = this._getClient()
const publicIp = this._externalIp || await client.externalIp() const publicIp = this._externalIp || await client.externalIp()
// @ts-expect-error types are wrong // @ts-ignore isPrivate has no call signatures
if (isPrivateIp(publicIp)) { if (isPrivateIp(publicIp)) {
throw new Error(`${publicIp} is private - please set config.nat.externalIp to an externally routable IP or ensure you are not behind a double NAT`) throw new Error(`${publicIp} is private - please set config.nat.externalIp to an externally routable IP or ensure you are not behind a double NAT`)
} }
@ -188,7 +188,7 @@ class NatManager {
try { try {
await this._client.destroy() await this._client.destroy()
this._client = null this._client = null
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }

View File

@ -21,7 +21,6 @@ const {
clearDelayedInterval clearDelayedInterval
// @ts-ignore module with no types // @ts-ignore module with no types
} = require('set-delayed-interval') } = require('set-delayed-interval')
const { DHTPeerRouting } = require('./dht/dht-peer-routing')
/** /**
* @typedef {import('peer-id')} PeerId * @typedef {import('peer-id')} PeerId
@ -52,7 +51,7 @@ class PeerRouting {
// If we have the dht, add it to the available peer routers // If we have the dht, add it to the available peer routers
if (libp2p._dht && libp2p._config.dht.enabled) { if (libp2p._dht && libp2p._config.dht.enabled) {
this._routers.push(new DHTPeerRouting(libp2p._dht)) this._routers.push(libp2p._dht)
} }
this._refreshManagerOptions = libp2p._options.peerRouting.refreshManager this._refreshManagerOptions = libp2p._options.peerRouting.refreshManager
@ -80,7 +79,7 @@ class PeerRouting {
try { try {
// nb getClosestPeers adds the addresses to the address book // nb getClosestPeers adds the addresses to the address book
await drain(this.getClosestPeers(this._peerId.id)) await drain(this.getClosestPeers(this._peerId.id))
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }

View File

@ -83,7 +83,7 @@ class AddressBook extends Book {
let peerRecord let peerRecord
try { try {
peerRecord = PeerRecord.createFromProtobuf(envelope.payload) peerRecord = PeerRecord.createFromProtobuf(envelope.payload)
} catch (/** @type {any} */ err) { } catch (err) {
log.error('invalid peer record received') log.error('invalid peer record received')
return false return false
} }

View File

@ -80,11 +80,10 @@ class MetadataBook extends Book {
/** /**
* Set data into the datastructure * Set data into the datastructure
* *
* @override
* @param {PeerId} peerId * @param {PeerId} peerId
* @param {string} key * @param {string} key
* @param {Uint8Array} value * @param {Uint8Array} value
* @param {object} [opts]
* @param {boolean} [opts.emit]
*/ */
_setValue (peerId, key, value, { emit = true } = {}) { _setValue (peerId, key, value, { emit = true } = {}) {
const id = peerId.toB58String() const id = peerId.toB58String()

View File

@ -249,7 +249,7 @@ class PersistentPeerStore extends PeerStore {
}).finish() }).finish()
batch.put(key, encodedData) batch.put(key, encodedData)
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }
@ -275,7 +275,7 @@ class PersistentPeerStore extends PeerStore {
const encodedData = peerId.marshalPubKey() const encodedData = peerId.marshalPubKey()
batch.put(key, encodedData) batch.put(key, encodedData)
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }
@ -302,7 +302,7 @@ class PersistentPeerStore extends PeerStore {
batch.delete(key) batch.delete(key)
} }
}) })
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }
@ -330,7 +330,7 @@ class PersistentPeerStore extends PeerStore {
const encodedData = Protocols.encode({ protocols }).finish() const encodedData = Protocols.encode({ protocols }).finish()
batch.put(key, encodedData) batch.put(key, encodedData)
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }
@ -399,7 +399,7 @@ class PersistentPeerStore extends PeerStore {
default: default:
log('invalid data persisted for: ', key.toString()) log('invalid data persisted for: ', key.toString())
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
} }

View File

@ -77,7 +77,7 @@ module.exports.decodeV1PSK = (pskBuffer) => {
codecName: codec, codecName: codec,
psk: psk psk: psk
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
throw new Error(Errors.INVALID_PSK) throw new Error(Errors.INVALID_PSK)
} }

View File

@ -28,6 +28,6 @@ try {
// @ts-ignore // @ts-ignore
generate(process.stdout) generate(process.stdout)
} }
} catch (/** @type {any} */ error) { } catch (error) {
} }

View File

@ -109,7 +109,7 @@ class TransportManager {
try { try {
return await transport.dial(ma, options) return await transport.dial(ma, options)
} catch (/** @type {any} */ err) { } catch (err) {
if (!err.code) err.code = codes.ERR_TRANSPORT_DIAL_FAILED if (!err.code) err.code = codes.ERR_TRANSPORT_DIAL_FAILED
throw err throw err
} }

View File

@ -106,7 +106,7 @@ class Upgrader {
} else { } else {
upgradedConn = encryptedConn upgradedConn = encryptedConn
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error('Failed to upgrade inbound connection', err) log.error('Failed to upgrade inbound connection', err)
await maConn.close(err) await maConn.close(err)
throw err throw err
@ -181,7 +181,7 @@ class Upgrader {
} else { } else {
upgradedConn = encryptedConn upgradedConn = encryptedConn
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error('Failed to upgrade outbound connection', err) log.error('Failed to upgrade outbound connection', err)
await maConn.close(err) await maConn.close(err)
throw err throw err
@ -245,7 +245,7 @@ class Upgrader {
if (this.metrics) this.metrics.trackStream({ stream, remotePeer, protocol }) if (this.metrics) this.metrics.trackStream({ stream, remotePeer, protocol })
connection.addStream(muxedStream, { protocol }) connection.addStream(muxedStream, { protocol })
this._onStream({ connection, stream: { ...muxedStream, ...stream }, protocol }) this._onStream({ connection, stream: { ...muxedStream, ...stream }, protocol })
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} }
}, },
@ -263,7 +263,7 @@ class Upgrader {
const { stream, protocol } = await mss.select(protocols) const { stream, protocol } = await mss.select(protocols)
if (this.metrics) this.metrics.trackStream({ stream, remotePeer, protocol }) if (this.metrics) this.metrics.trackStream({ stream, remotePeer, protocol })
return { stream: { ...muxedStream, ...stream }, protocol } return { stream: { ...muxedStream, ...stream }, protocol }
} catch (/** @type {any} */ err) { } catch (err) {
log.error('could not create new stream', err) log.error('could not create new stream', err)
throw errCode(err, codes.ERR_UNSUPPORTED_PROTOCOL) throw errCode(err, codes.ERR_UNSUPPORTED_PROTOCOL)
} }
@ -283,7 +283,7 @@ class Upgrader {
if (connection.stat.status === 'open') { if (connection.stat.status === 'open') {
await connection.close() await connection.close()
} }
} catch (/** @type {any} */ err) { } catch (err) {
log.error(err) log.error(err)
} finally { } finally {
this.onConnectionEnd(connection) this.onConnectionEnd(connection)
@ -371,7 +371,7 @@ class Upgrader {
...await crypto.secureInbound(localPeer, stream), ...await crypto.secureInbound(localPeer, stream),
protocol protocol
} }
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_ENCRYPTION_FAILED) throw errCode(err, codes.ERR_ENCRYPTION_FAILED)
} }
} }
@ -406,7 +406,7 @@ class Upgrader {
...await crypto.secureOutbound(localPeer, stream, remotePeerId), ...await crypto.secureOutbound(localPeer, stream, remotePeerId),
protocol protocol
} }
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_ENCRYPTION_FAILED) throw errCode(err, codes.ERR_ENCRYPTION_FAILED)
} }
} }
@ -430,7 +430,7 @@ class Upgrader {
log('%s selected as muxer protocol', protocol) log('%s selected as muxer protocol', protocol)
const Muxer = muxers.get(protocol) const Muxer = muxers.get(protocol)
return { stream, Muxer } return { stream, Muxer }
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_MUXER_UNAVAILABLE) throw errCode(err, codes.ERR_MUXER_UNAVAILABLE)
} }
} }
@ -453,7 +453,7 @@ class Upgrader {
const { stream, protocol } = await listener.handle(protocols) const { stream, protocol } = await listener.handle(protocols)
const Muxer = muxers.get(protocol) const Muxer = muxers.get(protocol)
return { stream, Muxer } return { stream, Muxer }
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_MUXER_UNAVAILABLE) throw errCode(err, codes.ERR_MUXER_UNAVAILABLE)
} }
} }

View File

@ -34,7 +34,7 @@ describe('content-routing', () => {
try { try {
for await (const _ of node.contentRouting.findProviders('a cid')) {} // eslint-disable-line for await (const _ of node.contentRouting.findProviders('a cid')) {} // eslint-disable-line
throw new Error('.findProviders should return an error') throw new Error('.findProviders should return an error')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
expect(err.code).to.equal('NO_ROUTERS_AVAILABLE') expect(err.code).to.equal('NO_ROUTERS_AVAILABLE')
} }
@ -238,7 +238,7 @@ describe('content-routing', () => {
try { try {
for await (const _ of node.contentRouting.findProviders(cid)) { } // eslint-disable-line for await (const _ of node.contentRouting.findProviders(cid)) { } // eslint-disable-line
throw new Error('should handle errors when finding providers') throw new Error('should handle errors when finding providers')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
} }

View File

@ -125,7 +125,7 @@ describe('Dial Request', () => {
try { try {
await dialRequest.run({ signal: controller.signal }) await dialRequest.run({ signal: controller.signal })
expect.fail('Should have thrown') expect.fail('Should have thrown')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.be.an.instanceof(AggregateError) expect(err).to.be.an.instanceof(AggregateError)
} }
@ -162,7 +162,7 @@ describe('Dial Request', () => {
try { try {
await dialRequest.run({ signal: controller.signal }) await dialRequest.run({ signal: controller.signal })
expect.fail('Should have thrown') expect.fail('Should have thrown')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.be.an.instanceof(AggregateError) expect(err).to.be.an.instanceof(AggregateError)
} }
@ -212,7 +212,7 @@ describe('Dial Request', () => {
setTimeout(() => controller.abort(), 100) setTimeout(() => controller.abort(), 100)
await dialRequest.run({ signal: controller.signal }) await dialRequest.run({ signal: controller.signal })
expect.fail('dial should have failed') expect.fail('dial should have failed')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.be.an.instanceof(AggregateError) expect(err).to.be.an.instanceof(AggregateError)
} }

View File

@ -277,7 +277,7 @@ describe('Dialing (direct, TCP)', () => {
try { try {
await libp2p.dial(remoteLibp2p.transportManager.getAddrs()[0]) await libp2p.dial(remoteLibp2p.transportManager.getAddrs()[0])
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.have.property('code', ErrorCodes.ERR_INVALID_MULTIADDR) expect(err).to.have.property('code', ErrorCodes.ERR_INVALID_MULTIADDR)
return return
} }

View File

@ -304,7 +304,7 @@ describe('Dialing (direct, WebSockets)', () => {
dialer.destroy() dialer.destroy()
await dialPromise await dialPromise
expect.fail('should have failed') expect.fail('should have failed')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.be.an.instanceof(AggregateError) expect(err).to.be.an.instanceof(AggregateError)
expect(dialer._pendingDials.size).to.equal(0) // 1 dial request expect(dialer._pendingDials.size).to.equal(0) // 1 dial request
} }

View File

@ -519,7 +519,7 @@ describe('keychain', () => {
it('should validate newPass is a string', async () => { it('should validate newPass is a string', async () => {
try { try {
await kc.rotateKeychainPass(oldPass, 1234567890) await kc.rotateKeychainPass(oldPass, 1234567890)
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
} }
}) })
@ -527,7 +527,7 @@ describe('keychain', () => {
it('should validate oldPass is a string', async () => { it('should validate oldPass is a string', async () => {
try { try {
await kc.rotateKeychainPass(1234, 'newInsecurePassword1') await kc.rotateKeychainPass(1234, 'newInsecurePassword1')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
} }
}) })
@ -535,7 +535,7 @@ describe('keychain', () => {
it('should validate newPass is at least 20 characters', async () => { it('should validate newPass is at least 20 characters', async () => {
try { try {
await kc.rotateKeychainPass(oldPass, 'not20Chars') await kc.rotateKeychainPass(oldPass, 'not20Chars')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
} }
}) })
@ -586,7 +586,7 @@ describe('libp2p.keychain', () => {
try { try {
await libp2p.keychain.createKey('keyName', 'rsa', 2048) await libp2p.keychain.createKey('keyName', 'rsa', 2048)
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
return return
} }

View File

@ -43,7 +43,7 @@ describe('peer-routing', () => {
try { try {
for await (const _ of node.peerRouting.getClosestPeers('a cid')) { } // eslint-disable-line for await (const _ of node.peerRouting.getClosestPeers('a cid')) { } // eslint-disable-line
throw new Error('.getClosestPeers should return an error') throw new Error('.getClosestPeers should return an error')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
expect(err.code).to.equal('NO_ROUTERS_AVAILABLE') expect(err.code).to.equal('NO_ROUTERS_AVAILABLE')
} }
@ -275,7 +275,7 @@ describe('peer-routing', () => {
try { try {
for await (const _ of node.peerRouting.getClosestPeers(peerId.id)) { } // eslint-disable-line for await (const _ of node.peerRouting.getClosestPeers(peerId.id)) { } // eslint-disable-line
throw new Error('should handle errors when getting the closest peers') throw new Error('should handle errors when getting the closest peers')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
} }

View File

@ -45,7 +45,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
ab.set('invalid peerId') ab.set('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -55,7 +55,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if no addresses provided', () => { it('throwns invalid parameters error if no addresses provided', () => {
try { try {
ab.set(peerId) ab.set(peerId)
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -65,7 +65,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid multiaddrs are provided', () => { it('throwns invalid parameters error if invalid multiaddrs are provided', () => {
try { try {
ab.set(peerId, ['invalid multiaddr']) ab.set(peerId, ['invalid multiaddr'])
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -159,7 +159,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
ab.add('invalid peerId') ab.add('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -169,7 +169,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if no addresses provided', () => { it('throwns invalid parameters error if no addresses provided', () => {
try { try {
ab.add(peerId) ab.add(peerId)
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -179,7 +179,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid multiaddrs are provided', () => { it('throwns invalid parameters error if invalid multiaddrs are provided', () => {
try { try {
ab.add(peerId, ['invalid multiaddr']) ab.add(peerId, ['invalid multiaddr'])
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -308,7 +308,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
ab.get('invalid peerId') ab.get('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -343,7 +343,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
ab.getMultiaddrsForPeer('invalid peerId') ab.getMultiaddrsForPeer('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -391,7 +391,7 @@ describe('addressBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
ab.delete('invalid peerId') ab.delete('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }

View File

@ -23,7 +23,7 @@ describe('keyBook', () => {
it('throws invalid parameters error if invalid PeerId is provided in set', () => { it('throws invalid parameters error if invalid PeerId is provided in set', () => {
try { try {
kb.set('invalid peerId') kb.set('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -33,7 +33,7 @@ describe('keyBook', () => {
it('throws invalid parameters error if invalid PeerId is provided in get', () => { it('throws invalid parameters error if invalid PeerId is provided in get', () => {
try { try {
kb.get('invalid peerId') kb.get('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }

View File

@ -34,7 +34,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if invalid PeerId is provided', () => { it('throws invalid parameters error if invalid PeerId is provided', () => {
try { try {
mb.set('invalid peerId') mb.set('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -44,7 +44,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if no key provided', () => { it('throws invalid parameters error if no key provided', () => {
try { try {
mb.set(peerId) mb.set(peerId)
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -54,7 +54,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if no value provided', () => { it('throws invalid parameters error if no value provided', () => {
try { try {
mb.set(peerId, 'location') mb.set(peerId, 'location')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -64,7 +64,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if value is not a buffer', () => { it('throws invalid parameters error if value is not a buffer', () => {
try { try {
mb.set(peerId, 'location', 'mars') mb.set(peerId, 'location', 'mars')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -163,7 +163,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if invalid PeerId is provided', () => { it('throws invalid parameters error if invalid PeerId is provided', () => {
try { try {
mb.get('invalid peerId') mb.get('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -199,7 +199,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if invalid PeerId is provided', () => { it('throws invalid parameters error if invalid PeerId is provided', () => {
try { try {
mb.getValue('invalid peerId') mb.getValue('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -248,7 +248,7 @@ describe('metadataBook', () => {
it('throwns invalid parameters error if invalid PeerId is provided', () => { it('throwns invalid parameters error if invalid PeerId is provided', () => {
try { try {
mb.delete('invalid peerId') mb.delete('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }
@ -305,7 +305,7 @@ describe('metadataBook', () => {
it('throws invalid parameters error if invalid PeerId is provided', () => { it('throws invalid parameters error if invalid PeerId is provided', () => {
try { try {
mb.deleteValue('invalid peerId') mb.deleteValue('invalid peerId')
} catch (/** @type {any} */ err) { } catch (err) {
expect(err.code).to.equal(ERR_INVALID_PARAMETERS) expect(err.code).to.equal(ERR_INVALID_PARAMETERS)
return return
} }

View File

@ -201,7 +201,7 @@ describe('libp2p.transportManager (dial only)', () => {
try { try {
await libp2p.start() await libp2p.start()
} catch (/** @type {any} */ err) { } catch (err) {
expect(err).to.exist() expect(err).to.exist()
expect(err.code).to.equal(ErrorCodes.ERR_NO_VALID_ADDRESSES) expect(err.code).to.equal(ErrorCodes.ERR_NO_VALID_ADDRESSES)
return return

View File

@ -10,7 +10,7 @@
"libp2p-delegated-peer-routing": "^0.10.0", "libp2p-delegated-peer-routing": "^0.10.0",
"libp2p-gossipsub": "^0.9.0", "libp2p-gossipsub": "^0.9.0",
"libp2p-interfaces": "^1.0.1", "libp2p-interfaces": "^1.0.1",
"libp2p-kad-dht": "^0.26.5", "libp2p-kad-dht": "^0.23.1",
"libp2p-mplex": "^0.10.4", "libp2p-mplex": "^0.10.4",
"@chainsafe/libp2p-noise": "^4.1.0", "@chainsafe/libp2p-noise": "^4.1.0",
"libp2p-record": "^0.10.4", "libp2p-record": "^0.10.4",

View File

@ -108,7 +108,7 @@ function createConnection ({
// Need to be able to notify a peer of this this._onStream({ connection, stream, protocol }) // Need to be able to notify a peer of this this._onStream({ connection, stream, protocol })
const handler = protocols.get(protocol) const handler = protocols.get(protocol)
handler({ connection, stream, protocol }) handler({ connection, stream, protocol })
} catch (/** @type {any} */ err) { } catch (err) {
// Do nothing // Do nothing
} }
}, },
@ -124,7 +124,7 @@ function createConnection ({
try { try {
const { stream, protocol } = await mss.select(protocols) const { stream, protocol } = await mss.select(protocols)
return { stream: { ...muxedStream, ...stream }, protocol } return { stream: { ...muxedStream, ...stream }, protocol }
} catch (/** @type {any} */ err) { } catch (err) {
throw errCode(err, codes.ERR_UNSUPPORTED_PROTOCOL) throw errCode(err, codes.ERR_UNSUPPORTED_PROTOCOL)
} }
} }

View File

@ -1,5 +1,5 @@
{ {
"extends": "aegir/src/config/tsconfig.aegir.json", "extends": "./node_modules/aegir/src/config/tsconfig.aegir.json",
"compilerOptions": { "compilerOptions": {
"outDir": "dist" "outDir": "dist"
}, },