libp2p 0.42.2 → 0.43.0

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 (295) hide show
  1. package/README.md +4 -4
  2. package/dist/index.min.js +29 -29
  3. package/dist/src/address-manager/index.d.ts +1 -10
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +46 -29
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/autonat/constants.d.ts +4 -0
  8. package/dist/src/autonat/constants.d.ts.map +1 -0
  9. package/dist/src/autonat/constants.js +4 -0
  10. package/dist/src/autonat/constants.js.map +1 -0
  11. package/dist/src/autonat/index.d.ts +64 -0
  12. package/dist/src/autonat/index.d.ts.map +1 -0
  13. package/dist/src/autonat/index.js +417 -0
  14. package/dist/src/autonat/index.js.map +1 -0
  15. package/dist/src/autonat/pb/index.d.ts +57 -0
  16. package/dist/src/autonat/pb/index.d.ts.map +1 -0
  17. package/dist/src/autonat/pb/index.js +250 -0
  18. package/dist/src/autonat/pb/index.js.map +1 -0
  19. package/dist/src/circuit/constants.d.ts +31 -6
  20. package/dist/src/circuit/constants.d.ts.map +1 -1
  21. package/dist/src/circuit/constants.js +37 -7
  22. package/dist/src/circuit/constants.js.map +1 -1
  23. package/dist/src/circuit/index.d.ts +16 -61
  24. package/dist/src/circuit/index.d.ts.map +1 -1
  25. package/dist/src/circuit/index.js +2 -68
  26. package/dist/src/circuit/index.js.map +1 -1
  27. package/dist/src/circuit/pb/index.d.ts +83 -43
  28. package/dist/src/circuit/pb/index.d.ts.map +1 -1
  29. package/dist/src/circuit/pb/index.js +363 -127
  30. package/dist/src/circuit/pb/index.js.map +1 -1
  31. package/dist/src/circuit/server/advert-service.d.ts +43 -0
  32. package/dist/src/circuit/server/advert-service.d.ts.map +1 -0
  33. package/dist/src/circuit/server/advert-service.js +69 -0
  34. package/dist/src/circuit/server/advert-service.js.map +1 -0
  35. package/dist/src/circuit/server/index.d.ts +60 -0
  36. package/dist/src/circuit/server/index.d.ts.map +1 -0
  37. package/dist/src/circuit/server/index.js +287 -0
  38. package/dist/src/circuit/server/index.js.map +1 -0
  39. package/dist/src/circuit/server/reservation-store.d.ts +49 -0
  40. package/dist/src/circuit/server/reservation-store.d.ts.map +1 -0
  41. package/dist/src/circuit/server/reservation-store.js +57 -0
  42. package/dist/src/circuit/server/reservation-store.js.map +1 -0
  43. package/dist/src/circuit/server/reservation-voucher.d.ts +18 -0
  44. package/dist/src/circuit/server/reservation-voucher.d.ts.map +1 -0
  45. package/dist/src/circuit/server/reservation-voucher.js +33 -0
  46. package/dist/src/circuit/server/reservation-voucher.js.map +1 -0
  47. package/dist/src/circuit/transport/discovery.d.ts +45 -0
  48. package/dist/src/circuit/transport/discovery.d.ts.map +1 -0
  49. package/dist/src/circuit/transport/discovery.js +82 -0
  50. package/dist/src/circuit/transport/discovery.js.map +1 -0
  51. package/dist/src/circuit/transport/index.d.ts +33 -0
  52. package/dist/src/circuit/transport/index.d.ts.map +1 -0
  53. package/dist/src/circuit/transport/index.js +225 -0
  54. package/dist/src/circuit/transport/index.js.map +1 -0
  55. package/dist/src/circuit/transport/listener.d.ts +9 -0
  56. package/dist/src/circuit/transport/listener.d.ts.map +1 -0
  57. package/dist/src/circuit/transport/listener.js +76 -0
  58. package/dist/src/circuit/transport/listener.js.map +1 -0
  59. package/dist/src/circuit/transport/reservation-store.d.ts +60 -0
  60. package/dist/src/circuit/transport/reservation-store.d.ts.map +1 -0
  61. package/dist/src/circuit/transport/reservation-store.js +165 -0
  62. package/dist/src/circuit/transport/reservation-store.js.map +1 -0
  63. package/dist/src/circuit/utils.d.ts +7 -0
  64. package/dist/src/circuit/utils.d.ts.map +1 -1
  65. package/dist/src/circuit/utils.js +87 -0
  66. package/dist/src/circuit/utils.js.map +1 -1
  67. package/dist/src/components.d.ts +2 -1
  68. package/dist/src/components.d.ts.map +1 -1
  69. package/dist/src/components.js +13 -13
  70. package/dist/src/components.js.map +1 -1
  71. package/dist/src/config.d.ts.map +1 -1
  72. package/dist/src/config.js +21 -25
  73. package/dist/src/config.js.map +1 -1
  74. package/dist/src/connection/index.d.ts +2 -2
  75. package/dist/src/connection/index.d.ts.map +1 -1
  76. package/dist/src/connection/index.js +4 -4
  77. package/dist/src/connection/index.js.map +1 -1
  78. package/dist/src/connection-manager/auto-dialler.d.ts +0 -4
  79. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  80. package/dist/src/connection-manager/auto-dialler.js +18 -18
  81. package/dist/src/connection-manager/auto-dialler.js.map +1 -1
  82. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -1
  83. package/dist/src/connection-manager/dialer/dial-request.js +13 -6
  84. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -1
  85. package/dist/src/connection-manager/dialer/index.d.ts +10 -1
  86. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
  87. package/dist/src/connection-manager/dialer/index.js +24 -9
  88. package/dist/src/connection-manager/dialer/index.js.map +1 -1
  89. package/dist/src/connection-manager/index.d.ts +1 -4
  90. package/dist/src/connection-manager/index.d.ts.map +1 -1
  91. package/dist/src/connection-manager/index.js +8 -5
  92. package/dist/src/connection-manager/index.js.map +1 -1
  93. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  94. package/dist/src/connection-manager/latency-monitor.js +1 -1
  95. package/dist/src/connection-manager/latency-monitor.js.map +1 -1
  96. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  97. package/dist/src/content-routing/index.d.ts +6 -4
  98. package/dist/src/content-routing/index.d.ts.map +1 -1
  99. package/dist/src/content-routing/index.js +9 -9
  100. package/dist/src/content-routing/index.js.map +1 -1
  101. package/dist/src/content-routing/utils.d.ts +3 -3
  102. package/dist/src/content-routing/utils.d.ts.map +1 -1
  103. package/dist/src/content-routing/utils.js +2 -2
  104. package/dist/src/content-routing/utils.js.map +1 -1
  105. package/dist/src/dht/dht-content-routing.d.ts +2 -1
  106. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  107. package/dist/src/dht/dht-content-routing.js +2 -2
  108. package/dist/src/dht/dht-content-routing.js.map +1 -1
  109. package/dist/src/dht/dht-peer-routing.d.ts +3 -2
  110. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  111. package/dist/src/dht/dht-peer-routing.js +2 -2
  112. package/dist/src/dht/dht-peer-routing.js.map +1 -1
  113. package/dist/src/dht/dummy-dht.d.ts +1 -1
  114. package/dist/src/dht/dummy-dht.d.ts.map +1 -1
  115. package/dist/src/dht/dummy-dht.js +12 -12
  116. package/dist/src/dht/dummy-dht.js.map +1 -1
  117. package/dist/src/errors.d.ts +2 -1
  118. package/dist/src/errors.d.ts.map +1 -1
  119. package/dist/src/errors.js +1 -0
  120. package/dist/src/errors.js.map +1 -1
  121. package/dist/src/fetch/index.d.ts.map +1 -1
  122. package/dist/src/fetch/index.js +6 -6
  123. package/dist/src/fetch/index.js.map +1 -1
  124. package/dist/src/fetch/pb/proto.d.ts +3 -3
  125. package/dist/src/fetch/pb/proto.d.ts.map +1 -1
  126. package/dist/src/fetch/pb/proto.js +4 -3
  127. package/dist/src/fetch/pb/proto.js.map +1 -1
  128. package/dist/src/get-peer.js +2 -2
  129. package/dist/src/get-peer.js.map +1 -1
  130. package/dist/src/identify/index.d.ts +3 -1
  131. package/dist/src/identify/index.d.ts.map +1 -1
  132. package/dist/src/identify/index.js +19 -14
  133. package/dist/src/identify/index.js.map +1 -1
  134. package/dist/src/identify/pb/message.d.ts +2 -2
  135. package/dist/src/identify/pb/message.d.ts.map +1 -1
  136. package/dist/src/identify/pb/message.js +1 -0
  137. package/dist/src/identify/pb/message.js.map +1 -1
  138. package/dist/src/index.d.ts +14 -8
  139. package/dist/src/index.d.ts.map +1 -1
  140. package/dist/src/index.js.map +1 -1
  141. package/dist/src/insecure/index.d.ts.map +1 -1
  142. package/dist/src/insecure/index.js.map +1 -1
  143. package/dist/src/insecure/pb/proto.d.ts +3 -3
  144. package/dist/src/insecure/pb/proto.d.ts.map +1 -1
  145. package/dist/src/insecure/pb/proto.js +4 -5
  146. package/dist/src/insecure/pb/proto.js.map +1 -1
  147. package/dist/src/libp2p.d.ts +7 -3
  148. package/dist/src/libp2p.d.ts.map +1 -1
  149. package/dist/src/libp2p.js +35 -35
  150. package/dist/src/libp2p.js.map +1 -1
  151. package/dist/src/nat-manager.d.ts.map +1 -1
  152. package/dist/src/nat-manager.js +5 -3
  153. package/dist/src/nat-manager.js.map +1 -1
  154. package/dist/src/peer-record-updater.d.ts.map +1 -1
  155. package/dist/src/peer-routing.d.ts.map +1 -1
  156. package/dist/src/peer-routing.js +5 -5
  157. package/dist/src/peer-routing.js.map +1 -1
  158. package/dist/src/ping/index.d.ts.map +1 -1
  159. package/dist/src/ping/index.js +2 -2
  160. package/dist/src/ping/index.js.map +1 -1
  161. package/dist/src/pnet/crypto.d.ts +1 -1
  162. package/dist/src/pnet/crypto.d.ts.map +1 -1
  163. package/dist/src/pnet/crypto.js +1 -1
  164. package/dist/src/pnet/crypto.js.map +1 -1
  165. package/dist/src/pnet/index.js +3 -3
  166. package/dist/src/pnet/index.js.map +1 -1
  167. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  168. package/dist/src/pubsub/dummy-pubsub.js +9 -9
  169. package/dist/src/pubsub/dummy-pubsub.js.map +1 -1
  170. package/dist/src/registrar.d.ts.map +1 -1
  171. package/dist/src/registrar.js +4 -4
  172. package/dist/src/registrar.js.map +1 -1
  173. package/dist/src/transport-manager.d.ts.map +1 -1
  174. package/dist/src/transport-manager.js +8 -9
  175. package/dist/src/transport-manager.js.map +1 -1
  176. package/dist/src/upgrader.d.ts +2 -1
  177. package/dist/src/upgrader.d.ts.map +1 -1
  178. package/dist/src/upgrader.js +38 -33
  179. package/dist/src/upgrader.js.map +1 -1
  180. package/dist/typedoc-urls.json +19 -6
  181. package/package.json +36 -33
  182. package/src/address-manager/index.ts +62 -35
  183. package/src/autonat/constants.ts +4 -0
  184. package/src/autonat/index.ts +567 -0
  185. package/src/autonat/pb/index.proto +35 -0
  186. package/src/autonat/pb/index.ts +320 -0
  187. package/src/circuit/constants.ts +48 -7
  188. package/src/circuit/index.ts +17 -129
  189. package/src/circuit/pb/index.proto +57 -32
  190. package/src/circuit/pb/index.ts +448 -138
  191. package/src/circuit/server/advert-service.ts +108 -0
  192. package/src/circuit/server/index.ts +421 -0
  193. package/src/circuit/server/reservation-store.ts +111 -0
  194. package/src/circuit/server/reservation-voucher.ts +51 -0
  195. package/src/circuit/transport/discovery.ts +127 -0
  196. package/src/circuit/transport/index.ts +325 -0
  197. package/src/circuit/transport/listener.ts +99 -0
  198. package/src/circuit/transport/reservation-store.ts +249 -0
  199. package/src/circuit/utils.ts +108 -0
  200. package/src/components.ts +22 -21
  201. package/src/config.ts +21 -25
  202. package/src/connection/index.ts +10 -10
  203. package/src/connection-manager/auto-dialler.ts +36 -40
  204. package/src/connection-manager/dialer/dial-request.ts +13 -6
  205. package/src/connection-manager/dialer/index.ts +34 -15
  206. package/src/connection-manager/index.ts +22 -23
  207. package/src/connection-manager/latency-monitor.ts +9 -9
  208. package/src/connection-manager/visibility-change-emitter.ts +4 -4
  209. package/src/content-routing/index.ts +18 -16
  210. package/src/content-routing/utils.ts +5 -5
  211. package/src/dht/dht-content-routing.ts +5 -4
  212. package/src/dht/dht-peer-routing.ts +5 -4
  213. package/src/dht/dummy-dht.ts +13 -13
  214. package/src/errors.ts +2 -1
  215. package/src/fetch/index.ts +13 -13
  216. package/src/fetch/pb/proto.ts +8 -7
  217. package/src/get-peer.ts +3 -3
  218. package/src/identify/index.ts +29 -24
  219. package/src/identify/pb/message.ts +3 -2
  220. package/src/index.ts +15 -8
  221. package/src/insecure/index.ts +2 -1
  222. package/src/insecure/pb/proto.ts +8 -9
  223. package/src/libp2p.ts +52 -46
  224. package/src/nat-manager.ts +11 -9
  225. package/src/peer-record-updater.ts +4 -4
  226. package/src/peer-routing.ts +9 -9
  227. package/src/ping/index.ts +6 -6
  228. package/src/pnet/crypto.ts +3 -3
  229. package/src/pnet/index.ts +3 -3
  230. package/src/pnet/key-generator.ts +1 -1
  231. package/src/pubsub/dummy-pubsub.ts +9 -9
  232. package/src/registrar.ts +12 -12
  233. package/src/transport-manager.ts +17 -18
  234. package/src/upgrader.ts +43 -42
  235. package/src/version.ts +1 -1
  236. package/dist/src/circuit/auto-relay.d.ts +0 -46
  237. package/dist/src/circuit/auto-relay.d.ts.map +0 -1
  238. package/dist/src/circuit/auto-relay.js +0 -220
  239. package/dist/src/circuit/auto-relay.js.map +0 -1
  240. package/dist/src/circuit/circuit/hop.d.ts +0 -42
  241. package/dist/src/circuit/circuit/hop.d.ts.map +0 -1
  242. package/dist/src/circuit/circuit/hop.js +0 -142
  243. package/dist/src/circuit/circuit/hop.js.map +0 -1
  244. package/dist/src/circuit/circuit/stop.d.ts +0 -24
  245. package/dist/src/circuit/circuit/stop.d.ts.map +0 -1
  246. package/dist/src/circuit/circuit/stop.js +0 -51
  247. package/dist/src/circuit/circuit/stop.js.map +0 -1
  248. package/dist/src/circuit/circuit/stream-handler.d.ts +0 -40
  249. package/dist/src/circuit/circuit/stream-handler.d.ts.map +0 -1
  250. package/dist/src/circuit/circuit/stream-handler.js +0 -59
  251. package/dist/src/circuit/circuit/stream-handler.js.map +0 -1
  252. package/dist/src/circuit/circuit/utils.d.ts +0 -7
  253. package/dist/src/circuit/circuit/utils.d.ts.map +0 -1
  254. package/dist/src/circuit/circuit/utils.js +0 -43
  255. package/dist/src/circuit/circuit/utils.js.map +0 -1
  256. package/dist/src/circuit/listener.d.ts +0 -9
  257. package/dist/src/circuit/listener.d.ts.map +0 -1
  258. package/dist/src/circuit/listener.js +0 -62
  259. package/dist/src/circuit/listener.js.map +0 -1
  260. package/dist/src/circuit/multicodec.d.ts +0 -2
  261. package/dist/src/circuit/multicodec.d.ts.map +0 -1
  262. package/dist/src/circuit/multicodec.js +0 -2
  263. package/dist/src/circuit/multicodec.js.map +0 -1
  264. package/dist/src/circuit/transport.d.ts +0 -51
  265. package/dist/src/circuit/transport.d.ts.map +0 -1
  266. package/dist/src/circuit/transport.js +0 -223
  267. package/dist/src/circuit/transport.js.map +0 -1
  268. package/dist/src/keychain/cms.d.ts +0 -33
  269. package/dist/src/keychain/cms.d.ts.map +0 -1
  270. package/dist/src/keychain/cms.js +0 -129
  271. package/dist/src/keychain/cms.js.map +0 -1
  272. package/dist/src/keychain/index.d.ts +0 -151
  273. package/dist/src/keychain/index.d.ts.map +0 -1
  274. package/dist/src/keychain/index.js +0 -519
  275. package/dist/src/keychain/index.js.map +0 -1
  276. package/dist/src/keychain/util.d.ts +0 -21
  277. package/dist/src/keychain/util.d.ts.map +0 -1
  278. package/dist/src/keychain/util.js +0 -79
  279. package/dist/src/keychain/util.js.map +0 -1
  280. package/src/circuit/IMPLEMENTATION_NOTES.md +0 -128
  281. package/src/circuit/README.md +0 -111
  282. package/src/circuit/auto-relay.ts +0 -292
  283. package/src/circuit/circuit/hop.ts +0 -220
  284. package/src/circuit/circuit/stop.ts +0 -83
  285. package/src/circuit/circuit/stream-handler.ts +0 -87
  286. package/src/circuit/circuit/utils.ts +0 -44
  287. package/src/circuit/listener.ts +0 -83
  288. package/src/circuit/multicodec.ts +0 -2
  289. package/src/circuit/transport.ts +0 -278
  290. package/src/keychain/README.md +0 -55
  291. package/src/keychain/cms.ts +0 -150
  292. package/src/keychain/doc/private-key.png +0 -0
  293. package/src/keychain/doc/private-key.xml +0 -1
  294. package/src/keychain/index.ts +0 -629
  295. package/src/keychain/util.ts +0 -82
@@ -4,7 +4,7 @@ import { fromNodeAddress } from '@multiformats/multiaddr'
4
4
  import { isBrowser } from 'wherearewe'
5
5
  import isPrivateIp from 'private-ip'
6
6
  import * as pkg from './version.js'
7
- import errCode from 'err-code'
7
+ import { CodeError } from '@libp2p/interfaces/errors'
8
8
  import { codes } from './errors.js'
9
9
  import { isLoopback } from '@libp2p/utils/multiaddr/is-loopback'
10
10
  import type { Startable } from '@libp2p/interfaces/startable'
@@ -15,7 +15,7 @@ import type { AddressManager } from '@libp2p/interface-address-manager'
15
15
  const log = logger('libp2p:nat')
16
16
  const DEFAULT_TTL = 7200
17
17
 
18
- function highPort (min = 1024, max = 65535) {
18
+ function highPort (min = 1024, max = 65535): number {
19
19
  return Math.floor(Math.random() * (max - min + 1) + min)
20
20
  }
21
21
 
@@ -94,22 +94,24 @@ export class NatManager implements Startable {
94
94
  this.gateway = init.gateway
95
95
 
96
96
  if (this.ttl < DEFAULT_TTL) {
97
- throw errCode(new Error(`NatManager ttl should be at least ${DEFAULT_TTL} seconds`), codes.ERR_INVALID_PARAMETERS)
97
+ throw new CodeError(`NatManager ttl should be at least ${DEFAULT_TTL} seconds`, codes.ERR_INVALID_PARAMETERS)
98
98
  }
99
99
  }
100
100
 
101
- isStarted () {
101
+ isStarted (): boolean {
102
102
  return this.started
103
103
  }
104
104
 
105
- start () {}
105
+ start (): void {
106
+ // #TODO: is there a way to remove this? Seems like a hack
107
+ }
106
108
 
107
109
  /**
108
110
  * Attempt to use uPnP to configure port mapping using the current gateway.
109
111
  *
110
112
  * Run after start to ensure the transport manager has all addresses configured.
111
113
  */
112
- afterStart () {
114
+ afterStart (): void {
113
115
  if (isBrowser || !this.enabled || this.started) {
114
116
  return
115
117
  }
@@ -123,7 +125,7 @@ export class NatManager implements Startable {
123
125
  })
124
126
  }
125
127
 
126
- async _start () {
128
+ async _start (): Promise<void> {
127
129
  const addrs = this.components.transportManager.getAddrs()
128
130
 
129
131
  for (const addr of addrs) {
@@ -178,7 +180,7 @@ export class NatManager implements Startable {
178
180
  }
179
181
  }
180
182
 
181
- async _getClient () {
183
+ async _getClient (): Promise<NatAPI> {
182
184
  if (this.client != null) {
183
185
  return this.client
184
186
  }
@@ -196,7 +198,7 @@ export class NatManager implements Startable {
196
198
  /**
197
199
  * Stops the NAT manager
198
200
  */
199
- async stop () {
201
+ async stop (): Promise<void> {
200
202
  if (isBrowser || this.client == null) {
201
203
  return
202
204
  }
@@ -26,18 +26,18 @@ export class PeerRecordUpdater implements Startable {
26
26
  this.update = this.update.bind(this)
27
27
  }
28
28
 
29
- isStarted () {
29
+ isStarted (): boolean {
30
30
  return this.started
31
31
  }
32
32
 
33
- async start () {
33
+ async start (): Promise<void> {
34
34
  this.started = true
35
35
  this.components.transportManager.addEventListener('listener:listening', this.update)
36
36
  this.components.transportManager.addEventListener('listener:close', this.update)
37
37
  this.components.addressManager.addEventListener('change:addresses', this.update)
38
38
  }
39
39
 
40
- async stop () {
40
+ async stop (): Promise<void> {
41
41
  this.started = false
42
42
  this.components.transportManager.removeEventListener('listener:listening', this.update)
43
43
  this.components.transportManager.removeEventListener('listener:close', this.update)
@@ -47,7 +47,7 @@ export class PeerRecordUpdater implements Startable {
47
47
  /**
48
48
  * Create (or update if existing) self peer record and store it in the AddressBook.
49
49
  */
50
- update () {
50
+ update (): void {
51
51
  Promise.resolve()
52
52
  .then(async () => {
53
53
  const peerRecord = new PeerRecord({
@@ -1,5 +1,5 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import errCode from 'err-code'
2
+ import { CodeError } from '@libp2p/interfaces/errors'
3
3
  import { codes, messages } from './errors.js'
4
4
  import {
5
5
  storeAddresses,
@@ -76,14 +76,14 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
76
76
  this._findClosestPeersTask = this._findClosestPeersTask.bind(this)
77
77
  }
78
78
 
79
- isStarted () {
79
+ isStarted (): boolean {
80
80
  return this.started
81
81
  }
82
82
 
83
83
  /**
84
84
  * Start peer routing service.
85
85
  */
86
- async start () {
86
+ async start (): Promise<void> {
87
87
  if (this.started || this.routers.length === 0 || this.timeoutId != null || this.refreshManagerInit.enabled === false) {
88
88
  return
89
89
  }
@@ -98,7 +98,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
98
98
  /**
99
99
  * Recurrent task to find closest peers and add their addresses to the Address Book.
100
100
  */
101
- async _findClosestPeersTask () {
101
+ async _findClosestPeersTask (): Promise<void> {
102
102
  if (this.abortController != null) {
103
103
  // we are already running the query
104
104
  return
@@ -127,7 +127,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
127
127
  /**
128
128
  * Stop peer routing service.
129
129
  */
130
- async stop () {
130
+ async stop (): Promise<void> {
131
131
  clearDelayedInterval(this.timeoutId)
132
132
 
133
133
  // abort query if it is in-flight
@@ -141,11 +141,11 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
141
141
  */
142
142
  async findPeer (id: PeerId, options?: AbortOptions): Promise<PeerInfo> {
143
143
  if (this.routers.length === 0) {
144
- throw errCode(new Error('No peer routers available'), codes.ERR_NO_ROUTERS_AVAILABLE)
144
+ throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE)
145
145
  }
146
146
 
147
147
  if (id.toString() === this.components.peerId.toString()) {
148
- throw errCode(new Error('Should not try to find self'), codes.ERR_FIND_SELF)
148
+ throw new CodeError('Should not try to find self', codes.ERR_FIND_SELF)
149
149
  }
150
150
 
151
151
  const output = await pipe(
@@ -167,7 +167,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
167
167
  return output
168
168
  }
169
169
 
170
- throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
170
+ throw new CodeError(messages.NOT_FOUND, codes.ERR_NOT_FOUND)
171
171
  }
172
172
 
173
173
  /**
@@ -175,7 +175,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable {
175
175
  */
176
176
  async * getClosestPeers (key: Uint8Array, options?: AbortOptions): AsyncIterable<PeerInfo> {
177
177
  if (this.routers.length === 0) {
178
- throw errCode(new Error('No peer routers available'), codes.ERR_NO_ROUTERS_AVAILABLE)
178
+ throw new CodeError('No peer routers available', codes.ERR_NO_ROUTERS_AVAILABLE)
179
179
  }
180
180
 
181
181
  yield * pipe(
package/src/ping/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import errCode from 'err-code'
2
+ import { CodeError } from '@libp2p/interfaces/errors'
3
3
  import { codes } from '../errors.js'
4
4
  import { randomBytes } from '@libp2p/crypto'
5
5
  import { pipe } from 'it-pipe'
@@ -47,7 +47,7 @@ export class PingService implements Startable {
47
47
  this.init = init
48
48
  }
49
49
 
50
- async start () {
50
+ async start (): Promise<void> {
51
51
  await this.components.registrar.handle(this.protocol, this.handleMessage, {
52
52
  maxInboundStreams: this.init.maxInboundStreams,
53
53
  maxOutboundStreams: this.init.maxOutboundStreams
@@ -55,19 +55,19 @@ export class PingService implements Startable {
55
55
  this.started = true
56
56
  }
57
57
 
58
- async stop () {
58
+ async stop (): Promise<void> {
59
59
  await this.components.registrar.unhandle(this.protocol)
60
60
  this.started = false
61
61
  }
62
62
 
63
- isStarted () {
63
+ isStarted (): boolean {
64
64
  return this.started
65
65
  }
66
66
 
67
67
  /**
68
68
  * A handler to register with Libp2p to process ping messages
69
69
  */
70
- handleMessage (data: IncomingStreamData) {
70
+ handleMessage (data: IncomingStreamData): void {
71
71
  const { stream } = data
72
72
 
73
73
  void pipe(stream, stream)
@@ -119,7 +119,7 @@ export class PingService implements Startable {
119
119
  const end = Date.now()
120
120
 
121
121
  if (result == null || !uint8ArrayEquals(data, result.subarray())) {
122
- throw errCode(new Error('Received wrong ping ack'), codes.ERR_WRONG_PING_ACK)
122
+ throw new CodeError('Received wrong ping ack', codes.ERR_WRONG_PING_ACK)
123
123
  }
124
124
 
125
125
  return end - start
@@ -11,7 +11,7 @@ const log = logger('libp2p:pnet')
11
11
  /**
12
12
  * Creates a stream iterable to encrypt messages in a private network
13
13
  */
14
- export function createBoxStream (nonce: Uint8Array, psk: Uint8Array) {
14
+ export function createBoxStream (nonce: Uint8Array, psk: Uint8Array): (source: Source<Uint8Array>) => AsyncIterable<Uint8Array> {
15
15
  const xor = xsalsa20(nonce, psk)
16
16
 
17
17
  return (source: Source<Uint8Array>) => (async function * () {
@@ -38,7 +38,7 @@ export function createUnboxStream (nonce: Uint8Array, psk: Uint8Array) {
38
38
  /**
39
39
  * Decode the version 1 psk from the given Uint8Array
40
40
  */
41
- export function decodeV1PSK (pskBuffer: Uint8Array) {
41
+ export function decodeV1PSK (pskBuffer: Uint8Array): { tag: string | undefined, codecName: string | undefined, psk: Uint8Array } {
42
42
  try {
43
43
  // This should pull from multibase/multicodec to allow for
44
44
  // more encoding flexibility. Ideally we'd consume the codecs
@@ -58,7 +58,7 @@ export function decodeV1PSK (pskBuffer: Uint8Array) {
58
58
  return {
59
59
  tag: pskTag,
60
60
  codecName: codec,
61
- psk: psk
61
+ psk
62
62
  }
63
63
  } catch (err: any) {
64
64
  log.error(err)
package/src/pnet/index.ts CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  import { logger } from '@libp2p/logger'
26
26
  import { pipe } from 'it-pipe'
27
- import errCode from 'err-code'
27
+ import { CodeError } from '@libp2p/interfaces/errors'
28
28
  import { duplexPair } from 'it-pair/duplex'
29
29
  import { randomBytes } from '@libp2p/crypto'
30
30
  import * as Errors from './errors.js'
@@ -81,7 +81,7 @@ class PreSharedKeyConnectionProtector implements ConnectionProtector {
81
81
  }
82
82
 
83
83
  if (connection == null) {
84
- throw errCode(new Error(Errors.NO_HANDSHAKE_CONNECTION), codes.ERR_INVALID_PARAMETERS)
84
+ throw new CodeError(Errors.NO_HANDSHAKE_CONNECTION, codes.ERR_INVALID_PARAMETERS)
85
85
  }
86
86
 
87
87
  // Exchange nonces
@@ -94,7 +94,7 @@ class PreSharedKeyConnectionProtector implements ConnectionProtector {
94
94
  const result = await shake.reader.next(NONCE_LENGTH)
95
95
 
96
96
  if (result.value == null) {
97
- throw errCode(new Error(Errors.STREAM_ENDED), codes.ERR_INVALID_PARAMETERS)
97
+ throw new CodeError(Errors.STREAM_ENDED, codes.ERR_INVALID_PARAMETERS)
98
98
  }
99
99
 
100
100
  const remoteNonce = result.value.slice()
@@ -8,7 +8,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
8
8
  * @param {Uint8Array | NodeJS.WriteStream} bytes - An object to write the psk into
9
9
  * @returns {void}
10
10
  */
11
- export function generateKey (bytes: Uint8Array | NodeJS.WriteStream) {
11
+ export function generateKey (bytes: Uint8Array | NodeJS.WriteStream): void {
12
12
  const psk = uint8ArrayToString(randomBytes(KEY_LENGTH), 'base16')
13
13
  const key = uint8ArrayFromString('/key/swarm/psk/1.0.0/\n/base16/\n' + psk)
14
14
 
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '@libp2p/interfaces/events'
2
2
  import type { PeerId } from '@libp2p/interface-peer-id'
3
3
  import type { PublishResult, PubSub, PubSubEvents, StrictNoSign, StrictSign, TopicValidatorFn } from '@libp2p/interface-pubsub'
4
- import errCode from 'err-code'
4
+ import { CodeError } from '@libp2p/interfaces/errors'
5
5
  import { messages, codes } from '../errors.js'
6
6
 
7
7
  export class DummyPubSub extends EventEmitter<PubSubEvents> implements PubSub {
@@ -20,34 +20,34 @@ export class DummyPubSub extends EventEmitter<PubSubEvents> implements PubSub {
20
20
  }
21
21
 
22
22
  get globalSignaturePolicy (): typeof StrictSign | typeof StrictNoSign {
23
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
23
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
24
24
  }
25
25
 
26
26
  get multicodecs (): string[] {
27
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
27
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
28
28
  }
29
29
 
30
30
  getPeers (): PeerId[] {
31
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
31
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
32
32
  }
33
33
 
34
34
  getTopics (): string[] {
35
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
35
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
36
36
  }
37
37
 
38
38
  subscribe (): void {
39
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
39
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
40
40
  }
41
41
 
42
42
  unsubscribe (): void {
43
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
43
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
44
44
  }
45
45
 
46
46
  getSubscribers (): PeerId[] {
47
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
47
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
48
48
  }
49
49
 
50
50
  async publish (): Promise<PublishResult> {
51
- throw errCode(new Error(messages.PUBSUB_DISABLED), codes.ERR_PUBSUB_DISABLED)
51
+ throw new CodeError(messages.PUBSUB_DISABLED, codes.ERR_PUBSUB_DISABLED)
52
52
  }
53
53
  }
package/src/registrar.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import errCode from 'err-code'
2
+ import { CodeError } from '@libp2p/interfaces/errors'
3
3
  import { codes } from './errors.js'
4
4
  import { isTopology, StreamHandlerOptions, StreamHandlerRecord } from '@libp2p/interface-registrar'
5
5
  import merge from 'merge-options'
@@ -44,24 +44,24 @@ export class DefaultRegistrar implements Registrar {
44
44
  this.components.peerStore.addEventListener('change:protocols', this._onProtocolChange)
45
45
  }
46
46
 
47
- getProtocols () {
47
+ getProtocols (): string[] {
48
48
  return Array.from(new Set<string>([
49
49
  ...this.topologies.keys(),
50
50
  ...this.handlers.keys()
51
51
  ])).sort()
52
52
  }
53
53
 
54
- getHandler (protocol: string) {
54
+ getHandler (protocol: string): StreamHandlerRecord {
55
55
  const handler = this.handlers.get(protocol)
56
56
 
57
57
  if (handler == null) {
58
- throw errCode(new Error(`No handler registered for protocol ${protocol}`), codes.ERR_NO_HANDLER_FOR_PROTOCOL)
58
+ throw new CodeError(`No handler registered for protocol ${protocol}`, codes.ERR_NO_HANDLER_FOR_PROTOCOL)
59
59
  }
60
60
 
61
61
  return handler
62
62
  }
63
63
 
64
- getTopologies (protocol: string) {
64
+ getTopologies (protocol: string): Topology[] {
65
65
  const topologies = this.topologies.get(protocol)
66
66
 
67
67
  if (topologies == null) {
@@ -78,7 +78,7 @@ export class DefaultRegistrar implements Registrar {
78
78
  */
79
79
  async handle (protocol: string, handler: StreamHandler, opts?: StreamHandlerOptions): Promise<void> {
80
80
  if (this.handlers.has(protocol)) {
81
- throw errCode(new Error(`Handler already registered for protocol ${protocol}`), codes.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED)
81
+ throw new CodeError(`Handler already registered for protocol ${protocol}`, codes.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED)
82
82
  }
83
83
 
84
84
  const options = merge.bind({ ignoreUndefined: true })({
@@ -99,7 +99,7 @@ export class DefaultRegistrar implements Registrar {
99
99
  * Removes the handler for each protocol. The protocol
100
100
  * will no longer be supported on streams.
101
101
  */
102
- async unhandle (protocols: string | string[]) {
102
+ async unhandle (protocols: string | string[]): Promise<void> {
103
103
  const protocolList = Array.isArray(protocols) ? protocols : [protocols]
104
104
 
105
105
  protocolList.forEach(protocol => {
@@ -116,7 +116,7 @@ export class DefaultRegistrar implements Registrar {
116
116
  async register (protocol: string, topology: Topology): Promise<string> {
117
117
  if (!isTopology(topology)) {
118
118
  log.error('topology must be an instance of interfaces/topology')
119
- throw errCode(new Error('topology must be an instance of interfaces/topology'), codes.ERR_INVALID_PARAMETERS)
119
+ throw new CodeError('topology must be an instance of interfaces/topology', codes.ERR_INVALID_PARAMETERS)
120
120
  }
121
121
 
122
122
  // Create topology
@@ -140,7 +140,7 @@ export class DefaultRegistrar implements Registrar {
140
140
  /**
141
141
  * Unregister topology
142
142
  */
143
- unregister (id: string) {
143
+ unregister (id: string): void {
144
144
  for (const [protocol, topologies] of this.topologies.entries()) {
145
145
  if (topologies.has(id)) {
146
146
  topologies.delete(id)
@@ -155,7 +155,7 @@ export class DefaultRegistrar implements Registrar {
155
155
  /**
156
156
  * Remove a disconnected peer from the record
157
157
  */
158
- _onDisconnect (evt: CustomEvent<Connection>) {
158
+ _onDisconnect (evt: CustomEvent<Connection>): void {
159
159
  const connection = evt.detail
160
160
 
161
161
  void this.components.peerStore.protoBook.get(connection.remotePeer)
@@ -182,7 +182,7 @@ export class DefaultRegistrar implements Registrar {
182
182
  * On peer connected if we already have their protocols. Usually used for reconnects
183
183
  * as change:protocols event won't be emitted due to identical protocols.
184
184
  */
185
- _onConnect (evt: CustomEvent<Connection>) {
185
+ _onConnect (evt: CustomEvent<Connection>): void {
186
186
  const connection = evt.detail
187
187
 
188
188
  void this.components.peerStore.protoBook.get(connection.remotePeer)
@@ -208,7 +208,7 @@ export class DefaultRegistrar implements Registrar {
208
208
  /**
209
209
  * Check if a new peer support the multicodecs for this topology
210
210
  */
211
- _onProtocolChange (evt: CustomEvent<PeerProtocolsChangeData>) {
211
+ _onProtocolChange (evt: CustomEvent<PeerProtocolsChangeData>): void {
212
212
  const { peerId, protocols, oldProtocols } = evt.detail
213
213
  const removed = oldProtocols.filter(protocol => !protocols.includes(protocol))
214
214
  const added = protocols.filter(protocol => !oldProtocols.includes(protocol))
@@ -1,7 +1,6 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import pSettle from 'p-settle'
3
2
  import { codes } from './errors.js'
4
- import errCode from 'err-code'
3
+ import { CodeError } from '@libp2p/interfaces/errors'
5
4
  import { FaultTolerance } from '@libp2p/interface-transport'
6
5
  import type { Listener, Transport, TransportManager, TransportManagerEvents, Upgrader } from '@libp2p/interface-transport'
7
6
  import type { Multiaddr } from '@multiformats/multiaddr'
@@ -48,15 +47,15 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
48
47
  /**
49
48
  * Adds a `Transport` to the manager
50
49
  */
51
- add (transport: Transport) {
50
+ add (transport: Transport): void {
52
51
  const tag = transport[Symbol.toStringTag]
53
52
 
54
53
  if (tag == null) {
55
- throw errCode(new Error('Transport must have a valid tag'), codes.ERR_INVALID_KEY)
54
+ throw new CodeError('Transport must have a valid tag', codes.ERR_INVALID_KEY)
56
55
  }
57
56
 
58
57
  if (this.transports.has(tag)) {
59
- throw errCode(new Error('There is already a transport with this tag'), codes.ERR_DUPLICATE_TRANSPORT)
58
+ throw new CodeError(`There is already a transport with the tag ${tag}`, codes.ERR_DUPLICATE_TRANSPORT)
60
59
  }
61
60
 
62
61
  log('adding transport %s', tag)
@@ -68,11 +67,11 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
68
67
  }
69
68
  }
70
69
 
71
- isStarted () {
70
+ isStarted (): boolean {
72
71
  return this.started
73
72
  }
74
73
 
75
- async start () {
74
+ async start (): Promise<void> {
76
75
  // Listen on the provided transports for the provided addresses
77
76
  const addrs = this.components.addressManager.getListenAddrs()
78
77
 
@@ -84,7 +83,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
84
83
  /**
85
84
  * Stops all listeners
86
85
  */
87
- async stop () {
86
+ async stop (): Promise<void> {
88
87
  const tasks = []
89
88
  for (const [key, listeners] of this.listeners) {
90
89
  log('closing listeners for %s', key)
@@ -115,7 +114,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
115
114
  const transport = this.transportForMultiaddr(ma)
116
115
 
117
116
  if (transport == null) {
118
- throw errCode(new Error(`No transport available for address ${String(ma)}`), codes.ERR_TRANSPORT_UNAVAILABLE)
117
+ throw new CodeError(`No transport available for address ${String(ma)}`, codes.ERR_TRANSPORT_UNAVAILABLE)
119
118
  }
120
119
 
121
120
  try {
@@ -148,14 +147,14 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
148
147
  /**
149
148
  * Returns all the transports instances
150
149
  */
151
- getTransports () {
150
+ getTransports (): Transport[] {
152
151
  return Array.of(...this.transports.values())
153
152
  }
154
153
 
155
154
  /**
156
155
  * Finds a transport that matches the given Multiaddr
157
156
  */
158
- transportForMultiaddr (ma: Multiaddr) {
157
+ transportForMultiaddr (ma: Multiaddr): Transport | undefined {
159
158
  for (const transport of this.transports.values()) {
160
159
  const addrs = transport.filter([ma])
161
160
 
@@ -168,7 +167,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
168
167
  /**
169
168
  * Starts listeners for each listen Multiaddr
170
169
  */
171
- async listen (addrs: Multiaddr[]) {
170
+ async listen (addrs: Multiaddr[]): Promise<void> {
172
171
  if (addrs == null || addrs.length === 0) {
173
172
  log('no addresses were provided for listening, this node is dial only')
174
173
  return
@@ -218,14 +217,14 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
218
217
  continue
219
218
  }
220
219
 
221
- const results = await pSettle(tasks)
220
+ const results = await Promise.allSettled(tasks)
222
221
  // If we are listening on at least 1 address, succeed.
223
222
  // TODO: we should look at adding a retry (`p-retry`) here to better support
224
223
  // listening on remote addresses as they may be offline. We could then potentially
225
224
  // just wait for any (`p-any`) listener to succeed on each transport before returning
226
- const isListening = results.find(r => r.isFulfilled)
225
+ const isListening = results.find(r => r.status === 'fulfilled')
227
226
  if ((isListening == null) && this.faultTolerance !== FaultTolerance.NO_FATAL) {
228
- throw errCode(new Error(`Transport (${key}) could not listen on any available address`), codes.ERR_NO_VALID_ADDRESSES)
227
+ throw new CodeError(`Transport (${key}) could not listen on any available address`, codes.ERR_NO_VALID_ADDRESSES)
229
228
  }
230
229
  }
231
230
 
@@ -234,7 +233,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
234
233
  if (couldNotListen.length === this.transports.size) {
235
234
  const message = `no valid addresses were provided for transports [${couldNotListen.join(', ')}]`
236
235
  if (this.faultTolerance === FaultTolerance.FATAL_ALL) {
237
- throw errCode(new Error(message), codes.ERR_NO_VALID_ADDRESSES)
236
+ throw new CodeError(message, codes.ERR_NO_VALID_ADDRESSES)
238
237
  }
239
238
  log(`libp2p in dial mode only: ${message}`)
240
239
  }
@@ -244,7 +243,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
244
243
  * Removes the given transport from the manager.
245
244
  * If a transport has any running listeners, they will be closed.
246
245
  */
247
- async remove (key: string) {
246
+ async remove (key: string): Promise<void> {
248
247
  log('removing %s', key)
249
248
 
250
249
  // Close any running listeners
@@ -262,7 +261,7 @@ export class DefaultTransportManager extends EventEmitter<TransportManagerEvents
262
261
  *
263
262
  * @async
264
263
  */
265
- async removeAll () {
264
+ async removeAll (): Promise<void> {
266
265
  const tasks = []
267
266
  for (const key of this.transports.keys()) {
268
267
  tasks.push(this.remove(key))