libp2p 0.46.20 → 0.46.21-0b4a2ee79

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 (278) hide show
  1. package/README.md +53 -40
  2. package/dist/index.min.js +40 -28
  3. package/dist/src/address-manager/index.d.ts +3 -1
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +3 -3
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/components.d.ts +3 -1
  8. package/dist/src/components.d.ts.map +1 -1
  9. package/dist/src/components.js.map +1 -1
  10. package/dist/src/connection/index.d.ts +2 -2
  11. package/dist/src/connection/index.d.ts.map +1 -1
  12. package/dist/src/connection/index.js +9 -9
  13. package/dist/src/connection/index.js.map +1 -1
  14. package/dist/src/connection-manager/auto-dial.d.ts +1 -1
  15. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  16. package/dist/src/connection-manager/auto-dial.js +21 -21
  17. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  18. package/dist/src/connection-manager/connection-pruner.d.ts +1 -1
  19. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  20. package/dist/src/connection-manager/connection-pruner.js +8 -8
  21. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  22. package/dist/src/connection-manager/constants.defaults.d.ts +0 -4
  23. package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
  24. package/dist/src/connection-manager/constants.defaults.js +0 -4
  25. package/dist/src/connection-manager/constants.defaults.js.map +1 -1
  26. package/dist/src/connection-manager/dial-queue.d.ts +1 -3
  27. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  28. package/dist/src/connection-manager/dial-queue.js +30 -37
  29. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  30. package/dist/src/connection-manager/index.d.ts +1 -8
  31. package/dist/src/connection-manager/index.d.ts.map +1 -1
  32. package/dist/src/connection-manager/index.js +16 -17
  33. package/dist/src/connection-manager/index.js.map +1 -1
  34. package/dist/src/content-routing/index.js +1 -1
  35. package/dist/src/content-routing/index.js.map +1 -1
  36. package/dist/src/errors.d.ts +0 -2
  37. package/dist/src/errors.d.ts.map +1 -1
  38. package/dist/src/errors.js +0 -2
  39. package/dist/src/errors.js.map +1 -1
  40. package/dist/src/get-peer.d.ts.map +1 -1
  41. package/dist/src/get-peer.js +0 -3
  42. package/dist/src/get-peer.js.map +1 -1
  43. package/dist/src/index.d.ts +5 -6
  44. package/dist/src/index.d.ts.map +1 -1
  45. package/dist/src/index.js.map +1 -1
  46. package/dist/src/libp2p.d.ts +1 -2
  47. package/dist/src/libp2p.d.ts.map +1 -1
  48. package/dist/src/libp2p.js +23 -54
  49. package/dist/src/libp2p.js.map +1 -1
  50. package/dist/src/peer-routing.d.ts +5 -1
  51. package/dist/src/peer-routing.d.ts.map +1 -1
  52. package/dist/src/peer-routing.js +11 -8
  53. package/dist/src/peer-routing.js.map +1 -1
  54. package/dist/src/registrar.d.ts +3 -0
  55. package/dist/src/registrar.d.ts.map +1 -1
  56. package/dist/src/registrar.js +3 -3
  57. package/dist/src/registrar.js.map +1 -1
  58. package/dist/src/transport-manager.d.ts +3 -1
  59. package/dist/src/transport-manager.d.ts.map +1 -1
  60. package/dist/src/transport-manager.js +10 -10
  61. package/dist/src/transport-manager.js.map +1 -1
  62. package/dist/src/upgrader.d.ts +2 -2
  63. package/dist/src/upgrader.d.ts.map +1 -1
  64. package/dist/src/upgrader.js +75 -37
  65. package/dist/src/upgrader.js.map +1 -1
  66. package/dist/src/version.d.ts +1 -1
  67. package/dist/src/version.d.ts.map +1 -1
  68. package/dist/src/version.js +1 -1
  69. package/dist/src/version.js.map +1 -1
  70. package/package.json +34 -106
  71. package/src/address-manager/index.ts +5 -5
  72. package/src/components.ts +3 -1
  73. package/src/connection/index.ts +9 -10
  74. package/src/connection-manager/auto-dial.ts +21 -21
  75. package/src/connection-manager/connection-pruner.ts +8 -8
  76. package/src/connection-manager/constants.defaults.ts +0 -5
  77. package/src/connection-manager/dial-queue.ts +29 -38
  78. package/src/connection-manager/index.ts +16 -25
  79. package/src/content-routing/index.ts +1 -1
  80. package/src/errors.ts +0 -2
  81. package/src/get-peer.ts +0 -4
  82. package/src/index.ts +6 -7
  83. package/src/libp2p.ts +23 -61
  84. package/src/peer-routing.ts +15 -10
  85. package/src/registrar.ts +6 -5
  86. package/src/transport-manager.ts +12 -12
  87. package/src/upgrader.ts +100 -40
  88. package/src/version.ts +1 -1
  89. package/dist/src/autonat/constants.d.ts +0 -18
  90. package/dist/src/autonat/constants.d.ts.map +0 -1
  91. package/dist/src/autonat/constants.js +0 -18
  92. package/dist/src/autonat/constants.js.map +0 -1
  93. package/dist/src/autonat/index.d.ts +0 -62
  94. package/dist/src/autonat/index.d.ts.map +0 -1
  95. package/dist/src/autonat/index.js +0 -447
  96. package/dist/src/autonat/index.js.map +0 -1
  97. package/dist/src/autonat/pb/index.d.ts +0 -57
  98. package/dist/src/autonat/pb/index.d.ts.map +0 -1
  99. package/dist/src/autonat/pb/index.js +0 -250
  100. package/dist/src/autonat/pb/index.js.map +0 -1
  101. package/dist/src/circuit-relay/constants.d.ts +0 -50
  102. package/dist/src/circuit-relay/constants.d.ts.map +0 -1
  103. package/dist/src/circuit-relay/constants.js +0 -56
  104. package/dist/src/circuit-relay/constants.js.map +0 -1
  105. package/dist/src/circuit-relay/index.d.ts +0 -55
  106. package/dist/src/circuit-relay/index.d.ts.map +0 -1
  107. package/dist/src/circuit-relay/index.js +0 -38
  108. package/dist/src/circuit-relay/index.js.map +0 -1
  109. package/dist/src/circuit-relay/pb/index.d.ts +0 -93
  110. package/dist/src/circuit-relay/pb/index.d.ts.map +0 -1
  111. package/dist/src/circuit-relay/pb/index.js +0 -425
  112. package/dist/src/circuit-relay/pb/index.js.map +0 -1
  113. package/dist/src/circuit-relay/server/advert-service.d.ts +0 -43
  114. package/dist/src/circuit-relay/server/advert-service.d.ts.map +0 -1
  115. package/dist/src/circuit-relay/server/advert-service.js +0 -73
  116. package/dist/src/circuit-relay/server/advert-service.js.map +0 -1
  117. package/dist/src/circuit-relay/server/index.d.ts +0 -65
  118. package/dist/src/circuit-relay/server/index.d.ts.map +0 -1
  119. package/dist/src/circuit-relay/server/index.js +0 -312
  120. package/dist/src/circuit-relay/server/index.js.map +0 -1
  121. package/dist/src/circuit-relay/server/reservation-store.d.ts +0 -49
  122. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +0 -1
  123. package/dist/src/circuit-relay/server/reservation-store.js +0 -65
  124. package/dist/src/circuit-relay/server/reservation-store.js.map +0 -1
  125. package/dist/src/circuit-relay/server/reservation-voucher.d.ts +0 -18
  126. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +0 -1
  127. package/dist/src/circuit-relay/server/reservation-voucher.js +0 -36
  128. package/dist/src/circuit-relay/server/reservation-voucher.js.map +0 -1
  129. package/dist/src/circuit-relay/transport/discovery.d.ts +0 -45
  130. package/dist/src/circuit-relay/transport/discovery.d.ts.map +0 -1
  131. package/dist/src/circuit-relay/transport/discovery.js +0 -97
  132. package/dist/src/circuit-relay/transport/discovery.js.map +0 -1
  133. package/dist/src/circuit-relay/transport/index.d.ts +0 -57
  134. package/dist/src/circuit-relay/transport/index.d.ts.map +0 -1
  135. package/dist/src/circuit-relay/transport/index.js +0 -276
  136. package/dist/src/circuit-relay/transport/index.js.map +0 -1
  137. package/dist/src/circuit-relay/transport/listener.d.ts +0 -9
  138. package/dist/src/circuit-relay/transport/listener.d.ts.map +0 -1
  139. package/dist/src/circuit-relay/transport/listener.js +0 -66
  140. package/dist/src/circuit-relay/transport/listener.js.map +0 -1
  141. package/dist/src/circuit-relay/transport/reservation-store.d.ts +0 -72
  142. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +0 -1
  143. package/dist/src/circuit-relay/transport/reservation-store.js +0 -209
  144. package/dist/src/circuit-relay/transport/reservation-store.js.map +0 -1
  145. package/dist/src/circuit-relay/utils.d.ts +0 -13
  146. package/dist/src/circuit-relay/utils.d.ts.map +0 -1
  147. package/dist/src/circuit-relay/utils.js +0 -108
  148. package/dist/src/circuit-relay/utils.js.map +0 -1
  149. package/dist/src/dcutr/dcutr.d.ts +0 -43
  150. package/dist/src/dcutr/dcutr.d.ts.map +0 -1
  151. package/dist/src/dcutr/dcutr.js +0 -313
  152. package/dist/src/dcutr/dcutr.js.map +0 -1
  153. package/dist/src/dcutr/index.d.ts +0 -92
  154. package/dist/src/dcutr/index.d.ts.map +0 -1
  155. package/dist/src/dcutr/index.js +0 -63
  156. package/dist/src/dcutr/index.js.map +0 -1
  157. package/dist/src/dcutr/pb/message.d.ts +0 -20
  158. package/dist/src/dcutr/pb/message.d.ts.map +0 -1
  159. package/dist/src/dcutr/pb/message.js +0 -77
  160. package/dist/src/dcutr/pb/message.js.map +0 -1
  161. package/dist/src/dcutr/utils.d.ts +0 -8
  162. package/dist/src/dcutr/utils.d.ts.map +0 -1
  163. package/dist/src/dcutr/utils.js +0 -27
  164. package/dist/src/dcutr/utils.js.map +0 -1
  165. package/dist/src/fetch/constants.d.ts +0 -3
  166. package/dist/src/fetch/constants.d.ts.map +0 -1
  167. package/dist/src/fetch/constants.js +0 -4
  168. package/dist/src/fetch/constants.js.map +0 -1
  169. package/dist/src/fetch/index.d.ts +0 -61
  170. package/dist/src/fetch/index.d.ts.map +0 -1
  171. package/dist/src/fetch/index.js +0 -205
  172. package/dist/src/fetch/index.js.map +0 -1
  173. package/dist/src/fetch/pb/proto.d.ts +0 -28
  174. package/dist/src/fetch/pb/proto.d.ts.map +0 -1
  175. package/dist/src/fetch/pb/proto.js +0 -120
  176. package/dist/src/fetch/pb/proto.js.map +0 -1
  177. package/dist/src/identify/consts.d.ts +0 -10
  178. package/dist/src/identify/consts.d.ts.map +0 -1
  179. package/dist/src/identify/consts.js +0 -11
  180. package/dist/src/identify/consts.js.map +0 -1
  181. package/dist/src/identify/identify.d.ts +0 -54
  182. package/dist/src/identify/identify.d.ts.map +0 -1
  183. package/dist/src/identify/identify.js +0 -447
  184. package/dist/src/identify/identify.js.map +0 -1
  185. package/dist/src/identify/index.d.ts +0 -72
  186. package/dist/src/identify/index.d.ts.map +0 -1
  187. package/dist/src/identify/index.js +0 -15
  188. package/dist/src/identify/index.js.map +0 -1
  189. package/dist/src/identify/pb/message.d.ts +0 -17
  190. package/dist/src/identify/pb/message.d.ts.map +0 -1
  191. package/dist/src/identify/pb/message.js +0 -98
  192. package/dist/src/identify/pb/message.js.map +0 -1
  193. package/dist/src/insecure/index.d.ts +0 -26
  194. package/dist/src/insecure/index.d.ts.map +0 -1
  195. package/dist/src/insecure/index.js +0 -110
  196. package/dist/src/insecure/index.js.map +0 -1
  197. package/dist/src/insecure/pb/proto.d.ts +0 -30
  198. package/dist/src/insecure/pb/proto.d.ts.map +0 -1
  199. package/dist/src/insecure/pb/proto.js +0 -127
  200. package/dist/src/insecure/pb/proto.js.map +0 -1
  201. package/dist/src/ping/constants.d.ts +0 -9
  202. package/dist/src/ping/constants.d.ts.map +0 -1
  203. package/dist/src/ping/constants.js +0 -15
  204. package/dist/src/ping/constants.js.map +0 -1
  205. package/dist/src/ping/index.d.ts +0 -24
  206. package/dist/src/ping/index.d.ts.map +0 -1
  207. package/dist/src/ping/index.js +0 -115
  208. package/dist/src/ping/index.js.map +0 -1
  209. package/dist/src/pnet/crypto.d.ts +0 -18
  210. package/dist/src/pnet/crypto.d.ts.map +0 -1
  211. package/dist/src/pnet/crypto.js +0 -60
  212. package/dist/src/pnet/crypto.js.map +0 -1
  213. package/dist/src/pnet/errors.d.ts +0 -6
  214. package/dist/src/pnet/errors.d.ts.map +0 -1
  215. package/dist/src/pnet/errors.js +0 -6
  216. package/dist/src/pnet/errors.js.map +0 -1
  217. package/dist/src/pnet/index.d.ts +0 -31
  218. package/dist/src/pnet/index.d.ts.map +0 -1
  219. package/dist/src/pnet/index.js +0 -97
  220. package/dist/src/pnet/index.js.map +0 -1
  221. package/dist/src/pnet/key-generator.d.ts +0 -11
  222. package/dist/src/pnet/key-generator.d.ts.map +0 -1
  223. package/dist/src/pnet/key-generator.js +0 -22
  224. package/dist/src/pnet/key-generator.js.map +0 -1
  225. package/dist/src/upnp-nat/index.d.ts +0 -71
  226. package/dist/src/upnp-nat/index.d.ts.map +0 -1
  227. package/dist/src/upnp-nat/index.js +0 -136
  228. package/dist/src/upnp-nat/index.js.map +0 -1
  229. package/dist/src/utils/peer-job-queue.d.ts +0 -33
  230. package/dist/src/utils/peer-job-queue.d.ts.map +0 -1
  231. package/dist/src/utils/peer-job-queue.js +0 -82
  232. package/dist/src/utils/peer-job-queue.js.map +0 -1
  233. package/dist/typedoc-urls.json +0 -71
  234. package/src/autonat/constants.ts +0 -19
  235. package/src/autonat/index.ts +0 -597
  236. package/src/autonat/pb/index.proto +0 -35
  237. package/src/autonat/pb/index.ts +0 -320
  238. package/src/circuit-relay/constants.ts +0 -72
  239. package/src/circuit-relay/index.ts +0 -59
  240. package/src/circuit-relay/pb/index.proto +0 -67
  241. package/src/circuit-relay/pb/index.ts +0 -539
  242. package/src/circuit-relay/server/advert-service.ts +0 -108
  243. package/src/circuit-relay/server/index.ts +0 -443
  244. package/src/circuit-relay/server/reservation-store.ts +0 -116
  245. package/src/circuit-relay/server/reservation-voucher.ts +0 -51
  246. package/src/circuit-relay/transport/discovery.ts +0 -136
  247. package/src/circuit-relay/transport/index.ts +0 -396
  248. package/src/circuit-relay/transport/listener.ts +0 -97
  249. package/src/circuit-relay/transport/reservation-store.ts +0 -312
  250. package/src/circuit-relay/utils.ts +0 -136
  251. package/src/dcutr/dcutr.ts +0 -378
  252. package/src/dcutr/index.ts +0 -102
  253. package/src/dcutr/pb/message.proto +0 -12
  254. package/src/dcutr/pb/message.ts +0 -96
  255. package/src/dcutr/utils.ts +0 -33
  256. package/src/fetch/README.md +0 -41
  257. package/src/fetch/constants.ts +0 -3
  258. package/src/fetch/index.ts +0 -315
  259. package/src/fetch/pb/proto.proto +0 -15
  260. package/src/fetch/pb/proto.ts +0 -153
  261. package/src/identify/README.md +0 -13
  262. package/src/identify/consts.ts +0 -12
  263. package/src/identify/identify.ts +0 -561
  264. package/src/identify/index.ts +0 -90
  265. package/src/identify/pb/message.proto +0 -30
  266. package/src/identify/pb/message.ts +0 -126
  267. package/src/insecure/index.ts +0 -138
  268. package/src/insecure/pb/proto.proto +0 -18
  269. package/src/insecure/pb/proto.ts +0 -161
  270. package/src/ping/constants.ts +0 -15
  271. package/src/ping/index.ts +0 -170
  272. package/src/pnet/README.md +0 -68
  273. package/src/pnet/crypto.ts +0 -67
  274. package/src/pnet/errors.ts +0 -5
  275. package/src/pnet/index.ts +0 -126
  276. package/src/pnet/key-generator.ts +0 -23
  277. package/src/upnp-nat/index.ts +0 -212
  278. package/src/utils/peer-job-queue.ts +0 -119
package/src/libp2p.ts CHANGED
@@ -4,7 +4,6 @@ import { CodeError } from '@libp2p/interface/errors'
4
4
  import { TypedEventEmitter, CustomEvent, setMaxListeners } from '@libp2p/interface/events'
5
5
  import { peerDiscovery } from '@libp2p/interface/peer-discovery'
6
6
  import { type PeerRouting, peerRouting } from '@libp2p/interface/peer-routing'
7
- import { DefaultKeyChain } from '@libp2p/keychain'
8
7
  import { defaultLogger } from '@libp2p/logger'
9
8
  import { PeerSet } from '@libp2p/peer-collections'
10
9
  import { peerIdFromString } from '@libp2p/peer-id'
@@ -12,7 +11,6 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
12
11
  import { PersistentPeerStore } from '@libp2p/peer-store'
13
12
  import { isMultiaddr, type Multiaddr } from '@multiformats/multiaddr'
14
13
  import { MemoryDatastore } from 'datastore-core/memory'
15
- import mergeOptions from 'merge-options'
16
14
  import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
17
15
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
18
16
  import { DefaultAddressManager } from './address-manager/index.js'
@@ -26,32 +24,30 @@ import { DefaultPeerRouting } from './peer-routing.js'
26
24
  import { DefaultRegistrar } from './registrar.js'
27
25
  import { DefaultTransportManager } from './transport-manager.js'
28
26
  import { DefaultUpgrader } from './upgrader.js'
27
+ import * as pkg from './version.js'
29
28
  import type { Components } from './components.js'
30
29
  import type { Libp2p, Libp2pInit, Libp2pOptions } from './index.js'
31
30
  import type { Libp2pEvents, PendingDial, ServiceMap, AbortOptions, ComponentLogger, Logger } from '@libp2p/interface'
32
31
  import type { Connection, NewStreamOptions, Stream } from '@libp2p/interface/connection'
33
- import type { KeyChain } from '@libp2p/interface/keychain'
34
32
  import type { Metrics } from '@libp2p/interface/metrics'
35
33
  import type { PeerId } from '@libp2p/interface/peer-id'
36
34
  import type { PeerInfo } from '@libp2p/interface/peer-info'
37
35
  import type { PeerStore } from '@libp2p/interface/peer-store'
38
36
  import type { Topology } from '@libp2p/interface/topology'
39
37
  import type { StreamHandler, StreamHandlerOptions } from '@libp2p/interface-internal/registrar'
40
- import type { Datastore } from 'interface-datastore'
41
38
 
42
39
  export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends TypedEventEmitter<Libp2pEvents> implements Libp2p<T> {
43
40
  public peerId: PeerId
44
41
  public peerStore: PeerStore
45
42
  public contentRouting: ContentRouting
46
43
  public peerRouting: PeerRouting
47
- public keychain: KeyChain
48
44
  public metrics?: Metrics
49
45
  public services: T
50
46
  public logger: ComponentLogger
51
47
 
52
48
  public components: Components
53
49
  #started: boolean
54
- readonly #log: Logger
50
+ private readonly log: Logger
55
51
 
56
52
  constructor (init: Libp2pInit<T>) {
57
53
  super()
@@ -75,11 +71,15 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
75
71
  this.#started = false
76
72
  this.peerId = init.peerId
77
73
  this.logger = init.logger ?? defaultLogger()
78
- this.#log = this.logger.forComponent('libp2p')
74
+ this.log = this.logger.forComponent('libp2p')
79
75
  // @ts-expect-error {} may not be of type T
80
76
  this.services = {}
81
77
  const components = this.components = defaultComponents({
82
78
  peerId: init.peerId,
79
+ nodeInfo: init.nodeInfo ?? {
80
+ name: pkg.name,
81
+ version: pkg.version
82
+ },
83
83
  logger: this.logger,
84
84
  events,
85
85
  datastore: init.datastore ?? new MemoryDatastore(),
@@ -101,8 +101,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
101
101
  if (evt.detail.previous == null) {
102
102
  const peerInfo: PeerInfo = {
103
103
  id: evt.detail.peer.id,
104
- multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr),
105
- protocols: evt.detail.peer.protocols
104
+ multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr)
106
105
  }
107
106
 
108
107
  components.events.safeDispatchEvent('peer:discovery', { detail: peerInfo })
@@ -133,13 +132,6 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
133
132
  // Addresses {listen, announce, noAnnounce}
134
133
  this.configureComponent('addressManager', new DefaultAddressManager(this.components, init.addresses))
135
134
 
136
- // Create keychain
137
- const keychainOpts = DefaultKeyChain.generateOptions()
138
- this.keychain = this.configureComponent('keyChain', new DefaultKeyChain(this.components, {
139
- ...keychainOpts,
140
- ...init.keychain
141
- }))
142
-
143
135
  // Peer routers
144
136
  const peerRouters: PeerRouting[] = (init.peerRouters ?? []).map((fn, index) => this.configureComponent(`peer-router-${index}`, fn(this.components)))
145
137
  this.peerRouting = this.components.peerRouting = this.configureComponent('peerRouting', new DefaultPeerRouting(this.components, {
@@ -173,7 +165,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
173
165
  const service: any = createService(this.components)
174
166
 
175
167
  if (service == null) {
176
- this.#log.error('service factory %s returned null or undefined instance', name)
168
+ this.log.error('service factory %s returned null or undefined instance', name)
177
169
  continue
178
170
  }
179
171
 
@@ -181,17 +173,17 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
181
173
  this.configureComponent(name, service)
182
174
 
183
175
  if (service[contentRouting] != null) {
184
- this.#log('registering service %s for content routing', name)
176
+ this.log('registering service %s for content routing', name)
185
177
  contentRouters.push(service[contentRouting])
186
178
  }
187
179
 
188
180
  if (service[peerRouting] != null) {
189
- this.#log('registering service %s for peer routing', name)
181
+ this.log('registering service %s for peer routing', name)
190
182
  peerRouters.push(service[peerRouting])
191
183
  }
192
184
 
193
185
  if (service[peerDiscovery] != null) {
194
- this.#log('registering service %s for peer discovery', name)
186
+ this.log('registering service %s for peer discovery', name)
195
187
  service[peerDiscovery].addEventListener('peer', (evt: CustomEvent<PeerInfo>) => {
196
188
  this.#onDiscoveryPeer(evt)
197
189
  })
@@ -202,7 +194,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
202
194
 
203
195
  private configureComponent <T> (name: string, component: T): T {
204
196
  if (component == null) {
205
- this.#log.error('component %s was null or undefined', name)
197
+ this.log.error('component %s was null or undefined', name)
206
198
  }
207
199
 
208
200
  this.components[name] = component
@@ -220,14 +212,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
220
212
 
221
213
  this.#started = true
222
214
 
223
- this.#log('libp2p is starting')
224
-
225
- const keys = await this.keychain.listKeys()
226
-
227
- if (keys.find(key => key.name === 'self') == null) {
228
- this.#log('importing self key into keychain')
229
- await this.keychain.importPeer('self', this.components.peerId)
230
- }
215
+ this.log('libp2p is starting')
231
216
 
232
217
  try {
233
218
  await this.components.beforeStart?.()
@@ -235,9 +220,9 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
235
220
  await this.components.afterStart?.()
236
221
 
237
222
  this.safeDispatchEvent('start', { detail: this })
238
- this.#log('libp2p has started')
223
+ this.log('libp2p has started')
239
224
  } catch (err: any) {
240
- this.#log.error('An error occurred starting libp2p', err)
225
+ this.log.error('An error occurred starting libp2p', err)
241
226
  await this.stop()
242
227
  throw err
243
228
  }
@@ -251,7 +236,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
251
236
  return
252
237
  }
253
238
 
254
- this.#log('libp2p is stopping')
239
+ this.log('libp2p is stopping')
255
240
 
256
241
  this.#started = false
257
242
 
@@ -260,7 +245,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
260
245
  await this.components.afterStop?.()
261
246
 
262
247
  this.safeDispatchEvent('stop', { detail: this })
263
- this.#log('libp2p has stopped')
248
+ this.log('libp2p has stopped')
264
249
  }
265
250
 
266
251
  isStarted (): boolean {
@@ -325,7 +310,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
325
310
  * Get the public key for the given peer id
326
311
  */
327
312
  async getPublicKey (peer: PeerId, options: AbortOptions = {}): Promise<Uint8Array> {
328
- this.#log('getPublicKey %p', peer)
313
+ this.log('getPublicKey %p', peer)
329
314
 
330
315
  if (peer.publicKey != null) {
331
316
  return peer.publicKey
@@ -394,15 +379,14 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
394
379
  const { detail: peer } = evt
395
380
 
396
381
  if (peer.id.toString() === this.peerId.toString()) {
397
- this.#log.error(new Error(codes.ERR_DISCOVERED_SELF))
382
+ this.log.error(new Error(codes.ERR_DISCOVERED_SELF))
398
383
  return
399
384
  }
400
385
 
401
386
  void this.components.peerStore.merge(peer.id, {
402
- multiaddrs: peer.multiaddrs,
403
- protocols: peer.protocols
387
+ multiaddrs: peer.multiaddrs
404
388
  })
405
- .catch(err => { this.#log.error(err) })
389
+ .catch(err => { this.log.error(err) })
406
390
  }
407
391
  }
408
392
 
@@ -411,29 +395,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
411
395
  * libp2p interface and is useful for testing and debugging.
412
396
  */
413
397
  export async function createLibp2pNode <T extends ServiceMap = Record<string, unknown>> (options: Libp2pOptions<T>): Promise<Libp2pNode<T>> {
414
- if (options.peerId == null) {
415
- const datastore = options.datastore as Datastore | undefined
416
-
417
- if (datastore != null) {
418
- try {
419
- // try load the peer id from the keychain
420
- const keyChain = new DefaultKeyChain({
421
- datastore
422
- }, mergeOptions(DefaultKeyChain.generateOptions(), options.keychain))
423
-
424
- options.peerId = await keyChain.exportPeerId('self')
425
- } catch (err: any) {
426
- if (err.code !== 'ERR_NOT_FOUND') {
427
- throw err
428
- }
429
- }
430
- }
431
- }
432
-
433
- if (options.peerId == null) {
434
- // no peer id in the keychain, create a new peer id
435
- options.peerId = await createEd25519PeerId()
436
- }
398
+ options.peerId ??= await createEd25519PeerId()
437
399
 
438
400
  return new Libp2pNode(validateConfig(options))
439
401
  }
@@ -1,5 +1,4 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import filter from 'it-filter'
4
3
  import first from 'it-first'
5
4
  import merge from 'it-merge'
@@ -10,13 +9,12 @@ import {
10
9
  requirePeers
11
10
  } from './content-routing/utils.js'
12
11
  import { codes, messages } from './errors.js'
13
- import type { AbortOptions } from '@libp2p/interface'
12
+ import type { AbortOptions, Logger } from '@libp2p/interface'
14
13
  import type { PeerId } from '@libp2p/interface/peer-id'
15
14
  import type { PeerInfo } from '@libp2p/interface/peer-info'
16
15
  import type { PeerRouting } from '@libp2p/interface/peer-routing'
17
16
  import type { PeerStore } from '@libp2p/interface/peer-store'
18
-
19
- const log = logger('libp2p:peer-routing')
17
+ import type { ComponentLogger } from '@libp2p/logger'
20
18
 
21
19
  export interface PeerRoutingInit {
22
20
  routers?: PeerRouting[]
@@ -25,14 +23,19 @@ export interface PeerRoutingInit {
25
23
  export interface DefaultPeerRoutingComponents {
26
24
  peerId: PeerId
27
25
  peerStore: PeerStore
26
+ logger: ComponentLogger
28
27
  }
29
28
 
30
29
  export class DefaultPeerRouting implements PeerRouting {
31
- private readonly components: DefaultPeerRoutingComponents
30
+ private readonly log: Logger
31
+ private readonly peerId: PeerId
32
+ private readonly peerStore: PeerStore
32
33
  private readonly routers: PeerRouting[]
33
34
 
34
35
  constructor (components: DefaultPeerRoutingComponents, init: PeerRoutingInit) {
35
- this.components = components
36
+ this.log = components.logger.forComponent('libp2p:peer-routing')
37
+ this.peerId = components.peerId
38
+ this.peerStore = components.peerStore
36
39
  this.routers = init.routers ?? []
37
40
  }
38
41
 
@@ -44,22 +47,24 @@ export class DefaultPeerRouting implements PeerRouting {
44
47
  throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE)
45
48
  }
46
49
 
47
- if (id.toString() === this.components.peerId.toString()) {
50
+ if (id.toString() === this.peerId.toString()) {
48
51
  throw new CodeError('Should not try to find self', codes.ERR_FIND_SELF)
49
52
  }
50
53
 
54
+ const self = this
55
+
51
56
  const output = await pipe(
52
57
  merge(
53
58
  ...this.routers.map(router => (async function * () {
54
59
  try {
55
60
  yield await router.findPeer(id, options)
56
61
  } catch (err) {
57
- log.error(err)
62
+ self.log.error(err)
58
63
  }
59
64
  })())
60
65
  ),
61
66
  (source) => filter(source, Boolean),
62
- (source) => storeAddresses(source, this.components.peerStore),
67
+ (source) => storeAddresses(source, this.peerStore),
63
68
  async (source) => first(source)
64
69
  )
65
70
 
@@ -82,7 +87,7 @@ export class DefaultPeerRouting implements PeerRouting {
82
87
  merge(
83
88
  ...this.routers.map(router => router.getClosestPeers(key, options))
84
89
  ),
85
- (source) => storeAddresses(source, this.components.peerStore),
90
+ (source) => storeAddresses(source, this.peerStore),
86
91
  (source) => uniquePeers(source),
87
92
  (source) => requirePeers(source)
88
93
  )
package/src/registrar.ts CHANGED
@@ -1,16 +1,14 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import merge from 'merge-options'
4
3
  import { codes } from './errors.js'
5
- import type { IdentifyResult, Libp2pEvents, PeerUpdate } from '@libp2p/interface'
4
+ import type { IdentifyResult, Libp2pEvents, Logger, PeerUpdate } from '@libp2p/interface'
6
5
  import type { TypedEventTarget } from '@libp2p/interface/events'
7
6
  import type { PeerId } from '@libp2p/interface/peer-id'
8
7
  import type { PeerStore } from '@libp2p/interface/peer-store'
9
8
  import type { Topology } from '@libp2p/interface/topology'
10
9
  import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
11
10
  import type { StreamHandlerOptions, StreamHandlerRecord, Registrar, StreamHandler } from '@libp2p/interface-internal/registrar'
12
-
13
- const log = logger('libp2p:registrar')
11
+ import type { ComponentLogger } from '@libp2p/logger'
14
12
 
15
13
  export const DEFAULT_MAX_INBOUND_STREAMS = 32
16
14
  export const DEFAULT_MAX_OUTBOUND_STREAMS = 64
@@ -20,17 +18,20 @@ export interface RegistrarComponents {
20
18
  connectionManager: ConnectionManager
21
19
  peerStore: PeerStore
22
20
  events: TypedEventTarget<Libp2pEvents>
21
+ logger: ComponentLogger
23
22
  }
24
23
 
25
24
  /**
26
25
  * Responsible for notifying registered protocols of events in the network.
27
26
  */
28
27
  export class DefaultRegistrar implements Registrar {
28
+ private readonly log: Logger
29
29
  private readonly topologies: Map<string, Map<string, Topology>>
30
30
  private readonly handlers: Map<string, StreamHandlerRecord>
31
31
  private readonly components: RegistrarComponents
32
32
 
33
33
  constructor (components: RegistrarComponents) {
34
+ this.log = components.logger.forComponent('libp2p:registrar')
34
35
  this.topologies = new Map()
35
36
  this.handlers = new Map()
36
37
  this.components = components
@@ -178,7 +179,7 @@ export class DefaultRegistrar implements Registrar {
178
179
  return
179
180
  }
180
181
 
181
- log.error('could not inform topologies of disconnecting peer %p', remotePeer, err)
182
+ this.log.error('could not inform topologies of disconnecting peer %p', remotePeer, err)
182
183
  })
183
184
  }
184
185
 
@@ -1,9 +1,8 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
2
  import { trackedMap } from '@libp2p/interface/metrics/tracked-map'
3
3
  import { FaultTolerance } from '@libp2p/interface/transport'
4
- import { logger } from '@libp2p/logger'
5
4
  import { codes } from './errors.js'
6
- import type { Libp2pEvents, AbortOptions } from '@libp2p/interface'
5
+ import type { Libp2pEvents, AbortOptions, ComponentLogger, Logger } from '@libp2p/interface'
7
6
  import type { Connection } from '@libp2p/interface/connection'
8
7
  import type { TypedEventTarget } from '@libp2p/interface/events'
9
8
  import type { Metrics } from '@libp2p/interface/metrics'
@@ -13,8 +12,6 @@ import type { AddressManager } from '@libp2p/interface-internal/address-manager'
13
12
  import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
14
13
  import type { Multiaddr } from '@multiformats/multiaddr'
15
14
 
16
- const log = logger('libp2p:transports')
17
-
18
15
  export interface TransportManagerInit {
19
16
  faultTolerance?: FaultTolerance
20
17
  }
@@ -24,9 +21,11 @@ export interface DefaultTransportManagerComponents {
24
21
  addressManager: AddressManager
25
22
  upgrader: Upgrader
26
23
  events: TypedEventTarget<Libp2pEvents>
24
+ logger: ComponentLogger
27
25
  }
28
26
 
29
27
  export class DefaultTransportManager implements TransportManager, Startable {
28
+ private readonly log: Logger
30
29
  private readonly components: DefaultTransportManagerComponents
31
30
  private readonly transports: Map<string, Transport>
32
31
  private readonly listeners: Map<string, Listener[]>
@@ -34,6 +33,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
34
33
  private started: boolean
35
34
 
36
35
  constructor (components: DefaultTransportManagerComponents, init: TransportManagerInit = {}) {
36
+ this.log = components.logger.forComponent('libp2p:transports')
37
37
  this.components = components
38
38
  this.started = false
39
39
  this.transports = new Map<string, Transport>()
@@ -58,7 +58,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
58
58
  throw new CodeError(`There is already a transport with the tag ${tag}`, codes.ERR_DUPLICATE_TRANSPORT)
59
59
  }
60
60
 
61
- log('adding transport %s', tag)
61
+ this.log('adding transport %s', tag)
62
62
 
63
63
  this.transports.set(tag, transport)
64
64
 
@@ -88,7 +88,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
88
88
  async stop (): Promise<void> {
89
89
  const tasks = []
90
90
  for (const [key, listeners] of this.listeners) {
91
- log('closing listeners for %s', key)
91
+ this.log('closing listeners for %s', key)
92
92
  while (listeners.length > 0) {
93
93
  const listener = listeners.pop()
94
94
 
@@ -101,7 +101,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
101
101
  }
102
102
 
103
103
  await Promise.all(tasks)
104
- log('all listeners closed')
104
+ this.log('all listeners closed')
105
105
  for (const key of this.listeners.keys()) {
106
106
  this.listeners.set(key, [])
107
107
  }
@@ -182,7 +182,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
182
182
  }
183
183
 
184
184
  if (addrs == null || addrs.length === 0) {
185
- log('no addresses were provided for listening, this node is dial only')
185
+ this.log('no addresses were provided for listening, this node is dial only')
186
186
  return
187
187
  }
188
188
 
@@ -194,7 +194,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
194
194
 
195
195
  // For each supported multiaddr, create a listener
196
196
  for (const addr of supportedAddrs) {
197
- log('creating listener for %s on %a', key, addr)
197
+ this.log('creating listener for %s on %a', key, addr)
198
198
  const listener = transport.createListener({
199
199
  upgrader: this.components.upgrader
200
200
  })
@@ -253,7 +253,7 @@ export class DefaultTransportManager implements TransportManager, Startable {
253
253
  if (this.faultTolerance === FaultTolerance.FATAL_ALL) {
254
254
  throw new CodeError(message, codes.ERR_NO_VALID_ADDRESSES)
255
255
  }
256
- log(`libp2p in dial mode only: ${message}`)
256
+ this.log(`libp2p in dial mode only: ${message}`)
257
257
  }
258
258
  }
259
259
 
@@ -263,11 +263,11 @@ export class DefaultTransportManager implements TransportManager, Startable {
263
263
  */
264
264
  async remove (key: string): Promise<void> {
265
265
  const listeners = this.listeners.get(key) ?? []
266
- log.trace('removing transport %s', key)
266
+ this.log.trace('removing transport %s', key)
267
267
 
268
268
  // Close any running listeners
269
269
  const tasks = []
270
- log.trace('closing listeners for %s', key)
270
+ this.log.trace('closing listeners for %s', key)
271
271
  while (listeners.length > 0) {
272
272
  const listener = listeners.pop()
273
273