libp2p 0.36.0 → 0.36.2-199395d

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 (398) 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 +25 -52
  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 +16 -8
  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 +16 -35
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +60 -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/{protocol → pb}/index.d.ts +0 -0
  44. package/{src/circuit/protocol → dist/src/circuit/pb}/index.js +7 -9
  45. package/dist/src/circuit/transport.d.ts +18 -78
  46. package/dist/src/circuit/transport.d.ts.map +1 -1
  47. package/dist/src/circuit/transport.js +190 -0
  48. package/dist/src/circuit/transport.js.map +1 -0
  49. package/dist/src/circuit/utils.d.ts +5 -2
  50. package/dist/src/circuit/utils.d.ts.map +1 -1
  51. package/dist/src/circuit/utils.js +11 -0
  52. package/dist/src/circuit/utils.js.map +1 -0
  53. package/dist/src/config.d.ts +3 -85
  54. package/dist/src/config.d.ts.map +1 -1
  55. package/dist/src/config.js +93 -0
  56. package/dist/src/config.js.map +1 -0
  57. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  58. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  59. package/dist/src/connection-manager/auto-dialler.js +105 -0
  60. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  61. package/dist/src/connection-manager/index.d.ts +79 -144
  62. package/dist/src/connection-manager/index.d.ts.map +1 -1
  63. package/dist/src/connection-manager/index.js +295 -0
  64. package/dist/src/connection-manager/index.js.map +1 -0
  65. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  66. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  67. package/dist/src/connection-manager/latency-monitor.js +220 -0
  68. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  69. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  70. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  71. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  72. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  73. package/dist/src/constants.d.ts +22 -10
  74. package/dist/src/constants.d.ts.map +1 -1
  75. package/dist/src/constants.js +27 -0
  76. package/dist/src/constants.js.map +1 -0
  77. package/dist/src/content-routing/index.d.ts +26 -81
  78. package/dist/src/content-routing/index.d.ts.map +1 -1
  79. package/dist/src/content-routing/index.js +99 -0
  80. package/dist/src/content-routing/index.js.map +1 -0
  81. package/dist/src/content-routing/utils.d.ts +6 -49
  82. package/dist/src/content-routing/utils.d.ts.map +1 -1
  83. package/dist/src/content-routing/utils.js +42 -0
  84. package/dist/src/content-routing/utils.js.map +1 -0
  85. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  86. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  87. package/dist/src/dht/dht-content-routing.js +32 -0
  88. package/dist/src/dht/dht-content-routing.js.map +1 -0
  89. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  90. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  91. package/dist/src/dht/dht-peer-routing.js +26 -0
  92. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  93. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  94. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  95. package/dist/src/dialer/auto-dialer.js +24 -0
  96. package/dist/src/dialer/auto-dialer.js.map +1 -0
  97. package/dist/src/dialer/dial-request.d.ts +18 -46
  98. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  99. package/dist/src/dialer/dial-request.js +83 -0
  100. package/dist/src/dialer/dial-request.js.map +1 -0
  101. package/dist/src/dialer/index.d.ts +41 -148
  102. package/dist/src/dialer/index.d.ts.map +1 -1
  103. package/dist/src/dialer/index.js +281 -0
  104. package/dist/src/dialer/index.js.map +1 -0
  105. package/dist/src/errors.d.ts +68 -63
  106. package/dist/src/errors.d.ts.map +1 -1
  107. package/dist/src/errors.js +73 -0
  108. package/dist/src/errors.js.map +1 -0
  109. package/dist/src/fetch/constants.d.ts +1 -1
  110. package/dist/src/fetch/constants.d.ts.map +1 -1
  111. package/dist/src/fetch/constants.js +3 -0
  112. package/dist/src/fetch/constants.js.map +1 -0
  113. package/dist/src/fetch/index.d.ts +30 -49
  114. package/dist/src/fetch/index.d.ts.map +1 -1
  115. package/dist/src/fetch/index.js +130 -0
  116. package/dist/src/fetch/index.js.map +1 -0
  117. package/dist/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  118. package/{src/fetch → dist/src/fetch/pb}/proto.js +7 -9
  119. package/dist/src/get-peer.d.ts +4 -11
  120. package/dist/src/get-peer.d.ts.map +1 -1
  121. package/dist/src/get-peer.js +43 -0
  122. package/dist/src/get-peer.js.map +1 -0
  123. package/dist/src/identify/consts.d.ts +9 -9
  124. package/dist/src/identify/consts.d.ts.map +1 -1
  125. package/dist/src/identify/consts.js +11 -0
  126. package/dist/src/identify/consts.js.map +1 -0
  127. package/dist/src/identify/index.d.ts +40 -96
  128. package/dist/src/identify/index.d.ts.map +1 -1
  129. package/dist/src/identify/index.js +322 -0
  130. package/dist/src/identify/index.js.map +1 -0
  131. package/{src/identify → dist/src/identify/pb}/message.d.ts +20 -5
  132. package/{src/identify → dist/src/identify/pb}/message.js +83 -42
  133. package/dist/src/index.d.ts +157 -583
  134. package/dist/src/index.d.ts.map +1 -1
  135. package/dist/src/index.js +9 -0
  136. package/dist/src/index.js.map +1 -0
  137. package/dist/src/insecure/index.d.ts +9 -0
  138. package/dist/src/insecure/index.d.ts.map +1 -0
  139. package/dist/src/insecure/index.js +78 -0
  140. package/dist/src/insecure/index.js.map +1 -0
  141. package/dist/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  142. package/{src/insecure → dist/src/insecure/pb}/proto.js +39 -22
  143. package/dist/src/keychain/cms.d.ts +6 -14
  144. package/dist/src/keychain/cms.d.ts.map +1 -1
  145. package/dist/src/keychain/cms.js +129 -0
  146. package/dist/src/keychain/cms.js.map +1 -0
  147. package/dist/src/keychain/index.d.ts +62 -82
  148. package/dist/src/keychain/index.d.ts.map +1 -1
  149. package/dist/src/keychain/index.js +493 -0
  150. package/dist/src/keychain/index.js.map +1 -0
  151. package/dist/src/keychain/util.d.ts +3 -6
  152. package/dist/src/keychain/util.d.ts.map +1 -1
  153. package/dist/src/keychain/util.js +79 -0
  154. package/dist/src/keychain/util.js.map +1 -0
  155. package/dist/src/libp2p.d.ts +75 -0
  156. package/dist/src/libp2p.d.ts.map +1 -0
  157. package/dist/src/libp2p.js +368 -0
  158. package/dist/src/libp2p.js.map +1 -0
  159. package/dist/src/metrics/index.d.ts +47 -104
  160. package/dist/src/metrics/index.d.ts.map +1 -1
  161. package/dist/src/metrics/index.js +231 -0
  162. package/dist/src/metrics/index.js.map +1 -0
  163. package/dist/src/metrics/moving-average.d.ts +14 -0
  164. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  165. package/dist/src/metrics/moving-average.js +40 -0
  166. package/dist/src/metrics/moving-average.js.map +1 -0
  167. package/dist/src/metrics/stats.d.ts +45 -93
  168. package/dist/src/metrics/stats.d.ts.map +1 -1
  169. package/dist/src/metrics/stats.js +183 -0
  170. package/dist/src/metrics/stats.js.map +1 -0
  171. package/dist/src/nat-manager.d.ts +42 -99
  172. package/dist/src/nat-manager.d.ts.map +1 -1
  173. package/dist/src/nat-manager.js +114 -0
  174. package/dist/src/nat-manager.js.map +1 -0
  175. package/dist/src/peer-record-updater.d.ts +15 -0
  176. package/dist/src/peer-record-updater.d.ts.map +1 -0
  177. package/dist/src/peer-record-updater.js +44 -0
  178. package/dist/src/peer-record-updater.js.map +1 -0
  179. package/dist/src/peer-routing.d.ts +39 -84
  180. package/dist/src/peer-routing.d.ts.map +1 -1
  181. package/dist/src/peer-routing.js +108 -0
  182. package/dist/src/peer-routing.js.map +1 -0
  183. package/dist/src/ping/constants.d.ts +4 -4
  184. package/dist/src/ping/constants.d.ts.map +1 -1
  185. package/dist/src/ping/constants.js +5 -0
  186. package/dist/src/ping/constants.js.map +1 -0
  187. package/dist/src/ping/index.d.ts +26 -33
  188. package/dist/src/ping/index.d.ts.map +1 -1
  189. package/dist/src/ping/index.js +56 -0
  190. package/dist/src/ping/index.js.map +1 -0
  191. package/dist/src/pnet/crypto.d.ts +15 -5
  192. package/dist/src/pnet/crypto.d.ts.map +1 -1
  193. package/dist/src/pnet/crypto.js +60 -0
  194. package/dist/src/pnet/crypto.js.map +1 -0
  195. package/dist/src/pnet/errors.d.ts +5 -5
  196. package/dist/src/pnet/errors.d.ts.map +1 -1
  197. package/dist/src/pnet/errors.js +6 -0
  198. package/dist/src/pnet/errors.js.map +1 -0
  199. package/dist/src/pnet/index.d.ts +11 -20
  200. package/dist/src/pnet/index.d.ts.map +1 -1
  201. package/dist/src/pnet/index.js +66 -0
  202. package/dist/src/pnet/index.js.map +1 -0
  203. package/dist/src/pnet/key-generator.d.ts +3 -7
  204. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  205. package/dist/src/pnet/key-generator.js +25 -0
  206. package/dist/src/pnet/key-generator.js.map +1 -0
  207. package/dist/src/registrar.d.ts +27 -65
  208. package/dist/src/registrar.d.ts.map +1 -1
  209. package/dist/src/registrar.js +159 -0
  210. package/dist/src/registrar.js.map +1 -0
  211. package/dist/src/transport-manager.d.ts +34 -82
  212. package/dist/src/transport-manager.d.ts.map +1 -1
  213. package/dist/src/transport-manager.js +223 -0
  214. package/dist/src/transport-manager.js.map +1 -0
  215. package/dist/src/upgrader.d.ts +49 -129
  216. package/dist/src/upgrader.d.ts.map +1 -1
  217. package/dist/src/upgrader.js +402 -0
  218. package/dist/src/upgrader.js.map +1 -0
  219. package/dist/src/version.d.ts +3 -0
  220. package/dist/src/version.d.ts.map +1 -0
  221. package/dist/src/version.js +3 -0
  222. package/dist/src/version.js.map +1 -0
  223. package/package.json +145 -197
  224. package/src/address-manager/index.ts +129 -0
  225. package/src/circuit/README.md +16 -11
  226. package/src/circuit/auto-relay.ts +284 -0
  227. package/src/circuit/circuit/hop.ts +211 -0
  228. package/src/circuit/circuit/stop.ts +78 -0
  229. package/src/circuit/circuit/stream-handler.ts +87 -0
  230. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  231. package/src/circuit/constants.ts +31 -0
  232. package/src/circuit/index.ts +120 -0
  233. package/src/circuit/{listener.js → listener.ts} +21 -27
  234. package/src/circuit/multicodec.ts +2 -0
  235. package/src/circuit/{protocol → pb}/index.d.ts +0 -0
  236. package/src/circuit/pb/index.js +528 -0
  237. package/src/circuit/{protocol → pb}/index.proto +0 -0
  238. package/src/circuit/transport.ts +216 -0
  239. package/src/circuit/utils.ts +12 -0
  240. package/src/config.ts +101 -0
  241. package/src/connection-manager/auto-dialler.ts +154 -0
  242. package/src/connection-manager/index.ts +422 -0
  243. package/src/connection-manager/latency-monitor.ts +319 -0
  244. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  245. package/src/constants.ts +31 -0
  246. package/src/content-routing/index.ts +143 -0
  247. package/src/content-routing/utils.ts +54 -0
  248. package/src/dht/dht-content-routing.ts +43 -0
  249. package/src/dht/dht-peer-routing.ts +35 -0
  250. package/src/dialer/auto-dialer.ts +40 -0
  251. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  252. package/src/dialer/index.ts +374 -0
  253. package/src/errors.ts +71 -0
  254. package/src/fetch/README.md +1 -1
  255. package/src/fetch/constants.ts +3 -0
  256. package/src/fetch/{index.js → index.ts} +79 -70
  257. package/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  258. package/src/fetch/pb/proto.js +331 -0
  259. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  260. package/src/get-peer.ts +57 -0
  261. package/src/identify/consts.ts +13 -0
  262. package/src/identify/index.ts +445 -0
  263. package/{dist/src/identify → src/identify/pb}/message.d.ts +20 -5
  264. package/src/identify/pb/message.js +369 -0
  265. package/src/identify/{message.proto → pb/message.proto} +0 -0
  266. package/src/index.ts +234 -0
  267. package/src/insecure/index.ts +97 -0
  268. package/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  269. package/src/insecure/pb/proto.js +388 -0
  270. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  271. package/src/keychain/{cms.js → cms.ts} +62 -58
  272. package/src/keychain/index.ts +588 -0
  273. package/src/keychain/{util.js → util.ts} +7 -17
  274. package/src/libp2p.ts +501 -0
  275. package/src/metrics/index.ts +310 -0
  276. package/src/metrics/moving-average.ts +53 -0
  277. package/src/metrics/stats.ts +243 -0
  278. package/src/nat-manager.ts +194 -0
  279. package/src/peer-record-updater.ts +55 -0
  280. package/src/peer-routing.ts +185 -0
  281. package/src/ping/README.md +1 -1
  282. package/src/ping/constants.ts +5 -0
  283. package/src/ping/index.ts +83 -0
  284. package/src/pnet/README.md +2 -2
  285. package/src/pnet/crypto.ts +67 -0
  286. package/src/pnet/errors.ts +5 -0
  287. package/src/pnet/index.ts +95 -0
  288. package/src/pnet/key-generator.ts +28 -0
  289. package/src/registrar.ts +205 -0
  290. package/src/transport-manager.ts +279 -0
  291. package/src/upgrader.ts +499 -0
  292. package/src/version.ts +3 -0
  293. package/dist/index.min.js +0 -55
  294. package/dist/src/insecure/plaintext.d.ts +0 -12
  295. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  296. package/dist/src/metrics/old-peers.d.ts +0 -3
  297. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  298. package/dist/src/metrics/tracked-map.d.ts +0 -8
  299. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  300. package/dist/src/peer-store/address-book.d.ts +0 -67
  301. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  302. package/dist/src/peer-store/index.d.ts +0 -58
  303. package/dist/src/peer-store/index.d.ts.map +0 -1
  304. package/dist/src/peer-store/key-book.d.ts +0 -40
  305. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  306. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  307. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  308. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  309. package/dist/src/peer-store/proto-book.d.ts +0 -43
  310. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  311. package/dist/src/peer-store/store.d.ts +0 -73
  312. package/dist/src/peer-store/store.d.ts.map +0 -1
  313. package/dist/src/peer-store/types.d.ts +0 -202
  314. package/dist/src/peer-store/types.d.ts.map +0 -1
  315. package/dist/src/ping/util.d.ts +0 -5
  316. package/dist/src/ping/util.d.ts.map +0 -1
  317. package/dist/src/pubsub-adapter.d.ts +0 -22
  318. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  319. package/dist/src/record/envelope/envelope.d.ts +0 -77
  320. package/dist/src/record/envelope/index.d.ts +0 -80
  321. package/dist/src/record/envelope/index.d.ts.map +0 -1
  322. package/dist/src/record/peer-record/consts.d.ts +0 -4
  323. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  324. package/dist/src/record/peer-record/index.d.ts +0 -60
  325. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  326. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  327. package/dist/src/record/utils.d.ts +0 -12
  328. package/dist/src/record/utils.d.ts.map +0 -1
  329. package/dist/src/types.d.ts +0 -90
  330. package/dist/src/types.d.ts.map +0 -1
  331. package/src/address-manager/index.js +0 -96
  332. package/src/circuit/auto-relay.js +0 -302
  333. package/src/circuit/circuit/hop.js +0 -205
  334. package/src/circuit/circuit/stop.js +0 -81
  335. package/src/circuit/circuit/stream-handler.js +0 -94
  336. package/src/circuit/constants.js +0 -12
  337. package/src/circuit/index.js +0 -102
  338. package/src/circuit/multicodec.js +0 -5
  339. package/src/circuit/transport.js +0 -229
  340. package/src/circuit/utils.js +0 -17
  341. package/src/config.js +0 -114
  342. package/src/connection-manager/auto-dialler.js +0 -132
  343. package/src/connection-manager/index.js +0 -363
  344. package/src/connection-manager/latency-monitor.js +0 -264
  345. package/src/constants.js +0 -18
  346. package/src/content-routing/index.js +0 -163
  347. package/src/content-routing/utils.js +0 -89
  348. package/src/dht/dht-content-routing.js +0 -44
  349. package/src/dht/dht-peer-routing.js +0 -51
  350. package/src/dialer/index.js +0 -376
  351. package/src/errors.js +0 -66
  352. package/src/fetch/constants.js +0 -6
  353. package/src/get-peer.js +0 -49
  354. package/src/identify/consts.js +0 -15
  355. package/src/identify/index.js +0 -384
  356. package/src/index.js +0 -811
  357. package/src/insecure/plaintext.js +0 -95
  358. package/src/keychain/index.js +0 -561
  359. package/src/metrics/index.js +0 -290
  360. package/src/metrics/old-peers.js +0 -16
  361. package/src/metrics/stats.js +0 -270
  362. package/src/metrics/tracked-map.js +0 -94
  363. package/src/nat-manager.js +0 -197
  364. package/src/peer-routing.js +0 -176
  365. package/src/peer-store/README.md +0 -145
  366. package/src/peer-store/address-book.js +0 -382
  367. package/src/peer-store/index.js +0 -121
  368. package/src/peer-store/key-book.js +0 -141
  369. package/src/peer-store/metadata-book.js +0 -250
  370. package/src/peer-store/pb/peer.d.ts +0 -222
  371. package/src/peer-store/pb/peer.js +0 -643
  372. package/src/peer-store/pb/peer.proto +0 -31
  373. package/src/peer-store/proto-book.js +0 -237
  374. package/src/peer-store/store.js +0 -263
  375. package/src/peer-store/types.ts +0 -245
  376. package/src/ping/constants.js +0 -8
  377. package/src/ping/index.js +0 -85
  378. package/src/ping/util.js +0 -18
  379. package/src/pnet/crypto.js +0 -84
  380. package/src/pnet/errors.js +0 -7
  381. package/src/pnet/index.js +0 -86
  382. package/src/pnet/key-generator.js +0 -33
  383. package/src/pubsub-adapter.js +0 -61
  384. package/src/record/README.md +0 -130
  385. package/src/record/envelope/envelope.d.ts +0 -77
  386. package/src/record/envelope/envelope.js +0 -243
  387. package/src/record/envelope/envelope.proto +0 -19
  388. package/src/record/envelope/index.js +0 -183
  389. package/src/record/peer-record/consts.js +0 -14
  390. package/src/record/peer-record/index.js +0 -113
  391. package/src/record/peer-record/peer-record.d.ts +0 -133
  392. package/src/record/peer-record/peer-record.js +0 -367
  393. package/src/record/peer-record/peer-record.proto +0 -18
  394. package/src/record/utils.js +0 -25
  395. package/src/registrar.js +0 -127
  396. package/src/transport-manager.js +0 -269
  397. package/src/types.ts +0 -98
  398. package/src/upgrader.js +0 -492
package/package.json CHANGED
@@ -1,127 +1,147 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.36.0",
3
+ "version": "0.36.2-199395d",
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
+ }
70
63
  },
71
64
  "eslintConfig": {
72
65
  "extends": "ipfs",
66
+ "parserOptions": {
67
+ "sourceType": "module"
68
+ },
73
69
  "ignorePatterns": [
74
70
  "!.aegir.js",
75
71
  "test/ts-use",
76
72
  "*.d.ts"
77
73
  ]
78
74
  },
75
+ "scripts": {
76
+ "lint": "aegir lint",
77
+ "build": "tsc",
78
+ "postbuild": "mkdirp dist/src/circuit/pb dist/src/fetch/pb dist/src/identify/pb dist/src/insecure/pb && cp src/circuit/pb/*.js src/circuit/pb/*.d.ts dist/src/circuit/pb && cp src/fetch/pb/*.js src/fetch/pb/*.d.ts dist/src/fetch/pb && cp src/identify/pb/*.js src/identify/pb/*.d.ts dist/src/identify/pb && cp src/insecure/pb/*.js src/insecure/pb/*.d.ts dist/src/insecure/pb",
79
+ "generate": "run-s generate:proto:* generate:proto-types:*",
80
+ "generate:proto:circuit": "pbjs -t static-module -w es6 -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",
81
+ "generate:proto:fetch": "pbjs -t static-module -w es6 -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",
82
+ "generate:proto:identify": "pbjs -t static-module -w es6 -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",
83
+ "generate:proto:plaintext": "pbjs -t static-module -w es6 -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",
84
+ "generate:proto-types:circuit": "pbts -o src/circuit/protocol/index.d.ts src/circuit/protocol/index.js",
85
+ "generate:proto-types:fetch": "pbts -o src/fetch/proto.d.ts src/fetch/proto.js",
86
+ "generate:proto-types:identify": "pbts -o src/identify/message.d.ts src/identify/message.js",
87
+ "generate:proto-types:plaintext": "pbts -o src/insecure/proto.d.ts src/insecure/proto.js",
88
+ "pretest": "npm run build",
89
+ "test": "aegir test",
90
+ "test:node": "npm run test -- -t node -f \"./dist/test/**/*.{node,spec}.js\" --cov",
91
+ "test:chrome": "npm run test -- -t browser -f \"./dist/test/**/*.spec.js\" --cov",
92
+ "test:chrome-webworker": "npm run test -- -t webworker -f \"./dist/test/**/*.spec.js\"",
93
+ "test:firefox": "npm run test -- -t browser -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
94
+ "test:firefox-webworker": "npm run test -- -t webworker -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
95
+ "test:examples": "cd examples && npm run test:all",
96
+ "test:interop": "npm run test -- -t node -f dist/test/interop.js"
97
+ },
79
98
  "dependencies": {
80
- "@vascosantos/moving-average": "^1.1.0",
81
- "abortable-iterator": "^3.0.0",
82
- "aggregate-error": "^3.1.0",
99
+ "@achingbrain/nat-port-mapper": "^1.0.0",
100
+ "@libp2p/connection": "^1.1.4",
101
+ "@libp2p/crypto": "^0.22.9",
102
+ "@libp2p/interfaces": "^1.3.17",
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-store": "^1.0.6",
107
+ "@libp2p/utils": "^1.0.9",
108
+ "@multiformats/mafmt": "^11.0.2",
109
+ "@multiformats/multiaddr": "^10.1.8",
110
+ "abortable-iterator": "^4.0.2",
111
+ "aggregate-error": "^4.0.0",
83
112
  "any-signal": "^3.0.0",
84
113
  "bignumber.js": "^9.0.1",
85
114
  "class-is": "^1.1.0",
86
115
  "datastore-core": "^7.0.0",
87
- "debug": "^4.3.1",
88
- "err-code": "^3.0.0",
89
- "es6-promisify": "^7.0.0",
116
+ "debug": "^4.3.3",
117
+ "err-code": "^3.0.1",
90
118
  "events": "^3.3.0",
91
119
  "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",
120
+ "interface-datastore": "^6.1.0",
121
+ "it-all": "^1.0.6",
122
+ "it-drain": "^1.0.5",
123
+ "it-filter": "^1.0.3",
124
+ "it-first": "^1.0.6",
98
125
  "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",
126
+ "it-handshake": "^3.0.1",
127
+ "it-length-prefixed": "^7.0.1",
128
+ "it-map": "^1.0.6",
129
+ "it-merge": "^1.0.3",
130
+ "it-pipe": "^2.0.3",
104
131
  "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",
132
+ "it-stream-types": "^1.0.4",
133
+ "it-take": "^1.0.2",
134
+ "it-to-buffer": "^2.0.2",
110
135
  "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",
136
+ "mortice": "^3.0.0",
137
+ "multiformats": "^9.6.3",
115
138
  "mutable-proxy": "^1.0.0",
116
- "nat-api": "^0.3.1",
117
139
  "node-forge": "^1.2.1",
118
- "p-any": "^3.0.0",
119
140
  "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",
141
+ "p-retry": "^5.0.0",
142
+ "p-settle": "^5.0.0",
143
+ "private-ip": "^2.3.3",
144
+ "protobufjs": "^6.11.2",
125
145
  "retimer": "^3.0.0",
126
146
  "sanitize-filename": "^1.6.3",
127
147
  "set-delayed-interval": "^1.0.0",
@@ -133,121 +153,49 @@
133
153
  "xsalsa20": "^1.1.0"
134
154
  },
135
155
  "devDependencies": {
136
- "@chainsafe/libp2p-noise": "^5.0.0",
156
+ "@achingbrain/libp2p-gossipsub": "^0.13.5",
157
+ "@chainsafe/libp2p-noise": "^6.0.1",
158
+ "@libp2p/bootstrap": "^1.0.2",
159
+ "@libp2p/daemon-client": "^0.0.2",
160
+ "@libp2p/daemon-server": "^0.0.2",
161
+ "@libp2p/delegated-content-routing": "^1.0.2",
162
+ "@libp2p/delegated-peer-routing": "^1.0.2",
163
+ "@libp2p/floodsub": "^1.0.2",
164
+ "@libp2p/interface-compliance-tests": "^1.1.20",
165
+ "@libp2p/interop": "^0.0.3",
166
+ "@libp2p/kad-dht": "^1.0.3",
167
+ "@libp2p/mdns": "^1.0.3",
168
+ "@libp2p/mplex": "^1.0.1",
169
+ "@libp2p/tcp": "^1.0.6",
170
+ "@libp2p/tracked-map": "^1.0.4",
171
+ "@libp2p/webrtc-star": "^1.0.3",
172
+ "@libp2p/websockets": "^1.0.3",
137
173
  "@nodeutils/defaults-deep": "^1.1.0",
138
- "@types/es6-promisify": "^6.0.0",
139
- "@types/node": "^16.0.1",
174
+ "@types/node": "^16.11.26",
140
175
  "@types/node-forge": "^1.0.0",
176
+ "@types/p-fifo": "^1.0.0",
141
177
  "@types/varint": "^6.0.0",
142
- "aegir": "^36.0.0",
178
+ "@types/xsalsa20": "^1.1.0",
179
+ "aegir": "^36.1.3",
143
180
  "buffer": "^6.0.3",
181
+ "cborg": "^1.8.1",
144
182
  "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",
183
+ "go-libp2p": "^0.0.6",
184
+ "into-stream": "^7.0.0",
185
+ "ipfs-http-client": "^56.0.1",
186
+ "it-pair": "^2.0.2",
187
+ "it-pushable": "^2.0.1",
162
188
  "nock": "^13.0.3",
163
- "p-defer": "^3.0.0",
164
- "p-times": "^3.0.0",
165
- "p-wait-for": "^3.2.0",
189
+ "npm-run-all": "^4.1.5",
190
+ "p-defer": "^4.0.0",
191
+ "p-event": "^5.0.1",
192
+ "p-times": "^4.0.0",
193
+ "p-wait-for": "^4.1.0",
166
194
  "rimraf": "^3.0.2",
167
- "sinon": "^12.0.1",
168
- "util": "^0.12.3"
195
+ "sinon": "^13.0.1",
196
+ "ts-sinon": "^2.0.2"
169
197
  },
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
- ]
198
+ "browser": {
199
+ "nat-api": false
200
+ }
253
201
  }
@@ -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)