libp2p 0.36.2 → 0.37.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 (430) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -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 +216 -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 +62 -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 +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -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 +192 -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 +91 -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/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +83 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +267 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +333 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +70 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +75 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +42 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +114 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +108 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +402 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +144 -201
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
  259. package/src/connection-manager/dialer/index.ts +382 -0
  260. package/src/connection-manager/index.ts +508 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +73 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +194 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +186 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +499 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/index.js +0 -376
  376. package/src/errors.js +0 -66
  377. package/src/fetch/constants.js +0 -6
  378. package/src/fetch/index.js +0 -159
  379. package/src/fetch/proto.d.ts +0 -134
  380. package/src/fetch/proto.js +0 -333
  381. package/src/get-peer.js +0 -49
  382. package/src/identify/consts.js +0 -15
  383. package/src/identify/index.js +0 -384
  384. package/src/identify/message.d.ts +0 -95
  385. package/src/identify/message.js +0 -328
  386. package/src/index.js +0 -813
  387. package/src/insecure/plaintext.js +0 -95
  388. package/src/insecure/proto.d.ts +0 -128
  389. package/src/insecure/proto.js +0 -371
  390. package/src/keychain/index.js +0 -561
  391. package/src/metrics/index.js +0 -290
  392. package/src/metrics/old-peers.js +0 -16
  393. package/src/metrics/stats.js +0 -270
  394. package/src/metrics/tracked-map.js +0 -94
  395. package/src/nat-manager.js +0 -197
  396. package/src/peer-routing.js +0 -176
  397. package/src/peer-store/README.md +0 -145
  398. package/src/peer-store/address-book.js +0 -382
  399. package/src/peer-store/index.js +0 -121
  400. package/src/peer-store/key-book.js +0 -141
  401. package/src/peer-store/metadata-book.js +0 -250
  402. package/src/peer-store/pb/peer.d.ts +0 -222
  403. package/src/peer-store/pb/peer.js +0 -643
  404. package/src/peer-store/pb/peer.proto +0 -31
  405. package/src/peer-store/proto-book.js +0 -237
  406. package/src/peer-store/store.js +0 -263
  407. package/src/peer-store/types.ts +0 -245
  408. package/src/ping/constants.js +0 -8
  409. package/src/ping/index.js +0 -84
  410. package/src/ping/util.js +0 -18
  411. package/src/pnet/crypto.js +0 -84
  412. package/src/pnet/errors.js +0 -7
  413. package/src/pnet/index.js +0 -86
  414. package/src/pnet/key-generator.js +0 -33
  415. package/src/pubsub-adapter.js +0 -61
  416. package/src/record/README.md +0 -130
  417. package/src/record/envelope/envelope.d.ts +0 -77
  418. package/src/record/envelope/envelope.js +0 -243
  419. package/src/record/envelope/envelope.proto +0 -19
  420. package/src/record/envelope/index.js +0 -183
  421. package/src/record/peer-record/consts.js +0 -14
  422. package/src/record/peer-record/index.js +0 -113
  423. package/src/record/peer-record/peer-record.d.ts +0 -133
  424. package/src/record/peer-record/peer-record.js +0 -367
  425. package/src/record/peer-record/peer-record.proto +0 -18
  426. package/src/record/utils.js +0 -25
  427. package/src/registrar.js +0 -127
  428. package/src/transport-manager.js +0 -269
  429. package/src/types.ts +0 -98
  430. package/src/upgrader.js +0 -492
package/src/config.ts ADDED
@@ -0,0 +1,99 @@
1
+ import mergeOptions from 'merge-options'
2
+ import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
3
+ import * as Constants from './constants.js'
4
+ import { AGENT_VERSION } from './identify/consts.js'
5
+ import * as RelayConstants from './circuit/constants.js'
6
+ import { publicAddressesFirst } from '@libp2p/utils/address-sort'
7
+ import { FaultTolerance } from './transport-manager.js'
8
+ import type { Multiaddr } from '@multiformats/multiaddr'
9
+ import type { Libp2pInit } from './index.js'
10
+ import { codes, messages } from './errors.js'
11
+ import errCode from 'err-code'
12
+ import type { RecursivePartial } from '@libp2p/interfaces'
13
+
14
+ const DefaultConfig: Partial<Libp2pInit> = {
15
+ addresses: {
16
+ listen: [],
17
+ announce: [],
18
+ noAnnounce: [],
19
+ announceFilter: (multiaddrs: Multiaddr[]) => multiaddrs
20
+ },
21
+ connectionManager: {
22
+ maxConnections: 300,
23
+ minConnections: 50,
24
+ autoDial: true,
25
+ autoDialInterval: 10000,
26
+ maxParallelDials: Constants.MAX_PARALLEL_DIALS,
27
+ maxDialsPerPeer: Constants.MAX_PER_PEER_DIALS,
28
+ dialTimeout: Constants.DIAL_TIMEOUT,
29
+ resolvers: {
30
+ dnsaddr: dnsaddrResolver
31
+ },
32
+ addressSorter: publicAddressesFirst
33
+ },
34
+ connectionGater: {},
35
+ transportManager: {
36
+ faultTolerance: FaultTolerance.FATAL_ALL
37
+ },
38
+ host: {
39
+ agentVersion: AGENT_VERSION
40
+ },
41
+ metrics: {
42
+ enabled: false,
43
+ computeThrottleMaxQueueSize: 1000,
44
+ computeThrottleTimeout: 2000,
45
+ movingAverageIntervals: [
46
+ 60 * 1000, // 1 minute
47
+ 5 * 60 * 1000, // 5 minutes
48
+ 15 * 60 * 1000 // 15 minutes
49
+ ],
50
+ maxOldPeersRetention: 50
51
+ },
52
+ peerRouting: {
53
+ refreshManager: {
54
+ enabled: true,
55
+ interval: 6e5,
56
+ bootDelay: 10e3
57
+ }
58
+ },
59
+ protocolPrefix: 'ipfs',
60
+ nat: {
61
+ enabled: true,
62
+ ttl: 7200,
63
+ keepAlive: true
64
+ },
65
+ relay: {
66
+ enabled: true,
67
+ advertise: {
68
+ bootDelay: RelayConstants.ADVERTISE_BOOT_DELAY,
69
+ enabled: false,
70
+ ttl: RelayConstants.ADVERTISE_TTL
71
+ },
72
+ hop: {
73
+ enabled: false,
74
+ active: false
75
+ },
76
+ autoRelay: {
77
+ enabled: false,
78
+ maxListeners: 2
79
+ }
80
+ }
81
+ }
82
+
83
+ export function validateConfig (opts: RecursivePartial<Libp2pInit>): Libp2pInit {
84
+ const resultingOptions: Libp2pInit = mergeOptions(DefaultConfig, opts)
85
+
86
+ if (resultingOptions.transports == null || resultingOptions.transports.length < 1) {
87
+ throw errCode(new Error(messages.ERR_TRANSPORTS_REQUIRED), codes.ERR_TRANSPORTS_REQUIRED)
88
+ }
89
+
90
+ if (resultingOptions.connectionEncryption == null || resultingOptions.connectionEncryption.length === 0) {
91
+ throw errCode(new Error(messages.CONN_ENCRYPTION_REQUIRED), codes.CONN_ENCRYPTION_REQUIRED)
92
+ }
93
+
94
+ if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef
95
+ throw errCode(new Error(messages.ERR_PROTECTOR_REQUIRED), codes.ERR_PROTECTOR_REQUIRED)
96
+ }
97
+
98
+ return resultingOptions
99
+ }
@@ -0,0 +1,154 @@
1
+ import { logger } from '@libp2p/logger'
2
+ import mergeOptions from 'merge-options'
3
+ // @ts-expect-error retimer does not have types
4
+ import retimer from 'retimer'
5
+ import all from 'it-all'
6
+ import { pipe } from 'it-pipe'
7
+ import filter from 'it-filter'
8
+ import sort from 'it-sort'
9
+ import type { Startable } from '@libp2p/interfaces/startable'
10
+ import type { Components } from '@libp2p/interfaces/components'
11
+
12
+ const log = logger('libp2p:connection-manager:auto-dialler')
13
+
14
+ export interface AutoDiallerInit {
15
+ /**
16
+ * Should preemptively guarantee connections are above the low watermark
17
+ */
18
+ enabled?: boolean
19
+
20
+ /**
21
+ * The minimum number of connections to avoid pruning
22
+ */
23
+ minConnections?: number
24
+
25
+ /**
26
+ * How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
27
+ */
28
+ autoDialInterval?: number
29
+ }
30
+
31
+ const defaultOptions: Partial<AutoDiallerInit> = {
32
+ enabled: true,
33
+ minConnections: 0,
34
+ autoDialInterval: 10000
35
+ }
36
+
37
+ export class AutoDialler implements Startable {
38
+ private readonly components: Components
39
+ private readonly options: Required<AutoDiallerInit>
40
+ private running: boolean
41
+ private autoDialTimeout?: ReturnType<retimer>
42
+
43
+ /**
44
+ * Proactively tries to connect to known peers stored in the PeerStore.
45
+ * It will keep the number of connections below the upper limit and sort
46
+ * the peers to connect based on wether we know their keys and protocols.
47
+ */
48
+ constructor (components: Components, init: AutoDiallerInit) {
49
+ this.components = components
50
+ this.options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, init)
51
+ this.running = false
52
+ this._autoDial = this._autoDial.bind(this)
53
+
54
+ log('options: %j', this.options)
55
+ }
56
+
57
+ isStarted () {
58
+ return this.running
59
+ }
60
+
61
+ /**
62
+ * Starts the auto dialer
63
+ */
64
+ async start () {
65
+ if (!this.options.enabled) {
66
+ log('not enabled')
67
+ return
68
+ }
69
+
70
+ this.running = true
71
+
72
+ void this._autoDial().catch(err => {
73
+ log.error('could start autodial', err)
74
+ })
75
+
76
+ log('started')
77
+ }
78
+
79
+ /**
80
+ * Stops the auto dialler
81
+ */
82
+ async stop () {
83
+ if (!this.options.enabled) {
84
+ log('not enabled')
85
+ return
86
+ }
87
+
88
+ this.running = false
89
+
90
+ if (this.autoDialTimeout != null) {
91
+ this.autoDialTimeout.clear()
92
+ }
93
+
94
+ log('stopped')
95
+ }
96
+
97
+ async _autoDial () {
98
+ if (this.autoDialTimeout != null) {
99
+ this.autoDialTimeout.clear()
100
+ }
101
+
102
+ const minConnections = this.options.minConnections
103
+
104
+ // Already has enough connections
105
+ if (this.components.getConnectionManager().getConnections().length >= minConnections) {
106
+ this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval)
107
+
108
+ return
109
+ }
110
+
111
+ // Sort peers on whether we know protocols or public keys for them
112
+ const allPeers = await this.components.getPeerStore().all()
113
+
114
+ const peers = await pipe(
115
+ // shuffle the peers
116
+ allPeers.sort(() => Math.random() > 0.5 ? 1 : -1),
117
+ (source) => filter(source, (peer) => !peer.id.equals(this.components.getPeerId())),
118
+ (source) => sort(source, (a, b) => {
119
+ if (b.protocols.length > a.protocols.length) {
120
+ return 1
121
+ } else if (b.id.publicKey != null && a.id.publicKey == null) {
122
+ return 1
123
+ }
124
+ return -1
125
+ }),
126
+ async (source) => await all(source)
127
+ )
128
+
129
+ for (let i = 0; this.running && i < peers.length && this.components.getConnectionManager().getConnections().length < minConnections; i++) {
130
+ // Connection Manager was stopped during async dial
131
+ if (!this.running) {
132
+ return
133
+ }
134
+
135
+ const peer = peers[i]
136
+
137
+ if (this.components.getConnectionManager().getConnections(peer.id).length === 0) {
138
+ log('connecting to a peerStore stored peer %p', peer.id)
139
+ try {
140
+ await this.components.getConnectionManager().openConnection(peer.id)
141
+ } catch (err: any) {
142
+ log.error('could not connect to peerStore stored peer', err)
143
+ }
144
+ }
145
+ }
146
+
147
+ // Connection Manager was stopped
148
+ if (!this.running) {
149
+ return
150
+ }
151
+
152
+ this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval)
153
+ }
154
+ }
@@ -0,0 +1,59 @@
1
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info'
2
+ import { logger } from '@libp2p/logger'
3
+ import type { Components } from '@libp2p/interfaces/components'
4
+ import { TimeoutController } from 'timeout-abort-controller'
5
+
6
+ const log = logger('libp2p:dialer:auto-dialer')
7
+
8
+ export interface AutoDialerInit {
9
+ enabled: boolean
10
+ minConnections: number
11
+ dialTimeout: number
12
+ }
13
+
14
+ export class AutoDialer {
15
+ private readonly components: Components
16
+ private readonly enabled: boolean
17
+ private readonly minConnections: number
18
+ private readonly dialTimeout: number
19
+
20
+ constructor (components: Components, init: AutoDialerInit) {
21
+ this.components = components
22
+ this.enabled = init.enabled
23
+ this.minConnections = init.minConnections
24
+ this.dialTimeout = init.dialTimeout
25
+ }
26
+
27
+ public handle (evt: CustomEvent<PeerInfo>) {
28
+ const { detail: peer } = evt
29
+
30
+ if (!this.enabled) {
31
+ return
32
+ }
33
+
34
+ const connections = this.components.getConnectionManager().getConnections(peer.id)
35
+
36
+ // If auto dialing is on and we have no connection to the peer, check if we should dial
37
+ if (connections.length === 0) {
38
+ const minConnections = this.minConnections ?? 0
39
+
40
+ const allConnections = this.components.getConnectionManager().getConnections()
41
+
42
+ if (minConnections > allConnections.length) {
43
+ log('auto-dialing discovered peer %p with timeout %d', peer.id, this.dialTimeout)
44
+
45
+ const controller = new TimeoutController(this.dialTimeout)
46
+
47
+ void this.components.getConnectionManager().openConnection(peer.id, {
48
+ signal: controller.signal
49
+ })
50
+ .catch(err => {
51
+ log.error('could not connect to discovered peer %p with %o', peer.id, err)
52
+ })
53
+ .finally(() => {
54
+ controller.clear()
55
+ })
56
+ }
57
+ }
58
+ }
59
+ }
@@ -1,91 +1,102 @@
1
- 'use strict'
2
-
3
- const errCode = require('err-code')
4
- const { anySignal } = require('any-signal')
5
- // @ts-ignore p-fifo does not export types
6
- const FIFO = require('p-fifo')
7
- const pAny = require('p-any')
8
- // @ts-expect-error setMaxListeners is missing from the types
9
- const { setMaxListeners } = require('events')
10
- const { codes } = require('../errors')
11
-
12
- /**
13
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
14
- * @typedef {import('./')} Dialer
15
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
16
- */
17
-
18
- /**
19
- * @typedef {Object} DialOptions
20
- * @property {AbortSignal} signal
21
- *
22
- * @typedef {Object} DialRequestOptions
23
- * @property {Multiaddr[]} addrs
24
- * @property {(m: Multiaddr, options: DialOptions) => Promise<Connection>} dialAction
25
- * @property {Dialer} dialer
26
- */
27
-
28
- class DialRequest {
1
+ import errCode from 'err-code'
2
+ import { anySignal } from 'any-signal'
3
+ import FIFO from 'p-fifo'
4
+ // @ts-expect-error setMaxListeners is missing from the node 16 types
5
+ import { setMaxListeners } from 'events'
6
+ import { codes } from '../../errors.js'
7
+ import { logger } from '@libp2p/logger'
8
+ import type { Multiaddr } from '@multiformats/multiaddr'
9
+ import type { Connection } from '@libp2p/interfaces/connection'
10
+ import type { AbortOptions } from '@libp2p/interfaces'
11
+ import type { Dialer } from './index.js'
12
+
13
+ const log = logger('libp2p:dialer:dial-request')
14
+
15
+ export interface DialAction {
16
+ (m: Multiaddr, options: AbortOptions): Promise<Connection>
17
+ }
18
+
19
+ export interface DialRequestOptions {
20
+ addrs: Multiaddr[]
21
+ dialAction: DialAction
22
+ dialer: Dialer
23
+ }
24
+
25
+ export class DialRequest {
26
+ private readonly addrs: Multiaddr[]
27
+ private readonly dialer: Dialer
28
+ private readonly dialAction: DialAction
29
+
29
30
  /**
30
31
  * Manages running the `dialAction` on multiple provided `addrs` in parallel
31
32
  * up to a maximum determined by the number of tokens returned
32
33
  * from `dialer.getTokens`. Once a DialRequest is created, it can be
33
34
  * started using `DialRequest.run(options)`. Once a single dial has succeeded,
34
35
  * all other dials in the request will be cancelled.
35
- *
36
- * @class
37
- * @param {DialRequestOptions} options
38
36
  */
39
- constructor ({
40
- addrs,
41
- dialAction,
42
- dialer
43
- }) {
37
+ constructor (options: DialRequestOptions) {
38
+ const {
39
+ addrs,
40
+ dialAction,
41
+ dialer
42
+ } = options
43
+
44
44
  this.addrs = addrs
45
45
  this.dialer = dialer
46
46
  this.dialAction = dialAction
47
47
  }
48
48
 
49
- /**
50
- * @async
51
- * @param {object} [options]
52
- * @param {AbortSignal} [options.signal] - An AbortController signal
53
- * @returns {Promise<Connection>}
54
- */
55
- async run (options = {}) {
49
+ async run (options: AbortOptions = {}): Promise<Connection> {
56
50
  const tokens = this.dialer.getTokens(this.addrs.length)
51
+
57
52
  // If no tokens are available, throw
58
53
  if (tokens.length < 1) {
59
54
  throw errCode(new Error('No dial tokens available'), codes.ERR_NO_DIAL_TOKENS)
60
55
  }
61
56
 
62
- const tokenHolder = new FIFO()
63
- tokens.forEach(token => tokenHolder.push(token))
57
+ const tokenHolder = new FIFO<number>()
58
+
59
+ for (const token of tokens) {
60
+ void tokenHolder.push(token).catch(err => {
61
+ log.error(err)
62
+ })
63
+ }
64
+
64
65
  const dialAbortControllers = this.addrs.map(() => {
65
66
  const controller = new AbortController()
66
67
  try {
67
68
  // fails on node < 15.4
68
- setMaxListeners && setMaxListeners(Infinity, controller.signal)
69
+ setMaxListeners?.(Infinity, controller.signal)
69
70
  } catch {}
70
71
 
71
72
  return controller
72
73
  })
74
+
75
+ if (options.signal != null) {
76
+ try {
77
+ // fails on node < 15.4
78
+ setMaxListeners?.(Infinity, options.signal)
79
+ } catch {}
80
+ }
81
+
73
82
  let completedDials = 0
74
83
 
75
84
  try {
76
- return await pAny(this.addrs.map(async (addr, i) => {
85
+ return await Promise.any(this.addrs.map(async (addr, i) => {
77
86
  const token = await tokenHolder.shift() // get token
78
87
  let conn
79
88
  try {
80
89
  const signal = dialAbortControllers[i].signal
81
- conn = await this.dialAction(addr, { ...options, signal: options.signal ? anySignal([signal, options.signal]) : signal })
90
+ conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal })
82
91
  // Remove the successful AbortController so it is not aborted
83
92
  dialAbortControllers.splice(i, 1)
84
93
  } finally {
85
94
  completedDials++
86
95
  // If we have more or equal dials remaining than tokens, recycle the token, otherwise release it
87
96
  if (this.addrs.length - completedDials >= tokens.length) {
88
- tokenHolder.push(token)
97
+ void tokenHolder.push(token).catch(err => {
98
+ log.error(err)
99
+ })
89
100
  } else {
90
101
  this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
91
102
  }
@@ -99,5 +110,3 @@ class DialRequest {
99
110
  }
100
111
  }
101
112
  }
102
-
103
- module.exports = DialRequest