libp2p 0.45.8 → 0.45.9-06f4901a

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 (173) hide show
  1. package/README.md +96 -77
  2. package/dist/index.min.js +28 -28
  3. package/dist/src/address-manager/index.d.ts +5 -5
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/autonat/index.d.ts +6 -6
  6. package/dist/src/autonat/index.d.ts.map +1 -1
  7. package/dist/src/autonat/index.js +3 -3
  8. package/dist/src/circuit-relay/index.d.ts +1 -1
  9. package/dist/src/circuit-relay/index.d.ts.map +1 -1
  10. package/dist/src/circuit-relay/server/advert-service.d.ts +3 -3
  11. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
  12. package/dist/src/circuit-relay/server/advert-service.js +1 -1
  13. package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
  14. package/dist/src/circuit-relay/server/index.d.ts +12 -7
  15. package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
  16. package/dist/src/circuit-relay/server/index.js +18 -10
  17. package/dist/src/circuit-relay/server/index.js.map +1 -1
  18. package/dist/src/circuit-relay/server/reservation-store.d.ts +3 -3
  19. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +1 -1
  20. package/dist/src/circuit-relay/server/reservation-voucher.d.ts +2 -2
  21. package/dist/src/circuit-relay/transport/discovery.d.ts +8 -8
  22. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
  23. package/dist/src/circuit-relay/transport/discovery.js +3 -4
  24. package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
  25. package/dist/src/circuit-relay/transport/index.d.ts +12 -12
  26. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
  27. package/dist/src/circuit-relay/transport/index.js +10 -9
  28. package/dist/src/circuit-relay/transport/index.js.map +1 -1
  29. package/dist/src/circuit-relay/transport/listener.d.ts +2 -2
  30. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
  31. package/dist/src/circuit-relay/transport/listener.js +3 -3
  32. package/dist/src/circuit-relay/transport/listener.js.map +1 -1
  33. package/dist/src/circuit-relay/transport/reservation-store.d.ts +7 -7
  34. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  35. package/dist/src/circuit-relay/transport/reservation-store.js +2 -2
  36. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
  37. package/dist/src/circuit-relay/utils.d.ts +1 -1
  38. package/dist/src/components.d.ts +15 -14
  39. package/dist/src/components.d.ts.map +1 -1
  40. package/dist/src/components.js +2 -2
  41. package/dist/src/components.js.map +1 -1
  42. package/dist/src/config/connection-gater.browser.d.ts +1 -1
  43. package/dist/src/config/connection-gater.d.ts +1 -1
  44. package/dist/src/config.d.ts +1 -2
  45. package/dist/src/config.d.ts.map +1 -1
  46. package/dist/src/config.js +2 -2
  47. package/dist/src/config.js.map +1 -1
  48. package/dist/src/connection/index.d.ts +4 -4
  49. package/dist/src/connection/index.d.ts.map +1 -1
  50. package/dist/src/connection/index.js +3 -3
  51. package/dist/src/connection/index.js.map +1 -1
  52. package/dist/src/connection-manager/auto-dial.d.ts +5 -5
  53. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  54. package/dist/src/connection-manager/connection-pruner.d.ts +4 -4
  55. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  56. package/dist/src/connection-manager/dial-queue.d.ts +7 -8
  57. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  58. package/dist/src/connection-manager/dial-queue.js +6 -6
  59. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  60. package/dist/src/connection-manager/index.d.ts +10 -11
  61. package/dist/src/connection-manager/index.d.ts.map +1 -1
  62. package/dist/src/connection-manager/index.js +6 -6
  63. package/dist/src/connection-manager/index.js.map +1 -1
  64. package/dist/src/content-routing/index.d.ts +5 -5
  65. package/dist/src/content-routing/index.d.ts.map +1 -1
  66. package/dist/src/content-routing/index.js +1 -1
  67. package/dist/src/content-routing/index.js.map +1 -1
  68. package/dist/src/content-routing/utils.d.ts +2 -2
  69. package/dist/src/content-routing/utils.js +1 -1
  70. package/dist/src/content-routing/utils.js.map +1 -1
  71. package/dist/src/fetch/index.d.ts +5 -5
  72. package/dist/src/fetch/index.d.ts.map +1 -1
  73. package/dist/src/fetch/index.js +1 -1
  74. package/dist/src/fetch/index.js.map +1 -1
  75. package/dist/src/get-peer.d.ts +1 -1
  76. package/dist/src/get-peer.js +2 -2
  77. package/dist/src/get-peer.js.map +1 -1
  78. package/dist/src/identify/identify.d.ts +7 -7
  79. package/dist/src/identify/identify.d.ts.map +1 -1
  80. package/dist/src/identify/identify.js +13 -9
  81. package/dist/src/identify/identify.js.map +1 -1
  82. package/dist/src/identify/index.d.ts +24 -9
  83. package/dist/src/identify/index.d.ts.map +1 -1
  84. package/dist/src/identify/index.js.map +1 -1
  85. package/dist/src/index.d.ts +11 -12
  86. package/dist/src/index.d.ts.map +1 -1
  87. package/dist/src/index.js.map +1 -1
  88. package/dist/src/insecure/index.d.ts +1 -1
  89. package/dist/src/insecure/index.js +1 -1
  90. package/dist/src/insecure/index.js.map +1 -1
  91. package/dist/src/libp2p.d.ts +11 -11
  92. package/dist/src/libp2p.d.ts.map +1 -1
  93. package/dist/src/libp2p.js +5 -5
  94. package/dist/src/libp2p.js.map +1 -1
  95. package/dist/src/peer-routing.d.ts +5 -5
  96. package/dist/src/peer-routing.d.ts.map +1 -1
  97. package/dist/src/peer-routing.js +1 -1
  98. package/dist/src/peer-routing.js.map +1 -1
  99. package/dist/src/ping/index.d.ts +4 -4
  100. package/dist/src/ping/index.d.ts.map +1 -1
  101. package/dist/src/ping/index.js +1 -1
  102. package/dist/src/ping/index.js.map +1 -1
  103. package/dist/src/pnet/index.d.ts +1 -1
  104. package/dist/src/pnet/index.js +1 -1
  105. package/dist/src/pnet/index.js.map +1 -1
  106. package/dist/src/registrar.d.ts +7 -6
  107. package/dist/src/registrar.d.ts.map +1 -1
  108. package/dist/src/registrar.js +7 -11
  109. package/dist/src/registrar.js.map +1 -1
  110. package/dist/src/transport-manager.d.ts +9 -9
  111. package/dist/src/transport-manager.d.ts.map +1 -1
  112. package/dist/src/transport-manager.js +4 -4
  113. package/dist/src/transport-manager.js.map +1 -1
  114. package/dist/src/upgrader.d.ts +12 -12
  115. package/dist/src/upgrader.d.ts.map +1 -1
  116. package/dist/src/upgrader.js +8 -6
  117. package/dist/src/upgrader.js.map +1 -1
  118. package/dist/src/upnp-nat/index.d.ts +4 -4
  119. package/dist/src/upnp-nat/index.d.ts.map +1 -1
  120. package/dist/src/upnp-nat/index.js +1 -1
  121. package/dist/src/upnp-nat/index.js.map +1 -1
  122. package/dist/src/utils/peer-job-queue.d.ts +1 -1
  123. package/dist/src/utils/peer-job-queue.js +1 -1
  124. package/dist/src/utils/peer-job-queue.js.map +1 -1
  125. package/dist/src/version.d.ts +1 -1
  126. package/dist/src/version.d.ts.map +1 -1
  127. package/dist/src/version.js +1 -1
  128. package/dist/src/version.js.map +1 -1
  129. package/package.json +45 -74
  130. package/src/address-manager/index.ts +5 -5
  131. package/src/autonat/index.ts +12 -12
  132. package/src/circuit-relay/index.ts +1 -1
  133. package/src/circuit-relay/server/advert-service.ts +3 -3
  134. package/src/circuit-relay/server/index.ts +33 -18
  135. package/src/circuit-relay/server/reservation-store.ts +3 -3
  136. package/src/circuit-relay/server/reservation-voucher.ts +2 -2
  137. package/src/circuit-relay/transport/discovery.ts +10 -11
  138. package/src/circuit-relay/transport/index.ts +22 -22
  139. package/src/circuit-relay/transport/listener.ts +7 -7
  140. package/src/circuit-relay/transport/reservation-store.ts +9 -9
  141. package/src/circuit-relay/utils.ts +1 -1
  142. package/src/components.ts +16 -15
  143. package/src/config/connection-gater.browser.ts +1 -1
  144. package/src/config/connection-gater.ts +1 -1
  145. package/src/config.ts +3 -4
  146. package/src/connection/index.ts +6 -6
  147. package/src/connection-manager/auto-dial.ts +5 -5
  148. package/src/connection-manager/connection-pruner.ts +4 -4
  149. package/src/connection-manager/dial-queue.ts +13 -14
  150. package/src/connection-manager/index.ts +16 -17
  151. package/src/content-routing/index.ts +6 -6
  152. package/src/content-routing/utils.ts +3 -3
  153. package/src/fetch/index.ts +7 -7
  154. package/src/get-peer.ts +3 -3
  155. package/src/identify/identify.ts +26 -22
  156. package/src/identify/index.ts +27 -8
  157. package/src/index.ts +11 -12
  158. package/src/insecure/index.ts +3 -3
  159. package/src/libp2p.ts +14 -14
  160. package/src/peer-routing.ts +6 -6
  161. package/src/ping/index.ts +7 -7
  162. package/src/pnet/index.ts +2 -2
  163. package/src/registrar.ts +14 -17
  164. package/src/transport-manager.ts +12 -12
  165. package/src/upgrader.ts +22 -20
  166. package/src/upnp-nat/index.ts +5 -5
  167. package/src/utils/peer-job-queue.ts +2 -2
  168. package/src/version.ts +1 -1
  169. package/dist/src/pubsub/dummy-pubsub.d.ts +0 -18
  170. package/dist/src/pubsub/dummy-pubsub.d.ts.map +0 -1
  171. package/dist/src/pubsub/dummy-pubsub.js +0 -38
  172. package/dist/src/pubsub/dummy-pubsub.js.map +0 -1
  173. package/src/pubsub/dummy-pubsub.ts +0 -53
@@ -1,11 +1,12 @@
1
1
  import { setMaxListeners } from 'events'
2
- import { EventEmitter } from '@libp2p/interfaces/events'
2
+ import { EventEmitter } from '@libp2p/interface/events'
3
3
  import { logger } from '@libp2p/logger'
4
4
  import { peerIdFromBytes } from '@libp2p/peer-id'
5
5
  import { RecordEnvelope } from '@libp2p/peer-record'
6
6
  import { type Multiaddr, multiaddr } from '@multiformats/multiaddr'
7
7
  import { pbStream, type ProtobufStream } from 'it-pb-stream'
8
8
  import pDefer from 'p-defer'
9
+ import { MAX_CONNECTIONS } from '../../connection-manager/constants.js'
9
10
  import {
10
11
  CIRCUIT_PROTO_CODE,
11
12
  DEFAULT_HOP_TIMEOUT,
@@ -18,14 +19,14 @@ import { AdvertService, type AdvertServiceComponents, type AdvertServiceInit } f
18
19
  import { ReservationStore, type ReservationStoreInit } from './reservation-store.js'
19
20
  import { ReservationVoucherRecord } from './reservation-voucher.js'
20
21
  import type { CircuitRelayService, RelayReservation } from '../index.js'
21
- import type { AddressManager } from '@libp2p/interface-address-manager'
22
- import type { Connection, Stream } from '@libp2p/interface-connection'
23
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
24
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
25
- import type { PeerId } from '@libp2p/interface-peer-id'
26
- import type { PeerStore } from '@libp2p/interface-peer-store'
27
- import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar'
28
- import type { Startable } from '@libp2p/interfaces/startable'
22
+ import type { Connection, Stream } from '@libp2p/interface/connection'
23
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
24
+ import type { PeerId } from '@libp2p/interface/peer-id'
25
+ import type { PeerStore } from '@libp2p/interface/peer-store'
26
+ import type { Startable } from '@libp2p/interface/startable'
27
+ import type { AddressManager } from '@libp2p/interface-internal/address-manager'
28
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
29
+ import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
29
30
  import type { PeerMap } from '@libp2p/peer-collections'
30
31
 
31
32
  const log = logger('libp2p:circuit-relay:server')
@@ -59,6 +60,12 @@ export interface CircuitRelayServerInit {
59
60
  * The maximum number of simultaneous HOP outbound streams that can be open at once
60
61
  */
61
62
  maxOutboundHopStreams?: number
63
+
64
+ /**
65
+ * The maximum number of simultaneous STOP outbound streams that can be open at
66
+ * once. (default: 300)
67
+ */
68
+ maxOutboundStopStreams?: number
62
69
  }
63
70
 
64
71
  export interface HopProtocolOptions {
@@ -87,6 +94,10 @@ export interface RelayServerEvents {
87
94
  'relay:advert:error': CustomEvent<Error>
88
95
  }
89
96
 
97
+ const defaults = {
98
+ maxOutboundStopStreams: MAX_CONNECTIONS
99
+ }
100
+
90
101
  class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Startable, CircuitRelayService {
91
102
  private readonly registrar: Registrar
92
103
  private readonly peerStore: PeerStore
@@ -101,6 +112,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
101
112
  private readonly shutdownController: AbortController
102
113
  private readonly maxInboundHopStreams?: number
103
114
  private readonly maxOutboundHopStreams?: number
115
+ private readonly maxOutboundStopStreams: number
104
116
 
105
117
  /**
106
118
  * Creates an instance of Relay
@@ -119,6 +131,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
119
131
  this.shutdownController = new AbortController()
120
132
  this.maxInboundHopStreams = init.maxInboundHopStreams
121
133
  this.maxOutboundHopStreams = init.maxOutboundHopStreams
134
+ this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams
122
135
 
123
136
  try {
124
137
  // fails on node < 15.4
@@ -180,7 +193,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
180
193
  }
181
194
 
182
195
  async onHop ({ connection, stream }: IncomingStreamData): Promise<void> {
183
- log('received circuit v2 hop protocol stream from %s', connection.remotePeer)
196
+ log('received circuit v2 hop protocol stream from %p', connection.remotePeer)
184
197
 
185
198
  const hopTimeoutPromise = pDefer<HopMessage>()
186
199
  const timeout = setTimeout(() => {
@@ -226,7 +239,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
226
239
  case HopMessage.Type.RESERVE: await this.handleReserve({ stream, request, connection }); break
227
240
  case HopMessage.Type.CONNECT: await this.handleConnect({ stream, request, connection }); break
228
241
  default: {
229
- log.error('invalid hop request type %s via peer %s', request.type, connection.remotePeer)
242
+ log.error('invalid hop request type %s via peer %p', request.type, connection.remotePeer)
230
243
  stream.pb(HopMessage).write({ type: HopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE })
231
244
  }
232
245
  }
@@ -234,7 +247,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
234
247
 
235
248
  async handleReserve ({ stream, request, connection }: HopProtocolOptions): Promise<void> {
236
249
  const hopstr = stream.pb(HopMessage)
237
- log('hop reserve request from %s', connection.remotePeer)
250
+ log('hop reserve request from %p', connection.remotePeer)
238
251
 
239
252
  if (isRelayAddr(connection.remoteAddr)) {
240
253
  log.error('relay reservation over circuit connection denied for peer: %p', connection.remotePeer)
@@ -316,7 +329,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
316
329
  return
317
330
  }
318
331
 
319
- log('hop connect request from %s', connection.remotePeer)
332
+ log('hop connect request from %p', connection.remotePeer)
320
333
 
321
334
  let dstPeer: PeerId
322
335
 
@@ -368,7 +381,7 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
368
381
  })
369
382
 
370
383
  if (destinationStream == null) {
371
- log.error('failed to open stream to destination peer %s', destinationConnection?.remotePeer)
384
+ log.error('failed to open stream to destination peer %p', destinationConnection?.remotePeer)
372
385
  hopstr.write({ type: HopMessage.Type.STATUS, status: Status.CONNECTION_FAILED })
373
386
  return
374
387
  }
@@ -390,7 +403,9 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
390
403
  request
391
404
  }: StopOptions): Promise<Stream | undefined> {
392
405
  log('starting circuit relay v2 stop request to %s', connection.remotePeer)
393
- const stream = await connection.newStream([RELAY_V2_STOP_CODEC])
406
+ const stream = await connection.newStream([RELAY_V2_STOP_CODEC], {
407
+ maxOutboundStreams: this.maxOutboundStopStreams
408
+ })
394
409
  const pbstr = pbStream(stream)
395
410
  const stopstr = pbstr.pb(StopMessage)
396
411
  stopstr.write(request)
@@ -399,17 +414,17 @@ class CircuitRelayServer extends EventEmitter<RelayServerEvents> implements Star
399
414
  try {
400
415
  response = await stopstr.read()
401
416
  } catch (err) {
402
- log.error('error parsing stop message response from %s', connection.remotePeer)
417
+ log.error('error parsing stop message response from %p', connection.remotePeer)
403
418
  }
404
419
 
405
420
  if (response == null) {
406
- log.error('could not read response from %s', connection.remotePeer)
421
+ log.error('could not read response from %p', connection.remotePeer)
407
422
  stream.close()
408
423
  return
409
424
  }
410
425
 
411
426
  if (response.status === Status.OK) {
412
- log('stop request to %s was successful', connection.remotePeer)
427
+ log('stop request to %p was successful', connection.remotePeer)
413
428
  return pbstr.unwrap()
414
429
  }
415
430
 
@@ -2,9 +2,9 @@ import { PeerMap } from '@libp2p/peer-collections'
2
2
  import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT, DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL, DEFAULT_MAX_RESERVATION_STORE_SIZE, DEFAULT_MAX_RESERVATION_TTL } from '../constants.js'
3
3
  import { type Limit, Status } from '../pb/index.js'
4
4
  import type { RelayReservation } from '../index.js'
5
- import type { PeerId } from '@libp2p/interface-peer-id'
6
- import type { RecursivePartial } from '@libp2p/interfaces'
7
- import type { Startable } from '@libp2p/interfaces/startable'
5
+ import type { RecursivePartial } from '@libp2p/interface'
6
+ import type { PeerId } from '@libp2p/interface/peer-id'
7
+ import type { Startable } from '@libp2p/interface/startable'
8
8
  import type { Multiaddr } from '@multiformats/multiaddr'
9
9
 
10
10
  export type ReservationStatus = Status.OK | Status.PERMISSION_DENIED | Status.RESERVATION_REFUSED
@@ -1,6 +1,6 @@
1
1
  import { ReservationVoucher } from '../pb/index.js'
2
- import type { PeerId } from '@libp2p/interface-peer-id'
3
- import type { Record } from '@libp2p/interface-record'
2
+ import type { PeerId } from '@libp2p/interface/peer-id'
3
+ import type { Record } from '@libp2p/interface/record'
4
4
 
5
5
  export interface ReservationVoucherOptions {
6
6
  relay: PeerId
@@ -1,18 +1,17 @@
1
- import { EventEmitter } from '@libp2p/interfaces/events'
1
+ import { EventEmitter } from '@libp2p/interface/events'
2
2
  import { logger } from '@libp2p/logger'
3
- import { createTopology } from '@libp2p/topology'
4
3
  import {
5
4
  RELAY_RENDEZVOUS_NS,
6
5
  RELAY_V2_HOP_CODEC
7
6
  } from '../constants.js'
8
7
  import { namespaceToCid } from '../utils.js'
9
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
10
- import type { ContentRouting } from '@libp2p/interface-content-routing'
11
- import type { PeerId } from '@libp2p/interface-peer-id'
12
- import type { PeerStore } from '@libp2p/interface-peer-store'
13
- import type { Registrar } from '@libp2p/interface-registrar'
14
- import type { TransportManager } from '@libp2p/interface-transport'
15
- import type { Startable } from '@libp2p/interfaces/startable'
8
+ import type { ContentRouting } from '@libp2p/interface/content-routing'
9
+ import type { PeerId } from '@libp2p/interface/peer-id'
10
+ import type { PeerStore } from '@libp2p/interface/peer-store'
11
+ import type { Startable } from '@libp2p/interface/startable'
12
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
13
+ import type { Registrar } from '@libp2p/interface-internal/registrar'
14
+ import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
16
15
 
17
16
  const log = logger('libp2p:circuit-relay:discover-relays')
18
17
 
@@ -57,11 +56,11 @@ export class RelayDiscovery extends EventEmitter<RelayDiscoveryEvents> implement
57
56
  async start (): Promise<void> {
58
57
  // register a topology listener for when new peers are encountered
59
58
  // that support the hop protocol
60
- this.topologyId = await this.registrar.register(RELAY_V2_HOP_CODEC, createTopology({
59
+ this.topologyId = await this.registrar.register(RELAY_V2_HOP_CODEC, {
61
60
  onConnect: (peerId) => {
62
61
  this.safeDispatchEvent('relay:discover', { detail: peerId })
63
62
  }
64
- }))
63
+ })
65
64
 
66
65
  void this.discover()
67
66
  .catch(err => {
@@ -1,5 +1,5 @@
1
- import { symbol, type Upgrader, type Listener, type Transport, type CreateListenerOptions } from '@libp2p/interface-transport'
2
- import { CodeError } from '@libp2p/interfaces/errors'
1
+ import { CodeError } from '@libp2p/interface/errors'
2
+ import { symbol, type Transport, type CreateListenerOptions, type Listener, type Upgrader } from '@libp2p/interface/transport'
3
3
  import { logger } from '@libp2p/logger'
4
4
  import { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id'
5
5
  import { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn'
@@ -13,17 +13,16 @@ import { StopMessage, HopMessage, Status } from '../pb/index.js'
13
13
  import { RelayDiscovery, type RelayDiscoveryComponents } from './discovery.js'
14
14
  import { createListener } from './listener.js'
15
15
  import { type RelayStoreInit, ReservationStore } from './reservation-store.js'
16
- import type { AddressManager } from '@libp2p/interface-address-manager'
17
- import type { Connection, Stream } from '@libp2p/interface-connection'
18
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
19
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
20
- import type { ContentRouting } from '@libp2p/interface-content-routing'
21
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
22
- import type { PeerId } from '@libp2p/interface-peer-id'
23
- import type { PeerStore } from '@libp2p/interface-peer-store'
24
- import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar'
25
- import type { AbortOptions } from '@libp2p/interfaces'
26
- import type { EventEmitter } from '@libp2p/interfaces/events'
16
+ import type { Libp2pEvents, AbortOptions } from '@libp2p/interface'
17
+ import type { Connection, Stream } from '@libp2p/interface/connection'
18
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
19
+ import type { ContentRouting } from '@libp2p/interface/content-routing'
20
+ import type { EventEmitter } from '@libp2p/interface/events'
21
+ import type { PeerId } from '@libp2p/interface/peer-id'
22
+ import type { PeerStore } from '@libp2p/interface/peer-store'
23
+ import type { AddressManager } from '@libp2p/interface-internal/address-manager'
24
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
25
+ import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
27
26
  import type { Multiaddr } from '@multiformats/multiaddr'
28
27
 
29
28
  const log = logger('libp2p:circuit-relay:transport')
@@ -82,14 +81,15 @@ export interface CircuitRelayTransportInit extends RelayStoreInit {
82
81
 
83
82
  /**
84
83
  * The maximum number of simultaneous STOP outbound streams that can be open at
85
- * once. STOP streams are opened by the relay server so this setting is
86
- * effectively ignored. (default: 32)
84
+ * once. If this transport is used along with the relay server these settings
85
+ * should be set to the same value (default: 300)
87
86
  */
88
87
  maxOutboundStopStreams?: number
89
88
  }
90
89
 
91
90
  const defaults = {
92
- maxInboundStopStreams: MAX_CONNECTIONS
91
+ maxInboundStopStreams: MAX_CONNECTIONS,
92
+ maxOutboundStopStreams: MAX_CONNECTIONS
93
93
  }
94
94
 
95
95
  class CircuitRelayTransport implements Transport {
@@ -115,7 +115,7 @@ class CircuitRelayTransport implements Transport {
115
115
  this.addressManager = components.addressManager
116
116
  this.connectionGater = components.connectionGater
117
117
  this.maxInboundStopStreams = init.maxInboundStopStreams ?? defaults.maxInboundStopStreams
118
- this.maxOutboundStopStreams = init.maxOutboundStopStreams
118
+ this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams
119
119
 
120
120
  if (init.discoverRelays != null && init.discoverRelays > 0) {
121
121
  this.discovery = new RelayDiscovery(components)
@@ -266,7 +266,7 @@ class CircuitRelayTransport implements Transport {
266
266
  localAddr: relayAddr.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`)
267
267
  })
268
268
 
269
- log('new outbound connection %s', maConn.remoteAddr)
269
+ log('new outbound connection %a', maConn.remoteAddr)
270
270
  return await this.upgrader.upgradeOutbound(maConn)
271
271
  } catch (err) {
272
272
  log.error(`Circuit relay dial to destination ${destinationPeer.toString()} via relay ${connection.remotePeer.toString()} failed`, err)
@@ -312,17 +312,17 @@ class CircuitRelayTransport implements Transport {
312
312
  }
313
313
 
314
314
  const stopstr = pbstr.pb(StopMessage)
315
- log('new circuit relay v2 stop stream from %s', connection.remotePeer)
315
+ log('new circuit relay v2 stop stream from %p', connection.remotePeer)
316
316
 
317
317
  // Validate the STOP request has the required input
318
318
  if (request.type !== StopMessage.Type.CONNECT) {
319
- log.error('invalid stop connect request via peer %s', connection.remotePeer)
319
+ log.error('invalid stop connect request via peer %p', connection.remotePeer)
320
320
  stopstr.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE })
321
321
  return
322
322
  }
323
323
 
324
324
  if (!isValidStop(request)) {
325
- log.error('invalid stop connect request via peer %s', connection.remotePeer)
325
+ log.error('invalid stop connect request via peer %p', connection.remotePeer)
326
326
  stopstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE })
327
327
  return
328
328
  }
@@ -346,7 +346,7 @@ class CircuitRelayTransport implements Transport {
346
346
 
347
347
  log('new inbound connection %s', maConn.remoteAddr)
348
348
  await this.upgrader.upgradeInbound(maConn)
349
- log('%s connection %s upgraded', 'inbound', maConn.remoteAddr)
349
+ log('%s connection %a upgraded', 'inbound', maConn.remoteAddr)
350
350
  }
351
351
  }
352
352
 
@@ -1,14 +1,14 @@
1
- import { CodeError } from '@libp2p/interfaces/errors'
2
- import { EventEmitter } from '@libp2p/interfaces/events'
1
+ import { CodeError } from '@libp2p/interface/errors'
2
+ import { EventEmitter } from '@libp2p/interface/events'
3
3
  import { logger } from '@libp2p/logger'
4
4
  import { PeerMap } from '@libp2p/peer-collections'
5
5
  import { peerIdFromString } from '@libp2p/peer-id'
6
6
  import { multiaddr } from '@multiformats/multiaddr'
7
7
  import type { ReservationStore } from './reservation-store.js'
8
- import type { Connection } from '@libp2p/interface-connection'
9
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
10
- import type { PeerId } from '@libp2p/interface-peer-id'
11
- import type { Listener, ListenerEvents } from '@libp2p/interface-transport'
8
+ import type { Connection } from '@libp2p/interface/connection'
9
+ import type { PeerId } from '@libp2p/interface/peer-id'
10
+ import type { Listener, ListenerEvents } from '@libp2p/interface/transport'
11
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
12
12
  import type { Multiaddr } from '@multiformats/multiaddr'
13
13
 
14
14
  const log = logger('libp2p:circuit-relay:transport:listener')
@@ -37,7 +37,7 @@ class CircuitRelayTransportListener extends EventEmitter<ListenerEvents> impleme
37
37
  }
38
38
 
39
39
  async listen (addr: Multiaddr): Promise<void> {
40
- log('listen on %s', addr)
40
+ log('listen on %a', addr)
41
41
 
42
42
  const relayPeerStr = addr.getPeerId()
43
43
  let relayConn: Connection | undefined
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from '@libp2p/interfaces/events'
1
+ import { EventEmitter } from '@libp2p/interface/events'
2
2
  import { logger } from '@libp2p/logger'
3
3
  import { PeerMap } from '@libp2p/peer-collections'
4
4
  import { multiaddr } from '@multiformats/multiaddr'
@@ -8,13 +8,13 @@ import { DEFAULT_RESERVATION_CONCURRENCY, RELAY_TAG, RELAY_V2_HOP_CODEC } from '
8
8
  import { HopMessage, Status } from '../pb/index.js'
9
9
  import { getExpirationMilliseconds } from '../utils.js'
10
10
  import type { Reservation } from '../pb/index.js'
11
- import type { Connection } from '@libp2p/interface-connection'
12
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
13
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
14
- import type { PeerId } from '@libp2p/interface-peer-id'
15
- import type { PeerStore } from '@libp2p/interface-peer-store'
16
- import type { TransportManager } from '@libp2p/interface-transport'
17
- import type { Startable } from '@libp2p/interfaces/startable'
11
+ import type { Libp2pEvents } from '@libp2p/interface'
12
+ import type { Connection } from '@libp2p/interface/connection'
13
+ import type { PeerId } from '@libp2p/interface/peer-id'
14
+ import type { PeerStore } from '@libp2p/interface/peer-store'
15
+ import type { Startable } from '@libp2p/interface/startable'
16
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
17
+ import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
18
18
 
19
19
  const log = logger('libp2p:circuit-relay:transport:reservation-store')
20
20
 
@@ -237,7 +237,7 @@ export class ReservationStore extends EventEmitter<ReservationStoreEvents> imple
237
237
  }
238
238
 
239
239
  async #createReservation (connection: Connection): Promise<Reservation> {
240
- log('requesting reservation from %s', connection.remotePeer)
240
+ log('requesting reservation from %p', connection.remotePeer)
241
241
  const stream = await connection.newStream(RELAY_V2_HOP_CODEC)
242
242
  const pbstr = pbStream(stream)
243
243
  const hopstr = pbstr.pb(HopMessage)
@@ -5,7 +5,7 @@ import { CID } from 'multiformats/cid'
5
5
  import { sha256 } from 'multiformats/hashes/sha2'
6
6
  import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT } from './constants.js'
7
7
  import type { Limit } from './pb/index.js'
8
- import type { Stream } from '@libp2p/interface-connection'
8
+ import type { Stream } from '@libp2p/interface/connection'
9
9
  import type { Source } from 'it-stream-types'
10
10
  import type { Uint8ArrayList } from 'uint8arraylist'
11
11
 
package/src/components.ts CHANGED
@@ -1,18 +1,19 @@
1
- import { CodeError } from '@libp2p/interfaces/errors'
2
- import { isStartable, type Startable } from '@libp2p/interfaces/startable'
3
- import type { AddressManager } from '@libp2p/interface-address-manager'
4
- import type { ConnectionProtector } from '@libp2p/interface-connection'
5
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
6
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
7
- import type { ContentRouting } from '@libp2p/interface-content-routing'
8
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
9
- import type { Metrics } from '@libp2p/interface-metrics'
10
- import type { PeerId } from '@libp2p/interface-peer-id'
11
- import type { PeerRouting } from '@libp2p/interface-peer-routing'
12
- import type { PeerStore } from '@libp2p/interface-peer-store'
13
- import type { Registrar } from '@libp2p/interface-registrar'
14
- import type { TransportManager, Upgrader } from '@libp2p/interface-transport'
15
- import type { EventEmitter } from '@libp2p/interfaces/events'
1
+ import { CodeError } from '@libp2p/interface/errors'
2
+ import { isStartable, type Startable } from '@libp2p/interface/startable'
3
+ import type { Libp2pEvents } from '@libp2p/interface'
4
+ import type { ConnectionProtector } from '@libp2p/interface/connection'
5
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
6
+ import type { ContentRouting } from '@libp2p/interface/content-routing'
7
+ import type { EventEmitter } from '@libp2p/interface/events'
8
+ import type { Metrics } from '@libp2p/interface/metrics'
9
+ import type { PeerId } from '@libp2p/interface/peer-id'
10
+ import type { PeerRouting } from '@libp2p/interface/peer-routing'
11
+ import type { PeerStore } from '@libp2p/interface/peer-store'
12
+ import type { Upgrader } from '@libp2p/interface/transport'
13
+ import type { AddressManager } from '@libp2p/interface-internal/address-manager'
14
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
15
+ import type { Registrar } from '@libp2p/interface-internal/registrar'
16
+ import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
16
17
  import type { Datastore } from 'interface-datastore'
17
18
 
18
19
  export interface Components extends Record<string, any>, Startable {
@@ -1,5 +1,5 @@
1
1
  import isPrivate from 'private-ip'
2
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
2
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
3
3
  import type { Multiaddr } from '@multiformats/multiaddr'
4
4
 
5
5
  /**
@@ -1,4 +1,4 @@
1
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
1
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
2
2
 
3
3
  /**
4
4
  * Returns a default connection gater implementation that allows everything
package/src/config.ts CHANGED
@@ -1,12 +1,11 @@
1
- import { FaultTolerance } from '@libp2p/interface-transport'
2
- import { CodeError } from '@libp2p/interfaces/errors'
1
+ import { CodeError } from '@libp2p/interface/errors'
2
+ import { FaultTolerance } from '@libp2p/interface/transport'
3
3
  import { publicAddressesFirst } from '@libp2p/utils/address-sort'
4
4
  import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
5
5
  import mergeOptions from 'merge-options'
6
6
  import { codes, messages } from './errors.js'
7
7
  import type { Libp2pInit } from './index.js'
8
- import type { ServiceMap } from '@libp2p/interface-libp2p'
9
- import type { RecursivePartial } from '@libp2p/interfaces'
8
+ import type { ServiceMap, RecursivePartial } from '@libp2p/interface'
10
9
  import type { Multiaddr } from '@multiformats/multiaddr'
11
10
 
12
11
  const DefaultConfig: Partial<Libp2pInit> = {
@@ -1,10 +1,10 @@
1
- import { symbol } from '@libp2p/interface-connection'
2
- import { OPEN, CLOSING, CLOSED } from '@libp2p/interface-connection/status'
3
- import { CodeError } from '@libp2p/interfaces/errors'
1
+ import { symbol } from '@libp2p/interface/connection'
2
+ import { OPEN, CLOSING, CLOSED } from '@libp2p/interface/connection/status'
3
+ import { CodeError } from '@libp2p/interface/errors'
4
4
  import { logger } from '@libp2p/logger'
5
- import type { Connection, ConnectionStat, Stream } from '@libp2p/interface-connection'
6
- import type { PeerId } from '@libp2p/interface-peer-id'
7
- import type { AbortOptions } from '@libp2p/interfaces'
5
+ import type { AbortOptions } from '@libp2p/interface'
6
+ import type { Connection, ConnectionStat, Stream } from '@libp2p/interface/connection'
7
+ import type { PeerId } from '@libp2p/interface/peer-id'
8
8
  import type { Multiaddr } from '@multiformats/multiaddr'
9
9
 
10
10
  const log = logger('libp2p:connection')
@@ -2,11 +2,11 @@ import { logger } from '@libp2p/logger'
2
2
  import { PeerMap, PeerSet } from '@libp2p/peer-collections'
3
3
  import { PeerJobQueue } from '../utils/peer-job-queue.js'
4
4
  import { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_INTERVAL, AUTO_DIAL_MAX_QUEUE_LENGTH, AUTO_DIAL_PRIORITY, MIN_CONNECTIONS } from './constants.js'
5
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
6
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
7
- import type { PeerStore } from '@libp2p/interface-peer-store'
8
- import type { EventEmitter } from '@libp2p/interfaces/events'
9
- import type { Startable } from '@libp2p/interfaces/startable'
5
+ import type { Libp2pEvents } from '@libp2p/interface'
6
+ import type { EventEmitter } from '@libp2p/interface/events'
7
+ import type { PeerStore } from '@libp2p/interface/peer-store'
8
+ import type { Startable } from '@libp2p/interface/startable'
9
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
10
10
 
11
11
  const log = logger('libp2p:connection-manager:auto-dial')
12
12
 
@@ -1,10 +1,10 @@
1
1
  import { logger } from '@libp2p/logger'
2
2
  import { PeerMap } from '@libp2p/peer-collections'
3
3
  import { MAX_CONNECTIONS } from './constants.js'
4
- import type { ConnectionManager } from '@libp2p/interface-connection-manager'
5
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
6
- import type { PeerStore } from '@libp2p/interface-peer-store'
7
- import type { EventEmitter } from '@libp2p/interfaces/events'
4
+ import type { Libp2pEvents } from '@libp2p/interface'
5
+ import type { EventEmitter } from '@libp2p/interface/events'
6
+ import type { PeerStore } from '@libp2p/interface/peer-store'
7
+ import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
8
8
  import type { Multiaddr } from '@multiformats/multiaddr'
9
9
 
10
10
  const log = logger('libp2p:connection-manager:connection-pruner')
@@ -1,5 +1,5 @@
1
1
  import { setMaxListeners } from 'events'
2
- import { AbortError, CodeError } from '@libp2p/interfaces/errors'
2
+ import { AbortError, CodeError } from '@libp2p/interface/errors'
3
3
  import { logger } from '@libp2p/logger'
4
4
  import { publicAddressesFirst } from '@libp2p/utils/address-sort'
5
5
  import { type Multiaddr, type Resolver, resolvers } from '@multiformats/multiaddr'
@@ -16,14 +16,13 @@ import {
16
16
  MAX_PEER_ADDRS_TO_DIAL
17
17
  } from './constants.js'
18
18
  import { combineSignals, resolveMultiaddrs } from './utils.js'
19
- import type { Connection } from '@libp2p/interface-connection'
20
- import type { ConnectionGater } from '@libp2p/interface-connection-gater'
21
- import type { AddressSorter } from '@libp2p/interface-libp2p'
22
- import type { Metric, Metrics } from '@libp2p/interface-metrics'
23
- import type { PeerId } from '@libp2p/interface-peer-id'
24
- import type { Address, PeerStore } from '@libp2p/interface-peer-store'
25
- import type { TransportManager } from '@libp2p/interface-transport'
26
- import type { AbortOptions } from '@libp2p/interfaces'
19
+ import type { AddressSorter, AbortOptions } from '@libp2p/interface'
20
+ import type { Connection } from '@libp2p/interface/connection'
21
+ import type { ConnectionGater } from '@libp2p/interface/connection-gater'
22
+ import type { Metric, Metrics } from '@libp2p/interface/metrics'
23
+ import type { PeerId } from '@libp2p/interface/peer-id'
24
+ import type { Address, PeerStore } from '@libp2p/interface/peer-store'
25
+ import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
27
26
 
28
27
  const log = logger('libp2p:connection-manager:dial-queue')
29
28
 
@@ -419,13 +418,13 @@ export class DialQueue {
419
418
  // let any signal abort the dial
420
419
  const signal = combineSignals(controller.signal, options.signal)
421
420
  signal.addEventListener('abort', () => {
422
- log('dial to %s aborted', addr)
421
+ log('dial to %a aborted', addr)
423
422
  })
424
423
  const deferred = pDefer<Connection>()
425
424
 
426
425
  await peerDialQueue.add(async () => {
427
426
  if (signal.aborted) {
428
- log('dial to %s was aborted before reaching the head of the peer dial queue', addr)
427
+ log('dial to %a was aborted before reaching the head of the peer dial queue', addr)
429
428
  deferred.reject(new AbortError())
430
429
  return
431
430
  }
@@ -434,7 +433,7 @@ export class DialQueue {
434
433
  await this.queue.add(async () => {
435
434
  try {
436
435
  if (signal.aborted) {
437
- log('dial to %s was aborted before reaching the head of the dial queue', addr)
436
+ log('dial to %a was aborted before reaching the head of the dial queue', addr)
438
437
  deferred.reject(new AbortError())
439
438
  return
440
439
  }
@@ -469,13 +468,13 @@ export class DialQueue {
469
468
  }
470
469
  })
471
470
 
472
- log('dial to %s succeeded', addr)
471
+ log('dial to %a succeeded', addr)
473
472
 
474
473
  // resolve the connection promise
475
474
  deferred.resolve(conn)
476
475
  } catch (err: any) {
477
476
  // something only went wrong if our signal was not aborted
478
- log.error('error during dial of %s', addr, err)
477
+ log.error('error during dial of %a', addr, err)
479
478
  deferred.reject(err)
480
479
  }
481
480
  }, {