@libp2p/interface 0.1.2 → 0.1.3-68504939

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.
Files changed (58) hide show
  1. package/dist/src/connection/index.d.ts +13 -13
  2. package/dist/src/connection/index.d.ts.map +1 -1
  3. package/dist/src/connection-encrypter/index.d.ts +2 -2
  4. package/dist/src/connection-encrypter/index.d.ts.map +1 -1
  5. package/dist/src/connection-gater/index.d.ts +12 -12
  6. package/dist/src/connection-gater/index.d.ts.map +1 -1
  7. package/dist/src/content-routing/index.d.ts +4 -4
  8. package/dist/src/content-routing/index.d.ts.map +1 -1
  9. package/dist/src/index.d.ts +13 -13
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/keychain/index.d.ts +11 -11
  12. package/dist/src/keychain/index.d.ts.map +1 -1
  13. package/dist/src/keys/index.d.ts +10 -10
  14. package/dist/src/keys/index.d.ts.map +1 -1
  15. package/dist/src/metrics/index.d.ts +16 -16
  16. package/dist/src/metrics/index.d.ts.map +1 -1
  17. package/dist/src/peer-id/index.d.ts +4 -4
  18. package/dist/src/peer-id/index.d.ts.map +1 -1
  19. package/dist/src/peer-routing/index.d.ts +2 -2
  20. package/dist/src/peer-routing/index.d.ts.map +1 -1
  21. package/dist/src/peer-store/index.d.ts +9 -9
  22. package/dist/src/peer-store/index.d.ts.map +1 -1
  23. package/dist/src/pubsub/index.d.ts +10 -10
  24. package/dist/src/pubsub/index.d.ts.map +1 -1
  25. package/dist/src/record/index.d.ts +5 -5
  26. package/dist/src/record/index.d.ts.map +1 -1
  27. package/dist/src/startable.d.ts +7 -7
  28. package/dist/src/startable.d.ts.map +1 -1
  29. package/dist/src/stream-muxer/index.d.ts +6 -6
  30. package/dist/src/stream-muxer/index.d.ts.map +1 -1
  31. package/dist/src/stream-muxer/stream.d.ts +13 -7
  32. package/dist/src/stream-muxer/stream.d.ts.map +1 -1
  33. package/dist/src/stream-muxer/stream.js +31 -19
  34. package/dist/src/stream-muxer/stream.js.map +1 -1
  35. package/dist/src/topology/index.d.ts +2 -2
  36. package/dist/src/topology/index.d.ts.map +1 -1
  37. package/dist/src/transport/index.d.ts +7 -7
  38. package/dist/src/transport/index.d.ts.map +1 -1
  39. package/package.json +8 -3
  40. package/src/connection/index.ts +13 -13
  41. package/src/connection-encrypter/index.ts +2 -2
  42. package/src/connection-gater/index.ts +12 -12
  43. package/src/content-routing/index.ts +4 -4
  44. package/src/index.ts +13 -13
  45. package/src/keychain/index.ts +11 -11
  46. package/src/keys/index.ts +10 -10
  47. package/src/metrics/index.ts +16 -16
  48. package/src/peer-id/index.ts +4 -4
  49. package/src/peer-routing/index.ts +2 -2
  50. package/src/peer-store/index.ts +9 -9
  51. package/src/pubsub/index.ts +10 -10
  52. package/src/record/index.ts +5 -5
  53. package/src/startable.ts +7 -7
  54. package/src/stream-muxer/index.ts +6 -6
  55. package/src/stream-muxer/stream.ts +52 -30
  56. package/src/topology/index.ts +2 -2
  57. package/src/transport/index.ts +7 -7
  58. package/dist/typedoc-urls.json +0 -133
@@ -1,21 +1,24 @@
1
1
  import { abortableSource } from 'abortable-iterator'
2
2
  import { type Pushable, pushable } from 'it-pushable'
3
3
  import defer, { type DeferredPromise } from 'p-defer'
4
+ import { raceSignal } from 'race-signal'
4
5
  import { Uint8ArrayList } from 'uint8arraylist'
5
6
  import { CodeError } from '../errors.js'
6
7
  import type { Direction, ReadStatus, Stream, StreamStatus, StreamTimeline, WriteStatus } from '../connection/index.js'
7
8
  import type { AbortOptions } from '../index.js'
8
9
  import type { Source } from 'it-stream-types'
9
10
 
11
+ // copied from @libp2p/logger to break a circular dependency
10
12
  interface Logger {
11
13
  (formatter: any, ...args: any[]): void
12
- error: (formatter: any, ...args: any[]) => void
13
- trace: (formatter: any, ...args: any[]) => void
14
+ error(formatter: any, ...args: any[]): void
15
+ trace(formatter: any, ...args: any[]): void
14
16
  enabled: boolean
15
17
  }
16
18
 
17
19
  const ERR_STREAM_RESET = 'ERR_STREAM_RESET'
18
20
  const ERR_SINK_INVALID_STATE = 'ERR_SINK_INVALID_STATE'
21
+ const DEFAULT_SEND_CLOSE_WRITE_TIMEOUT = 5000
19
22
 
20
23
  export interface AbstractStreamInit {
21
24
  /**
@@ -41,33 +44,39 @@ export interface AbstractStreamInit {
41
44
  /**
42
45
  * Invoked when the stream ends
43
46
  */
44
- onEnd?: (err?: Error | undefined) => void
47
+ onEnd?(err?: Error | undefined): void
45
48
 
46
49
  /**
47
50
  * Invoked when the readable end of the stream is closed
48
51
  */
49
- onCloseRead?: () => void
52
+ onCloseRead?(): void
50
53
 
51
54
  /**
52
55
  * Invoked when the writable end of the stream is closed
53
56
  */
54
- onCloseWrite?: () => void
57
+ onCloseWrite?(): void
55
58
 
56
59
  /**
57
60
  * Invoked when the the stream has been reset by the remote
58
61
  */
59
- onReset?: () => void
62
+ onReset?(): void
60
63
 
61
64
  /**
62
65
  * Invoked when the the stream has errored
63
66
  */
64
- onAbort?: (err: Error) => void
67
+ onAbort?(err: Error): void
65
68
 
66
69
  /**
67
70
  * How long to wait in ms for stream data to be written to the underlying
68
71
  * connection when closing the writable end of the stream. (default: 500)
69
72
  */
70
73
  closeTimeout?: number
74
+
75
+ /**
76
+ * After the stream sink has closed, a limit on how long it takes to send
77
+ * a close-write message to the remote peer.
78
+ */
79
+ sendCloseWriteTimeout?: number
71
80
  }
72
81
 
73
82
  function isPromise (res?: any): res is Promise<void> {
@@ -94,6 +103,7 @@ export abstract class AbstractStream implements Stream {
94
103
  private readonly onCloseWrite?: () => void
95
104
  private readonly onReset?: () => void
96
105
  private readonly onAbort?: (err: Error) => void
106
+ private readonly sendCloseWriteTimeout: number
97
107
 
98
108
  protected readonly log: Logger
99
109
 
@@ -113,6 +123,7 @@ export abstract class AbstractStream implements Stream {
113
123
  this.timeline = {
114
124
  open: Date.now()
115
125
  }
126
+ this.sendCloseWriteTimeout = init.sendCloseWriteTimeout ?? DEFAULT_SEND_CLOSE_WRITE_TIMEOUT
116
127
 
117
128
  this.onEnd = init.onEnd
118
129
  this.onCloseRead = init?.onCloseRead
@@ -128,7 +139,6 @@ export abstract class AbstractStream implements Stream {
128
139
  this.log.trace('source ended')
129
140
  }
130
141
 
131
- this.readStatus = 'closed'
132
142
  this.onSourceEnd(err)
133
143
  }
134
144
  })
@@ -173,11 +183,19 @@ export abstract class AbstractStream implements Stream {
173
183
  }
174
184
  }
175
185
 
176
- this.log.trace('sink finished reading from source')
177
- this.writeStatus = 'done'
186
+ this.log.trace('sink finished reading from source, write status is "%s"', this.writeStatus)
187
+
188
+ if (this.writeStatus === 'writing') {
189
+ this.writeStatus = 'closing'
190
+
191
+ this.log.trace('send close write to remote')
192
+ await this.sendCloseWrite({
193
+ signal: AbortSignal.timeout(this.sendCloseWriteTimeout)
194
+ })
195
+
196
+ this.writeStatus = 'closed'
197
+ }
178
198
 
179
- this.log.trace('sink calling closeWrite')
180
- await this.closeWrite(options)
181
199
  this.onSinkEnd()
182
200
  } catch (err: any) {
183
201
  this.log.trace('sink ended with error, calling abort with error', err)
@@ -196,6 +214,7 @@ export abstract class AbstractStream implements Stream {
196
214
  }
197
215
 
198
216
  this.timeline.closeRead = Date.now()
217
+ this.readStatus = 'closed'
199
218
 
200
219
  if (err != null && this.endErr == null) {
201
220
  this.endErr = err
@@ -207,6 +226,10 @@ export abstract class AbstractStream implements Stream {
207
226
  this.log.trace('source and sink ended')
208
227
  this.timeline.close = Date.now()
209
228
 
229
+ if (this.status !== 'aborted' && this.status !== 'reset') {
230
+ this.status = 'closed'
231
+ }
232
+
210
233
  if (this.onEnd != null) {
211
234
  this.onEnd(this.endErr)
212
235
  }
@@ -221,6 +244,7 @@ export abstract class AbstractStream implements Stream {
221
244
  }
222
245
 
223
246
  this.timeline.closeWrite = Date.now()
247
+ this.writeStatus = 'closed'
224
248
 
225
249
  if (err != null && this.endErr == null) {
226
250
  this.endErr = err
@@ -232,6 +256,10 @@ export abstract class AbstractStream implements Stream {
232
256
  this.log.trace('sink and source ended')
233
257
  this.timeline.close = Date.now()
234
258
 
259
+ if (this.status !== 'aborted' && this.status !== 'reset') {
260
+ this.status = 'closed'
261
+ }
262
+
235
263
  if (this.onEnd != null) {
236
264
  this.onEnd(this.endErr)
237
265
  }
@@ -266,16 +294,16 @@ export abstract class AbstractStream implements Stream {
266
294
  const readStatus = this.readStatus
267
295
  this.readStatus = 'closing'
268
296
 
269
- if (readStatus === 'ready') {
270
- this.log.trace('ending internal source queue')
271
- this.streamSource.end()
272
- }
273
-
274
297
  if (this.status !== 'reset' && this.status !== 'aborted' && this.timeline.closeRead == null) {
275
298
  this.log.trace('send close read to remote')
276
299
  await this.sendCloseRead(options)
277
300
  }
278
301
 
302
+ if (readStatus === 'ready') {
303
+ this.log.trace('ending internal source queue')
304
+ this.streamSource.end()
305
+ }
306
+
279
307
  this.log.trace('closed readable end of stream')
280
308
  }
281
309
 
@@ -286,16 +314,13 @@ export abstract class AbstractStream implements Stream {
286
314
 
287
315
  this.log.trace('closing writable end of stream with starting write status "%s"', this.writeStatus)
288
316
 
289
- const writeStatus = this.writeStatus
290
-
291
317
  if (this.writeStatus === 'ready') {
292
318
  this.log.trace('sink was never sunk, sink an empty array')
293
- await this.sink([])
294
- }
295
319
 
296
- this.writeStatus = 'closing'
320
+ await raceSignal(this.sink([]), options.signal)
321
+ }
297
322
 
298
- if (writeStatus === 'writing') {
323
+ if (this.writeStatus === 'writing') {
299
324
  // stop reading from the source passed to `.sink` in the microtask queue
300
325
  // - this lets any data queued by the user in the current tick get read
301
326
  // before we exit
@@ -303,16 +328,12 @@ export abstract class AbstractStream implements Stream {
303
328
  queueMicrotask(() => {
304
329
  this.log.trace('aborting source passed to .sink')
305
330
  this.sinkController.abort()
306
- this.sinkEnd.promise.then(resolve, reject)
331
+ raceSignal(this.sinkEnd.promise, options.signal)
332
+ .then(resolve, reject)
307
333
  })
308
334
  })
309
335
  }
310
336
 
311
- if (this.status !== 'reset' && this.status !== 'aborted' && this.timeline.closeWrite == null) {
312
- this.log.trace('send close write to remote')
313
- await this.sendCloseWrite(options)
314
- }
315
-
316
337
  this.writeStatus = 'closed'
317
338
 
318
339
  this.log.trace('closed writable end of stream')
@@ -357,6 +378,7 @@ export abstract class AbstractStream implements Stream {
357
378
  const err = new CodeError('stream reset', ERR_STREAM_RESET)
358
379
 
359
380
  this.status = 'reset'
381
+ this.timeline.reset = Date.now()
360
382
  this._closeSinkAndSource(err)
361
383
  this.onReset?.()
362
384
  }
@@ -423,7 +445,7 @@ export abstract class AbstractStream implements Stream {
423
445
  return
424
446
  }
425
447
 
426
- this.log.trace('muxer destroyed')
448
+ this.log.trace('stream destroyed')
427
449
 
428
450
  this._closeSinkAndSource()
429
451
  }
@@ -5,6 +5,6 @@ export interface Topology {
5
5
  min?: number
6
6
  max?: number
7
7
 
8
- onConnect?: (peerId: PeerId, conn: Connection) => void
9
- onDisconnect?: (peerId: PeerId) => void
8
+ onConnect?(peerId: PeerId, conn: Connection): void
9
+ onDisconnect?(peerId: PeerId): void
10
10
  }
@@ -15,17 +15,17 @@ export interface Listener extends EventEmitter<ListenerEvents> {
15
15
  /**
16
16
  * Start a listener
17
17
  */
18
- listen: (multiaddr: Multiaddr) => Promise<void>
18
+ listen(multiaddr: Multiaddr): Promise<void>
19
19
  /**
20
20
  * Get listen addresses
21
21
  */
22
- getAddrs: () => Multiaddr[]
22
+ getAddrs(): Multiaddr[]
23
23
  /**
24
24
  * Close listener
25
25
  *
26
26
  * @returns {Promise<void>}
27
27
  */
28
- close: () => Promise<void>
28
+ close(): Promise<void>
29
29
  }
30
30
 
31
31
  export const symbol = Symbol.for('@libp2p/transport')
@@ -60,12 +60,12 @@ export interface Transport {
60
60
  /**
61
61
  * Dial a given multiaddr.
62
62
  */
63
- dial: (ma: Multiaddr, options: DialOptions) => Promise<Connection>
63
+ dial(ma: Multiaddr, options: DialOptions): Promise<Connection>
64
64
 
65
65
  /**
66
66
  * Create transport listeners.
67
67
  */
68
- createListener: (options: CreateListenerOptions) => Listener
68
+ createListener(options: CreateListenerOptions): Listener
69
69
 
70
70
  /**
71
71
  * Takes a list of `Multiaddr`s and returns only valid addresses for the transport
@@ -108,10 +108,10 @@ export interface Upgrader {
108
108
  /**
109
109
  * Upgrades an outbound connection on `transport.dial`.
110
110
  */
111
- upgradeOutbound: (maConn: MultiaddrConnection, opts?: UpgraderOptions) => Promise<Connection>
111
+ upgradeOutbound(maConn: MultiaddrConnection, opts?: UpgraderOptions): Promise<Connection>
112
112
 
113
113
  /**
114
114
  * Upgrades an inbound connection on transport listener.
115
115
  */
116
- upgradeInbound: (maConn: MultiaddrConnection, opts?: UpgraderOptions) => Promise<Connection>
116
+ upgradeInbound(maConn: MultiaddrConnection, opts?: UpgraderOptions): Promise<Connection>
117
117
  }
@@ -1,133 +0,0 @@
1
- {
2
- "PrivateKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.PrivateKey.html",
3
- "PublicKey": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_crypto.keys.unknown.PublicKey.html",
4
- "Connection": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.Connection.html",
5
- "ConnectionProtector": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.ConnectionProtector.html",
6
- "ConnectionTimeline": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.ConnectionTimeline.html",
7
- "MultiaddrConnection": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.MultiaddrConnection.html",
8
- "MultiaddrConnectionTimeline": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.MultiaddrConnectionTimeline.html",
9
- "NewStreamOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.NewStreamOptions.html",
10
- "Stream": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.Stream.html",
11
- "StreamTimeline": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection.StreamTimeline.html",
12
- "ConnectionStatus": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.connection.ConnectionStatus.html",
13
- "Direction": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.connection.Direction.html",
14
- "ReadStatus": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.connection.ReadStatus.html",
15
- "StreamStatus": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.connection.StreamStatus.html",
16
- "WriteStatus": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.connection.WriteStatus.html",
17
- "symbol": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.connection.symbol.html",
18
- "isConnection": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.connection.isConnection.html",
19
- "ConnectionEncrypter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection_encrypter.ConnectionEncrypter.html",
20
- "SecuredConnection": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection_encrypter.SecuredConnection.html",
21
- "ConnectionGater": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.connection_gater.ConnectionGater.html",
22
- "ContentRouting": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.content_routing.ContentRouting.html",
23
- "contentRouting": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.content_routing.contentRouting-1.html",
24
- "AbortError": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.errors.AbortError.html",
25
- "CodeError": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.errors.CodeError.html",
26
- "InvalidCryptoExchangeError": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.errors.InvalidCryptoExchangeError.html",
27
- "InvalidCryptoTransmissionError": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.errors.InvalidCryptoTransmissionError.html",
28
- "UnexpectedPeerError": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.errors.UnexpectedPeerError.html",
29
- "EventEmitter": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.events.EventEmitter.html",
30
- "EventCallback": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.events.EventCallback.html",
31
- "EventObject": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.events.EventObject.html",
32
- "EventHandler": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.events.EventHandler.html",
33
- "CustomEvent": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.events.CustomEvent.html",
34
- "Topology": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.unknown.Topology.html",
35
- "AbortOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.AbortOptions.html",
36
- "AddressSorter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.AddressSorter.html",
37
- "IdentifyResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.IdentifyResult.html",
38
- "Libp2p": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.Libp2p.html",
39
- "Libp2pEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.Libp2pEvents.html",
40
- "PeerUpdate": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.PeerUpdate.html",
41
- "PendingDial": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.PendingDial.html",
42
- "SignedPeerRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.index.SignedPeerRecord.html",
43
- "PendingDialStatus": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.index.PendingDialStatus.html",
44
- "RecursivePartial": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.index.RecursivePartial.html",
45
- "ServiceMap": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.index.ServiceMap.html",
46
- "KeyChain": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.keychain.KeyChain.html",
47
- "KeyInfo": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.keychain.KeyInfo.html",
48
- "KeyType": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.keys.KeyType.html",
49
- "Ed25519": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.keys.Ed25519.html",
50
- "RSA": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.keys.RSA.html",
51
- "secp256k1": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.keys.secp256k1.html",
52
- "CalculatedMetricOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.CalculatedMetricOptions.html",
53
- "Counter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.Counter.html",
54
- "CounterGroup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.CounterGroup.html",
55
- "Metric": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.Metric.html",
56
- "MetricGroup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.MetricGroup.html",
57
- "MetricOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.MetricOptions.html",
58
- "Metrics": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.Metrics.html",
59
- "StopTimer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics.StopTimer.html",
60
- "CalculateMetric": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.metrics.CalculateMetric.html",
61
- "CreateTrackedMapInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics_tracked_map.CreateTrackedMapInit.html",
62
- "TrackedMapInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.metrics_tracked_map.TrackedMapInit.html",
63
- "trackedMap": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.metrics_tracked_map.trackedMap.html",
64
- "PeerDiscovery": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_discovery.PeerDiscovery.html",
65
- "PeerDiscoveryEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_discovery.PeerDiscoveryEvents.html",
66
- "peerDiscovery": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.peer_discovery.peerDiscovery-1.html",
67
- "BasePeerId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_id.unknown.BasePeerId.html",
68
- "Ed25519PeerId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_id.Ed25519PeerId.html",
69
- "RSAPeerId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_id.RSAPeerId.html",
70
- "Secp256k1PeerId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_id.Secp256k1PeerId.html",
71
- "PeerId": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.peer_id.PeerId.html",
72
- "PeerIdType": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.peer_id.PeerIdType.html",
73
- "isPeerId": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.peer_id.isPeerId.html",
74
- "PeerInfo": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_info.PeerInfo.html",
75
- "PeerRouting": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_routing.PeerRouting.html",
76
- "peerRouting": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.peer_routing.peerRouting-1.html",
77
- "Address": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.Address.html",
78
- "Peer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.Peer.html",
79
- "PeerData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.PeerData.html",
80
- "PeerQuery": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.PeerQuery.html",
81
- "PeerQueryFilter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.PeerQueryFilter.html",
82
- "PeerQueryOrder": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.PeerQueryOrder.html",
83
- "PeerStore": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.PeerStore.html",
84
- "Tag": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.Tag.html",
85
- "TagOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.peer_store.TagOptions.html",
86
- "KEEP_ALIVE": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.peer_store_tags.KEEP_ALIVE.html",
87
- "Subscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.unknown.Subscription.html",
88
- "TopicValidatorResult": "https://libp2p.github.io/js-libp2p/enums/_libp2p_interface.pubsub.TopicValidatorResult.html",
89
- "PeerStreamEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PeerStreamEvents.html",
90
- "PeerStreams": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PeerStreams.html",
91
- "PubSub": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSub.html",
92
- "PubSubEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSubEvents.html",
93
- "PubSubInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSubInit.html",
94
- "PubSubRPC": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSubRPC.html",
95
- "PubSubRPCMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSubRPCMessage.html",
96
- "PubSubRPCSubscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PubSubRPCSubscription.html",
97
- "PublishResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.PublishResult.html",
98
- "SignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.SignedMessage.html",
99
- "SubscriptionChangeData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.SubscriptionChangeData.html",
100
- "TopicValidatorFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.TopicValidatorFn.html",
101
- "UnsignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.pubsub.UnsignedMessage.html",
102
- "Message": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.pubsub.Message.html",
103
- "SignaturePolicy": "https://libp2p.github.io/js-libp2p/types/_libp2p_interface.pubsub.SignaturePolicy.html",
104
- "StrictNoSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.pubsub.StrictNoSign.html",
105
- "StrictSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface.pubsub.StrictSign.html",
106
- "Envelope": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.record.Envelope.html",
107
- "Record": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.record.Record.html",
108
- "Startable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.startable.Startable.html",
109
- "isStartable": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.startable.isStartable.html",
110
- "start": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.startable.start.html",
111
- "stop": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.startable.stop.html",
112
- "IncomingStreamData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_handler.IncomingStreamData.html",
113
- "StreamHandler": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_handler.StreamHandler.html",
114
- "StreamHandlerOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_handler.StreamHandlerOptions.html",
115
- "StreamHandlerRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_handler.StreamHandlerRecord.html",
116
- "StreamMuxer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_muxer.StreamMuxer.html",
117
- "StreamMuxerFactory": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_muxer.StreamMuxerFactory.html",
118
- "StreamMuxerInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_muxer.StreamMuxerInit.html",
119
- "Logger": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_muxer_stream.unknown.Logger.html",
120
- "AbstractStream": "https://libp2p.github.io/js-libp2p/classes/_libp2p_interface.stream_muxer_stream.AbstractStream.html",
121
- "AbstractStreamInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.stream_muxer_stream.AbstractStreamInit.html",
122
- "Listener": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.unknown.Listener.html",
123
- "FaultTolerance": "https://libp2p.github.io/js-libp2p/enums/_libp2p_interface.transport.FaultTolerance.html",
124
- "ConnectionHandler": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.ConnectionHandler.html",
125
- "CreateListenerOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.CreateListenerOptions.html",
126
- "DialOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.DialOptions.html",
127
- "ListenerEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.ListenerEvents.html",
128
- "MultiaddrFilter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.MultiaddrFilter.html",
129
- "Transport": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.Transport.html",
130
- "Upgrader": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.Upgrader.html",
131
- "UpgraderOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface.transport.UpgraderOptions.html",
132
- "isTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_interface.transport.isTransport.html"
133
- }