libp2p 0.36.2 → 0.37.0-5934b13

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 (431) 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 +107 -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 +266 -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 +339 -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 +71 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +76 -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 +45 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +117 -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 +107 -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 +404 -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 +143 -203
  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/connection-manager/dialer/dial-request.ts +137 -0
  259. package/src/connection-manager/dialer/index.ts +381 -0
  260. package/src/connection-manager/index.ts +513 -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 +74 -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 +198 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +185 -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 +501 -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/dial-request.js +0 -103
  376. package/src/dialer/index.js +0 -376
  377. package/src/errors.js +0 -66
  378. package/src/fetch/constants.js +0 -6
  379. package/src/fetch/index.js +0 -159
  380. package/src/fetch/proto.d.ts +0 -134
  381. package/src/fetch/proto.js +0 -333
  382. package/src/get-peer.js +0 -49
  383. package/src/identify/consts.js +0 -15
  384. package/src/identify/index.js +0 -384
  385. package/src/identify/message.d.ts +0 -95
  386. package/src/identify/message.js +0 -328
  387. package/src/index.js +0 -813
  388. package/src/insecure/plaintext.js +0 -95
  389. package/src/insecure/proto.d.ts +0 -128
  390. package/src/insecure/proto.js +0 -371
  391. package/src/keychain/index.js +0 -561
  392. package/src/metrics/index.js +0 -290
  393. package/src/metrics/old-peers.js +0 -16
  394. package/src/metrics/stats.js +0 -270
  395. package/src/metrics/tracked-map.js +0 -94
  396. package/src/nat-manager.js +0 -197
  397. package/src/peer-routing.js +0 -176
  398. package/src/peer-store/README.md +0 -145
  399. package/src/peer-store/address-book.js +0 -382
  400. package/src/peer-store/index.js +0 -121
  401. package/src/peer-store/key-book.js +0 -141
  402. package/src/peer-store/metadata-book.js +0 -250
  403. package/src/peer-store/pb/peer.d.ts +0 -222
  404. package/src/peer-store/pb/peer.js +0 -643
  405. package/src/peer-store/pb/peer.proto +0 -31
  406. package/src/peer-store/proto-book.js +0 -237
  407. package/src/peer-store/store.js +0 -263
  408. package/src/peer-store/types.ts +0 -245
  409. package/src/ping/constants.js +0 -8
  410. package/src/ping/index.js +0 -84
  411. package/src/ping/util.js +0 -18
  412. package/src/pnet/crypto.js +0 -84
  413. package/src/pnet/errors.js +0 -7
  414. package/src/pnet/index.js +0 -86
  415. package/src/pnet/key-generator.js +0 -33
  416. package/src/pubsub-adapter.js +0 -61
  417. package/src/record/README.md +0 -130
  418. package/src/record/envelope/envelope.d.ts +0 -77
  419. package/src/record/envelope/envelope.js +0 -243
  420. package/src/record/envelope/envelope.proto +0 -19
  421. package/src/record/envelope/index.js +0 -183
  422. package/src/record/peer-record/consts.js +0 -14
  423. package/src/record/peer-record/index.js +0 -113
  424. package/src/record/peer-record/peer-record.d.ts +0 -133
  425. package/src/record/peer-record/peer-record.js +0 -367
  426. package/src/record/peer-record/peer-record.proto +0 -18
  427. package/src/record/utils.js +0 -25
  428. package/src/registrar.js +0 -127
  429. package/src/transport-manager.js +0 -269
  430. package/src/types.ts +0 -98
  431. 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
+ }
@@ -0,0 +1,137 @@
1
+ import errCode from 'err-code'
2
+ import { anySignal } from 'any-signal'
3
+ import FIFO from 'p-fifo'
4
+ import { setMaxListeners } from 'events'
5
+ import { codes } from '../../errors.js'
6
+ import { logger } from '@libp2p/logger'
7
+ import type { Multiaddr } from '@multiformats/multiaddr'
8
+ import type { Connection } from '@libp2p/interfaces/connection'
9
+ import type { AbortOptions } from '@libp2p/interfaces'
10
+ import type { Dialer } from './index.js'
11
+
12
+ const log = logger('libp2p:dialer:dial-request')
13
+
14
+ export interface DialAction {
15
+ (m: Multiaddr, options: AbortOptions): Promise<Connection>
16
+ }
17
+
18
+ export interface DialRequestOptions {
19
+ addrs: Multiaddr[]
20
+ dialAction: DialAction
21
+ dialer: Dialer
22
+ }
23
+
24
+ export class DialRequest {
25
+ private readonly addrs: Multiaddr[]
26
+ private readonly dialer: Dialer
27
+ private readonly dialAction: DialAction
28
+
29
+ /**
30
+ * Manages running the `dialAction` on multiple provided `addrs` in parallel
31
+ * up to a maximum determined by the number of tokens returned
32
+ * from `dialer.getTokens`. Once a DialRequest is created, it can be
33
+ * started using `DialRequest.run(options)`. Once a single dial has succeeded,
34
+ * all other dials in the request will be cancelled.
35
+ */
36
+ constructor (options: DialRequestOptions) {
37
+ const {
38
+ addrs,
39
+ dialAction,
40
+ dialer
41
+ } = options
42
+
43
+ this.addrs = addrs
44
+ this.dialer = dialer
45
+ this.dialAction = dialAction
46
+ }
47
+
48
+ async run (options: AbortOptions = {}): Promise<Connection> {
49
+ const tokens = this.dialer.getTokens(this.addrs.length)
50
+
51
+ // If no tokens are available, throw
52
+ if (tokens.length < 1) {
53
+ throw errCode(new Error('No dial tokens available'), codes.ERR_NO_DIAL_TOKENS)
54
+ }
55
+
56
+ const tokenHolder = new FIFO<number>()
57
+
58
+ for (const token of tokens) {
59
+ void tokenHolder.push(token).catch(err => {
60
+ log.error(err)
61
+ })
62
+ }
63
+
64
+ const dialAbortControllers: Array<(AbortController | undefined)> = this.addrs.map(() => {
65
+ const controller = new AbortController()
66
+ try {
67
+ // fails on node < 15.4
68
+ setMaxListeners?.(Infinity, controller.signal)
69
+ } catch {}
70
+
71
+ return controller
72
+ })
73
+
74
+ if (options.signal != null) {
75
+ try {
76
+ // fails on node < 15.4
77
+ setMaxListeners?.(Infinity, options.signal)
78
+ } catch {}
79
+ }
80
+
81
+ let completedDials = 0
82
+ let done = false
83
+
84
+ try {
85
+ return await Promise.any(this.addrs.map(async (addr, i) => {
86
+ const token = await tokenHolder.shift() // get token
87
+ // End attempt once another attempt succeeded
88
+ if (done) {
89
+ this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
90
+ throw errCode(new Error('dialAction already succeeded'), codes.ERR_ALREADY_SUCCEEDED)
91
+ }
92
+
93
+ const controller = dialAbortControllers[i]
94
+ if (controller == null) {
95
+ throw errCode(new Error('dialAction did not come with an AbortController'), codes.ERR_INVALID_PARAMETERS)
96
+ }
97
+ let conn
98
+ try {
99
+ const signal = controller.signal
100
+ conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal })
101
+ // Remove the successful AbortController so it is not aborted
102
+ dialAbortControllers[i] = undefined
103
+ } finally {
104
+ completedDials++
105
+ // If we have more or equal dials remaining than tokens, recycle the token, otherwise release it
106
+ if (this.addrs.length - completedDials >= tokens.length) {
107
+ void tokenHolder.push(token).catch(err => {
108
+ log.error(err)
109
+ })
110
+ } else {
111
+ this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
112
+ }
113
+ }
114
+
115
+ if (conn == null) {
116
+ // Notify Promise.any that attempt was not successful
117
+ // to prevent from returning undefined despite there
118
+ // were successful dial attempts
119
+ throw errCode(new Error('dialAction led to empty object'), codes.ERR_TRANSPORT_DIAL_FAILED)
120
+ } else {
121
+ // This dial succeeded, don't attempt anything else
122
+ done = true
123
+ }
124
+
125
+ return conn
126
+ }))
127
+ } finally {
128
+ // success/failure happened, abort everything else
129
+ dialAbortControllers.forEach(c => {
130
+ if (c !== undefined) {
131
+ c.abort()
132
+ }
133
+ })
134
+ tokens.forEach(token => this.dialer.releaseToken(token)) // release tokens back to the dialer
135
+ }
136
+ }
137
+ }