libp2p 0.36.2-fab4f13 → 0.37.0-d5386df

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 (180) hide show
  1. package/dist/src/address-manager/index.d.ts +2 -1
  2. package/dist/src/address-manager/index.d.ts.map +1 -1
  3. package/dist/src/address-manager/index.js +1 -1
  4. package/dist/src/address-manager/index.js.map +1 -1
  5. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  6. package/dist/src/circuit/auto-relay.js +7 -6
  7. package/dist/src/circuit/auto-relay.js.map +1 -1
  8. package/dist/src/circuit/circuit/hop.d.ts +1 -1
  9. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  10. package/dist/src/circuit/circuit/hop.js +4 -4
  11. package/dist/src/circuit/circuit/hop.js.map +1 -1
  12. package/dist/src/circuit/index.d.ts +1 -1
  13. package/dist/src/circuit/index.d.ts.map +1 -1
  14. package/dist/src/circuit/listener.d.ts +3 -3
  15. package/dist/src/circuit/listener.d.ts.map +1 -1
  16. package/dist/src/circuit/listener.js +10 -2
  17. package/dist/src/circuit/listener.js.map +1 -1
  18. package/dist/src/circuit/pb/index.d.ts +5 -4
  19. package/dist/src/circuit/pb/index.d.ts.map +1 -1
  20. package/dist/src/circuit/pb/index.js +28 -2
  21. package/dist/src/circuit/pb/index.js.map +1 -1
  22. package/dist/src/circuit/transport.d.ts.map +1 -1
  23. package/dist/src/circuit/transport.js +7 -5
  24. package/dist/src/circuit/transport.js.map +1 -1
  25. package/dist/src/config.d.ts.map +1 -1
  26. package/dist/src/config.js +5 -7
  27. package/dist/src/config.js.map +1 -1
  28. package/dist/src/connection-manager/auto-dialler.d.ts +1 -1
  29. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  30. package/dist/src/connection-manager/auto-dialler.js +4 -4
  31. package/dist/src/connection-manager/auto-dialler.js.map +1 -1
  32. package/dist/src/{dialer → connection-manager/dialer}/auto-dialer.d.ts +2 -0
  33. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  34. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  35. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  36. package/dist/src/{dialer → connection-manager/dialer}/dial-request.d.ts +2 -2
  37. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  38. package/dist/src/{dialer → connection-manager/dialer}/dial-request.js +1 -1
  39. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  40. package/dist/src/{dialer → connection-manager/dialer}/index.d.ts +37 -8
  41. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  42. package/dist/src/{dialer → connection-manager/dialer}/index.js +10 -23
  43. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  44. package/dist/src/connection-manager/index.d.ts +57 -26
  45. package/dist/src/connection-manager/index.d.ts.map +1 -1
  46. package/dist/src/connection-manager/index.js +80 -42
  47. package/dist/src/connection-manager/index.js.map +1 -1
  48. package/dist/src/connection-manager/latency-monitor.d.ts +1 -1
  49. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  50. package/dist/src/connection-manager/latency-monitor.js +1 -1
  51. package/dist/src/connection-manager/latency-monitor.js.map +1 -1
  52. package/dist/src/connection-manager/visibility-change-emitter.d.ts +1 -1
  53. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  54. package/dist/src/connection-manager/visibility-change-emitter.js +1 -1
  55. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -1
  56. package/dist/src/content-routing/index.d.ts +2 -1
  57. package/dist/src/content-routing/index.d.ts.map +1 -1
  58. package/dist/src/content-routing/index.js.map +1 -1
  59. package/dist/src/dht/dummy-dht.d.ts +4 -1
  60. package/dist/src/dht/dummy-dht.d.ts.map +1 -1
  61. package/dist/src/dht/dummy-dht.js +8 -1
  62. package/dist/src/dht/dummy-dht.js.map +1 -1
  63. package/dist/src/fetch/index.d.ts +1 -1
  64. package/dist/src/fetch/index.d.ts.map +1 -1
  65. package/dist/src/fetch/index.js +1 -1
  66. package/dist/src/fetch/index.js.map +1 -1
  67. package/dist/src/fetch/pb/proto.d.ts +4 -3
  68. package/dist/src/fetch/pb/proto.d.ts.map +1 -1
  69. package/dist/src/fetch/pb/proto.js +7 -1
  70. package/dist/src/fetch/pb/proto.js.map +1 -1
  71. package/dist/src/identify/index.d.ts +1 -1
  72. package/dist/src/identify/index.d.ts.map +1 -1
  73. package/dist/src/identify/index.js +4 -4
  74. package/dist/src/identify/index.js.map +1 -1
  75. package/dist/src/identify/pb/message.d.ts +2 -1
  76. package/dist/src/identify/pb/message.d.ts.map +1 -1
  77. package/dist/src/identify/pb/message.js.map +1 -1
  78. package/dist/src/index.d.ts +7 -24
  79. package/dist/src/index.d.ts.map +1 -1
  80. package/dist/src/index.js.map +1 -1
  81. package/dist/src/insecure/pb/proto.d.ts +4 -3
  82. package/dist/src/insecure/pb/proto.d.ts.map +1 -1
  83. package/dist/src/insecure/pb/proto.js +8 -1
  84. package/dist/src/insecure/pb/proto.js.map +1 -1
  85. package/dist/src/keychain/index.d.ts +0 -1
  86. package/dist/src/keychain/index.d.ts.map +1 -1
  87. package/dist/src/keychain/index.js +0 -1
  88. package/dist/src/keychain/index.js.map +1 -1
  89. package/dist/src/libp2p.d.ts +4 -2
  90. package/dist/src/libp2p.d.ts.map +1 -1
  91. package/dist/src/libp2p.js +57 -43
  92. package/dist/src/libp2p.js.map +1 -1
  93. package/dist/src/metrics/index.d.ts +1 -1
  94. package/dist/src/metrics/index.d.ts.map +1 -1
  95. package/dist/src/metrics/stats.d.ts +1 -1
  96. package/dist/src/metrics/stats.d.ts.map +1 -1
  97. package/dist/src/metrics/stats.js +1 -1
  98. package/dist/src/metrics/stats.js.map +1 -1
  99. package/dist/src/nat-manager.d.ts +6 -3
  100. package/dist/src/nat-manager.d.ts.map +1 -1
  101. package/dist/src/nat-manager.js +6 -3
  102. package/dist/src/nat-manager.js.map +1 -1
  103. package/dist/src/peer-record-updater.d.ts +1 -1
  104. package/dist/src/peer-record-updater.d.ts.map +1 -1
  105. package/dist/src/peer-routing.d.ts +2 -1
  106. package/dist/src/peer-routing.d.ts.map +1 -1
  107. package/dist/src/peer-routing.js.map +1 -1
  108. package/dist/src/ping/index.d.ts +1 -1
  109. package/dist/src/ping/index.d.ts.map +1 -1
  110. package/dist/src/ping/index.js +2 -1
  111. package/dist/src/ping/index.js.map +1 -1
  112. package/dist/src/pnet/index.d.ts +1 -0
  113. package/dist/src/pnet/index.d.ts.map +1 -1
  114. package/dist/src/pnet/index.js +1 -0
  115. package/dist/src/pnet/index.js.map +1 -1
  116. package/dist/src/pnet/key-generator.d.ts +1 -1
  117. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  118. package/dist/src/pnet/key-generator.js +1 -1
  119. package/dist/src/pnet/key-generator.js.map +1 -1
  120. package/dist/src/pubsub/dummy-pubsub.d.ts +1 -1
  121. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -1
  122. package/dist/src/pubsub/dummy-pubsub.js +1 -1
  123. package/dist/src/pubsub/dummy-pubsub.js.map +1 -1
  124. package/dist/src/registrar.d.ts +0 -1
  125. package/dist/src/registrar.d.ts.map +1 -1
  126. package/dist/src/registrar.js +2 -17
  127. package/dist/src/registrar.js.map +1 -1
  128. package/dist/src/transport-manager.d.ts +3 -1
  129. package/dist/src/transport-manager.d.ts.map +1 -1
  130. package/dist/src/transport-manager.js +1 -1
  131. package/dist/src/transport-manager.js.map +1 -1
  132. package/dist/src/upgrader.d.ts +1 -1
  133. package/dist/src/upgrader.d.ts.map +1 -1
  134. package/dist/src/upgrader.js +1 -1
  135. package/dist/src/upgrader.js.map +1 -1
  136. package/package.json +16 -25
  137. package/src/address-manager/index.ts +2 -1
  138. package/src/circuit/auto-relay.ts +8 -6
  139. package/src/circuit/circuit/hop.ts +5 -5
  140. package/src/circuit/index.ts +1 -1
  141. package/src/circuit/listener.ts +18 -5
  142. package/src/circuit/pb/index.ts +33 -4
  143. package/src/circuit/transport.ts +8 -5
  144. package/src/config.ts +5 -7
  145. package/src/connection-manager/auto-dialler.ts +5 -5
  146. package/src/{dialer → connection-manager/dialer}/auto-dialer.ts +23 -4
  147. package/src/{dialer → connection-manager/dialer}/dial-request.ts +4 -4
  148. package/src/{dialer → connection-manager/dialer}/index.ts +48 -37
  149. package/src/connection-manager/index.ts +146 -60
  150. package/src/connection-manager/latency-monitor.ts +1 -1
  151. package/src/connection-manager/visibility-change-emitter.ts +1 -1
  152. package/src/content-routing/index.ts +2 -1
  153. package/src/dht/dummy-dht.ts +10 -1
  154. package/src/fetch/index.ts +2 -2
  155. package/src/fetch/pb/proto.ts +10 -3
  156. package/src/identify/index.ts +5 -5
  157. package/src/identify/pb/message.ts +2 -1
  158. package/src/index.ts +7 -28
  159. package/src/insecure/pb/proto.ts +11 -4
  160. package/src/keychain/index.ts +0 -1
  161. package/src/libp2p.ts +68 -49
  162. package/src/metrics/index.ts +1 -1
  163. package/src/metrics/stats.ts +1 -1
  164. package/src/nat-manager.ts +8 -4
  165. package/src/peer-record-updater.ts +1 -1
  166. package/src/peer-routing.ts +2 -1
  167. package/src/ping/index.ts +3 -2
  168. package/src/pnet/index.ts +2 -0
  169. package/src/pnet/key-generator.ts +1 -1
  170. package/src/pubsub/dummy-pubsub.ts +1 -1
  171. package/src/registrar.ts +3 -19
  172. package/src/transport-manager.ts +3 -1
  173. package/src/upgrader.ts +1 -1
  174. package/dist/src/dialer/auto-dialer.d.ts.map +0 -1
  175. package/dist/src/dialer/auto-dialer.js +0 -24
  176. package/dist/src/dialer/auto-dialer.js.map +0 -1
  177. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  178. package/dist/src/dialer/dial-request.js.map +0 -1
  179. package/dist/src/dialer/index.d.ts.map +0 -1
  180. package/dist/src/dialer/index.js.map +0 -1
package/src/libp2p.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import { AbortOptions, EventEmitter, Startable, CustomEvent, isStartable } from '@libp2p/interfaces'
2
+ import type { AbortOptions } from '@libp2p/interfaces'
3
+ import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events'
4
+ import { Startable, isStartable } from '@libp2p/interfaces/startable'
3
5
  import type { Multiaddr } from '@multiformats/multiaddr'
4
6
  import { MemoryDatastore } from 'datastore-core/memory'
5
7
  import { DefaultPeerRouting } from './peer-routing.js'
@@ -11,7 +13,6 @@ import { DefaultConnectionManager } from './connection-manager/index.js'
11
13
  import { AutoDialler } from './connection-manager/auto-dialler.js'
12
14
  import { Circuit } from './circuit/transport.js'
13
15
  import { Relay } from './circuit/index.js'
14
- import { DefaultDialer } from './dialer/index.js'
15
16
  import { KeyChain } from './keychain/index.js'
16
17
  import { DefaultMetrics } from './metrics/index.js'
17
18
  import { DefaultTransportManager } from './transport-manager.js'
@@ -25,14 +26,15 @@ import { PeerRecordUpdater } from './peer-record-updater.js'
25
26
  import { DHTPeerRouting } from './dht/dht-peer-routing.js'
26
27
  import { PersistentPeerStore } from '@libp2p/peer-store'
27
28
  import { DHTContentRouting } from './dht/dht-content-routing.js'
28
- import { AutoDialer } from './dialer/auto-dialer.js'
29
+ import { AutoDialer } from './connection-manager/dialer/auto-dialer.js'
29
30
  import { Initializable, Components, isInitializable } from '@libp2p/interfaces/components'
30
31
  import type { PeerId } from '@libp2p/interfaces/peer-id'
31
32
  import type { Connection } from '@libp2p/interfaces/connection'
32
33
  import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
33
34
  import type { ContentRouting } from '@libp2p/interfaces/content-routing'
34
35
  import type { PubSub } from '@libp2p/interfaces/pubsub'
35
- import type { ConnectionManager, Registrar, StreamHandler } from '@libp2p/interfaces/registrar'
36
+ import type { Registrar, StreamHandler } from '@libp2p/interfaces/registrar'
37
+ import type { ConnectionManager } from '@libp2p/interfaces/connection-manager'
36
38
  import type { PeerInfo } from '@libp2p/interfaces/peer-info'
37
39
  import type { Libp2p, Libp2pEvents, Libp2pInit, Libp2pOptions } from './index.js'
38
40
  import { validateConfig } from './config.js'
@@ -46,6 +48,7 @@ import { unmarshalPublicKey } from '@libp2p/crypto/keys'
46
48
  import type { Metrics } from '@libp2p/interfaces/metrics'
47
49
  import { DummyDHT } from './dht/dummy-dht.js'
48
50
  import { DummyPubSub } from './pubsub/dummy-pubsub.js'
51
+ import { PeerSet } from '@libp2p/peer-collections'
49
52
 
50
53
  const log = logger('libp2p')
51
54
 
@@ -72,34 +75,40 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
72
75
  constructor (init: Libp2pInit) {
73
76
  super()
74
77
 
75
- this.services = []
76
78
  this.initializables = []
77
79
  this.started = false
78
80
  this.peerId = init.peerId
79
81
  this.components = new Components({
80
82
  peerId: init.peerId,
81
- datastore: init.datastore ?? new MemoryDatastore()
83
+ datastore: init.datastore ?? new MemoryDatastore(),
84
+ connectionGater: {
85
+ denyDialPeer: async () => await Promise.resolve(false),
86
+ denyDialMultiaddr: async () => await Promise.resolve(false),
87
+ denyInboundConnection: async () => await Promise.resolve(false),
88
+ denyOutboundConnection: async () => await Promise.resolve(false),
89
+ denyInboundEncryptedConnection: async () => await Promise.resolve(false),
90
+ denyOutboundEncryptedConnection: async () => await Promise.resolve(false),
91
+ denyInboundUpgradedConnection: async () => await Promise.resolve(false),
92
+ denyOutboundUpgradedConnection: async () => await Promise.resolve(false),
93
+ filterMultiaddrForPeer: async () => await Promise.resolve(true),
94
+ ...init.connectionGater
95
+ }
82
96
  })
97
+ this.components.setPeerStore(new PersistentPeerStore({
98
+ addressFilter: this.components.getConnectionGater().filterMultiaddrForPeer,
99
+ ...init.peerStore
100
+ }))
101
+
102
+ this.services = [
103
+ this.components
104
+ ]
83
105
 
84
106
  // Create Metrics
85
107
  if (init.metrics.enabled) {
86
- this.metrics = this.components.setMetrics(this.configureComponent(new DefaultMetrics(init.metrics)))
108
+ this.metrics = this.components.setMetrics(new DefaultMetrics(init.metrics))
87
109
  }
88
110
 
89
- this.components.setConnectionGater(this.configureComponent({
90
- denyDialPeer: async () => await Promise.resolve(false),
91
- denyDialMultiaddr: async () => await Promise.resolve(false),
92
- denyInboundConnection: async () => await Promise.resolve(false),
93
- denyOutboundConnection: async () => await Promise.resolve(false),
94
- denyInboundEncryptedConnection: async () => await Promise.resolve(false),
95
- denyOutboundEncryptedConnection: async () => await Promise.resolve(false),
96
- denyInboundUpgradedConnection: async () => await Promise.resolve(false),
97
- denyOutboundUpgradedConnection: async () => await Promise.resolve(false),
98
- filterMultiaddrForPeer: async () => await Promise.resolve(true),
99
- ...init.connectionGater
100
- }))
101
-
102
- this.peerStore = this.components.setPeerStore(this.configureComponent(new PersistentPeerStore(this.components, init.peerStore)))
111
+ this.peerStore = this.components.getPeerStore()
103
112
 
104
113
  this.peerStore.addEventListener('peer', evt => {
105
114
  const { detail: peerData } = evt
@@ -109,32 +118,30 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
109
118
 
110
119
  // Set up connection protector if configured
111
120
  if (init.connectionProtector != null) {
112
- this.components.setConnectionProtector(this.configureComponent(init.connectionProtector))
121
+ this.components.setConnectionProtector(init.connectionProtector)
113
122
  }
114
123
 
115
124
  // Set up the Upgrader
116
- this.components.setUpgrader(this.configureComponent(new DefaultUpgrader(this.components, {
125
+ this.components.setUpgrader(new DefaultUpgrader(this.components, {
117
126
  connectionEncryption: (init.connectionEncryption ?? []).map(component => this.configureComponent(component)),
118
127
  muxers: (init.streamMuxers ?? []).map(component => this.configureComponent(component))
119
- })))
128
+ }))
120
129
 
121
130
  // Create the Connection Manager
122
- this.connectionManager = this.components.setConnectionManager(this.configureComponent(new DefaultConnectionManager(this.components, init.connectionManager)))
131
+ this.connectionManager = this.components.setConnectionManager(new DefaultConnectionManager(init.connectionManager))
123
132
 
124
133
  // Create the Registrar
125
- this.registrar = this.components.setRegistrar(this.configureComponent(new DefaultRegistrar(this.components)))
134
+ this.registrar = this.components.setRegistrar(new DefaultRegistrar(this.components))
126
135
 
127
136
  // Setup the transport manager
128
- this.components.setTransportManager(this.configureComponent(new DefaultTransportManager(this.components, init.transportManager)))
137
+ this.components.setTransportManager(new DefaultTransportManager(this.components, init.transportManager))
129
138
 
130
139
  // Addresses {listen, announce, noAnnounce}
131
- this.components.setAddressManager(this.configureComponent(new DefaultAddressManager(this.components, init.addresses)))
140
+ this.components.setAddressManager(new DefaultAddressManager(this.components, init.addresses))
132
141
 
133
142
  // update our peer record when addresses change
134
143
  this.configureComponent(new PeerRecordUpdater(this.components))
135
144
 
136
- this.components.setDialer(this.configureComponent(new DefaultDialer(this.components, init.dialer)))
137
-
138
145
  this.configureComponent(new AutoDialler(this.components, {
139
146
  enabled: init.connectionManager.autoDial,
140
147
  minConnections: init.connectionManager.minConnections,
@@ -169,14 +176,14 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
169
176
 
170
177
  // dht provided components (peerRouting, contentRouting, dht)
171
178
  if (init.dht != null) {
172
- this.dht = this.components.setDHT(this.configureComponent(init.dht))
179
+ this.dht = this.components.setDHT(init.dht)
173
180
  } else {
174
181
  this.dht = new DummyDHT()
175
182
  }
176
183
 
177
184
  // Create pubsub if provided
178
185
  if (init.pubsub != null) {
179
- this.pubsub = this.components.setPubSub(this.configureComponent(init.pubsub))
186
+ this.pubsub = this.components.setPubSub(init.pubsub)
180
187
  } else {
181
188
  this.pubsub = new DummyPubSub()
182
189
  }
@@ -216,7 +223,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
216
223
  this.components.getTransportManager().add(this.configureComponent(new Circuit()))
217
224
 
218
225
  this.configureComponent(new Relay(this.components, {
219
- addressSorter: init.dialer.addressSorter,
226
+ addressSorter: init.connectionManager.addressSorter,
220
227
  ...init.relay
221
228
  }))
222
229
  }
@@ -231,7 +238,8 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
231
238
 
232
239
  const autoDialer = this.configureComponent(new AutoDialer(this.components, {
233
240
  enabled: init.connectionManager.autoDial !== false,
234
- minConnections: init.connectionManager.minConnections ?? Infinity
241
+ minConnections: init.connectionManager.minConnections,
242
+ dialTimeout: init.connectionManager.dialTimeout ?? 30000
235
243
  }))
236
244
 
237
245
  this.addEventListener('peer:discovery', evt => {
@@ -379,24 +387,41 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
379
387
  }
380
388
 
381
389
  getConnections (peerId?: PeerId): Connection[] {
382
- if (peerId == null) {
383
- return this.components.getConnectionManager().getConnectionList()
384
- }
385
-
386
390
  return this.components.getConnectionManager().getConnections(peerId)
387
391
  }
388
392
 
389
393
  getPeers (): PeerId[] {
390
- return this.components.getConnectionManager().getConnectionList()
391
- .map(conn => conn.remotePeer)
394
+ const peerSet = new PeerSet()
395
+
396
+ for (const conn of this.components.getConnectionManager().getConnections()) {
397
+ peerSet.add(conn.remotePeer)
398
+ }
399
+
400
+ return Array.from(peerSet)
392
401
  }
393
402
 
394
403
  async dial (peer: PeerId | Multiaddr, options: AbortOptions = {}): Promise<Connection> {
395
- return await this.components.getDialer().dial(peer, options)
404
+ const { id, multiaddrs } = getPeer(peer)
405
+
406
+ await this.components.getPeerStore().addressBook.add(id, multiaddrs)
407
+
408
+ return await this.components.getConnectionManager().openConnection(id, options)
396
409
  }
397
410
 
398
411
  async dialProtocol (peer: PeerId | Multiaddr, protocols: string | string[], options: AbortOptions = {}) {
399
- return await this.components.getDialer().dialProtocol(peer, protocols, options)
412
+ if (protocols == null) {
413
+ throw errCode(new Error('no protocols were provided to open a stream'), codes.ERR_INVALID_PROTOCOLS_FOR_STREAM)
414
+ }
415
+
416
+ protocols = Array.isArray(protocols) ? protocols : [protocols]
417
+
418
+ if (protocols.length === 0) {
419
+ throw errCode(new Error('no protocols were provided to open a stream'), codes.ERR_INVALID_PROTOCOLS_FOR_STREAM)
420
+ }
421
+
422
+ const connection = await this.dial(peer)
423
+
424
+ return await connection.newStream(protocols)
400
425
  }
401
426
 
402
427
  getMultiaddrs (): Multiaddr[] {
@@ -406,13 +431,7 @@ export class Libp2pNode extends EventEmitter<Libp2pEvents> implements Libp2p {
406
431
  async hangUp (peer: PeerId | Multiaddr | string): Promise<void> {
407
432
  const { id } = getPeer(peer)
408
433
 
409
- const connections = this.components.getConnectionManager().getConnections(id)
410
-
411
- await Promise.all(
412
- connections.map(async connection => {
413
- return await connection.close()
414
- })
415
- )
434
+ await this.components.getConnectionManager().closeConnections(id)
416
435
  }
417
436
 
418
437
  /**
@@ -5,7 +5,7 @@ import { METRICS as defaultOptions } from '../constants.js'
5
5
  import { DefaultStats, StatsInit } from './stats.js'
6
6
  import type { ComponentMetricsUpdate, Metrics, Stats, TrackStreamOptions } from '@libp2p/interfaces/metrics'
7
7
  import type { PeerId } from '@libp2p/interfaces/peer-id'
8
- import type { Startable } from '@libp2p/interfaces'
8
+ import type { Startable } from '@libp2p/interfaces/startable'
9
9
  import type { Duplex } from 'it-stream-types'
10
10
 
11
11
  const initialCounters: ['dataReceived', 'dataSent'] = [
@@ -1,4 +1,4 @@
1
- import { CustomEvent, EventEmitter } from '@libp2p/interfaces'
1
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
2
2
  import { createMovingAverage } from './moving-average.js'
3
3
  // @ts-expect-error no types
4
4
  import retimer from 'retimer'
@@ -7,7 +7,7 @@ import * as pkg from './version.js'
7
7
  import errCode from 'err-code'
8
8
  import { codes } from './errors.js'
9
9
  import { isLoopback } from '@libp2p/utils/multiaddr/is-loopback'
10
- import type { Startable } from '@libp2p/interfaces'
10
+ import type { Startable } from '@libp2p/interfaces/startable'
11
11
  import type { Components } from '@libp2p/interfaces/components'
12
12
 
13
13
  const log = logger('libp2p:nat')
@@ -94,10 +94,14 @@ export class NatManager implements Startable {
94
94
  return this.started
95
95
  }
96
96
 
97
+ start () {}
98
+
97
99
  /**
98
- * Starts the NAT manager
100
+ * Attempt to use uPnP to configure port mapping using the current gateway.
101
+ *
102
+ * Run after start to ensure the transport manager has all addresses configured.
99
103
  */
100
- start () {
104
+ afterStart () {
101
105
  if (isBrowser || !this.enabled || this.started) {
102
106
  return
103
107
  }
@@ -105,7 +109,7 @@ export class NatManager implements Startable {
105
109
  this.started = true
106
110
 
107
111
  // done async to not slow down startup
108
- this._start().catch((err) => {
112
+ void this._start().catch((err) => {
109
113
  // hole punching errors are non-fatal
110
114
  log.error(err)
111
115
  })
@@ -1,6 +1,6 @@
1
1
  import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record'
2
2
  import type { Components } from '@libp2p/interfaces/components'
3
- import type { Startable } from '@libp2p/interfaces'
3
+ import type { Startable } from '@libp2p/interfaces/startable'
4
4
  import { logger } from '@libp2p/logger'
5
5
  import { protocols } from '@multiformats/multiaddr'
6
6
 
@@ -21,7 +21,8 @@ import {
21
21
  import { setMaxListeners } from 'events'
22
22
  import type { PeerId } from '@libp2p/interfaces/peer-id'
23
23
  import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
24
- import type { AbortOptions, Startable } from '@libp2p/interfaces'
24
+ import type { AbortOptions } from '@libp2p/interfaces'
25
+ import type { Startable } from '@libp2p/interfaces/startable'
25
26
  import type { PeerInfo } from '@libp2p/interfaces/peer-info'
26
27
  import type { Components } from '@libp2p/interfaces/components'
27
28
 
package/src/ping/index.ts CHANGED
@@ -8,7 +8,7 @@ import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
8
8
  import { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } from './constants.js'
9
9
  import type { IncomingStreamData } from '@libp2p/interfaces/registrar'
10
10
  import type { PeerId } from '@libp2p/interfaces/peer-id'
11
- import type { Startable } from '@libp2p/interfaces'
11
+ import type { Startable } from '@libp2p/interfaces/startable'
12
12
  import type { Components } from '@libp2p/interfaces/components'
13
13
 
14
14
  const log = logger('libp2p:ping')
@@ -63,7 +63,8 @@ export class PingService implements Startable {
63
63
  async ping (peer: PeerId): Promise<number> {
64
64
  log('dialing %s to %p', this.protocol, peer)
65
65
 
66
- const { stream } = await this.components.getDialer().dialProtocol(peer, this.protocol)
66
+ const connection = await this.components.getConnectionManager().openConnection(peer)
67
+ const { stream } = await connection.newStream([this.protocol])
67
68
  const start = Date.now()
68
69
  const data = randomBytes(PING_LENGTH)
69
70
 
package/src/pnet/index.ts CHANGED
@@ -17,6 +17,8 @@ import type { ConnectionProtector } from '@libp2p/interfaces/connection'
17
17
 
18
18
  const log = logger('libp2p:pnet')
19
19
 
20
+ export { generateKey } from './key-generator.js'
21
+
20
22
  export interface ProtectorInit {
21
23
  enabled?: boolean
22
24
  psk: Uint8Array
@@ -8,7 +8,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
8
8
  * @param {Uint8Array} bytes - An object to write the psk into
9
9
  * @returns {void}
10
10
  */
11
- export function generate (bytes: Uint8Array) {
11
+ export function generateKey (bytes: Uint8Array) {
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
 
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from '@libp2p/interfaces'
1
+ import { EventEmitter } from '@libp2p/interfaces/events'
2
2
  import type { PeerId } from '@libp2p/interfaces/peer-id'
3
3
  import type { PublishResult, PubSub, PubSubEvents, StrictNoSign, StrictSign } from '@libp2p/interfaces/pubsub'
4
4
  import errCode from 'err-code'
package/src/registrar.ts CHANGED
@@ -33,11 +33,11 @@ export class DefaultRegistrar implements Registrar {
33
33
  this.components = components
34
34
 
35
35
  this._onDisconnect = this._onDisconnect.bind(this)
36
- this._onConnect = this._onConnect.bind(this)
37
36
  this._onProtocolChange = this._onProtocolChange.bind(this)
38
37
 
39
38
  this.components.getConnectionManager().addEventListener('peer:disconnect', this._onDisconnect)
40
- this.components.getConnectionManager().addEventListener('peer:connect', this._onConnect)
39
+
40
+ // happens after identify
41
41
  this.components.getPeerStore().addEventListener('change:protocols', this._onProtocolChange)
42
42
  }
43
43
 
@@ -159,22 +159,6 @@ export class DefaultRegistrar implements Registrar {
159
159
  })
160
160
  }
161
161
 
162
- _onConnect (evt: CustomEvent<Connection>) {
163
- const connection = evt.detail
164
-
165
- void this.components.getPeerStore().protoBook.get(connection.remotePeer)
166
- .then(peerProtocols => {
167
- for (const { topology, protocols } of this.topologies.values()) {
168
- if (supportsProtocol(peerProtocols, protocols)) {
169
- topology.onConnect(connection.remotePeer, connection)
170
- }
171
- }
172
- })
173
- .catch(err => {
174
- log.error(err)
175
- })
176
- }
177
-
178
162
  /**
179
163
  * Check if a new peer support the multicodecs for this topology
180
164
  */
@@ -192,7 +176,7 @@ export class DefaultRegistrar implements Registrar {
192
176
 
193
177
  for (const { topology, protocols } of this.topologies.values()) {
194
178
  if (supportsProtocol(added, protocols)) {
195
- const connection = this.components.getConnectionManager().getConnection(peerId)
179
+ const connection = this.components.getConnectionManager().getConnections(peerId)[0]
196
180
 
197
181
  if (connection == null) {
198
182
  continue
@@ -5,7 +5,9 @@ import errCode from 'err-code'
5
5
  import type { Listener, Transport, TransportManager, TransportManagerEvents } from '@libp2p/interfaces/transport'
6
6
  import type { Multiaddr } from '@multiformats/multiaddr'
7
7
  import type { Connection } from '@libp2p/interfaces/connection'
8
- import { AbortOptions, CustomEvent, EventEmitter, Startable } from '@libp2p/interfaces'
8
+ import type { AbortOptions } from '@libp2p/interfaces'
9
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
10
+ import type { Startable } from '@libp2p/interfaces/startable'
9
11
  import type { Components } from '@libp2p/interfaces/components'
10
12
  import { trackedMap } from '@libp2p/tracked-map'
11
13
 
package/src/upgrader.ts CHANGED
@@ -6,7 +6,7 @@ import { pipe } from 'it-pipe'
6
6
  import mutableProxy from 'mutable-proxy'
7
7
  import { codes } from './errors.js'
8
8
  import { createConnection } from '@libp2p/connection'
9
- import { CustomEvent, EventEmitter } from '@libp2p/interfaces'
9
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
10
10
  import { peerIdFromString } from '@libp2p/peer-id'
11
11
  import type { Connection, ProtocolStream, Stream } from '@libp2p/interfaces/connection'
12
12
  import type { ConnectionEncrypter, SecuredConnection } from '@libp2p/interfaces/connection-encrypter'
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-dialer.d.ts","sourceRoot":"","sources":["../../../src/dialer/auto-dialer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE1B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc;IAMlD,MAAM,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;CAiB1C"}
@@ -1,24 +0,0 @@
1
- import { logger } from '@libp2p/logger';
2
- const log = logger('libp2p:dialer:auto-dialer');
3
- export class AutoDialer {
4
- constructor(components, init) {
5
- this.components = components;
6
- this.enabled = init.enabled;
7
- this.minConnections = init.minConnections;
8
- }
9
- handle(evt) {
10
- const { detail: peer } = evt;
11
- // If auto dialing is on and we have no connection to the peer, check if we should dial
12
- if (this.enabled && this.components.getConnectionManager().getConnection(peer.id) == null) {
13
- const minConnections = this.minConnections ?? 0;
14
- if (minConnections > this.components.getConnectionManager().getConnectionList().length) {
15
- log('auto-dialing discovered peer %p', peer.id);
16
- void this.components.getDialer().dial(peer.id)
17
- .catch(err => {
18
- log.error('could not connect to discovered peer %p with %o', peer.id, err);
19
- });
20
- }
21
- }
22
- }
23
- }
24
- //# sourceMappingURL=auto-dialer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-dialer.js","sourceRoot":"","sources":["../../../src/dialer/auto-dialer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGvC,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAO/C,MAAM,OAAO,UAAU;IAKrB,YAAa,UAAsB,EAAE,IAAoB;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAE,GAA0B;QACvC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAE5B,uFAAuF;QACvF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YACzF,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA;YAE/C,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE;gBACtF,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBAE/C,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC3C,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,GAAG,CAAC,KAAK,CAAC,iDAAiD,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBAC5E,CAAC,CAAC,CAAA;aACL;SACF;IACH,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dial-request.d.ts","sourceRoot":"","sources":["../../../src/dialer/dial-request.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,aAAa,CAAA;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;;;;OAMG;gBACU,OAAO,EAAE,kBAAkB;IAYlC,GAAG,CAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CA+D5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dial-request.js","sourceRoot":"","sources":["../../../src/dialer/dial-request.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialer/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAK5D,OAAO,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAUnE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,iBAAiB,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7B;AAED,qBAAa,aAAc,YAAW,MAAM,EAAE,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACjC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACtC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACzD,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,UAAU,EAAE,IAAI,GAAE,UAAe;IAwB1D,SAAS;IAIH,KAAK;IAIX;;OAEG;IACG,IAAI;IAkBV;;;;OAIG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAuDhF,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB;IAgBtG;;;;OAIG;IACG,4BAA4B,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBtE;;;;;OAKG;IACG,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuC3D;;OAEG;IACH,kBAAkB,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW;IA+CpF,SAAS,CAAE,GAAG,EAAE,MAAM;IAOtB,YAAY,CAAE,KAAK,EAAE,MAAM;IAU3B;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBpD;;OAEG;IACG,cAAc,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAU3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dialer/index.ts"],"names":[],"mappings":"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"}