libp2p 0.36.0 → 0.36.2-1473044

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 (415) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +54 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +51 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +72 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +190 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +93 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/index.d.ts +79 -144
  64. package/dist/src/connection-manager/index.d.ts.map +1 -1
  65. package/dist/src/connection-manager/index.js +295 -0
  66. package/dist/src/connection-manager/index.js.map +1 -0
  67. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  68. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  69. package/dist/src/connection-manager/latency-monitor.js +220 -0
  70. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  71. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  72. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  73. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  74. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  75. package/dist/src/constants.d.ts +22 -10
  76. package/dist/src/constants.d.ts.map +1 -1
  77. package/dist/src/constants.js +27 -0
  78. package/dist/src/constants.js.map +1 -0
  79. package/dist/src/content-routing/index.d.ts +26 -81
  80. package/dist/src/content-routing/index.d.ts.map +1 -1
  81. package/dist/src/content-routing/index.js +99 -0
  82. package/dist/src/content-routing/index.js.map +1 -0
  83. package/dist/src/content-routing/utils.d.ts +6 -49
  84. package/dist/src/content-routing/utils.d.ts.map +1 -1
  85. package/dist/src/content-routing/utils.js +42 -0
  86. package/dist/src/content-routing/utils.js.map +1 -0
  87. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  88. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  89. package/dist/src/dht/dht-content-routing.js +32 -0
  90. package/dist/src/dht/dht-content-routing.js.map +1 -0
  91. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  92. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  93. package/dist/src/dht/dht-peer-routing.js +26 -0
  94. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  95. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  96. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  97. package/dist/src/dialer/auto-dialer.js +24 -0
  98. package/dist/src/dialer/auto-dialer.js.map +1 -0
  99. package/dist/src/dialer/dial-request.d.ts +18 -46
  100. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  101. package/dist/src/dialer/dial-request.js +83 -0
  102. package/dist/src/dialer/dial-request.js.map +1 -0
  103. package/dist/src/dialer/index.d.ts +41 -148
  104. package/dist/src/dialer/index.d.ts.map +1 -1
  105. package/dist/src/dialer/index.js +280 -0
  106. package/dist/src/dialer/index.js.map +1 -0
  107. package/dist/src/errors.d.ts +68 -63
  108. package/dist/src/errors.d.ts.map +1 -1
  109. package/dist/src/errors.js +73 -0
  110. package/dist/src/errors.js.map +1 -0
  111. package/dist/src/fetch/constants.d.ts +1 -1
  112. package/dist/src/fetch/constants.d.ts.map +1 -1
  113. package/dist/src/fetch/constants.js +3 -0
  114. package/dist/src/fetch/constants.js.map +1 -0
  115. package/dist/src/fetch/index.d.ts +30 -49
  116. package/dist/src/fetch/index.d.ts.map +1 -1
  117. package/dist/src/fetch/index.js +129 -0
  118. package/dist/src/fetch/index.js.map +1 -0
  119. package/dist/src/fetch/pb/proto.d.ts +26 -0
  120. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  121. package/dist/src/fetch/pb/proto.js +44 -0
  122. package/dist/src/fetch/pb/proto.js.map +1 -0
  123. package/dist/src/get-peer.d.ts +4 -11
  124. package/dist/src/get-peer.d.ts.map +1 -1
  125. package/dist/src/get-peer.js +43 -0
  126. package/dist/src/get-peer.js.map +1 -0
  127. package/dist/src/identify/consts.d.ts +9 -9
  128. package/dist/src/identify/consts.d.ts.map +1 -1
  129. package/dist/src/identify/consts.js +11 -0
  130. package/dist/src/identify/consts.js.map +1 -0
  131. package/dist/src/identify/index.d.ts +42 -96
  132. package/dist/src/identify/index.d.ts.map +1 -1
  133. package/dist/src/identify/index.js +322 -0
  134. package/dist/src/identify/index.js.map +1 -0
  135. package/dist/src/identify/pb/message.d.ts +15 -0
  136. package/dist/src/identify/pb/message.d.ts.map +1 -0
  137. package/dist/src/identify/pb/message.js +24 -0
  138. package/dist/src/identify/pb/message.js.map +1 -0
  139. package/dist/src/index.d.ts +162 -581
  140. package/dist/src/index.d.ts.map +1 -1
  141. package/dist/src/index.js +9 -0
  142. package/dist/src/index.js.map +1 -0
  143. package/dist/src/insecure/index.d.ts +9 -0
  144. package/dist/src/insecure/index.d.ts.map +1 -0
  145. package/dist/src/insecure/index.js +81 -0
  146. package/dist/src/insecure/index.js.map +1 -0
  147. package/dist/src/insecure/pb/proto.d.ts +28 -0
  148. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  149. package/dist/src/insecure/pb/proto.js +46 -0
  150. package/dist/src/insecure/pb/proto.js.map +1 -0
  151. package/dist/src/keychain/cms.d.ts +6 -14
  152. package/dist/src/keychain/cms.d.ts.map +1 -1
  153. package/dist/src/keychain/cms.js +129 -0
  154. package/dist/src/keychain/cms.js.map +1 -0
  155. package/dist/src/keychain/index.d.ts +61 -81
  156. package/dist/src/keychain/index.d.ts.map +1 -1
  157. package/dist/src/keychain/index.js +493 -0
  158. package/dist/src/keychain/index.js.map +1 -0
  159. package/dist/src/keychain/util.d.ts +3 -6
  160. package/dist/src/keychain/util.d.ts.map +1 -1
  161. package/dist/src/keychain/util.js +79 -0
  162. package/dist/src/keychain/util.js.map +1 -0
  163. package/dist/src/libp2p.d.ts +78 -0
  164. package/dist/src/libp2p.d.ts.map +1 -0
  165. package/dist/src/libp2p.js +375 -0
  166. package/dist/src/libp2p.js.map +1 -0
  167. package/dist/src/metrics/index.d.ts +47 -104
  168. package/dist/src/metrics/index.d.ts.map +1 -1
  169. package/dist/src/metrics/index.js +231 -0
  170. package/dist/src/metrics/index.js.map +1 -0
  171. package/dist/src/metrics/moving-average.d.ts +14 -0
  172. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  173. package/dist/src/metrics/moving-average.js +40 -0
  174. package/dist/src/metrics/moving-average.js.map +1 -0
  175. package/dist/src/metrics/stats.d.ts +41 -93
  176. package/dist/src/metrics/stats.d.ts.map +1 -1
  177. package/dist/src/metrics/stats.js +183 -0
  178. package/dist/src/metrics/stats.js.map +1 -0
  179. package/dist/src/nat-manager.d.ts +42 -99
  180. package/dist/src/nat-manager.d.ts.map +1 -1
  181. package/dist/src/nat-manager.js +114 -0
  182. package/dist/src/nat-manager.js.map +1 -0
  183. package/dist/src/peer-record-updater.d.ts +15 -0
  184. package/dist/src/peer-record-updater.d.ts.map +1 -0
  185. package/dist/src/peer-record-updater.js +44 -0
  186. package/dist/src/peer-record-updater.js.map +1 -0
  187. package/dist/src/peer-routing.d.ts +39 -84
  188. package/dist/src/peer-routing.d.ts.map +1 -1
  189. package/dist/src/peer-routing.js +108 -0
  190. package/dist/src/peer-routing.js.map +1 -0
  191. package/dist/src/ping/constants.d.ts +4 -4
  192. package/dist/src/ping/constants.d.ts.map +1 -1
  193. package/dist/src/ping/constants.js +5 -0
  194. package/dist/src/ping/constants.js.map +1 -0
  195. package/dist/src/ping/index.d.ts +26 -33
  196. package/dist/src/ping/index.d.ts.map +1 -1
  197. package/dist/src/ping/index.js +56 -0
  198. package/dist/src/ping/index.js.map +1 -0
  199. package/dist/src/pnet/crypto.d.ts +15 -5
  200. package/dist/src/pnet/crypto.d.ts.map +1 -1
  201. package/dist/src/pnet/crypto.js +60 -0
  202. package/dist/src/pnet/crypto.js.map +1 -0
  203. package/dist/src/pnet/errors.d.ts +5 -5
  204. package/dist/src/pnet/errors.d.ts.map +1 -1
  205. package/dist/src/pnet/errors.js +6 -0
  206. package/dist/src/pnet/errors.js.map +1 -0
  207. package/dist/src/pnet/index.d.ts +11 -20
  208. package/dist/src/pnet/index.d.ts.map +1 -1
  209. package/dist/src/pnet/index.js +66 -0
  210. package/dist/src/pnet/index.js.map +1 -0
  211. package/dist/src/pnet/key-generator.d.ts +3 -7
  212. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  213. package/dist/src/pnet/key-generator.js +25 -0
  214. package/dist/src/pnet/key-generator.js.map +1 -0
  215. package/dist/src/registrar.d.ts +27 -65
  216. package/dist/src/registrar.d.ts.map +1 -1
  217. package/dist/src/registrar.js +159 -0
  218. package/dist/src/registrar.js.map +1 -0
  219. package/dist/src/transport-manager.d.ts +34 -82
  220. package/dist/src/transport-manager.d.ts.map +1 -1
  221. package/dist/src/transport-manager.js +223 -0
  222. package/dist/src/transport-manager.js.map +1 -0
  223. package/dist/src/upgrader.d.ts +49 -129
  224. package/dist/src/upgrader.d.ts.map +1 -1
  225. package/dist/src/upgrader.js +402 -0
  226. package/dist/src/upgrader.js.map +1 -0
  227. package/dist/src/version.d.ts +3 -0
  228. package/dist/src/version.d.ts.map +1 -0
  229. package/dist/src/version.js +3 -0
  230. package/dist/src/version.js.map +1 -0
  231. package/package.json +150 -197
  232. package/src/address-manager/index.ts +129 -0
  233. package/src/circuit/README.md +16 -11
  234. package/src/circuit/auto-relay.ts +284 -0
  235. package/src/circuit/circuit/hop.ts +211 -0
  236. package/src/circuit/circuit/stop.ts +78 -0
  237. package/src/circuit/circuit/stream-handler.ts +86 -0
  238. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  239. package/src/circuit/constants.ts +31 -0
  240. package/src/circuit/index.ts +120 -0
  241. package/src/circuit/{listener.js → listener.ts} +21 -27
  242. package/src/circuit/multicodec.ts +2 -0
  243. package/src/circuit/{protocol → pb}/index.proto +1 -1
  244. package/src/circuit/pb/index.ts +88 -0
  245. package/src/circuit/transport.ts +216 -0
  246. package/src/circuit/utils.ts +12 -0
  247. package/src/config.ts +101 -0
  248. package/src/connection-manager/auto-dialler.ts +154 -0
  249. package/src/connection-manager/index.ts +422 -0
  250. package/src/connection-manager/latency-monitor.ts +319 -0
  251. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  252. package/src/constants.ts +31 -0
  253. package/src/content-routing/index.ts +143 -0
  254. package/src/content-routing/utils.ts +54 -0
  255. package/src/dht/dht-content-routing.ts +43 -0
  256. package/src/dht/dht-peer-routing.ts +35 -0
  257. package/src/dialer/auto-dialer.ts +40 -0
  258. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  259. package/src/dialer/index.ts +371 -0
  260. package/src/errors.ts +71 -0
  261. package/src/fetch/README.md +1 -1
  262. package/src/fetch/constants.ts +3 -0
  263. package/src/fetch/index.ts +167 -0
  264. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  265. package/src/fetch/pb/proto.ts +58 -0
  266. package/src/get-peer.ts +57 -0
  267. package/src/identify/consts.ts +13 -0
  268. package/src/identify/index.ts +445 -0
  269. package/src/identify/{message.proto → pb/message.proto} +0 -0
  270. package/src/identify/pb/message.ts +36 -0
  271. package/src/index.ts +242 -0
  272. package/src/insecure/index.ts +101 -0
  273. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/insecure/pb/proto.ts +61 -0
  275. package/src/keychain/{cms.js → cms.ts} +62 -58
  276. package/src/keychain/index.ts +588 -0
  277. package/src/keychain/{util.js → util.ts} +7 -17
  278. package/src/libp2p.ts +513 -0
  279. package/src/metrics/index.ts +310 -0
  280. package/src/metrics/moving-average.ts +53 -0
  281. package/src/metrics/stats.ts +238 -0
  282. package/src/nat-manager.ts +194 -0
  283. package/src/peer-record-updater.ts +55 -0
  284. package/src/peer-routing.ts +185 -0
  285. package/src/ping/README.md +1 -1
  286. package/src/ping/constants.ts +5 -0
  287. package/src/ping/index.ts +83 -0
  288. package/src/pnet/README.md +2 -2
  289. package/src/pnet/crypto.ts +67 -0
  290. package/src/pnet/errors.ts +5 -0
  291. package/src/pnet/index.ts +95 -0
  292. package/src/pnet/key-generator.ts +28 -0
  293. package/src/registrar.ts +205 -0
  294. package/src/transport-manager.ts +279 -0
  295. package/src/upgrader.ts +499 -0
  296. package/src/version.ts +3 -0
  297. package/dist/index.min.js +0 -55
  298. package/dist/src/circuit/protocol/index.d.ts +0 -173
  299. package/dist/src/fetch/proto.d.ts +0 -134
  300. package/dist/src/identify/message.d.ts +0 -95
  301. package/dist/src/insecure/plaintext.d.ts +0 -12
  302. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  303. package/dist/src/insecure/proto.d.ts +0 -128
  304. package/dist/src/metrics/old-peers.d.ts +0 -3
  305. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  306. package/dist/src/metrics/tracked-map.d.ts +0 -8
  307. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  308. package/dist/src/peer-store/address-book.d.ts +0 -67
  309. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  310. package/dist/src/peer-store/index.d.ts +0 -58
  311. package/dist/src/peer-store/index.d.ts.map +0 -1
  312. package/dist/src/peer-store/key-book.d.ts +0 -40
  313. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  314. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  315. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  316. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  317. package/dist/src/peer-store/proto-book.d.ts +0 -43
  318. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  319. package/dist/src/peer-store/store.d.ts +0 -73
  320. package/dist/src/peer-store/store.d.ts.map +0 -1
  321. package/dist/src/peer-store/types.d.ts +0 -202
  322. package/dist/src/peer-store/types.d.ts.map +0 -1
  323. package/dist/src/ping/util.d.ts +0 -5
  324. package/dist/src/ping/util.d.ts.map +0 -1
  325. package/dist/src/pubsub-adapter.d.ts +0 -22
  326. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  327. package/dist/src/record/envelope/envelope.d.ts +0 -77
  328. package/dist/src/record/envelope/index.d.ts +0 -80
  329. package/dist/src/record/envelope/index.d.ts.map +0 -1
  330. package/dist/src/record/peer-record/consts.d.ts +0 -4
  331. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  332. package/dist/src/record/peer-record/index.d.ts +0 -60
  333. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  334. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  335. package/dist/src/record/utils.d.ts +0 -12
  336. package/dist/src/record/utils.d.ts.map +0 -1
  337. package/dist/src/types.d.ts +0 -90
  338. package/dist/src/types.d.ts.map +0 -1
  339. package/src/address-manager/index.js +0 -96
  340. package/src/circuit/auto-relay.js +0 -302
  341. package/src/circuit/circuit/hop.js +0 -205
  342. package/src/circuit/circuit/stop.js +0 -81
  343. package/src/circuit/circuit/stream-handler.js +0 -94
  344. package/src/circuit/constants.js +0 -12
  345. package/src/circuit/index.js +0 -102
  346. package/src/circuit/multicodec.js +0 -5
  347. package/src/circuit/protocol/index.d.ts +0 -173
  348. package/src/circuit/protocol/index.js +0 -530
  349. package/src/circuit/transport.js +0 -229
  350. package/src/circuit/utils.js +0 -17
  351. package/src/config.js +0 -114
  352. package/src/connection-manager/auto-dialler.js +0 -132
  353. package/src/connection-manager/index.js +0 -363
  354. package/src/connection-manager/latency-monitor.js +0 -264
  355. package/src/constants.js +0 -18
  356. package/src/content-routing/index.js +0 -163
  357. package/src/content-routing/utils.js +0 -89
  358. package/src/dht/dht-content-routing.js +0 -44
  359. package/src/dht/dht-peer-routing.js +0 -51
  360. package/src/dialer/index.js +0 -376
  361. package/src/errors.js +0 -66
  362. package/src/fetch/constants.js +0 -6
  363. package/src/fetch/index.js +0 -159
  364. package/src/fetch/proto.d.ts +0 -134
  365. package/src/fetch/proto.js +0 -333
  366. package/src/get-peer.js +0 -49
  367. package/src/identify/consts.js +0 -15
  368. package/src/identify/index.js +0 -384
  369. package/src/identify/message.d.ts +0 -95
  370. package/src/identify/message.js +0 -328
  371. package/src/index.js +0 -811
  372. package/src/insecure/plaintext.js +0 -95
  373. package/src/insecure/proto.d.ts +0 -128
  374. package/src/insecure/proto.js +0 -371
  375. package/src/keychain/index.js +0 -561
  376. package/src/metrics/index.js +0 -290
  377. package/src/metrics/old-peers.js +0 -16
  378. package/src/metrics/stats.js +0 -270
  379. package/src/metrics/tracked-map.js +0 -94
  380. package/src/nat-manager.js +0 -197
  381. package/src/peer-routing.js +0 -176
  382. package/src/peer-store/README.md +0 -145
  383. package/src/peer-store/address-book.js +0 -382
  384. package/src/peer-store/index.js +0 -121
  385. package/src/peer-store/key-book.js +0 -141
  386. package/src/peer-store/metadata-book.js +0 -250
  387. package/src/peer-store/pb/peer.d.ts +0 -222
  388. package/src/peer-store/pb/peer.js +0 -643
  389. package/src/peer-store/pb/peer.proto +0 -31
  390. package/src/peer-store/proto-book.js +0 -237
  391. package/src/peer-store/store.js +0 -263
  392. package/src/peer-store/types.ts +0 -245
  393. package/src/ping/constants.js +0 -8
  394. package/src/ping/index.js +0 -85
  395. package/src/ping/util.js +0 -18
  396. package/src/pnet/crypto.js +0 -84
  397. package/src/pnet/errors.js +0 -7
  398. package/src/pnet/index.js +0 -86
  399. package/src/pnet/key-generator.js +0 -33
  400. package/src/pubsub-adapter.js +0 -61
  401. package/src/record/README.md +0 -130
  402. package/src/record/envelope/envelope.d.ts +0 -77
  403. package/src/record/envelope/envelope.js +0 -243
  404. package/src/record/envelope/envelope.proto +0 -19
  405. package/src/record/envelope/index.js +0 -183
  406. package/src/record/peer-record/consts.js +0 -14
  407. package/src/record/peer-record/index.js +0 -113
  408. package/src/record/peer-record/peer-record.d.ts +0 -133
  409. package/src/record/peer-record/peer-record.js +0 -367
  410. package/src/record/peer-record/peer-record.proto +0 -18
  411. package/src/record/utils.js +0 -25
  412. package/src/registrar.js +0 -127
  413. package/src/transport-manager.js +0 -269
  414. package/src/types.ts +0 -98
  415. package/src/upgrader.js +0 -492
package/package.json CHANGED
@@ -1,127 +1,148 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.36.0",
3
+ "version": "0.36.2-1473044",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
- "leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
6
- "main": "src/index.js",
7
- "types": "dist/src/index.d.ts",
8
- "typesVersions": {
9
- "*": {
10
- "src/*": [
11
- "dist/src/*",
12
- "dist/src/*/index"
13
- ]
14
- }
15
- },
16
- "files": [
17
- "dist",
18
- "src"
19
- ],
20
- "scripts": {
21
- "lint": "aegir lint",
22
- "build": "aegir build",
23
- "build:proto": "npm run build:proto:circuit && npm run build:proto:fetch && npm run build:proto:identify && npm run build:proto:plaintext && npm run build:proto:address-book && npm run build:proto:proto-book && npm run build:proto:peer && npm run build:proto:peer-record && npm run build:proto:envelope",
24
- "build:proto:circuit": "pbjs -t static-module -w commonjs -r libp2p-circuit --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/circuit/protocol/index.js ./src/circuit/protocol/index.proto",
25
- "build:proto:fetch": "pbjs -t static-module -w commonjs -r libp2p-fetch --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/fetch/proto.js ./src/fetch/proto.proto",
26
- "build:proto:identify": "pbjs -t static-module -w commonjs -r libp2p-identify --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/identify/message.js ./src/identify/message.proto",
27
- "build:proto:plaintext": "pbjs -t static-module -w commonjs -r libp2p-plaintext --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/insecure/proto.js ./src/insecure/proto.proto",
28
- "build:proto:peer": "pbjs -t static-module -w commonjs -r libp2p-peer --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/peer-store/pb/peer.js ./src/peer-store/pb/peer.proto",
29
- "build:proto:peer-record": "pbjs -t static-module -w commonjs -r libp2p-peer-record --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/record/peer-record/peer-record.js ./src/record/peer-record/peer-record.proto",
30
- "build:proto:envelope": "pbjs -t static-module -w commonjs -r libp2p-envelope --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/record/envelope/envelope.js ./src/record/envelope/envelope.proto",
31
- "build:proto-types": "npm run build:proto-types:circuit && npm run build:proto-types:fetch && npm run build:proto-types:identify && npm run build:proto-types:plaintext && npm run build:proto-types:address-book && npm run build:proto-types:proto-book && npm run build:proto-types:peer && npm run build:proto-types:peer-record && npm run build:proto-types:envelope",
32
- "build:proto-types:circuit": "pbts -o src/circuit/protocol/index.d.ts src/circuit/protocol/index.js",
33
- "build:proto-types:fetch": "pbts -o src/fetch/proto.d.ts src/fetch/proto.js",
34
- "build:proto-types:identify": "pbts -o src/identify/message.d.ts src/identify/message.js",
35
- "build:proto-types:plaintext": "pbts -o src/insecure/proto.d.ts src/insecure/proto.js",
36
- "build:proto-types:peer": "pbts -o src/peer-store/pb/peer.d.ts src/peer-store/pb/peer.js",
37
- "build:proto-types:peer-record": "pbts -o src/record/peer-record/peer-record.d.ts src/record/peer-record/peer-record.js",
38
- "build:proto-types:envelope": "pbts -o src/record/envelope/envelope.d.ts src/record/envelope/envelope.js",
39
- "test": "aegir test",
40
- "test:ts": "aegir build --no-bundle && npm run test --prefix test/ts-use",
41
- "test:node": "aegir test -t node -f \"./test/**/*.{node,spec}.js\"",
42
- "test:browser": "aegir test -t browser",
43
- "test:examples": "cd examples && npm run test:all",
44
- "test:interop": "LIBP2P_JS=$PWD npx aegir test -t node -f ./node_modules/libp2p-interop/test/*",
45
- "prepare": "npm run build",
46
- "coverage": "nyc --reporter=text --reporter=lcov npm run test:node"
47
- },
5
+ "license": "Apache-2.0 OR MIT",
6
+ "homepage": "https://github.com/libp2p/js-libp2p#readme",
48
7
  "repository": {
49
8
  "type": "git",
50
- "url": "https://github.com/libp2p/js-libp2p.git"
9
+ "url": "git+https://github.com/libp2p/js-libp2p.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/libp2p/js-libp2p/issues"
51
13
  },
52
14
  "keywords": [
15
+ "IPFS",
53
16
  "libp2p",
54
17
  "network",
55
18
  "p2p",
56
19
  "peer",
57
- "peer-to-peer",
58
- "IPFS"
20
+ "peer-to-peer"
59
21
  ],
60
- "bugs": {
61
- "url": "https://github.com/libp2p/js-libp2p/issues"
62
- },
63
- "homepage": "https://libp2p.io",
64
- "license": "MIT",
65
22
  "engines": {
66
- "node": ">=15.0.0"
23
+ "node": ">=16.0.0",
24
+ "npm": ">=7.0.0"
67
25
  },
68
- "browser": {
69
- "nat-api": false
26
+ "type": "module",
27
+ "types": "./dist/src/index.d.ts",
28
+ "typesVersions": {
29
+ "*": {
30
+ "*": [
31
+ "*",
32
+ "dist/*",
33
+ "dist/src/*",
34
+ "dist/src/*/index"
35
+ ],
36
+ "src/*": [
37
+ "*",
38
+ "dist/*",
39
+ "dist/src/*",
40
+ "dist/src/*/index"
41
+ ]
42
+ }
43
+ },
44
+ "files": [
45
+ "src",
46
+ "dist/src",
47
+ "!dist/test",
48
+ "!**/*.tsbuildinfo"
49
+ ],
50
+ "exports": {
51
+ ".": {
52
+ "import": "./dist/src/index.js"
53
+ },
54
+ "./insecure": {
55
+ "import": "./dist/src/insecure/index.js"
56
+ },
57
+ "./pnet": {
58
+ "import": "./dist/src/pnet/index.js"
59
+ },
60
+ "./pnet/generate": {
61
+ "import": "./dist/src/pnet/key-generator.js"
62
+ },
63
+ "./transport-manager": {
64
+ "import": "./dist/src/transport-manager.js"
65
+ }
70
66
  },
71
67
  "eslintConfig": {
72
68
  "extends": "ipfs",
69
+ "parserOptions": {
70
+ "sourceType": "module"
71
+ },
73
72
  "ignorePatterns": [
74
73
  "!.aegir.js",
75
74
  "test/ts-use",
76
75
  "*.d.ts"
77
76
  ]
78
77
  },
78
+ "scripts": {
79
+ "clean": "aegir clean",
80
+ "lint": "aegir lint",
81
+ "dep-check": "aegir dep-check",
82
+ "build": "aegir build",
83
+ "generate": "run-s generate:proto:*",
84
+ "generate:proto:circuit": "protons ./src/circuit/pb/index.proto",
85
+ "generate:proto:fetch": "protons ./src/fetch/pb/proto.proto",
86
+ "generate:proto:identify": "protons ./src/identify/pb/message.proto",
87
+ "generate:proto:plaintext": "protons ./src/insecure/pb/proto.proto",
88
+ "test": "aegir test",
89
+ "test:node": "aegir test -t node -f \"./dist/test/**/*.{node,spec}.js\" --cov",
90
+ "test:chrome": "aegir test -t browser -f \"./dist/test/**/*.spec.js\" --cov",
91
+ "test:chrome-webworker": "aegir test -t webworker -f \"./dist/test/**/*.spec.js\"",
92
+ "test:firefox": "aegir test -t browser -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
93
+ "test:firefox-webworker": "aegir test -t webworker -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
94
+ "test:examples": "cd examples && npm run test:all",
95
+ "test:interop": "aegir test -t node -f dist/test/interop.js"
96
+ },
79
97
  "dependencies": {
80
- "@vascosantos/moving-average": "^1.1.0",
81
- "abortable-iterator": "^3.0.0",
82
- "aggregate-error": "^3.1.0",
98
+ "@achingbrain/nat-port-mapper": "^1.0.0",
99
+ "@libp2p/connection": "^1.1.4",
100
+ "@libp2p/crypto": "^0.22.9",
101
+ "@libp2p/interfaces": "^1.3.21",
102
+ "@libp2p/logger": "^1.1.3",
103
+ "@libp2p/multistream-select": "^1.0.3",
104
+ "@libp2p/peer-id": "^1.1.8",
105
+ "@libp2p/peer-id-factory": "^1.0.8",
106
+ "@libp2p/peer-record": "^1.0.8",
107
+ "@libp2p/peer-store": "^1.0.6",
108
+ "@libp2p/utils": "^1.0.9",
109
+ "@multiformats/mafmt": "^11.0.2",
110
+ "@multiformats/multiaddr": "^10.1.8",
111
+ "abortable-iterator": "^4.0.2",
112
+ "aggregate-error": "^4.0.0",
83
113
  "any-signal": "^3.0.0",
84
114
  "bignumber.js": "^9.0.1",
85
115
  "class-is": "^1.1.0",
86
116
  "datastore-core": "^7.0.0",
87
- "debug": "^4.3.1",
88
- "err-code": "^3.0.0",
89
- "es6-promisify": "^7.0.0",
117
+ "debug": "^4.3.3",
118
+ "err-code": "^3.0.1",
90
119
  "events": "^3.3.0",
91
120
  "hashlru": "^2.3.0",
92
- "interface-datastore": "^6.0.2",
93
- "it-all": "^1.0.4",
94
- "it-buffer": "^0.1.2",
95
- "it-drain": "^1.0.3",
96
- "it-filter": "^1.0.1",
97
- "it-first": "^1.0.4",
121
+ "interface-datastore": "^6.1.0",
122
+ "it-all": "^1.0.6",
123
+ "it-drain": "^1.0.5",
124
+ "it-filter": "^1.0.3",
125
+ "it-first": "^1.0.6",
98
126
  "it-foreach": "^0.1.1",
99
- "it-handshake": "^2.0.0",
100
- "it-length-prefixed": "^5.0.2",
101
- "it-map": "^1.0.4",
102
- "it-merge": "^1.0.0",
103
- "it-pipe": "^1.1.0",
127
+ "it-handshake": "^3.0.1",
128
+ "it-length-prefixed": "^7.0.1",
129
+ "it-map": "^1.0.6",
130
+ "it-merge": "^1.0.3",
131
+ "it-pipe": "^2.0.3",
104
132
  "it-sort": "^1.0.1",
105
- "it-take": "^1.0.0",
106
- "libp2p-crypto": "^0.21.2",
107
- "libp2p-interfaces": "^4.0.0",
108
- "libp2p-utils": "^0.4.0",
109
- "mafmt": "^10.0.0",
133
+ "it-stream-types": "^1.0.4",
134
+ "it-take": "^1.0.2",
135
+ "it-to-buffer": "^2.0.2",
110
136
  "merge-options": "^3.0.4",
111
- "mortice": "^2.0.1",
112
- "multiaddr": "^10.0.0",
113
- "multiformats": "^9.0.0",
114
- "multistream-select": "^3.0.0",
137
+ "mortice": "^3.0.0",
138
+ "multiformats": "^9.6.3",
115
139
  "mutable-proxy": "^1.0.0",
116
- "nat-api": "^0.3.1",
117
140
  "node-forge": "^1.2.1",
118
- "p-any": "^3.0.0",
119
141
  "p-fifo": "^1.0.0",
120
- "p-retry": "^4.4.0",
121
- "p-settle": "^4.1.1",
122
- "peer-id": "^0.16.0",
123
- "private-ip": "^2.1.0",
124
- "protobufjs": "^6.10.2",
142
+ "p-retry": "^5.0.0",
143
+ "p-settle": "^5.0.0",
144
+ "private-ip": "^2.3.3",
145
+ "protons-runtime": "^1.0.2",
125
146
  "retimer": "^3.0.0",
126
147
  "sanitize-filename": "^1.6.3",
127
148
  "set-delayed-interval": "^1.0.0",
@@ -133,121 +154,53 @@
133
154
  "xsalsa20": "^1.1.0"
134
155
  },
135
156
  "devDependencies": {
136
- "@chainsafe/libp2p-noise": "^5.0.0",
157
+ "@achingbrain/libp2p-gossipsub": "^0.13.5",
158
+ "@chainsafe/libp2p-noise": "^6.0.1",
159
+ "@libp2p/bootstrap": "^1.0.2",
160
+ "@libp2p/daemon-client": "^1.0.0",
161
+ "@libp2p/daemon-server": "^1.0.0",
162
+ "@libp2p/delegated-content-routing": "^1.0.2",
163
+ "@libp2p/delegated-peer-routing": "^1.0.2",
164
+ "@libp2p/floodsub": "^1.0.2",
165
+ "@libp2p/interface-compliance-tests": "^1.1.20",
166
+ "@libp2p/interop": "^1.0.3",
167
+ "@libp2p/kad-dht": "^1.0.5",
168
+ "@libp2p/mdns": "^1.0.3",
169
+ "@libp2p/mplex": "^1.0.1",
170
+ "@libp2p/pubsub": "^1.2.14",
171
+ "@libp2p/tcp": "^1.0.6",
172
+ "@libp2p/topology": "^1.1.7",
173
+ "@libp2p/tracked-map": "^1.0.4",
174
+ "@libp2p/webrtc-star": "^1.0.3",
175
+ "@libp2p/websockets": "^1.0.3",
137
176
  "@nodeutils/defaults-deep": "^1.1.0",
138
- "@types/es6-promisify": "^6.0.0",
139
- "@types/node": "^16.0.1",
177
+ "@types/node": "^16.11.26",
140
178
  "@types/node-forge": "^1.0.0",
179
+ "@types/p-fifo": "^1.0.0",
141
180
  "@types/varint": "^6.0.0",
142
- "aegir": "^36.0.0",
181
+ "@types/xsalsa20": "^1.1.0",
182
+ "aegir": "^37.0.9",
143
183
  "buffer": "^6.0.3",
184
+ "cborg": "^1.8.1",
144
185
  "delay": "^5.0.0",
145
- "into-stream": "^6.0.0",
146
- "ipfs-http-client": "^54.0.2",
147
- "it-concat": "^2.0.0",
148
- "it-pair": "^1.0.0",
149
- "it-pushable": "^1.4.0",
150
- "libp2p": ".",
151
- "libp2p-bootstrap": "^0.14.0",
152
- "libp2p-delegated-content-routing": "^0.11.0",
153
- "libp2p-delegated-peer-routing": "^0.11.1",
154
- "libp2p-interfaces-compliance-tests": "^4.0.8",
155
- "libp2p-interop": "^0.7.1",
156
- "libp2p-kad-dht": "^0.28.6",
157
- "libp2p-mdns": "^0.18.0",
158
- "libp2p-mplex": "^0.10.4",
159
- "libp2p-tcp": "^0.17.0",
160
- "libp2p-webrtc-star": "^0.25.0",
161
- "libp2p-websockets": "^0.16.0",
186
+ "execa": "^6.1.0",
187
+ "go-libp2p": "^0.0.6",
188
+ "into-stream": "^7.0.0",
189
+ "ipfs-http-client": "^56.0.1",
190
+ "it-pair": "^2.0.2",
191
+ "it-pushable": "^2.0.1",
162
192
  "nock": "^13.0.3",
163
- "p-defer": "^3.0.0",
164
- "p-times": "^3.0.0",
165
- "p-wait-for": "^3.2.0",
193
+ "npm-run-all": "^4.1.5",
194
+ "p-defer": "^4.0.0",
195
+ "p-event": "^5.0.1",
196
+ "p-times": "^4.0.0",
197
+ "p-wait-for": "^4.1.0",
198
+ "protons": "^3.0.2",
166
199
  "rimraf": "^3.0.2",
167
- "sinon": "^12.0.1",
168
- "util": "^0.12.3"
200
+ "sinon": "^13.0.1",
201
+ "ts-sinon": "^2.0.2"
169
202
  },
170
- "contributors": [
171
- "Vasco Santos <vasco.santos@moxy.studio>",
172
- "David Dias <daviddias.p@gmail.com>",
173
- "Jacob Heun <jacobheun@gmail.com>",
174
- "Alex Potsides <alex@achingbrain.net>",
175
- "Alan Shaw <alan@tableflip.io>",
176
- "Cayman <caymannava@gmail.com>",
177
- "Pedro Teixeira <i@pgte.me>",
178
- "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
179
- "Maciej Krüger <mkg20001@gmail.com>",
180
- "Hugo Dias <mail@hugodias.me>",
181
- "dirkmc <dirkmdev@gmail.com>",
182
- "Volker Mische <volker.mische@gmail.com>",
183
- "Chris Dostert <chrisdostert@users.noreply.github.com>",
184
- "zeim839 <50573884+zeim839@users.noreply.github.com>",
185
- "Robert Kiel <robert.kiel@hoprnet.org>",
186
- "Richard Littauer <richard.littauer@gmail.com>",
187
- "a1300 <matthias-knopp@gmx.net>",
188
- "Ryan Bell <ryan@piing.net>",
189
- "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>",
190
- "Andrew Nesbitt <andrewnez@gmail.com>",
191
- "Franck Royer <franck@royer.one>",
192
- "Thomas Eizinger <thomas@eizinger.io>",
193
- "Vít Habada <vithabada93@gmail.com>",
194
- "Giovanni T. Parra <fiatjaf@gmail.com>",
195
- "acolytec3 <17355484+acolytec3@users.noreply.github.com>",
196
- "Alan Smithee <ggnore.alan.smithee@gmail.com>",
197
- "Elven <mon.samuel@qq.com>",
198
- "Samlior <samlior@foxmail.com>",
199
- "Didrik Nordström <didrik.nordstrom@gmail.com>",
200
- "Aditya Bose <13054902+adbose@users.noreply.github.com>",
201
- "TJKoury <TJKoury@gmail.com>",
202
- "TheStarBoys <41286328+TheStarBoys@users.noreply.github.com>",
203
- "Tiago Alves <alvesjtiago@gmail.com>",
204
- "Tim Daubenschütz <tim@daubenschuetz.de>",
205
- "XiaoZhang <zxinmyth@gmail.com>",
206
- "Yusef Napora <yusef@napora.org>",
207
- "Zane Starr <zcstarr@gmail.com>",
208
- "ebinks <elizabethjbinks@gmail.com>",
209
- "greenSnot <greenSnot@users.noreply.github.com>",
210
- "isan_rivkin <isanrivkin@gmail.com>",
211
- "mayerwin <mayerwin@users.noreply.github.com>",
212
- "mcclure <andi.m.mcclure@gmail.com>",
213
- "patrickwoodhead <91056047+patrickwoodhead@users.noreply.github.com>",
214
- "phillmac <phillmac@users.noreply.github.com>",
215
- "robertkiel <robert.kiel@validitylabs.org>",
216
- "shresthagrawal <34920931+shresthagrawal@users.noreply.github.com>",
217
- "swedneck <40505480+swedneck@users.noreply.github.com>",
218
- "tuyennhv <vutuyen2636@gmail.com>",
219
- "Sönke Hahn <soenkehahn@gmail.com>",
220
- "Aleksei <vozhdb@gmail.com>",
221
- "Bernd Strehl <bernd.strehl@gmail.com>",
222
- "Chris Bratlien <chrisbratlien@gmail.com>",
223
- "Cindy Wu <ciindy.wu@gmail.com>",
224
- "Daijiro Wachi <daijiro.wachi@gmail.com>",
225
- "Diogo Silva <fsdiogo@gmail.com>",
226
- "Dmitriy Ryajov <dryajov@gmail.com>",
227
- "Ethan Lam <elmemphis2000@gmail.com>",
228
- "Fei Liu <liu.feiwood@gmail.com>",
229
- "Felipe Martins <felipebrasil93@gmail.com>",
230
- "Florian-Merle <florian.david.merle@gmail.com>",
231
- "Francis Gulotta <wizard@roborooter.com>",
232
- "Guy Sviry <32539816+guysv@users.noreply.github.com>",
233
- "Henrique Dias <hacdias@gmail.com>",
234
- "Irakli Gozalishvili <rfobic@gmail.com>",
235
- "Joel Gustafson <joelg@mit.edu>",
236
- "John Rees <johnrees@users.noreply.github.com>",
237
- "João Santos <joaosantos15@users.noreply.github.com>",
238
- "Julien Bouquillon <contact@revolunet.com>",
239
- "Kevin Kwok <antimatter15@gmail.com>",
240
- "Kevin Lacker <lacker@gmail.com>",
241
- "Lars Gierth <lgierth@users.noreply.github.com>",
242
- "Leask Wong <i@leaskh.com>",
243
- "Marcin Tojek <mtojek@users.noreply.github.com>",
244
- "Marston Connell <34043723+TheMarstonConnell@users.noreply.github.com>",
245
- "Michael Burns <5170+mburns@users.noreply.github.com>",
246
- "Miguel Mota <miguelmota2@gmail.com>",
247
- "Nuno Nogueira <nunofmn@gmail.com>",
248
- "Philipp Muens <raute1337@gmx.de>",
249
- "RasmusErik Voel Jensen <github@solsort.com>",
250
- "Smite Chow <xiaopengyou@live.com>",
251
- "Soeren <nikorpoulsen@gmail.com>"
252
- ]
203
+ "browser": {
204
+ "nat-api": false
205
+ }
253
206
  }
@@ -0,0 +1,129 @@
1
+ import { AddressManagerEvents, CustomEvent, EventEmitter } from '@libp2p/interfaces'
2
+ import { Multiaddr } from '@multiformats/multiaddr'
3
+ import { peerIdFromString } from '@libp2p/peer-id'
4
+ import type { Components } from '@libp2p/interfaces/components'
5
+
6
+ export interface AddressManagerInit {
7
+ announceFilter?: AddressFilter
8
+
9
+ /**
10
+ * list of multiaddrs string representation to listen
11
+ */
12
+ listen?: string[]
13
+
14
+ /**
15
+ * list of multiaddrs string representation to announce
16
+ */
17
+ announce?: string[]
18
+
19
+ /**
20
+ * list of multiaddrs string representation to never announce
21
+ */
22
+ noAnnounce?: string[]
23
+ }
24
+
25
+ export interface AddressFilter {
26
+ (addrs: Multiaddr[]): Multiaddr[]
27
+ }
28
+
29
+ const defaultAddressFilter = (addrs: Multiaddr[]): Multiaddr[] => addrs
30
+
31
+ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
32
+ private readonly components: Components
33
+ private readonly listen: Set<string>
34
+ private readonly announce: Set<string>
35
+ private readonly observed: Set<string>
36
+ private readonly announceFilter: AddressFilter
37
+
38
+ /**
39
+ * Responsible for managing the peer addresses.
40
+ * Peers can specify their listen and announce addresses.
41
+ * The listen addresses will be used by the libp2p transports to listen for new connections,
42
+ * while the announce addresses will be used for the peer addresses' to other peers in the network.
43
+ */
44
+ constructor (components: Components, init: AddressManagerInit) {
45
+ super()
46
+
47
+ const { listen = [], announce = [] } = init
48
+
49
+ this.components = components
50
+ this.listen = new Set(listen.map(ma => ma.toString()))
51
+ this.announce = new Set(announce.map(ma => ma.toString()))
52
+ this.observed = new Set()
53
+ this.announceFilter = init.announceFilter ?? defaultAddressFilter
54
+ }
55
+
56
+ /**
57
+ * Get peer listen multiaddrs
58
+ */
59
+ getListenAddrs (): Multiaddr[] {
60
+ return Array.from(this.listen).map((a) => new Multiaddr(a))
61
+ }
62
+
63
+ /**
64
+ * Get peer announcing multiaddrs
65
+ */
66
+ getAnnounceAddrs (): Multiaddr[] {
67
+ return Array.from(this.announce).map((a) => new Multiaddr(a))
68
+ }
69
+
70
+ /**
71
+ * Get observed multiaddrs
72
+ */
73
+ getObservedAddrs (): Multiaddr[] {
74
+ return Array.from(this.observed).map((a) => new Multiaddr(a))
75
+ }
76
+
77
+ /**
78
+ * Add peer observed addresses
79
+ */
80
+ addObservedAddr (addr: string | Multiaddr): void {
81
+ let ma = new Multiaddr(addr)
82
+ const remotePeer = ma.getPeerId()
83
+
84
+ // strip our peer id if it has been passed
85
+ if (remotePeer != null) {
86
+ const remotePeerId = peerIdFromString(remotePeer)
87
+
88
+ // use same encoding for comparison
89
+ if (remotePeerId.equals(this.components.getPeerId())) {
90
+ ma = ma.decapsulate(new Multiaddr(`/p2p/${this.components.getPeerId().toString()}`))
91
+ }
92
+ }
93
+
94
+ const addrString = ma.toString()
95
+
96
+ // do not trigger the change:addresses event if we already know about this address
97
+ if (this.observed.has(addrString)) {
98
+ return
99
+ }
100
+
101
+ this.observed.add(addrString)
102
+ this.dispatchEvent(new CustomEvent('change:addresses'))
103
+ }
104
+
105
+ getAddresses (): Multiaddr[] {
106
+ let addrs = this.getAnnounceAddrs().map(ma => ma.toString())
107
+
108
+ if (addrs.length === 0) {
109
+ // no configured announce addrs, add configured listen addresses
110
+ addrs = this.components.getTransportManager().getAddrs().map(ma => ma.toString())
111
+ }
112
+
113
+ addrs = addrs.concat(this.getObservedAddrs().map(ma => ma.toString()))
114
+
115
+ // dedupe multiaddrs
116
+ const addrSet = new Set(addrs)
117
+
118
+ // Create advertising list
119
+ return this.announceFilter(Array.from(addrSet)
120
+ .map(str => new Multiaddr(str)))
121
+ .map(ma => {
122
+ if (ma.getPeerId() === this.components.getPeerId().toString()) {
123
+ return ma
124
+ }
125
+
126
+ return ma.encapsulate(`/p2p/${this.components.getPeerId().toString()}`)
127
+ })
128
+ }
129
+ }
@@ -9,9 +9,9 @@
9
9
  ## Table of Contents
10
10
 
11
11
  - [js-libp2p-circuit](#js-libp2p-circuit)
12
+ - [Table of Contents](#table-of-contents)
12
13
  - [Why?](#why)
13
14
  - [libp2p-circuit and IPFS](#libp2p-circuit-and-ipfs)
14
- - [Table of Contents](#table-of-contents)
15
15
  - [Usage](#usage)
16
16
  - [API](#api)
17
17
  - [Implementation rational](#implementation-rational)
@@ -37,22 +37,27 @@ Libp2p circuit configuration can be seen at [Setup with Relay](../../doc/CONFIGU
37
37
  Once you have a circuit relay node running, you can configure other nodes to use it as a relay as follows:
38
38
 
39
39
  ```js
40
- const { Multiaddr } = require('multiaddr')
41
- const Libp2p = require('libp2p')
42
- const TCP = require('libp2p-tcp')
43
- const MPLEX = require('libp2p-mplex')
44
- const { NOISE } = require('libp2p-noise')
40
+ import { Multiaddr } from '@multiformats/multiaddr'
41
+ import Libp2p from 'libp2p'
42
+ import { TCP } from '@libp2p/tcp'
43
+ import { Mplex } from '@libp2p/mplex'
44
+ import { NOISE } from '@chainsafe/libp2p-noise'
45
45
 
46
46
  const relayAddr = ...
47
47
 
48
- const node = await Libp2p.create({
48
+ const node = await createLibp2p({
49
49
  addresses: {
50
50
  listen: [new Multiaddr(`${relayAddr}/p2p-circuit`)]
51
51
  },
52
- modules: {
53
- transport: [TCP],
54
- streamMuxer: [MPLEX],
55
- connEncryption: [NOISE]
52
+ transports: [
53
+ new TCP()
54
+ ],
55
+ streamMuxers: [
56
+ new Mplex()
57
+ ],
58
+ connectionEncryption: [
59
+ NOISE
60
+ ]
56
61
  },
57
62
  config: {
58
63
  relay: { // Circuit Relay options (this config is part of libp2p core configurations)