libp2p 0.42.2-593deefe → 0.42.2-5e63ee2d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +30 -30
- package/dist/src/address-manager/index.d.ts +1 -10
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +46 -29
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/autonat/constants.d.ts +4 -0
- package/dist/src/autonat/constants.d.ts.map +1 -0
- package/dist/src/autonat/constants.js +4 -0
- package/dist/src/autonat/constants.js.map +1 -0
- package/dist/src/autonat/index.d.ts +64 -0
- package/dist/src/autonat/index.d.ts.map +1 -0
- package/dist/src/autonat/index.js +417 -0
- package/dist/src/autonat/index.js.map +1 -0
- package/dist/src/autonat/pb/index.d.ts +57 -0
- package/dist/src/autonat/pb/index.d.ts.map +1 -0
- package/dist/src/autonat/pb/index.js +250 -0
- package/dist/src/autonat/pb/index.js.map +1 -0
- package/dist/src/circuit/constants.d.ts +29 -3
- package/dist/src/circuit/constants.d.ts.map +1 -1
- package/dist/src/circuit/constants.js +32 -5
- package/dist/src/circuit/constants.js.map +1 -1
- package/dist/src/circuit/index.d.ts +16 -61
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +2 -1
- package/dist/src/circuit/index.js.map +1 -1
- package/dist/src/circuit/server/advert-service.d.ts +43 -0
- package/dist/src/circuit/server/advert-service.d.ts.map +1 -0
- package/dist/src/circuit/server/advert-service.js +69 -0
- package/dist/src/circuit/server/advert-service.js.map +1 -0
- package/dist/src/circuit/server/index.d.ts +60 -0
- package/dist/src/circuit/server/index.d.ts.map +1 -0
- package/dist/src/circuit/server/index.js +287 -0
- package/dist/src/circuit/server/index.js.map +1 -0
- package/dist/src/circuit/{reservation-store.d.ts → server/reservation-store.d.ts} +17 -10
- package/dist/src/circuit/server/reservation-store.d.ts.map +1 -0
- package/dist/src/circuit/server/reservation-store.js +57 -0
- package/dist/src/circuit/server/reservation-store.js.map +1 -0
- package/dist/src/circuit/server/reservation-voucher.d.ts.map +1 -0
- package/dist/src/circuit/{reservation-voucher.js → server/reservation-voucher.js} +1 -1
- package/dist/src/circuit/server/reservation-voucher.js.map +1 -0
- package/dist/src/circuit/transport/discovery.d.ts +45 -0
- package/dist/src/circuit/transport/discovery.d.ts.map +1 -0
- package/dist/src/circuit/transport/discovery.js +82 -0
- package/dist/src/circuit/transport/discovery.js.map +1 -0
- package/dist/src/circuit/transport/index.d.ts +33 -0
- package/dist/src/circuit/transport/index.d.ts.map +1 -0
- package/dist/src/circuit/transport/index.js +225 -0
- package/dist/src/circuit/transport/index.js.map +1 -0
- package/dist/src/circuit/transport/listener.d.ts +9 -0
- package/dist/src/circuit/transport/listener.d.ts.map +1 -0
- package/dist/src/circuit/transport/listener.js +76 -0
- package/dist/src/circuit/transport/listener.js.map +1 -0
- package/dist/src/circuit/transport/reservation-store.d.ts +60 -0
- package/dist/src/circuit/transport/reservation-store.d.ts.map +1 -0
- package/dist/src/circuit/transport/reservation-store.js +165 -0
- package/dist/src/circuit/transport/reservation-store.js.map +1 -0
- package/dist/src/circuit/utils.d.ts +4 -2
- package/dist/src/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/utils.js +75 -102
- package/dist/src/circuit/utils.js.map +1 -1
- package/dist/src/components.d.ts +2 -1
- package/dist/src/components.d.ts.map +1 -1
- package/dist/src/components.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +17 -20
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection/index.d.ts +2 -2
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/index.js +1 -1
- package/dist/src/connection/index.js.map +1 -1
- package/dist/src/connection-manager/auto-dialler.d.ts +0 -4
- package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dialler.js +0 -9
- package/dist/src/connection-manager/auto-dialler.js.map +1 -1
- package/dist/src/connection-manager/dialer/dial-request.js +1 -1
- package/dist/src/connection-manager/dialer/dial-request.js.map +1 -1
- package/dist/src/connection-manager/dialer/index.d.ts +2 -1
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/index.js +3 -3
- package/dist/src/connection-manager/dialer/index.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +0 -4
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +1 -1
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
- package/dist/src/connection-manager/latency-monitor.js +1 -1
- package/dist/src/connection-manager/latency-monitor.js.map +1 -1
- package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
- package/dist/src/content-routing/index.d.ts +6 -4
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +1 -1
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/content-routing/utils.d.ts +3 -3
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/dht/dht-content-routing.d.ts +2 -1
- package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-content-routing.js.map +1 -1
- package/dist/src/dht/dht-peer-routing.d.ts +3 -2
- package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-peer-routing.js.map +1 -1
- package/dist/src/dht/dummy-dht.d.ts +1 -1
- package/dist/src/dht/dummy-dht.d.ts.map +1 -1
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/identify/index.d.ts +3 -1
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +12 -7
- package/dist/src/identify/index.js.map +1 -1
- package/dist/src/index.d.ts +13 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/insecure/index.d.ts.map +1 -1
- package/dist/src/insecure/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +6 -4
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +19 -28
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/nat-manager.d.ts.map +1 -1
- package/dist/src/nat-manager.js +3 -1
- package/dist/src/nat-manager.js.map +1 -1
- package/dist/src/peer-record-updater.d.ts.map +1 -1
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/pnet/crypto.d.ts +1 -1
- package/dist/src/pnet/crypto.d.ts.map +1 -1
- package/dist/src/pnet/crypto.js +1 -1
- package/dist/src/pnet/crypto.js.map +1 -1
- package/dist/src/pnet/key-generator.d.ts.map +1 -1
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +1 -1
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +2 -1
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +19 -14
- package/dist/src/upgrader.js.map +1 -1
- package/package.json +23 -18
- package/src/address-manager/index.ts +62 -35
- package/src/autonat/constants.ts +4 -0
- package/src/autonat/index.ts +567 -0
- package/src/autonat/pb/index.proto +35 -0
- package/src/autonat/pb/index.ts +320 -0
- package/src/circuit/constants.ts +40 -5
- package/src/circuit/index.ts +17 -67
- package/src/circuit/server/advert-service.ts +108 -0
- package/src/circuit/server/index.ts +421 -0
- package/src/circuit/server/reservation-store.ts +111 -0
- package/src/circuit/{reservation-voucher.ts → server/reservation-voucher.ts} +3 -3
- package/src/circuit/transport/discovery.ts +127 -0
- package/src/circuit/transport/index.ts +325 -0
- package/src/circuit/transport/listener.ts +99 -0
- package/src/circuit/transport/reservation-store.ts +249 -0
- package/src/circuit/utils.ts +78 -115
- package/src/components.ts +9 -8
- package/src/config.ts +17 -20
- package/src/connection/index.ts +7 -7
- package/src/connection-manager/auto-dialler.ts +4 -20
- package/src/connection-manager/dialer/dial-request.ts +1 -1
- package/src/connection-manager/dialer/index.ts +10 -9
- package/src/connection-manager/index.ts +14 -19
- package/src/connection-manager/latency-monitor.ts +9 -9
- package/src/connection-manager/visibility-change-emitter.ts +4 -4
- package/src/content-routing/index.ts +10 -8
- package/src/content-routing/utils.ts +3 -3
- package/src/dht/dht-content-routing.ts +3 -2
- package/src/dht/dht-peer-routing.ts +3 -2
- package/src/dht/dummy-dht.ts +1 -1
- package/src/fetch/index.ts +7 -7
- package/src/identify/index.ts +22 -17
- package/src/index.ts +14 -7
- package/src/insecure/index.ts +2 -1
- package/src/libp2p.ts +33 -41
- package/src/nat-manager.ts +9 -7
- package/src/peer-record-updater.ts +4 -4
- package/src/peer-routing.ts +4 -4
- package/src/ping/index.ts +4 -4
- package/src/pnet/crypto.ts +3 -3
- package/src/pnet/key-generator.ts +1 -1
- package/src/registrar.ts +8 -8
- package/src/transport-manager.ts +10 -10
- package/src/upgrader.ts +20 -19
- package/src/version.ts +1 -1
- package/dist/src/circuit/client.d.ts +0 -81
- package/dist/src/circuit/client.d.ts.map +0 -1
- package/dist/src/circuit/client.js +0 -285
- package/dist/src/circuit/client.js.map +0 -1
- package/dist/src/circuit/hop.d.ts +0 -23
- package/dist/src/circuit/hop.d.ts.map +0 -1
- package/dist/src/circuit/hop.js +0 -167
- package/dist/src/circuit/hop.js.map +0 -1
- package/dist/src/circuit/interfaces.d.ts +0 -27
- package/dist/src/circuit/interfaces.d.ts.map +0 -1
- package/dist/src/circuit/interfaces.js +0 -2
- package/dist/src/circuit/interfaces.js.map +0 -1
- package/dist/src/circuit/listener.d.ts +0 -9
- package/dist/src/circuit/listener.d.ts.map +0 -1
- package/dist/src/circuit/listener.js +0 -62
- package/dist/src/circuit/listener.js.map +0 -1
- package/dist/src/circuit/multicodec.d.ts +0 -3
- package/dist/src/circuit/multicodec.d.ts.map +0 -1
- package/dist/src/circuit/multicodec.js +0 -3
- package/dist/src/circuit/multicodec.js.map +0 -1
- package/dist/src/circuit/relay.d.ts +0 -34
- package/dist/src/circuit/relay.d.ts.map +0 -1
- package/dist/src/circuit/relay.js +0 -61
- package/dist/src/circuit/relay.js.map +0 -1
- package/dist/src/circuit/reservation-store.d.ts.map +0 -1
- package/dist/src/circuit/reservation-store.js +0 -59
- package/dist/src/circuit/reservation-store.js.map +0 -1
- package/dist/src/circuit/reservation-voucher.d.ts.map +0 -1
- package/dist/src/circuit/reservation-voucher.js.map +0 -1
- package/dist/src/circuit/stop.d.ts +0 -19
- package/dist/src/circuit/stop.d.ts.map +0 -1
- package/dist/src/circuit/stop.js +0 -67
- package/dist/src/circuit/stop.js.map +0 -1
- package/dist/src/circuit/transport.d.ts +0 -66
- package/dist/src/circuit/transport.d.ts.map +0 -1
- package/dist/src/circuit/transport.js +0 -238
- package/dist/src/circuit/transport.js.map +0 -1
- package/src/circuit/client.ts +0 -381
- package/src/circuit/hop.ts +0 -210
- package/src/circuit/interfaces.ts +0 -28
- package/src/circuit/listener.ts +0 -83
- package/src/circuit/multicodec.ts +0 -3
- package/src/circuit/relay.ts +0 -87
- package/src/circuit/reservation-store.ts +0 -106
- package/src/circuit/stop.ts +0 -92
- package/src/circuit/transport.ts +0 -313
- /package/dist/src/circuit/{reservation-voucher.d.ts → server/reservation-voucher.d.ts} +0 -0
package/src/libp2p.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { RelayReservationManager } from './circuit/client.js'
|
|
2
1
|
import { logger } from '@libp2p/logger'
|
|
3
2
|
import type { AbortOptions } from '@libp2p/interfaces'
|
|
4
3
|
import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events'
|
|
@@ -11,8 +10,6 @@ import { codes } from './errors.js'
|
|
|
11
10
|
import { DefaultAddressManager } from './address-manager/index.js'
|
|
12
11
|
import { DefaultConnectionManager } from './connection-manager/index.js'
|
|
13
12
|
import { AutoDialler } from './connection-manager/auto-dialler.js'
|
|
14
|
-
import { Circuit } from './circuit/transport.js'
|
|
15
|
-
import { Relay } from './circuit/index.js'
|
|
16
13
|
import { DefaultKeyChain } from '@libp2p/keychain'
|
|
17
14
|
import { DefaultTransportManager } from './transport-manager.js'
|
|
18
15
|
import { DefaultUpgrader } from './upgrader.js'
|
|
@@ -25,10 +22,11 @@ import { PeerRecordUpdater } from './peer-record-updater.js'
|
|
|
25
22
|
import { DHTPeerRouting } from './dht/dht-peer-routing.js'
|
|
26
23
|
import { PersistentPeerStore } from '@libp2p/peer-store'
|
|
27
24
|
import { DHTContentRouting } from './dht/dht-content-routing.js'
|
|
25
|
+
import { AutonatService } from './autonat/index.js'
|
|
28
26
|
import { DefaultComponents } from './components.js'
|
|
29
27
|
import type { Components } from './components.js'
|
|
30
28
|
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
31
|
-
import type { Connection } from '@libp2p/interface-connection'
|
|
29
|
+
import type { Connection, Stream } from '@libp2p/interface-connection'
|
|
32
30
|
import type { PeerRouting } from '@libp2p/interface-peer-routing'
|
|
33
31
|
import type { ContentRouting } from '@libp2p/interface-content-routing'
|
|
34
32
|
import type { PubSub } from '@libp2p/interface-pubsub'
|
|
@@ -53,6 +51,7 @@ import { peerIdFromString } from '@libp2p/peer-id'
|
|
|
53
51
|
import type { Datastore } from 'interface-datastore'
|
|
54
52
|
import type { KeyChain } from '@libp2p/interface-keychain'
|
|
55
53
|
import mergeOptions from 'merge-options'
|
|
54
|
+
import type { CircuitRelayService } from './circuit/index.js'
|
|
56
55
|
|
|
57
56
|
const log = logger('libp2p')
|
|
58
57
|
|
|
@@ -61,9 +60,10 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
61
60
|
public dht: DualDHT
|
|
62
61
|
public pubsub: PubSub
|
|
63
62
|
public identifyService: IdentifyService
|
|
64
|
-
public circuitService?:
|
|
63
|
+
public circuitService?: CircuitRelayService
|
|
65
64
|
public fetchService: FetchService
|
|
66
65
|
public pingService: PingService
|
|
66
|
+
public autonatService: AutonatService
|
|
67
67
|
public components: Components
|
|
68
68
|
public peerStore: PeerStore
|
|
69
69
|
public contentRouting: ContentRouting
|
|
@@ -157,12 +157,6 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
157
157
|
// update our peer record when addresses change
|
|
158
158
|
this.configureComponent(new PeerRecordUpdater(this.components))
|
|
159
159
|
|
|
160
|
-
this.configureComponent(new AutoDialler(this.components, {
|
|
161
|
-
enabled: init.connectionManager.autoDial,
|
|
162
|
-
minConnections: init.connectionManager.minConnections,
|
|
163
|
-
autoDialInterval: init.connectionManager.autoDialInterval
|
|
164
|
-
}))
|
|
165
|
-
|
|
166
160
|
// Create keychain
|
|
167
161
|
const keychainOpts = DefaultKeyChain.generateOptions()
|
|
168
162
|
this.keychain = this.configureComponent(new DefaultKeyChain(this.components, {
|
|
@@ -173,24 +167,12 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
173
167
|
// Create the Nat Manager
|
|
174
168
|
this.services.push(new NatManager(this.components, init.nat))
|
|
175
169
|
|
|
176
|
-
init.transports.forEach((fn) => {
|
|
177
|
-
this.components.transportManager.add(this.configureComponent(fn(this.components)))
|
|
178
|
-
})
|
|
179
|
-
|
|
180
170
|
// Add the identify service
|
|
181
171
|
this.identifyService = new IdentifyService(this.components, {
|
|
182
172
|
...init.identify
|
|
183
173
|
})
|
|
184
174
|
this.configureComponent(this.identifyService)
|
|
185
175
|
|
|
186
|
-
if (init.relay.reservationManager.enabled === true) {
|
|
187
|
-
this.circuitService = new RelayReservationManager(this.components, {
|
|
188
|
-
addressSorter: init.connectionManager.addressSorter,
|
|
189
|
-
...init.relay.reservationManager
|
|
190
|
-
})
|
|
191
|
-
this.services.push(this.circuitService)
|
|
192
|
-
}
|
|
193
|
-
|
|
194
176
|
// dht provided components (peerRouting, contentRouting, dht)
|
|
195
177
|
if (init.dht != null) {
|
|
196
178
|
this.dht = this.components.dht = init.dht(this.components)
|
|
@@ -236,14 +218,6 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
236
218
|
routers: contentRouters
|
|
237
219
|
}))
|
|
238
220
|
|
|
239
|
-
if (init.relay.enabled) {
|
|
240
|
-
this.components.transportManager.add(this.configureComponent(new Circuit(this.components, init.relay)))
|
|
241
|
-
|
|
242
|
-
this.configureComponent(new Relay(this.components, {
|
|
243
|
-
...init.relay
|
|
244
|
-
}))
|
|
245
|
-
}
|
|
246
|
-
|
|
247
221
|
this.fetchService = this.configureComponent(new FetchService(this.components, {
|
|
248
222
|
...init.fetch
|
|
249
223
|
}))
|
|
@@ -252,6 +226,19 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
252
226
|
...init.ping
|
|
253
227
|
}))
|
|
254
228
|
|
|
229
|
+
this.autonatService = this.configureComponent(new AutonatService(this.components, {
|
|
230
|
+
...init.autonat
|
|
231
|
+
}))
|
|
232
|
+
|
|
233
|
+
this.configureComponent(new AutoDialler(this.components, {
|
|
234
|
+
minConnections: init.connectionManager.minConnections,
|
|
235
|
+
autoDialInterval: init.connectionManager.autoDialInterval
|
|
236
|
+
}))
|
|
237
|
+
|
|
238
|
+
if (init.relay != null) {
|
|
239
|
+
this.circuitService = this.configureComponent(init.relay(this.components))
|
|
240
|
+
}
|
|
241
|
+
|
|
255
242
|
// Discovery modules
|
|
256
243
|
for (const fn of init.peerDiscovery ?? []) {
|
|
257
244
|
const service = this.configureComponent(fn(this.components))
|
|
@@ -260,6 +247,11 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
260
247
|
this.onDiscoveryPeer(evt)
|
|
261
248
|
})
|
|
262
249
|
}
|
|
250
|
+
|
|
251
|
+
// Transport modules
|
|
252
|
+
init.transports.forEach((fn) => {
|
|
253
|
+
this.components.transportManager.add(this.configureComponent(fn(this.components)))
|
|
254
|
+
})
|
|
263
255
|
}
|
|
264
256
|
|
|
265
257
|
private configureComponent <T> (component: T): T {
|
|
@@ -273,7 +265,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
273
265
|
/**
|
|
274
266
|
* Starts the libp2p node and all its subsystems
|
|
275
267
|
*/
|
|
276
|
-
async start () {
|
|
268
|
+
async start (): Promise<void> {
|
|
277
269
|
if (this.started) {
|
|
278
270
|
return
|
|
279
271
|
}
|
|
@@ -300,7 +292,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
300
292
|
|
|
301
293
|
// start any startables
|
|
302
294
|
await Promise.all(
|
|
303
|
-
this.services.map(async service => await service.start())
|
|
295
|
+
this.services.map(async service => { await service.start() })
|
|
304
296
|
)
|
|
305
297
|
|
|
306
298
|
await Promise.all(
|
|
@@ -322,7 +314,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
322
314
|
/**
|
|
323
315
|
* Stop the libp2p node by closing its listeners and open connections
|
|
324
316
|
*/
|
|
325
|
-
async stop () {
|
|
317
|
+
async stop (): Promise<void> {
|
|
326
318
|
if (!this.started) {
|
|
327
319
|
return
|
|
328
320
|
}
|
|
@@ -340,7 +332,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
340
332
|
)
|
|
341
333
|
|
|
342
334
|
await Promise.all(
|
|
343
|
-
this.services.map(async service => await service.stop())
|
|
335
|
+
this.services.map(async service => { await service.stop() })
|
|
344
336
|
)
|
|
345
337
|
|
|
346
338
|
await Promise.all(
|
|
@@ -354,7 +346,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
354
346
|
log('libp2p has stopped')
|
|
355
347
|
}
|
|
356
348
|
|
|
357
|
-
isStarted () {
|
|
349
|
+
isStarted (): boolean {
|
|
358
350
|
return this.started
|
|
359
351
|
}
|
|
360
352
|
|
|
@@ -376,7 +368,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
376
368
|
return await this.components.connectionManager.openConnection(peer, options)
|
|
377
369
|
}
|
|
378
370
|
|
|
379
|
-
async dialProtocol (peer: PeerId | Multiaddr, protocols: string | string[], options: AbortOptions = {}) {
|
|
371
|
+
async dialProtocol (peer: PeerId | Multiaddr, protocols: string | string[], options: AbortOptions = {}): Promise<Stream> {
|
|
380
372
|
if (protocols == null) {
|
|
381
373
|
throw errCode(new Error('no protocols were provided to open a stream'), codes.ERR_INVALID_PROTOCOLS_FOR_STREAM)
|
|
382
374
|
}
|
|
@@ -495,7 +487,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
495
487
|
return await this.registrar.register(protocol, topology)
|
|
496
488
|
}
|
|
497
489
|
|
|
498
|
-
unregister (id: string) {
|
|
490
|
+
unregister (id: string): void {
|
|
499
491
|
this.registrar.unregister(id)
|
|
500
492
|
}
|
|
501
493
|
|
|
@@ -503,7 +495,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
503
495
|
* Called whenever peer discovery services emit `peer` events.
|
|
504
496
|
* Known peers may be emitted.
|
|
505
497
|
*/
|
|
506
|
-
onDiscoveryPeer (evt: CustomEvent<PeerInfo>) {
|
|
498
|
+
onDiscoveryPeer (evt: CustomEvent<PeerInfo>): void {
|
|
507
499
|
const { detail: peer } = evt
|
|
508
500
|
|
|
509
501
|
if (peer.id.toString() === this.peerId.toString()) {
|
|
@@ -512,11 +504,11 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
|
|
|
512
504
|
}
|
|
513
505
|
|
|
514
506
|
if (peer.multiaddrs.length > 0) {
|
|
515
|
-
void this.components.peerStore.addressBook.add(peer.id, peer.multiaddrs).catch(err => log.error(err))
|
|
507
|
+
void this.components.peerStore.addressBook.add(peer.id, peer.multiaddrs).catch(err => { log.error(err) })
|
|
516
508
|
}
|
|
517
509
|
|
|
518
510
|
if (peer.protocols.length > 0) {
|
|
519
|
-
void this.components.peerStore.protoBook.set(peer.id, peer.protocols).catch(err => log.error(err))
|
|
511
|
+
void this.components.peerStore.protoBook.set(peer.id, peer.protocols).catch(err => { log.error(err) })
|
|
520
512
|
}
|
|
521
513
|
|
|
522
514
|
this.dispatchEvent(new CustomEvent<PeerInfo>('peer:discovery', { detail: peer }))
|
package/src/nat-manager.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type { AddressManager } from '@libp2p/interface-address-manager'
|
|
|
15
15
|
const log = logger('libp2p:nat')
|
|
16
16
|
const DEFAULT_TTL = 7200
|
|
17
17
|
|
|
18
|
-
function highPort (min = 1024, max = 65535) {
|
|
18
|
+
function highPort (min = 1024, max = 65535): number {
|
|
19
19
|
return Math.floor(Math.random() * (max - min + 1) + min)
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -98,18 +98,20 @@ export class NatManager implements Startable {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
isStarted () {
|
|
101
|
+
isStarted (): boolean {
|
|
102
102
|
return this.started
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
start () {
|
|
105
|
+
start (): void {
|
|
106
|
+
// #TODO: is there a way to remove this? Seems like a hack
|
|
107
|
+
}
|
|
106
108
|
|
|
107
109
|
/**
|
|
108
110
|
* Attempt to use uPnP to configure port mapping using the current gateway.
|
|
109
111
|
*
|
|
110
112
|
* Run after start to ensure the transport manager has all addresses configured.
|
|
111
113
|
*/
|
|
112
|
-
afterStart () {
|
|
114
|
+
afterStart (): void {
|
|
113
115
|
if (isBrowser || !this.enabled || this.started) {
|
|
114
116
|
return
|
|
115
117
|
}
|
|
@@ -123,7 +125,7 @@ export class NatManager implements Startable {
|
|
|
123
125
|
})
|
|
124
126
|
}
|
|
125
127
|
|
|
126
|
-
async _start () {
|
|
128
|
+
async _start (): Promise<void> {
|
|
127
129
|
const addrs = this.components.transportManager.getAddrs()
|
|
128
130
|
|
|
129
131
|
for (const addr of addrs) {
|
|
@@ -178,7 +180,7 @@ export class NatManager implements Startable {
|
|
|
178
180
|
}
|
|
179
181
|
}
|
|
180
182
|
|
|
181
|
-
async _getClient () {
|
|
183
|
+
async _getClient (): Promise<NatAPI> {
|
|
182
184
|
if (this.client != null) {
|
|
183
185
|
return this.client
|
|
184
186
|
}
|
|
@@ -196,7 +198,7 @@ export class NatManager implements Startable {
|
|
|
196
198
|
/**
|
|
197
199
|
* Stops the NAT manager
|
|
198
200
|
*/
|
|
199
|
-
async stop () {
|
|
201
|
+
async stop (): Promise<void> {
|
|
200
202
|
if (isBrowser || this.client == null) {
|
|
201
203
|
return
|
|
202
204
|
}
|
|
@@ -26,18 +26,18 @@ export class PeerRecordUpdater implements Startable {
|
|
|
26
26
|
this.update = this.update.bind(this)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
isStarted () {
|
|
29
|
+
isStarted (): boolean {
|
|
30
30
|
return this.started
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
async start () {
|
|
33
|
+
async start (): Promise<void> {
|
|
34
34
|
this.started = true
|
|
35
35
|
this.components.transportManager.addEventListener('listener:listening', this.update)
|
|
36
36
|
this.components.transportManager.addEventListener('listener:close', this.update)
|
|
37
37
|
this.components.addressManager.addEventListener('change:addresses', this.update)
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
async stop () {
|
|
40
|
+
async stop (): Promise<void> {
|
|
41
41
|
this.started = false
|
|
42
42
|
this.components.transportManager.removeEventListener('listener:listening', this.update)
|
|
43
43
|
this.components.transportManager.removeEventListener('listener:close', this.update)
|
|
@@ -47,7 +47,7 @@ export class PeerRecordUpdater implements Startable {
|
|
|
47
47
|
/**
|
|
48
48
|
* Create (or update if existing) self peer record and store it in the AddressBook.
|
|
49
49
|
*/
|
|
50
|
-
update () {
|
|
50
|
+
update (): void {
|
|
51
51
|
Promise.resolve()
|
|
52
52
|
.then(async () => {
|
|
53
53
|
const peerRecord = new PeerRecord({
|
package/src/peer-routing.ts
CHANGED
|
@@ -76,14 +76,14 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
|
|
|
76
76
|
this._findClosestPeersTask = this._findClosestPeersTask.bind(this)
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
isStarted () {
|
|
79
|
+
isStarted (): boolean {
|
|
80
80
|
return this.started
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Start peer routing service.
|
|
85
85
|
*/
|
|
86
|
-
async start () {
|
|
86
|
+
async start (): Promise<void> {
|
|
87
87
|
if (this.started || this.routers.length === 0 || this.timeoutId != null || this.refreshManagerInit.enabled === false) {
|
|
88
88
|
return
|
|
89
89
|
}
|
|
@@ -98,7 +98,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
|
|
|
98
98
|
/**
|
|
99
99
|
* Recurrent task to find closest peers and add their addresses to the Address Book.
|
|
100
100
|
*/
|
|
101
|
-
async _findClosestPeersTask () {
|
|
101
|
+
async _findClosestPeersTask (): Promise<void> {
|
|
102
102
|
if (this.abortController != null) {
|
|
103
103
|
// we are already running the query
|
|
104
104
|
return
|
|
@@ -127,7 +127,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
|
|
|
127
127
|
/**
|
|
128
128
|
* Stop peer routing service.
|
|
129
129
|
*/
|
|
130
|
-
async stop () {
|
|
130
|
+
async stop (): Promise<void> {
|
|
131
131
|
clearDelayedInterval(this.timeoutId)
|
|
132
132
|
|
|
133
133
|
// abort query if it is in-flight
|
package/src/ping/index.ts
CHANGED
|
@@ -47,7 +47,7 @@ export class PingService implements Startable {
|
|
|
47
47
|
this.init = init
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
async start () {
|
|
50
|
+
async start (): Promise<void> {
|
|
51
51
|
await this.components.registrar.handle(this.protocol, this.handleMessage, {
|
|
52
52
|
maxInboundStreams: this.init.maxInboundStreams,
|
|
53
53
|
maxOutboundStreams: this.init.maxOutboundStreams
|
|
@@ -55,19 +55,19 @@ export class PingService implements Startable {
|
|
|
55
55
|
this.started = true
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
async stop () {
|
|
58
|
+
async stop (): Promise<void> {
|
|
59
59
|
await this.components.registrar.unhandle(this.protocol)
|
|
60
60
|
this.started = false
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
isStarted () {
|
|
63
|
+
isStarted (): boolean {
|
|
64
64
|
return this.started
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
68
|
* A handler to register with Libp2p to process ping messages
|
|
69
69
|
*/
|
|
70
|
-
handleMessage (data: IncomingStreamData) {
|
|
70
|
+
handleMessage (data: IncomingStreamData): void {
|
|
71
71
|
const { stream } = data
|
|
72
72
|
|
|
73
73
|
void pipe(stream, stream)
|
package/src/pnet/crypto.ts
CHANGED
|
@@ -11,7 +11,7 @@ const log = logger('libp2p:pnet')
|
|
|
11
11
|
/**
|
|
12
12
|
* Creates a stream iterable to encrypt messages in a private network
|
|
13
13
|
*/
|
|
14
|
-
export function createBoxStream (nonce: Uint8Array, psk: Uint8Array) {
|
|
14
|
+
export function createBoxStream (nonce: Uint8Array, psk: Uint8Array): (source: Source<Uint8Array>) => AsyncIterable<Uint8Array> {
|
|
15
15
|
const xor = xsalsa20(nonce, psk)
|
|
16
16
|
|
|
17
17
|
return (source: Source<Uint8Array>) => (async function * () {
|
|
@@ -38,7 +38,7 @@ export function createUnboxStream (nonce: Uint8Array, psk: Uint8Array) {
|
|
|
38
38
|
/**
|
|
39
39
|
* Decode the version 1 psk from the given Uint8Array
|
|
40
40
|
*/
|
|
41
|
-
export function decodeV1PSK (pskBuffer: Uint8Array) {
|
|
41
|
+
export function decodeV1PSK (pskBuffer: Uint8Array): { tag: string | undefined, codecName: string | undefined, psk: Uint8Array } {
|
|
42
42
|
try {
|
|
43
43
|
// This should pull from multibase/multicodec to allow for
|
|
44
44
|
// more encoding flexibility. Ideally we'd consume the codecs
|
|
@@ -58,7 +58,7 @@ export function decodeV1PSK (pskBuffer: Uint8Array) {
|
|
|
58
58
|
return {
|
|
59
59
|
tag: pskTag,
|
|
60
60
|
codecName: codec,
|
|
61
|
-
psk
|
|
61
|
+
psk
|
|
62
62
|
}
|
|
63
63
|
} catch (err: any) {
|
|
64
64
|
log.error(err)
|
|
@@ -8,7 +8,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
|
8
8
|
* @param {Uint8Array | NodeJS.WriteStream} bytes - An object to write the psk into
|
|
9
9
|
* @returns {void}
|
|
10
10
|
*/
|
|
11
|
-
export function generateKey (bytes: Uint8Array | NodeJS.WriteStream) {
|
|
11
|
+
export function generateKey (bytes: Uint8Array | NodeJS.WriteStream): void {
|
|
12
12
|
const psk = uint8ArrayToString(randomBytes(KEY_LENGTH), 'base16')
|
|
13
13
|
const key = uint8ArrayFromString('/key/swarm/psk/1.0.0/\n/base16/\n' + psk)
|
|
14
14
|
|
package/src/registrar.ts
CHANGED
|
@@ -44,14 +44,14 @@ export class DefaultRegistrar implements Registrar {
|
|
|
44
44
|
this.components.peerStore.addEventListener('change:protocols', this._onProtocolChange)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
getProtocols () {
|
|
47
|
+
getProtocols (): string[] {
|
|
48
48
|
return Array.from(new Set<string>([
|
|
49
49
|
...this.topologies.keys(),
|
|
50
50
|
...this.handlers.keys()
|
|
51
51
|
])).sort()
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
getHandler (protocol: string) {
|
|
54
|
+
getHandler (protocol: string): StreamHandlerRecord {
|
|
55
55
|
const handler = this.handlers.get(protocol)
|
|
56
56
|
|
|
57
57
|
if (handler == null) {
|
|
@@ -61,7 +61,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
61
61
|
return handler
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
getTopologies (protocol: string) {
|
|
64
|
+
getTopologies (protocol: string): Topology[] {
|
|
65
65
|
const topologies = this.topologies.get(protocol)
|
|
66
66
|
|
|
67
67
|
if (topologies == null) {
|
|
@@ -99,7 +99,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
99
99
|
* Removes the handler for each protocol. The protocol
|
|
100
100
|
* will no longer be supported on streams.
|
|
101
101
|
*/
|
|
102
|
-
async unhandle (protocols: string | string[]) {
|
|
102
|
+
async unhandle (protocols: string | string[]): Promise<void> {
|
|
103
103
|
const protocolList = Array.isArray(protocols) ? protocols : [protocols]
|
|
104
104
|
|
|
105
105
|
protocolList.forEach(protocol => {
|
|
@@ -140,7 +140,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
140
140
|
/**
|
|
141
141
|
* Unregister topology
|
|
142
142
|
*/
|
|
143
|
-
unregister (id: string) {
|
|
143
|
+
unregister (id: string): void {
|
|
144
144
|
for (const [protocol, topologies] of this.topologies.entries()) {
|
|
145
145
|
if (topologies.has(id)) {
|
|
146
146
|
topologies.delete(id)
|
|
@@ -155,7 +155,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
155
155
|
/**
|
|
156
156
|
* Remove a disconnected peer from the record
|
|
157
157
|
*/
|
|
158
|
-
_onDisconnect (evt: CustomEvent<Connection>) {
|
|
158
|
+
_onDisconnect (evt: CustomEvent<Connection>): void {
|
|
159
159
|
const connection = evt.detail
|
|
160
160
|
|
|
161
161
|
void this.components.peerStore.protoBook.get(connection.remotePeer)
|
|
@@ -182,7 +182,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
182
182
|
* On peer connected if we already have their protocols. Usually used for reconnects
|
|
183
183
|
* as change:protocols event won't be emitted due to identical protocols.
|
|
184
184
|
*/
|
|
185
|
-
_onConnect (evt: CustomEvent<Connection>) {
|
|
185
|
+
_onConnect (evt: CustomEvent<Connection>): void {
|
|
186
186
|
const connection = evt.detail
|
|
187
187
|
|
|
188
188
|
void this.components.peerStore.protoBook.get(connection.remotePeer)
|
|
@@ -208,7 +208,7 @@ export class DefaultRegistrar implements Registrar {
|
|
|
208
208
|
/**
|
|
209
209
|
* Check if a new peer support the multicodecs for this topology
|
|
210
210
|
*/
|
|
211
|
-
_onProtocolChange (evt: CustomEvent<PeerProtocolsChangeData>) {
|
|
211
|
+
_onProtocolChange (evt: CustomEvent<PeerProtocolsChangeData>): void {
|
|
212
212
|
const { peerId, protocols, oldProtocols } = evt.detail
|
|
213
213
|
const removed = oldProtocols.filter(protocol => !protocols.includes(protocol))
|
|
214
214
|
const added = protocols.filter(protocol => !oldProtocols.includes(protocol))
|
package/src/transport-manager.ts
CHANGED
|
@@ -47,7 +47,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
47
47
|
/**
|
|
48
48
|
* Adds a `Transport` to the manager
|
|
49
49
|
*/
|
|
50
|
-
add (transport: Transport) {
|
|
50
|
+
add (transport: Transport): void {
|
|
51
51
|
const tag = transport[Symbol.toStringTag]
|
|
52
52
|
|
|
53
53
|
if (tag == null) {
|
|
@@ -55,7 +55,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
if (this.transports.has(tag)) {
|
|
58
|
-
throw errCode(new Error(
|
|
58
|
+
throw errCode(new Error(`There is already a transport with the tag ${tag}`), codes.ERR_DUPLICATE_TRANSPORT)
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
log('adding transport %s', tag)
|
|
@@ -67,11 +67,11 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
isStarted () {
|
|
70
|
+
isStarted (): boolean {
|
|
71
71
|
return this.started
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
async start () {
|
|
74
|
+
async start (): Promise<void> {
|
|
75
75
|
// Listen on the provided transports for the provided addresses
|
|
76
76
|
const addrs = this.components.addressManager.getListenAddrs()
|
|
77
77
|
|
|
@@ -83,7 +83,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
83
83
|
/**
|
|
84
84
|
* Stops all listeners
|
|
85
85
|
*/
|
|
86
|
-
async stop () {
|
|
86
|
+
async stop (): Promise<void> {
|
|
87
87
|
const tasks = []
|
|
88
88
|
for (const [key, listeners] of this.listeners) {
|
|
89
89
|
log('closing listeners for %s', key)
|
|
@@ -147,14 +147,14 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
147
147
|
/**
|
|
148
148
|
* Returns all the transports instances
|
|
149
149
|
*/
|
|
150
|
-
getTransports () {
|
|
150
|
+
getTransports (): Transport[] {
|
|
151
151
|
return Array.of(...this.transports.values())
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
155
|
* Finds a transport that matches the given Multiaddr
|
|
156
156
|
*/
|
|
157
|
-
transportForMultiaddr (ma: Multiaddr) {
|
|
157
|
+
transportForMultiaddr (ma: Multiaddr): Transport | undefined {
|
|
158
158
|
for (const transport of this.transports.values()) {
|
|
159
159
|
const addrs = transport.filter([ma])
|
|
160
160
|
|
|
@@ -167,7 +167,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
167
167
|
/**
|
|
168
168
|
* Starts listeners for each listen Multiaddr
|
|
169
169
|
*/
|
|
170
|
-
async listen (addrs: Multiaddr[]) {
|
|
170
|
+
async listen (addrs: Multiaddr[]): Promise<void> {
|
|
171
171
|
if (addrs == null || addrs.length === 0) {
|
|
172
172
|
log('no addresses were provided for listening, this node is dial only')
|
|
173
173
|
return
|
|
@@ -243,7 +243,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
243
243
|
* Removes the given transport from the manager.
|
|
244
244
|
* If a transport has any running listeners, they will be closed.
|
|
245
245
|
*/
|
|
246
|
-
async remove (key: string) {
|
|
246
|
+
async remove (key: string): Promise<void> {
|
|
247
247
|
log('removing %s', key)
|
|
248
248
|
|
|
249
249
|
// Close any running listeners
|
|
@@ -261,7 +261,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
|
|
|
261
261
|
*
|
|
262
262
|
* @async
|
|
263
263
|
*/
|
|
264
|
-
async removeAll () {
|
|
264
|
+
async removeAll (): Promise<void> {
|
|
265
265
|
const tasks = []
|
|
266
266
|
for (const key of this.transports.keys()) {
|
|
267
267
|
tasks.push(this.remove(key))
|