libp2p 0.36.1 → 0.36.2-1473044

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +54 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +51 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +72 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +190 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +93 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/index.d.ts +79 -144
  64. package/dist/src/connection-manager/index.d.ts.map +1 -1
  65. package/dist/src/connection-manager/index.js +295 -0
  66. package/dist/src/connection-manager/index.js.map +1 -0
  67. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  68. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  69. package/dist/src/connection-manager/latency-monitor.js +220 -0
  70. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  71. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  72. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  73. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  74. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  75. package/dist/src/constants.d.ts +22 -10
  76. package/dist/src/constants.d.ts.map +1 -1
  77. package/dist/src/constants.js +27 -0
  78. package/dist/src/constants.js.map +1 -0
  79. package/dist/src/content-routing/index.d.ts +26 -81
  80. package/dist/src/content-routing/index.d.ts.map +1 -1
  81. package/dist/src/content-routing/index.js +99 -0
  82. package/dist/src/content-routing/index.js.map +1 -0
  83. package/dist/src/content-routing/utils.d.ts +6 -49
  84. package/dist/src/content-routing/utils.d.ts.map +1 -1
  85. package/dist/src/content-routing/utils.js +42 -0
  86. package/dist/src/content-routing/utils.js.map +1 -0
  87. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  88. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  89. package/dist/src/dht/dht-content-routing.js +32 -0
  90. package/dist/src/dht/dht-content-routing.js.map +1 -0
  91. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  92. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  93. package/dist/src/dht/dht-peer-routing.js +26 -0
  94. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  95. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  96. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  97. package/dist/src/dialer/auto-dialer.js +24 -0
  98. package/dist/src/dialer/auto-dialer.js.map +1 -0
  99. package/dist/src/dialer/dial-request.d.ts +18 -46
  100. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  101. package/dist/src/dialer/dial-request.js +83 -0
  102. package/dist/src/dialer/dial-request.js.map +1 -0
  103. package/dist/src/dialer/index.d.ts +41 -148
  104. package/dist/src/dialer/index.d.ts.map +1 -1
  105. package/dist/src/dialer/index.js +280 -0
  106. package/dist/src/dialer/index.js.map +1 -0
  107. package/dist/src/errors.d.ts +68 -63
  108. package/dist/src/errors.d.ts.map +1 -1
  109. package/dist/src/errors.js +73 -0
  110. package/dist/src/errors.js.map +1 -0
  111. package/dist/src/fetch/constants.d.ts +1 -1
  112. package/dist/src/fetch/constants.d.ts.map +1 -1
  113. package/dist/src/fetch/constants.js +3 -0
  114. package/dist/src/fetch/constants.js.map +1 -0
  115. package/dist/src/fetch/index.d.ts +30 -49
  116. package/dist/src/fetch/index.d.ts.map +1 -1
  117. package/dist/src/fetch/index.js +129 -0
  118. package/dist/src/fetch/index.js.map +1 -0
  119. package/dist/src/fetch/pb/proto.d.ts +26 -0
  120. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  121. package/dist/src/fetch/pb/proto.js +44 -0
  122. package/dist/src/fetch/pb/proto.js.map +1 -0
  123. package/dist/src/get-peer.d.ts +4 -11
  124. package/dist/src/get-peer.d.ts.map +1 -1
  125. package/dist/src/get-peer.js +43 -0
  126. package/dist/src/get-peer.js.map +1 -0
  127. package/dist/src/identify/consts.d.ts +9 -9
  128. package/dist/src/identify/consts.d.ts.map +1 -1
  129. package/dist/src/identify/consts.js +11 -0
  130. package/dist/src/identify/consts.js.map +1 -0
  131. package/dist/src/identify/index.d.ts +42 -96
  132. package/dist/src/identify/index.d.ts.map +1 -1
  133. package/dist/src/identify/index.js +322 -0
  134. package/dist/src/identify/index.js.map +1 -0
  135. package/dist/src/identify/pb/message.d.ts +15 -0
  136. package/dist/src/identify/pb/message.d.ts.map +1 -0
  137. package/dist/src/identify/pb/message.js +24 -0
  138. package/dist/src/identify/pb/message.js.map +1 -0
  139. package/dist/src/index.d.ts +162 -491
  140. package/dist/src/index.d.ts.map +1 -1
  141. package/dist/src/index.js +9 -0
  142. package/dist/src/index.js.map +1 -0
  143. package/dist/src/insecure/index.d.ts +9 -0
  144. package/dist/src/insecure/index.d.ts.map +1 -0
  145. package/dist/src/insecure/index.js +81 -0
  146. package/dist/src/insecure/index.js.map +1 -0
  147. package/dist/src/insecure/pb/proto.d.ts +28 -0
  148. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  149. package/dist/src/insecure/pb/proto.js +46 -0
  150. package/dist/src/insecure/pb/proto.js.map +1 -0
  151. package/dist/src/keychain/cms.d.ts +6 -14
  152. package/dist/src/keychain/cms.d.ts.map +1 -1
  153. package/dist/src/keychain/cms.js +129 -0
  154. package/dist/src/keychain/cms.js.map +1 -0
  155. package/dist/src/keychain/index.d.ts +61 -81
  156. package/dist/src/keychain/index.d.ts.map +1 -1
  157. package/dist/src/keychain/index.js +493 -0
  158. package/dist/src/keychain/index.js.map +1 -0
  159. package/dist/src/keychain/util.d.ts +3 -6
  160. package/dist/src/keychain/util.d.ts.map +1 -1
  161. package/dist/src/keychain/util.js +79 -0
  162. package/dist/src/keychain/util.js.map +1 -0
  163. package/dist/src/libp2p.d.ts +78 -0
  164. package/dist/src/libp2p.d.ts.map +1 -0
  165. package/dist/src/libp2p.js +375 -0
  166. package/dist/src/libp2p.js.map +1 -0
  167. package/dist/src/metrics/index.d.ts +47 -104
  168. package/dist/src/metrics/index.d.ts.map +1 -1
  169. package/dist/src/metrics/index.js +231 -0
  170. package/dist/src/metrics/index.js.map +1 -0
  171. package/dist/src/metrics/moving-average.d.ts +14 -0
  172. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  173. package/dist/src/metrics/moving-average.js +40 -0
  174. package/dist/src/metrics/moving-average.js.map +1 -0
  175. package/dist/src/metrics/stats.d.ts +41 -93
  176. package/dist/src/metrics/stats.d.ts.map +1 -1
  177. package/dist/src/metrics/stats.js +183 -0
  178. package/dist/src/metrics/stats.js.map +1 -0
  179. package/dist/src/nat-manager.d.ts +42 -99
  180. package/dist/src/nat-manager.d.ts.map +1 -1
  181. package/dist/src/nat-manager.js +114 -0
  182. package/dist/src/nat-manager.js.map +1 -0
  183. package/dist/src/peer-record-updater.d.ts +15 -0
  184. package/dist/src/peer-record-updater.d.ts.map +1 -0
  185. package/dist/src/peer-record-updater.js +44 -0
  186. package/dist/src/peer-record-updater.js.map +1 -0
  187. package/dist/src/peer-routing.d.ts +39 -84
  188. package/dist/src/peer-routing.d.ts.map +1 -1
  189. package/dist/src/peer-routing.js +108 -0
  190. package/dist/src/peer-routing.js.map +1 -0
  191. package/dist/src/ping/constants.d.ts +4 -4
  192. package/dist/src/ping/constants.d.ts.map +1 -1
  193. package/dist/src/ping/constants.js +5 -0
  194. package/dist/src/ping/constants.js.map +1 -0
  195. package/dist/src/ping/index.d.ts +17 -31
  196. package/dist/src/ping/index.d.ts.map +1 -1
  197. package/dist/src/ping/index.js +56 -0
  198. package/dist/src/ping/index.js.map +1 -0
  199. package/dist/src/pnet/crypto.d.ts +15 -5
  200. package/dist/src/pnet/crypto.d.ts.map +1 -1
  201. package/dist/src/pnet/crypto.js +60 -0
  202. package/dist/src/pnet/crypto.js.map +1 -0
  203. package/dist/src/pnet/errors.d.ts +5 -5
  204. package/dist/src/pnet/errors.d.ts.map +1 -1
  205. package/dist/src/pnet/errors.js +6 -0
  206. package/dist/src/pnet/errors.js.map +1 -0
  207. package/dist/src/pnet/index.d.ts +11 -20
  208. package/dist/src/pnet/index.d.ts.map +1 -1
  209. package/dist/src/pnet/index.js +66 -0
  210. package/dist/src/pnet/index.js.map +1 -0
  211. package/dist/src/pnet/key-generator.d.ts +3 -7
  212. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  213. package/dist/src/pnet/key-generator.js +25 -0
  214. package/dist/src/pnet/key-generator.js.map +1 -0
  215. package/dist/src/registrar.d.ts +27 -65
  216. package/dist/src/registrar.d.ts.map +1 -1
  217. package/dist/src/registrar.js +159 -0
  218. package/dist/src/registrar.js.map +1 -0
  219. package/dist/src/transport-manager.d.ts +34 -82
  220. package/dist/src/transport-manager.d.ts.map +1 -1
  221. package/dist/src/transport-manager.js +223 -0
  222. package/dist/src/transport-manager.js.map +1 -0
  223. package/dist/src/upgrader.d.ts +49 -129
  224. package/dist/src/upgrader.d.ts.map +1 -1
  225. package/dist/src/upgrader.js +402 -0
  226. package/dist/src/upgrader.js.map +1 -0
  227. package/dist/src/version.d.ts +3 -0
  228. package/dist/src/version.d.ts.map +1 -0
  229. package/dist/src/version.js +3 -0
  230. package/dist/src/version.js.map +1 -0
  231. package/package.json +150 -197
  232. package/src/address-manager/index.ts +129 -0
  233. package/src/circuit/README.md +16 -11
  234. package/src/circuit/auto-relay.ts +284 -0
  235. package/src/circuit/circuit/hop.ts +211 -0
  236. package/src/circuit/circuit/stop.ts +78 -0
  237. package/src/circuit/circuit/stream-handler.ts +86 -0
  238. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  239. package/src/circuit/constants.ts +31 -0
  240. package/src/circuit/index.ts +120 -0
  241. package/src/circuit/{listener.js → listener.ts} +21 -27
  242. package/src/circuit/multicodec.ts +2 -0
  243. package/src/circuit/{protocol → pb}/index.proto +1 -1
  244. package/src/circuit/pb/index.ts +88 -0
  245. package/src/circuit/transport.ts +216 -0
  246. package/src/circuit/utils.ts +12 -0
  247. package/src/config.ts +101 -0
  248. package/src/connection-manager/auto-dialler.ts +154 -0
  249. package/src/connection-manager/index.ts +422 -0
  250. package/src/connection-manager/latency-monitor.ts +319 -0
  251. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  252. package/src/constants.ts +31 -0
  253. package/src/content-routing/index.ts +143 -0
  254. package/src/content-routing/utils.ts +54 -0
  255. package/src/dht/dht-content-routing.ts +43 -0
  256. package/src/dht/dht-peer-routing.ts +35 -0
  257. package/src/dialer/auto-dialer.ts +40 -0
  258. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  259. package/src/dialer/index.ts +371 -0
  260. package/src/errors.ts +71 -0
  261. package/src/fetch/README.md +1 -1
  262. package/src/fetch/constants.ts +3 -0
  263. package/src/fetch/index.ts +167 -0
  264. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  265. package/src/fetch/pb/proto.ts +58 -0
  266. package/src/get-peer.ts +57 -0
  267. package/src/identify/consts.ts +13 -0
  268. package/src/identify/index.ts +445 -0
  269. package/src/identify/{message.proto → pb/message.proto} +0 -0
  270. package/src/identify/pb/message.ts +36 -0
  271. package/src/index.ts +242 -0
  272. package/src/insecure/index.ts +101 -0
  273. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/insecure/pb/proto.ts +61 -0
  275. package/src/keychain/{cms.js → cms.ts} +62 -58
  276. package/src/keychain/index.ts +588 -0
  277. package/src/keychain/{util.js → util.ts} +7 -17
  278. package/src/libp2p.ts +513 -0
  279. package/src/metrics/index.ts +310 -0
  280. package/src/metrics/moving-average.ts +53 -0
  281. package/src/metrics/stats.ts +238 -0
  282. package/src/nat-manager.ts +194 -0
  283. package/src/peer-record-updater.ts +55 -0
  284. package/src/peer-routing.ts +185 -0
  285. package/src/ping/README.md +1 -1
  286. package/src/ping/constants.ts +5 -0
  287. package/src/ping/index.ts +83 -0
  288. package/src/pnet/README.md +2 -2
  289. package/src/pnet/crypto.ts +67 -0
  290. package/src/pnet/errors.ts +5 -0
  291. package/src/pnet/index.ts +95 -0
  292. package/src/pnet/key-generator.ts +28 -0
  293. package/src/registrar.ts +205 -0
  294. package/src/transport-manager.ts +279 -0
  295. package/src/upgrader.ts +499 -0
  296. package/src/version.ts +3 -0
  297. package/dist/index.min.js +0 -55
  298. package/dist/src/circuit/protocol/index.d.ts +0 -173
  299. package/dist/src/fetch/proto.d.ts +0 -134
  300. package/dist/src/identify/message.d.ts +0 -95
  301. package/dist/src/insecure/plaintext.d.ts +0 -12
  302. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  303. package/dist/src/insecure/proto.d.ts +0 -128
  304. package/dist/src/metrics/old-peers.d.ts +0 -3
  305. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  306. package/dist/src/metrics/tracked-map.d.ts +0 -8
  307. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  308. package/dist/src/peer-store/address-book.d.ts +0 -67
  309. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  310. package/dist/src/peer-store/index.d.ts +0 -58
  311. package/dist/src/peer-store/index.d.ts.map +0 -1
  312. package/dist/src/peer-store/key-book.d.ts +0 -40
  313. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  314. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  315. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  316. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  317. package/dist/src/peer-store/proto-book.d.ts +0 -43
  318. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  319. package/dist/src/peer-store/store.d.ts +0 -73
  320. package/dist/src/peer-store/store.d.ts.map +0 -1
  321. package/dist/src/peer-store/types.d.ts +0 -202
  322. package/dist/src/peer-store/types.d.ts.map +0 -1
  323. package/dist/src/ping/util.d.ts +0 -5
  324. package/dist/src/ping/util.d.ts.map +0 -1
  325. package/dist/src/pubsub-adapter.d.ts +0 -22
  326. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  327. package/dist/src/record/envelope/envelope.d.ts +0 -77
  328. package/dist/src/record/envelope/index.d.ts +0 -80
  329. package/dist/src/record/envelope/index.d.ts.map +0 -1
  330. package/dist/src/record/peer-record/consts.d.ts +0 -4
  331. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  332. package/dist/src/record/peer-record/index.d.ts +0 -60
  333. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  334. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  335. package/dist/src/record/utils.d.ts +0 -12
  336. package/dist/src/record/utils.d.ts.map +0 -1
  337. package/dist/src/types.d.ts +0 -90
  338. package/dist/src/types.d.ts.map +0 -1
  339. package/src/address-manager/index.js +0 -96
  340. package/src/circuit/auto-relay.js +0 -302
  341. package/src/circuit/circuit/hop.js +0 -205
  342. package/src/circuit/circuit/stop.js +0 -81
  343. package/src/circuit/circuit/stream-handler.js +0 -94
  344. package/src/circuit/constants.js +0 -12
  345. package/src/circuit/index.js +0 -102
  346. package/src/circuit/multicodec.js +0 -5
  347. package/src/circuit/protocol/index.d.ts +0 -173
  348. package/src/circuit/protocol/index.js +0 -530
  349. package/src/circuit/transport.js +0 -229
  350. package/src/circuit/utils.js +0 -17
  351. package/src/config.js +0 -114
  352. package/src/connection-manager/auto-dialler.js +0 -132
  353. package/src/connection-manager/index.js +0 -363
  354. package/src/connection-manager/latency-monitor.js +0 -264
  355. package/src/constants.js +0 -18
  356. package/src/content-routing/index.js +0 -163
  357. package/src/content-routing/utils.js +0 -89
  358. package/src/dht/dht-content-routing.js +0 -44
  359. package/src/dht/dht-peer-routing.js +0 -51
  360. package/src/dialer/index.js +0 -376
  361. package/src/errors.js +0 -66
  362. package/src/fetch/constants.js +0 -6
  363. package/src/fetch/index.js +0 -159
  364. package/src/fetch/proto.d.ts +0 -134
  365. package/src/fetch/proto.js +0 -333
  366. package/src/get-peer.js +0 -49
  367. package/src/identify/consts.js +0 -15
  368. package/src/identify/index.js +0 -384
  369. package/src/identify/message.d.ts +0 -95
  370. package/src/identify/message.js +0 -328
  371. package/src/index.js +0 -813
  372. package/src/insecure/plaintext.js +0 -95
  373. package/src/insecure/proto.d.ts +0 -128
  374. package/src/insecure/proto.js +0 -371
  375. package/src/keychain/index.js +0 -561
  376. package/src/metrics/index.js +0 -290
  377. package/src/metrics/old-peers.js +0 -16
  378. package/src/metrics/stats.js +0 -270
  379. package/src/metrics/tracked-map.js +0 -94
  380. package/src/nat-manager.js +0 -197
  381. package/src/peer-routing.js +0 -176
  382. package/src/peer-store/README.md +0 -145
  383. package/src/peer-store/address-book.js +0 -382
  384. package/src/peer-store/index.js +0 -121
  385. package/src/peer-store/key-book.js +0 -141
  386. package/src/peer-store/metadata-book.js +0 -250
  387. package/src/peer-store/pb/peer.d.ts +0 -222
  388. package/src/peer-store/pb/peer.js +0 -643
  389. package/src/peer-store/pb/peer.proto +0 -31
  390. package/src/peer-store/proto-book.js +0 -237
  391. package/src/peer-store/store.js +0 -263
  392. package/src/peer-store/types.ts +0 -245
  393. package/src/ping/constants.js +0 -8
  394. package/src/ping/index.js +0 -84
  395. package/src/ping/util.js +0 -18
  396. package/src/pnet/crypto.js +0 -84
  397. package/src/pnet/errors.js +0 -7
  398. package/src/pnet/index.js +0 -86
  399. package/src/pnet/key-generator.js +0 -33
  400. package/src/pubsub-adapter.js +0 -61
  401. package/src/record/README.md +0 -130
  402. package/src/record/envelope/envelope.d.ts +0 -77
  403. package/src/record/envelope/envelope.js +0 -243
  404. package/src/record/envelope/envelope.proto +0 -19
  405. package/src/record/envelope/index.js +0 -183
  406. package/src/record/peer-record/consts.js +0 -14
  407. package/src/record/peer-record/index.js +0 -113
  408. package/src/record/peer-record/peer-record.d.ts +0 -133
  409. package/src/record/peer-record/peer-record.js +0 -367
  410. package/src/record/peer-record/peer-record.proto +0 -18
  411. package/src/record/utils.js +0 -25
  412. package/src/registrar.js +0 -127
  413. package/src/transport-manager.js +0 -269
  414. package/src/types.ts +0 -98
  415. package/src/upgrader.js +0 -492
@@ -0,0 +1,190 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import errCode from 'err-code';
3
+ import * as mafmt from '@multiformats/mafmt';
4
+ import { Multiaddr } from '@multiformats/multiaddr';
5
+ import { CircuitRelay as CircuitPB } from './pb/index.js';
6
+ import { codes } from '../errors.js';
7
+ import { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn';
8
+ import { RELAY_CODEC } from './multicodec.js';
9
+ import { createListener } from './listener.js';
10
+ import { handleCanHop, handleHop, hop } from './circuit/hop.js';
11
+ import { handleStop } from './circuit/stop.js';
12
+ import { StreamHandler } from './circuit/stream-handler.js';
13
+ import { symbol } from '@libp2p/interfaces/transport';
14
+ import { peerIdFromString } from '@libp2p/peer-id';
15
+ import { Components } from '@libp2p/interfaces/components';
16
+ const log = logger('libp2p:circuit');
17
+ export class Circuit {
18
+ constructor() {
19
+ this.components = new Components();
20
+ }
21
+ init(components) {
22
+ this.components = components;
23
+ void this.components.getRegistrar().handle(RELAY_CODEC, (data) => {
24
+ void this._onProtocol(data).catch(err => {
25
+ log.error(err);
26
+ });
27
+ })
28
+ .catch(err => {
29
+ log.error(err);
30
+ });
31
+ }
32
+ hopEnabled() {
33
+ return true;
34
+ }
35
+ hopActive() {
36
+ return true;
37
+ }
38
+ get [symbol]() {
39
+ return true;
40
+ }
41
+ get [Symbol.toStringTag]() {
42
+ return this.constructor.name;
43
+ }
44
+ async _onProtocol(data) {
45
+ const { connection, stream } = data;
46
+ const streamHandler = new StreamHandler({ stream });
47
+ const request = await streamHandler.read();
48
+ if (request == null) {
49
+ log('request was invalid, could not read from stream');
50
+ streamHandler.write({
51
+ type: CircuitPB.Type.STATUS,
52
+ code: CircuitPB.Status.MALFORMED_MESSAGE
53
+ });
54
+ streamHandler.close();
55
+ return;
56
+ }
57
+ let virtualConnection;
58
+ switch (request.type) {
59
+ case CircuitPB.Type.CAN_HOP: {
60
+ log('received CAN_HOP request from %p', connection.remotePeer);
61
+ await handleCanHop({ circuit: this, connection, streamHandler });
62
+ break;
63
+ }
64
+ case CircuitPB.Type.HOP: {
65
+ log('received HOP request from %p', connection.remotePeer);
66
+ virtualConnection = await handleHop({
67
+ connection,
68
+ request,
69
+ streamHandler,
70
+ circuit: this,
71
+ connectionManager: this.components.getConnectionManager()
72
+ });
73
+ break;
74
+ }
75
+ case CircuitPB.Type.STOP: {
76
+ log('received STOP request from %p', connection.remotePeer);
77
+ virtualConnection = await handleStop({
78
+ connection,
79
+ request,
80
+ streamHandler
81
+ });
82
+ break;
83
+ }
84
+ default: {
85
+ log('Request of type %s not supported', request.type);
86
+ streamHandler.write({
87
+ type: CircuitPB.Type.STATUS,
88
+ code: CircuitPB.Status.MALFORMED_MESSAGE
89
+ });
90
+ streamHandler.close();
91
+ return;
92
+ }
93
+ }
94
+ if (virtualConnection != null) {
95
+ // @ts-expect-error dst peer will not be undefined
96
+ const remoteAddr = new Multiaddr(request.dstPeer.addrs[0]);
97
+ // @ts-expect-error dst peer will not be undefined
98
+ const localAddr = new Multiaddr(request.srcPeer.addrs[0]);
99
+ const maConn = streamToMaConnection({
100
+ stream: virtualConnection,
101
+ remoteAddr,
102
+ localAddr
103
+ });
104
+ const type = request.type === CircuitPB.Type.HOP ? 'relay' : 'inbound';
105
+ log('new %s connection %s', type, maConn.remoteAddr);
106
+ const conn = await this.components.getUpgrader().upgradeInbound(maConn);
107
+ log('%s connection %s upgraded', type, maConn.remoteAddr);
108
+ if (this.handler != null) {
109
+ this.handler(conn);
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Dial a peer over a relay
115
+ */
116
+ async dial(ma, options = {}) {
117
+ // Check the multiaddr to see if it contains a relay and a destination peer
118
+ const addrs = ma.toString().split('/p2p-circuit');
119
+ const relayAddr = new Multiaddr(addrs[0]);
120
+ const destinationAddr = new Multiaddr(addrs[addrs.length - 1]);
121
+ const relayId = relayAddr.getPeerId();
122
+ const destinationId = destinationAddr.getPeerId();
123
+ if (relayId == null || destinationId == null) {
124
+ const errMsg = 'Circuit relay dial failed as addresses did not have peer id';
125
+ log.error(errMsg);
126
+ throw errCode(new Error(errMsg), codes.ERR_RELAYED_DIAL);
127
+ }
128
+ const relayPeer = peerIdFromString(relayId);
129
+ const destinationPeer = peerIdFromString(destinationId);
130
+ let disconnectOnFailure = false;
131
+ let relayConnection = this.components.getConnectionManager().getConnection(relayPeer);
132
+ if (relayConnection == null) {
133
+ relayConnection = await this.components.getDialer().dial(relayAddr, options);
134
+ disconnectOnFailure = true;
135
+ }
136
+ try {
137
+ const virtualConnection = await hop({
138
+ connection: relayConnection,
139
+ request: {
140
+ type: CircuitPB.Type.HOP,
141
+ srcPeer: {
142
+ id: this.components.getPeerId().toBytes(),
143
+ addrs: this.components.getAddressManager().getAddresses().map(addr => addr.bytes)
144
+ },
145
+ dstPeer: {
146
+ id: destinationPeer.toBytes(),
147
+ addrs: [new Multiaddr(destinationAddr).bytes]
148
+ }
149
+ }
150
+ });
151
+ const localAddr = relayAddr.encapsulate(`/p2p-circuit/p2p/${this.components.getPeerId().toString()}`);
152
+ const maConn = streamToMaConnection({
153
+ stream: virtualConnection,
154
+ remoteAddr: ma,
155
+ localAddr
156
+ });
157
+ log('new outbound connection %s', maConn.remoteAddr);
158
+ return await this.components.getUpgrader().upgradeOutbound(maConn);
159
+ }
160
+ catch (err) {
161
+ log.error('Circuit relay dial failed', err);
162
+ disconnectOnFailure && await relayConnection.close();
163
+ throw err;
164
+ }
165
+ }
166
+ /**
167
+ * Create a listener
168
+ */
169
+ createListener(options) {
170
+ // Called on successful HOP and STOP requests
171
+ this.handler = options.handler;
172
+ return createListener({
173
+ dialer: this.components.getDialer(),
174
+ connectionManager: this.components.getConnectionManager()
175
+ });
176
+ }
177
+ /**
178
+ * Filter check for all Multiaddrs that this transport can dial on
179
+ *
180
+ * @param {Multiaddr[]} multiaddrs
181
+ * @returns {Multiaddr[]}
182
+ */
183
+ filter(multiaddrs) {
184
+ multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
185
+ return multiaddrs.filter((ma) => {
186
+ return mafmt.Circuit.matches(ma);
187
+ });
188
+ }
189
+ }
190
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/circuit/transport.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
- export function namespaceToCid(namespace: string): Promise<CID>;
2
- import { CID } from "multiformats/cid";
1
+ import { CID } from 'multiformats/cid';
2
+ /**
3
+ * Convert a namespace string into a cid
4
+ */
5
+ export declare function namespaceToCid(namespace: string): Promise<CID>;
3
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/circuit/utils.js"],"names":[],"mappings":"AAWgC,0CAHrB,MAAM,GACJ,QAAQ,GAAG,CAAC,CAOxB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/circuit/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE"}
@@ -0,0 +1,11 @@
1
+ import { CID } from 'multiformats/cid';
2
+ import { sha256 } from 'multiformats/hashes/sha2';
3
+ /**
4
+ * Convert a namespace string into a cid
5
+ */
6
+ export async function namespaceToCid(namespace) {
7
+ const bytes = new TextEncoder().encode(namespace);
8
+ const hash = await sha256.digest(bytes);
9
+ return CID.createV0(hash);
10
+ }
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/circuit/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,SAAiB;IACrD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEvC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC"}
@@ -1,86 +1,4 @@
1
- export function validate(opts: Libp2pOptions): {
2
- addresses: {
3
- listen: never[];
4
- announce: never[];
5
- noAnnounce: never[];
6
- announceFilter: (multiaddrs: Multiaddr[]) => import("multiaddr").Multiaddr[];
7
- };
8
- connectionManager: {
9
- minConnections: number;
10
- };
11
- connectionGater: {};
12
- transportManager: {
13
- faultTolerance: number;
14
- };
15
- dialer: {
16
- maxParallelDials: number;
17
- maxDialsPerPeer: number;
18
- dialTimeout: number;
19
- resolvers: {
20
- dnsaddr: any;
21
- };
22
- addressSorter: typeof publicAddressesFirst;
23
- };
24
- host: {
25
- agentVersion: string;
26
- };
27
- metrics: {
28
- enabled: boolean;
29
- };
30
- peerStore: {
31
- persistence: boolean;
32
- threshold: number;
33
- };
34
- peerRouting: {
35
- refreshManager: {
36
- enabled: boolean;
37
- interval: number;
38
- bootDelay: number;
39
- };
40
- };
41
- config: {
42
- protocolPrefix: string;
43
- dht: {
44
- enabled: boolean;
45
- kBucketSize: number;
46
- };
47
- nat: {
48
- enabled: boolean;
49
- ttl: number;
50
- keepAlive: boolean;
51
- gateway: null;
52
- externalIp: null;
53
- pmp: {
54
- enabled: boolean;
55
- };
56
- };
57
- peerDiscovery: {
58
- autoDial: boolean;
59
- };
60
- pubsub: {
61
- enabled: boolean;
62
- };
63
- relay: {
64
- enabled: boolean;
65
- advertise: {
66
- bootDelay: number;
67
- enabled: boolean;
68
- ttl: number;
69
- };
70
- hop: {
71
- enabled: boolean;
72
- active: boolean;
73
- };
74
- autoRelay: {
75
- enabled: boolean;
76
- maxListeners: number;
77
- };
78
- };
79
- transport: {};
80
- };
81
- } & Libp2pOptions & constructorOptions;
82
- export type Multiaddr = import('multiaddr').Multiaddr;
83
- export type ConnectionGater = import('./types').ConnectionGater;
84
- export type Libp2pOptions = import('.').Libp2pOptions;
85
- export type constructorOptions = import('.').constructorOptions;
1
+ import type { Libp2pInit } from './index.js';
2
+ import type { RecursivePartial } from '@libp2p/interfaces';
3
+ export declare function validateConfig(opts: RecursivePartial<Libp2pInit>): Libp2pInit;
86
4
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.js"],"names":[],"mappings":"AA0G0B,+BAHf,aAAa,GACX;;;;;qCA/EmB,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+Ed,aAAa,GAAG,kBAAkB,CAS9D;wBAnGY,OAAO,WAAW,EAAE,SAAS;8BAC7B,OAAO,SAAS,EAAE,eAAe;4BACjC,OAAO,GAAG,EAAE,aAAa;iCACzB,OAAO,GAAG,EAAE,kBAAkB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAyE1D,wBAAgB,cAAc,CAAE,IAAI,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,UAAU,CAgB9E"}
@@ -0,0 +1,93 @@
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 { codes, messages } from './errors.js';
9
+ import errCode from 'err-code';
10
+ const DefaultConfig = {
11
+ addresses: {
12
+ listen: [],
13
+ announce: [],
14
+ noAnnounce: [],
15
+ announceFilter: (multiaddrs) => multiaddrs
16
+ },
17
+ connectionManager: {
18
+ maxConnections: 300,
19
+ minConnections: 50,
20
+ autoDialInterval: 10000,
21
+ autoDial: true
22
+ },
23
+ connectionGater: {},
24
+ transportManager: {
25
+ faultTolerance: FaultTolerance.FATAL_ALL
26
+ },
27
+ dialer: {
28
+ maxParallelDials: Constants.MAX_PARALLEL_DIALS,
29
+ maxDialsPerPeer: Constants.MAX_PER_PEER_DIALS,
30
+ dialTimeout: Constants.DIAL_TIMEOUT,
31
+ resolvers: {
32
+ dnsaddr: dnsaddrResolver
33
+ },
34
+ addressSorter: publicAddressesFirst
35
+ },
36
+ host: {
37
+ agentVersion: AGENT_VERSION
38
+ },
39
+ metrics: {
40
+ enabled: false,
41
+ computeThrottleMaxQueueSize: 1000,
42
+ computeThrottleTimeout: 2000,
43
+ movingAverageIntervals: [
44
+ 60 * 1000,
45
+ 5 * 60 * 1000,
46
+ 15 * 60 * 1000 // 15 minutes
47
+ ],
48
+ maxOldPeersRetention: 50
49
+ },
50
+ peerRouting: {
51
+ refreshManager: {
52
+ enabled: true,
53
+ interval: 6e5,
54
+ bootDelay: 10e3
55
+ }
56
+ },
57
+ protocolPrefix: 'ipfs',
58
+ nat: {
59
+ enabled: true,
60
+ ttl: 7200,
61
+ keepAlive: true
62
+ },
63
+ relay: {
64
+ enabled: true,
65
+ advertise: {
66
+ bootDelay: RelayConstants.ADVERTISE_BOOT_DELAY,
67
+ enabled: false,
68
+ ttl: RelayConstants.ADVERTISE_TTL
69
+ },
70
+ hop: {
71
+ enabled: false,
72
+ active: false
73
+ },
74
+ autoRelay: {
75
+ enabled: false,
76
+ maxListeners: 2
77
+ }
78
+ }
79
+ };
80
+ export function validateConfig(opts) {
81
+ const resultingOptions = mergeOptions(DefaultConfig, opts);
82
+ if (resultingOptions.transports == null || resultingOptions.transports.length < 1) {
83
+ throw errCode(new Error(messages.ERR_TRANSPORTS_REQUIRED), codes.ERR_TRANSPORTS_REQUIRED);
84
+ }
85
+ if (resultingOptions.connectionEncryption == null || resultingOptions.connectionEncryption.length === 0) {
86
+ throw errCode(new Error(messages.CONN_ENCRYPTION_REQUIRED), codes.CONN_ENCRYPTION_REQUIRED);
87
+ }
88
+ if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef
89
+ throw errCode(new Error(messages.ERR_PROTECTOR_REQUIRED), codes.ERR_PROTECTOR_REQUIRED);
90
+ }
91
+ return resultingOptions;
92
+ }
93
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,31 @@
1
- export = AutoDialler;
2
- /**
3
- * @typedef {import('../index')} Libp2p
4
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
5
- */
6
- /**
7
- * @typedef {Object} AutoDiallerOptions
8
- * @property {boolean} [enabled = true] - Should preemptively guarantee connections are above the low watermark
9
- * @property {number} [minConnections = 0] - The minimum number of connections to avoid pruning
10
- * @property {number} [autoDialInterval = 10000] - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
11
- */
12
- declare class AutoDialler {
1
+ import type { Startable } from '@libp2p/interfaces';
2
+ import type { Components } from '@libp2p/interfaces/components';
3
+ export interface AutoDiallerInit {
4
+ /**
5
+ * Should preemptively guarantee connections are above the low watermark
6
+ */
7
+ enabled?: boolean;
8
+ /**
9
+ * The minimum number of connections to avoid pruning
10
+ */
11
+ minConnections?: number;
12
+ /**
13
+ * How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
14
+ */
15
+ autoDialInterval?: number;
16
+ }
17
+ export declare class AutoDialler implements Startable {
18
+ private readonly components;
19
+ private readonly options;
20
+ private running;
21
+ private autoDialTimeout?;
13
22
  /**
14
23
  * Proactively tries to connect to known peers stored in the PeerStore.
15
24
  * It will keep the number of connections below the upper limit and sort
16
25
  * the peers to connect based on wether we know their keys and protocols.
17
- *
18
- * @class
19
- * @param {Libp2p} libp2p
20
- * @param {AutoDiallerOptions} options
21
26
  */
22
- constructor(libp2p: Libp2p, options?: AutoDiallerOptions);
23
- _options: any;
24
- _libp2p: import("../index");
25
- _running: boolean;
26
- _autoDialTimeout: any;
27
- _autoDial(): Promise<void>;
27
+ constructor(components: Components, init: AutoDiallerInit);
28
+ isStarted(): boolean;
28
29
  /**
29
30
  * Starts the auto dialer
30
31
  */
@@ -33,24 +34,6 @@ declare class AutoDialler {
33
34
  * Stops the auto dialler
34
35
  */
35
36
  stop(): Promise<void>;
37
+ _autoDial(): Promise<void>;
36
38
  }
37
- declare namespace AutoDialler {
38
- export { Libp2p, Connection, AutoDiallerOptions };
39
- }
40
- type Libp2p = import('../index');
41
- type AutoDiallerOptions = {
42
- /**
43
- * - Should preemptively guarantee connections are above the low watermark
44
- */
45
- enabled?: boolean | undefined;
46
- /**
47
- * - The minimum number of connections to avoid pruning
48
- */
49
- minConnections?: number | undefined;
50
- /**
51
- * - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
52
- */
53
- autoDialInterval?: number | undefined;
54
- };
55
- type Connection = import("libp2p-interfaces/src/connection/connection");
56
39
  //# sourceMappingURL=auto-dialler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-dialler.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/auto-dialler.js"],"names":[],"mappings":";AAqBA;;;GAGG;AAEH;;;;;GAKG;AAEH;IACE;;;;;;;;OAQG;IACH,oBAHW,MAAM,YACN,kBAAkB,EAU5B;IAPC,cAAqF;IACrF,4BAAqB;IACrB,kBAAqB;IACrB,sBAA4B;IAoC9B,2BA6CC;IA3ED;;OAEG;IACH,uBAWC;IAED;;OAEG;IACH,sBASC;CAgDF;;;;cA3GY,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"auto-dialler.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/auto-dialler.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAQD,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAqB;IAE7C;;;;OAIG;gBACU,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe;IAS1D,SAAS;IAIT;;OAEG;IACG,KAAK;IAeX;;OAEG;IACG,IAAI;IAeJ,SAAS;CAyDhB"}
@@ -0,0 +1,105 @@
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
+ const log = logger('libp2p:connection-manager:auto-dialler');
10
+ const defaultOptions = {
11
+ enabled: true,
12
+ minConnections: 0,
13
+ autoDialInterval: 10000
14
+ };
15
+ export class AutoDialler {
16
+ /**
17
+ * Proactively tries to connect to known peers stored in the PeerStore.
18
+ * It will keep the number of connections below the upper limit and sort
19
+ * the peers to connect based on wether we know their keys and protocols.
20
+ */
21
+ constructor(components, init) {
22
+ this.components = components;
23
+ this.options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, init);
24
+ this.running = false;
25
+ this._autoDial = this._autoDial.bind(this);
26
+ log('options: %j', this.options);
27
+ }
28
+ isStarted() {
29
+ return this.running;
30
+ }
31
+ /**
32
+ * Starts the auto dialer
33
+ */
34
+ async start() {
35
+ if (!this.options.enabled) {
36
+ log('not enabled');
37
+ return;
38
+ }
39
+ this.running = true;
40
+ void this._autoDial().catch(err => {
41
+ log.error('could start autodial', err);
42
+ });
43
+ log('started');
44
+ }
45
+ /**
46
+ * Stops the auto dialler
47
+ */
48
+ async stop() {
49
+ if (!this.options.enabled) {
50
+ log('not enabled');
51
+ return;
52
+ }
53
+ this.running = false;
54
+ if (this.autoDialTimeout != null) {
55
+ this.autoDialTimeout.clear();
56
+ }
57
+ log('stopped');
58
+ }
59
+ async _autoDial() {
60
+ if (this.autoDialTimeout != null) {
61
+ this.autoDialTimeout.clear();
62
+ }
63
+ const minConnections = this.options.minConnections;
64
+ // Already has enough connections
65
+ if (this.components.getConnectionManager().getConnectionList().length >= minConnections) {
66
+ this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval);
67
+ return;
68
+ }
69
+ // Sort peers on whether we know protocols or public keys for them
70
+ const allPeers = await this.components.getPeerStore().all();
71
+ const peers = await pipe(
72
+ // shuffle the peers
73
+ allPeers.sort(() => Math.random() > 0.5 ? 1 : -1), (source) => filter(source, (peer) => !peer.id.equals(this.components.getPeerId())), (source) => sort(source, (a, b) => {
74
+ if (b.protocols.length > a.protocols.length) {
75
+ return 1;
76
+ }
77
+ else if (b.id.publicKey != null && a.id.publicKey == null) {
78
+ return 1;
79
+ }
80
+ return -1;
81
+ }), async (source) => await all(source));
82
+ for (let i = 0; this.running && i < peers.length && this.components.getConnectionManager().getConnectionList().length < minConnections; i++) {
83
+ // Connection Manager was stopped during async dial
84
+ if (!this.running) {
85
+ return;
86
+ }
87
+ const peer = peers[i];
88
+ if (this.components.getConnectionManager().getConnection(peer.id) == null) {
89
+ log('connecting to a peerStore stored peer %p', peer.id);
90
+ try {
91
+ await this.components.getDialer().dial(peer.id);
92
+ }
93
+ catch (err) {
94
+ log.error('could not connect to peerStore stored peer', err);
95
+ }
96
+ }
97
+ }
98
+ // Connection Manager was stopped
99
+ if (!this.running) {
100
+ return;
101
+ }
102
+ this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval);
103
+ }
104
+ }
105
+ //# sourceMappingURL=auto-dialler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-dialler.js","sourceRoot":"","sources":["../../../src/connection-manager/auto-dialler.ts"],"names":[],"mappings":"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"}