libp2p 0.36.0 → 0.36.2-199395d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +25 -52
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +16 -8
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +16 -35
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +60 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +54 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/{protocol → pb}/index.d.ts +0 -0
  44. package/{src/circuit/protocol → dist/src/circuit/pb}/index.js +7 -9
  45. package/dist/src/circuit/transport.d.ts +18 -78
  46. package/dist/src/circuit/transport.d.ts.map +1 -1
  47. package/dist/src/circuit/transport.js +190 -0
  48. package/dist/src/circuit/transport.js.map +1 -0
  49. package/dist/src/circuit/utils.d.ts +5 -2
  50. package/dist/src/circuit/utils.d.ts.map +1 -1
  51. package/dist/src/circuit/utils.js +11 -0
  52. package/dist/src/circuit/utils.js.map +1 -0
  53. package/dist/src/config.d.ts +3 -85
  54. package/dist/src/config.d.ts.map +1 -1
  55. package/dist/src/config.js +93 -0
  56. package/dist/src/config.js.map +1 -0
  57. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  58. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  59. package/dist/src/connection-manager/auto-dialler.js +105 -0
  60. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  61. package/dist/src/connection-manager/index.d.ts +79 -144
  62. package/dist/src/connection-manager/index.d.ts.map +1 -1
  63. package/dist/src/connection-manager/index.js +295 -0
  64. package/dist/src/connection-manager/index.js.map +1 -0
  65. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  66. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  67. package/dist/src/connection-manager/latency-monitor.js +220 -0
  68. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  69. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  70. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  71. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  72. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  73. package/dist/src/constants.d.ts +22 -10
  74. package/dist/src/constants.d.ts.map +1 -1
  75. package/dist/src/constants.js +27 -0
  76. package/dist/src/constants.js.map +1 -0
  77. package/dist/src/content-routing/index.d.ts +26 -81
  78. package/dist/src/content-routing/index.d.ts.map +1 -1
  79. package/dist/src/content-routing/index.js +99 -0
  80. package/dist/src/content-routing/index.js.map +1 -0
  81. package/dist/src/content-routing/utils.d.ts +6 -49
  82. package/dist/src/content-routing/utils.d.ts.map +1 -1
  83. package/dist/src/content-routing/utils.js +42 -0
  84. package/dist/src/content-routing/utils.js.map +1 -0
  85. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  86. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  87. package/dist/src/dht/dht-content-routing.js +32 -0
  88. package/dist/src/dht/dht-content-routing.js.map +1 -0
  89. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  90. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  91. package/dist/src/dht/dht-peer-routing.js +26 -0
  92. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  93. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  94. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  95. package/dist/src/dialer/auto-dialer.js +24 -0
  96. package/dist/src/dialer/auto-dialer.js.map +1 -0
  97. package/dist/src/dialer/dial-request.d.ts +18 -46
  98. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  99. package/dist/src/dialer/dial-request.js +83 -0
  100. package/dist/src/dialer/dial-request.js.map +1 -0
  101. package/dist/src/dialer/index.d.ts +41 -148
  102. package/dist/src/dialer/index.d.ts.map +1 -1
  103. package/dist/src/dialer/index.js +281 -0
  104. package/dist/src/dialer/index.js.map +1 -0
  105. package/dist/src/errors.d.ts +68 -63
  106. package/dist/src/errors.d.ts.map +1 -1
  107. package/dist/src/errors.js +73 -0
  108. package/dist/src/errors.js.map +1 -0
  109. package/dist/src/fetch/constants.d.ts +1 -1
  110. package/dist/src/fetch/constants.d.ts.map +1 -1
  111. package/dist/src/fetch/constants.js +3 -0
  112. package/dist/src/fetch/constants.js.map +1 -0
  113. package/dist/src/fetch/index.d.ts +30 -49
  114. package/dist/src/fetch/index.d.ts.map +1 -1
  115. package/dist/src/fetch/index.js +130 -0
  116. package/dist/src/fetch/index.js.map +1 -0
  117. package/dist/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  118. package/{src/fetch → dist/src/fetch/pb}/proto.js +7 -9
  119. package/dist/src/get-peer.d.ts +4 -11
  120. package/dist/src/get-peer.d.ts.map +1 -1
  121. package/dist/src/get-peer.js +43 -0
  122. package/dist/src/get-peer.js.map +1 -0
  123. package/dist/src/identify/consts.d.ts +9 -9
  124. package/dist/src/identify/consts.d.ts.map +1 -1
  125. package/dist/src/identify/consts.js +11 -0
  126. package/dist/src/identify/consts.js.map +1 -0
  127. package/dist/src/identify/index.d.ts +40 -96
  128. package/dist/src/identify/index.d.ts.map +1 -1
  129. package/dist/src/identify/index.js +322 -0
  130. package/dist/src/identify/index.js.map +1 -0
  131. package/{src/identify → dist/src/identify/pb}/message.d.ts +20 -5
  132. package/{src/identify → dist/src/identify/pb}/message.js +83 -42
  133. package/dist/src/index.d.ts +157 -583
  134. package/dist/src/index.d.ts.map +1 -1
  135. package/dist/src/index.js +9 -0
  136. package/dist/src/index.js.map +1 -0
  137. package/dist/src/insecure/index.d.ts +9 -0
  138. package/dist/src/insecure/index.d.ts.map +1 -0
  139. package/dist/src/insecure/index.js +78 -0
  140. package/dist/src/insecure/index.js.map +1 -0
  141. package/dist/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  142. package/{src/insecure → dist/src/insecure/pb}/proto.js +39 -22
  143. package/dist/src/keychain/cms.d.ts +6 -14
  144. package/dist/src/keychain/cms.d.ts.map +1 -1
  145. package/dist/src/keychain/cms.js +129 -0
  146. package/dist/src/keychain/cms.js.map +1 -0
  147. package/dist/src/keychain/index.d.ts +62 -82
  148. package/dist/src/keychain/index.d.ts.map +1 -1
  149. package/dist/src/keychain/index.js +493 -0
  150. package/dist/src/keychain/index.js.map +1 -0
  151. package/dist/src/keychain/util.d.ts +3 -6
  152. package/dist/src/keychain/util.d.ts.map +1 -1
  153. package/dist/src/keychain/util.js +79 -0
  154. package/dist/src/keychain/util.js.map +1 -0
  155. package/dist/src/libp2p.d.ts +75 -0
  156. package/dist/src/libp2p.d.ts.map +1 -0
  157. package/dist/src/libp2p.js +368 -0
  158. package/dist/src/libp2p.js.map +1 -0
  159. package/dist/src/metrics/index.d.ts +47 -104
  160. package/dist/src/metrics/index.d.ts.map +1 -1
  161. package/dist/src/metrics/index.js +231 -0
  162. package/dist/src/metrics/index.js.map +1 -0
  163. package/dist/src/metrics/moving-average.d.ts +14 -0
  164. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  165. package/dist/src/metrics/moving-average.js +40 -0
  166. package/dist/src/metrics/moving-average.js.map +1 -0
  167. package/dist/src/metrics/stats.d.ts +45 -93
  168. package/dist/src/metrics/stats.d.ts.map +1 -1
  169. package/dist/src/metrics/stats.js +183 -0
  170. package/dist/src/metrics/stats.js.map +1 -0
  171. package/dist/src/nat-manager.d.ts +42 -99
  172. package/dist/src/nat-manager.d.ts.map +1 -1
  173. package/dist/src/nat-manager.js +114 -0
  174. package/dist/src/nat-manager.js.map +1 -0
  175. package/dist/src/peer-record-updater.d.ts +15 -0
  176. package/dist/src/peer-record-updater.d.ts.map +1 -0
  177. package/dist/src/peer-record-updater.js +44 -0
  178. package/dist/src/peer-record-updater.js.map +1 -0
  179. package/dist/src/peer-routing.d.ts +39 -84
  180. package/dist/src/peer-routing.d.ts.map +1 -1
  181. package/dist/src/peer-routing.js +108 -0
  182. package/dist/src/peer-routing.js.map +1 -0
  183. package/dist/src/ping/constants.d.ts +4 -4
  184. package/dist/src/ping/constants.d.ts.map +1 -1
  185. package/dist/src/ping/constants.js +5 -0
  186. package/dist/src/ping/constants.js.map +1 -0
  187. package/dist/src/ping/index.d.ts +26 -33
  188. package/dist/src/ping/index.d.ts.map +1 -1
  189. package/dist/src/ping/index.js +56 -0
  190. package/dist/src/ping/index.js.map +1 -0
  191. package/dist/src/pnet/crypto.d.ts +15 -5
  192. package/dist/src/pnet/crypto.d.ts.map +1 -1
  193. package/dist/src/pnet/crypto.js +60 -0
  194. package/dist/src/pnet/crypto.js.map +1 -0
  195. package/dist/src/pnet/errors.d.ts +5 -5
  196. package/dist/src/pnet/errors.d.ts.map +1 -1
  197. package/dist/src/pnet/errors.js +6 -0
  198. package/dist/src/pnet/errors.js.map +1 -0
  199. package/dist/src/pnet/index.d.ts +11 -20
  200. package/dist/src/pnet/index.d.ts.map +1 -1
  201. package/dist/src/pnet/index.js +66 -0
  202. package/dist/src/pnet/index.js.map +1 -0
  203. package/dist/src/pnet/key-generator.d.ts +3 -7
  204. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  205. package/dist/src/pnet/key-generator.js +25 -0
  206. package/dist/src/pnet/key-generator.js.map +1 -0
  207. package/dist/src/registrar.d.ts +27 -65
  208. package/dist/src/registrar.d.ts.map +1 -1
  209. package/dist/src/registrar.js +159 -0
  210. package/dist/src/registrar.js.map +1 -0
  211. package/dist/src/transport-manager.d.ts +34 -82
  212. package/dist/src/transport-manager.d.ts.map +1 -1
  213. package/dist/src/transport-manager.js +223 -0
  214. package/dist/src/transport-manager.js.map +1 -0
  215. package/dist/src/upgrader.d.ts +49 -129
  216. package/dist/src/upgrader.d.ts.map +1 -1
  217. package/dist/src/upgrader.js +402 -0
  218. package/dist/src/upgrader.js.map +1 -0
  219. package/dist/src/version.d.ts +3 -0
  220. package/dist/src/version.d.ts.map +1 -0
  221. package/dist/src/version.js +3 -0
  222. package/dist/src/version.js.map +1 -0
  223. package/package.json +145 -197
  224. package/src/address-manager/index.ts +129 -0
  225. package/src/circuit/README.md +16 -11
  226. package/src/circuit/auto-relay.ts +284 -0
  227. package/src/circuit/circuit/hop.ts +211 -0
  228. package/src/circuit/circuit/stop.ts +78 -0
  229. package/src/circuit/circuit/stream-handler.ts +87 -0
  230. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  231. package/src/circuit/constants.ts +31 -0
  232. package/src/circuit/index.ts +120 -0
  233. package/src/circuit/{listener.js → listener.ts} +21 -27
  234. package/src/circuit/multicodec.ts +2 -0
  235. package/src/circuit/{protocol → pb}/index.d.ts +0 -0
  236. package/src/circuit/pb/index.js +528 -0
  237. package/src/circuit/{protocol → pb}/index.proto +0 -0
  238. package/src/circuit/transport.ts +216 -0
  239. package/src/circuit/utils.ts +12 -0
  240. package/src/config.ts +101 -0
  241. package/src/connection-manager/auto-dialler.ts +154 -0
  242. package/src/connection-manager/index.ts +422 -0
  243. package/src/connection-manager/latency-monitor.ts +319 -0
  244. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  245. package/src/constants.ts +31 -0
  246. package/src/content-routing/index.ts +143 -0
  247. package/src/content-routing/utils.ts +54 -0
  248. package/src/dht/dht-content-routing.ts +43 -0
  249. package/src/dht/dht-peer-routing.ts +35 -0
  250. package/src/dialer/auto-dialer.ts +40 -0
  251. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  252. package/src/dialer/index.ts +374 -0
  253. package/src/errors.ts +71 -0
  254. package/src/fetch/README.md +1 -1
  255. package/src/fetch/constants.ts +3 -0
  256. package/src/fetch/{index.js → index.ts} +79 -70
  257. package/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  258. package/src/fetch/pb/proto.js +331 -0
  259. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  260. package/src/get-peer.ts +57 -0
  261. package/src/identify/consts.ts +13 -0
  262. package/src/identify/index.ts +445 -0
  263. package/{dist/src/identify → src/identify/pb}/message.d.ts +20 -5
  264. package/src/identify/pb/message.js +369 -0
  265. package/src/identify/{message.proto → pb/message.proto} +0 -0
  266. package/src/index.ts +234 -0
  267. package/src/insecure/index.ts +97 -0
  268. package/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  269. package/src/insecure/pb/proto.js +388 -0
  270. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  271. package/src/keychain/{cms.js → cms.ts} +62 -58
  272. package/src/keychain/index.ts +588 -0
  273. package/src/keychain/{util.js → util.ts} +7 -17
  274. package/src/libp2p.ts +501 -0
  275. package/src/metrics/index.ts +310 -0
  276. package/src/metrics/moving-average.ts +53 -0
  277. package/src/metrics/stats.ts +243 -0
  278. package/src/nat-manager.ts +194 -0
  279. package/src/peer-record-updater.ts +55 -0
  280. package/src/peer-routing.ts +185 -0
  281. package/src/ping/README.md +1 -1
  282. package/src/ping/constants.ts +5 -0
  283. package/src/ping/index.ts +83 -0
  284. package/src/pnet/README.md +2 -2
  285. package/src/pnet/crypto.ts +67 -0
  286. package/src/pnet/errors.ts +5 -0
  287. package/src/pnet/index.ts +95 -0
  288. package/src/pnet/key-generator.ts +28 -0
  289. package/src/registrar.ts +205 -0
  290. package/src/transport-manager.ts +279 -0
  291. package/src/upgrader.ts +499 -0
  292. package/src/version.ts +3 -0
  293. package/dist/index.min.js +0 -55
  294. package/dist/src/insecure/plaintext.d.ts +0 -12
  295. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  296. package/dist/src/metrics/old-peers.d.ts +0 -3
  297. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  298. package/dist/src/metrics/tracked-map.d.ts +0 -8
  299. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  300. package/dist/src/peer-store/address-book.d.ts +0 -67
  301. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  302. package/dist/src/peer-store/index.d.ts +0 -58
  303. package/dist/src/peer-store/index.d.ts.map +0 -1
  304. package/dist/src/peer-store/key-book.d.ts +0 -40
  305. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  306. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  307. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  308. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  309. package/dist/src/peer-store/proto-book.d.ts +0 -43
  310. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  311. package/dist/src/peer-store/store.d.ts +0 -73
  312. package/dist/src/peer-store/store.d.ts.map +0 -1
  313. package/dist/src/peer-store/types.d.ts +0 -202
  314. package/dist/src/peer-store/types.d.ts.map +0 -1
  315. package/dist/src/ping/util.d.ts +0 -5
  316. package/dist/src/ping/util.d.ts.map +0 -1
  317. package/dist/src/pubsub-adapter.d.ts +0 -22
  318. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  319. package/dist/src/record/envelope/envelope.d.ts +0 -77
  320. package/dist/src/record/envelope/index.d.ts +0 -80
  321. package/dist/src/record/envelope/index.d.ts.map +0 -1
  322. package/dist/src/record/peer-record/consts.d.ts +0 -4
  323. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  324. package/dist/src/record/peer-record/index.d.ts +0 -60
  325. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  326. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  327. package/dist/src/record/utils.d.ts +0 -12
  328. package/dist/src/record/utils.d.ts.map +0 -1
  329. package/dist/src/types.d.ts +0 -90
  330. package/dist/src/types.d.ts.map +0 -1
  331. package/src/address-manager/index.js +0 -96
  332. package/src/circuit/auto-relay.js +0 -302
  333. package/src/circuit/circuit/hop.js +0 -205
  334. package/src/circuit/circuit/stop.js +0 -81
  335. package/src/circuit/circuit/stream-handler.js +0 -94
  336. package/src/circuit/constants.js +0 -12
  337. package/src/circuit/index.js +0 -102
  338. package/src/circuit/multicodec.js +0 -5
  339. package/src/circuit/transport.js +0 -229
  340. package/src/circuit/utils.js +0 -17
  341. package/src/config.js +0 -114
  342. package/src/connection-manager/auto-dialler.js +0 -132
  343. package/src/connection-manager/index.js +0 -363
  344. package/src/connection-manager/latency-monitor.js +0 -264
  345. package/src/constants.js +0 -18
  346. package/src/content-routing/index.js +0 -163
  347. package/src/content-routing/utils.js +0 -89
  348. package/src/dht/dht-content-routing.js +0 -44
  349. package/src/dht/dht-peer-routing.js +0 -51
  350. package/src/dialer/index.js +0 -376
  351. package/src/errors.js +0 -66
  352. package/src/fetch/constants.js +0 -6
  353. package/src/get-peer.js +0 -49
  354. package/src/identify/consts.js +0 -15
  355. package/src/identify/index.js +0 -384
  356. package/src/index.js +0 -811
  357. package/src/insecure/plaintext.js +0 -95
  358. package/src/keychain/index.js +0 -561
  359. package/src/metrics/index.js +0 -290
  360. package/src/metrics/old-peers.js +0 -16
  361. package/src/metrics/stats.js +0 -270
  362. package/src/metrics/tracked-map.js +0 -94
  363. package/src/nat-manager.js +0 -197
  364. package/src/peer-routing.js +0 -176
  365. package/src/peer-store/README.md +0 -145
  366. package/src/peer-store/address-book.js +0 -382
  367. package/src/peer-store/index.js +0 -121
  368. package/src/peer-store/key-book.js +0 -141
  369. package/src/peer-store/metadata-book.js +0 -250
  370. package/src/peer-store/pb/peer.d.ts +0 -222
  371. package/src/peer-store/pb/peer.js +0 -643
  372. package/src/peer-store/pb/peer.proto +0 -31
  373. package/src/peer-store/proto-book.js +0 -237
  374. package/src/peer-store/store.js +0 -263
  375. package/src/peer-store/types.ts +0 -245
  376. package/src/ping/constants.js +0 -8
  377. package/src/ping/index.js +0 -85
  378. package/src/ping/util.js +0 -18
  379. package/src/pnet/crypto.js +0 -84
  380. package/src/pnet/errors.js +0 -7
  381. package/src/pnet/index.js +0 -86
  382. package/src/pnet/key-generator.js +0 -33
  383. package/src/pubsub-adapter.js +0 -61
  384. package/src/record/README.md +0 -130
  385. package/src/record/envelope/envelope.d.ts +0 -77
  386. package/src/record/envelope/envelope.js +0 -243
  387. package/src/record/envelope/envelope.proto +0 -19
  388. package/src/record/envelope/index.js +0 -183
  389. package/src/record/peer-record/consts.js +0 -14
  390. package/src/record/peer-record/index.js +0 -113
  391. package/src/record/peer-record/peer-record.d.ts +0 -133
  392. package/src/record/peer-record/peer-record.js +0 -367
  393. package/src/record/peer-record/peer-record.proto +0 -18
  394. package/src/record/utils.js +0 -25
  395. package/src/registrar.js +0 -127
  396. package/src/transport-manager.js +0 -269
  397. package/src/types.ts +0 -98
  398. package/src/upgrader.js +0 -492
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nat-manager.js","sourceRoot":"","sources":["../../src/nat-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Components } from '@libp2p/interfaces/components';
2
+ import type { Startable } from '@libp2p/interfaces';
3
+ export declare class PeerRecordUpdater implements Startable {
4
+ private readonly components;
5
+ private started;
6
+ constructor(components: Components);
7
+ isStarted(): boolean;
8
+ start(): Promise<void>;
9
+ stop(): Promise<void>;
10
+ /**
11
+ * Create (or update if existing) self peer record and store it in the AddressBook.
12
+ */
13
+ update(): void;
14
+ }
15
+ //# sourceMappingURL=peer-record-updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-record-updater.d.ts","sourceRoot":"","sources":["../../src/peer-record-updater.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAMnD,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,UAAU;IAMnC,SAAS;IAIH,KAAK;IAOL,IAAI;IAOV;;OAEG;IACH,MAAM;CAeP"}
@@ -0,0 +1,44 @@
1
+ import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';
2
+ import { logger } from '@libp2p/logger';
3
+ import { protocols } from '@multiformats/multiaddr';
4
+ const log = logger('libp2p:peer-record-updater');
5
+ export class PeerRecordUpdater {
6
+ constructor(components) {
7
+ this.components = components;
8
+ this.started = false;
9
+ this.update = this.update.bind(this);
10
+ }
11
+ isStarted() {
12
+ return this.started;
13
+ }
14
+ async start() {
15
+ this.started = true;
16
+ this.components.getTransportManager().addEventListener('listener:listening', this.update);
17
+ this.components.getTransportManager().addEventListener('listener:close', this.update);
18
+ this.components.getAddressManager().addEventListener('change:addresses', this.update);
19
+ }
20
+ async stop() {
21
+ this.started = false;
22
+ this.components.getTransportManager().removeEventListener('listener:listening', this.update);
23
+ this.components.getTransportManager().removeEventListener('listener:close', this.update);
24
+ this.components.getAddressManager().removeEventListener('change:addresses', this.update);
25
+ }
26
+ /**
27
+ * Create (or update if existing) self peer record and store it in the AddressBook.
28
+ */
29
+ update() {
30
+ Promise.resolve()
31
+ .then(async () => {
32
+ const peerRecord = new PeerRecord({
33
+ peerId: this.components.getPeerId(),
34
+ multiaddrs: this.components.getAddressManager().getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))
35
+ });
36
+ const envelope = await RecordEnvelope.seal(peerRecord, this.components.getPeerId());
37
+ await this.components.getPeerStore().addressBook.consumePeerRecord(envelope);
38
+ })
39
+ .catch(err => {
40
+ log.error('Could not update self peer record: %o', err);
41
+ });
42
+ }
43
+ }
44
+ //# sourceMappingURL=peer-record-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-record-updater.js","sourceRoot":"","sources":["../../src/peer-record-updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,MAAM,GAAG,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAEhD,MAAM,OAAO,iBAAiB;IAI5B,YAAa,UAAsB;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACzF,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACrF,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5F,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACxF,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1F,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,CAAC,OAAO,EAAE;aACd,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;aACpH,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAA;YACnF,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAC9E,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;IACN,CAAC;CACF"}
@@ -1,103 +1,58 @@
1
- export = PeerRouting;
2
- /**
3
- * @typedef {import('peer-id')} PeerId
4
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
5
- * @typedef {import('libp2p-interfaces/src/peer-routing/types').PeerRouting} PeerRoutingModule
6
- */
7
- /**
8
- * @typedef {Object} RefreshManagerOptions
9
- * @property {boolean} [enabled = true] - Whether to enable the Refresh manager
10
- * @property {number} [bootDelay = 6e5] - Boot delay to start the Refresh Manager (in ms)
11
- * @property {number} [interval = 10e3] - Interval between each Refresh Manager run (in ms)
12
- * @property {number} [timeout = 10e3] - How long to let each refresh run (in ms)
13
- *
14
- * @typedef {Object} PeerRoutingOptions
15
- * @property {RefreshManagerOptions} [refreshManager]
16
- */
17
- declare class PeerRouting {
1
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
2
+ import type { PeerRouting } from '@libp2p/interfaces/peer-routing';
3
+ import type { AbortOptions, Startable } from '@libp2p/interfaces';
4
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info';
5
+ import type { Components } from '@libp2p/interfaces/components';
6
+ export interface RefreshManagerInit {
18
7
  /**
19
- * @class
20
- * @param {import('./')} libp2p
8
+ * Whether to enable the Refresh manager
21
9
  */
22
- constructor(libp2p: import('./'));
23
- _peerId: import("peer-id");
24
- _peerStore: import("./peer-store/types").PeerStore;
25
- /** @type {PeerRoutingModule[]} */
26
- _routers: PeerRoutingModule[];
27
- _refreshManagerOptions: {
28
- enabled: boolean;
29
- interval: number;
30
- bootDelay: number;
31
- } & RefreshManagerOptions;
10
+ enabled?: boolean;
32
11
  /**
33
- * Recurrent task to find closest peers and add their addresses to the Address Book.
34
- */
35
- _findClosestPeersTask(): Promise<void>;
36
- /**
37
- * Start peer routing service.
38
- */
39
- start(): void;
40
- _timeoutId: any;
41
- /**
42
- * Stop peer routing service.
12
+ * Boot delay to start the Refresh Manager (in ms)
43
13
  */
44
- stop(): void;
14
+ bootDelay?: number;
45
15
  /**
46
- * Iterates over all peer routers in parallel to find the given peer.
47
- *
48
- * @param {PeerId} id - The id of the peer to find
49
- * @param {object} [options]
50
- * @param {number} [options.timeout] - How long the query should run
51
- * @returns {Promise<{ id: PeerId, multiaddrs: Multiaddr[] }>}
16
+ * Interval between each Refresh Manager run (in ms)
52
17
  */
53
- findPeer(id: PeerId, options?: {
54
- timeout?: number | undefined;
55
- } | undefined): Promise<{
56
- id: PeerId;
57
- multiaddrs: Multiaddr[];
58
- }>;
18
+ interval?: number;
59
19
  /**
60
- * Attempt to find the closest peers on the network to the given key.
61
- *
62
- * @param {Uint8Array} key - A CID like key
63
- * @param {Object} [options]
64
- * @param {number} [options.timeout=30e3] - How long the query can take
65
- * @param {AbortSignal} [options.signal] - An AbortSignal to abort the request
66
- * @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
20
+ * How long to let each refresh run (in ms)
67
21
  */
68
- getClosestPeers(key: Uint8Array, options?: {
69
- timeout?: number | undefined;
70
- signal?: AbortSignal | undefined;
71
- } | undefined): AsyncIterable<{
72
- id: PeerId;
73
- multiaddrs: Multiaddr[];
74
- }>;
22
+ timeout?: number;
75
23
  }
76
- declare namespace PeerRouting {
77
- export { PeerId, Multiaddr, PeerRoutingModule, RefreshManagerOptions, PeerRoutingOptions };
24
+ export interface PeerRoutingInit {
25
+ routers: PeerRouting[];
26
+ refreshManager?: RefreshManagerInit;
78
27
  }
79
- type PeerRoutingModule = import('libp2p-interfaces/src/peer-routing/types').PeerRouting;
80
- type RefreshManagerOptions = {
28
+ export declare class DefaultPeerRouting implements PeerRouting, Startable {
29
+ private readonly components;
30
+ private readonly routers;
31
+ private readonly refreshManagerInit;
32
+ private timeoutId?;
33
+ private started;
34
+ private abortController?;
35
+ constructor(components: Components, init: PeerRoutingInit);
36
+ isStarted(): boolean;
81
37
  /**
82
- * - Whether to enable the Refresh manager
38
+ * Start peer routing service.
83
39
  */
84
- enabled?: boolean | undefined;
40
+ start(): Promise<void>;
85
41
  /**
86
- * - Boot delay to start the Refresh Manager (in ms)
42
+ * Recurrent task to find closest peers and add their addresses to the Address Book.
87
43
  */
88
- bootDelay?: number | undefined;
44
+ _findClosestPeersTask(): Promise<void>;
89
45
  /**
90
- * - Interval between each Refresh Manager run (in ms)
46
+ * Stop peer routing service.
91
47
  */
92
- interval?: number | undefined;
48
+ stop(): Promise<void>;
93
49
  /**
94
- * - How long to let each refresh run (in ms)
50
+ * Iterates over all peer routers in parallel to find the given peer
95
51
  */
96
- timeout?: number | undefined;
97
- };
98
- type PeerId = import('peer-id');
99
- type Multiaddr = import('multiaddr').Multiaddr;
100
- type PeerRoutingOptions = {
101
- refreshManager?: RefreshManagerOptions | undefined;
102
- };
52
+ findPeer(id: PeerId, options?: AbortOptions): Promise<PeerInfo>;
53
+ /**
54
+ * Attempt to find the closest peers on the network to the given key
55
+ */
56
+ getClosestPeers(key: Uint8Array, options?: AbortOptions): AsyncIterable<PeerInfo>;
57
+ }
103
58
  //# sourceMappingURL=peer-routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.js"],"names":[],"mappings":";AA6BA;;;;GAIG;AAEH;;;;;;;;;GASG;AAEH;IACE;;;OAGG;IACH,oBAFW,OAAO,IAAI,CAAC,EAgBtB;IAbC,2BAA4B;IAC5B,mDAAkC;IAClC,kCAAkC;IAClC,UADW,iBAAiB,EAAE,CACmB;IAOjD;;;;8BAAwE;IAkB1E;;OAEG;IACH,uCAOC;IAvBD;;OAEG;IACH,cAQC;IAHC,gBAEC;IAeH;;OAEG;IACH,aAEC;IAED;;;;;;;OAOG;IACH,aALW,MAAM;;oBAGJ,QAAQ;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CA+B5D;IAED;;;;;;;;OAQG;IACH,qBANW,UAAU;;;oBAIR,cAAc;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CA2BlE;CACF;;;;yBA7IY,OAAO,0CAA0C,EAAE,WAAW;;;;;;;;;;;;;;;;;;;cAF9D,OAAO,SAAS,CAAC;iBACjB,OAAO,WAAW,EAAE,SAAS"}
1
+ {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC;AAED,qBAAa,kBAAmB,YAAW,WAAW,EAAE,SAAS;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,SAAS,CAAC,CAA+B;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAmB;gBAE9B,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe;IAS1D,SAAS;IAIT;;OAEG;IACG,KAAK;IAYX;;OAEG;IACG,qBAAqB;IA0B3B;;OAEG;IACG,IAAI;IASV;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}
@@ -0,0 +1,108 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import errCode from 'err-code';
3
+ import { codes, messages } from './errors.js';
4
+ import { storeAddresses, uniquePeers, requirePeers } from './content-routing/utils.js';
5
+ import { TimeoutController } from 'timeout-abort-controller';
6
+ import merge from 'it-merge';
7
+ import { pipe } from 'it-pipe';
8
+ import first from 'it-first';
9
+ import drain from 'it-drain';
10
+ import filter from 'it-filter';
11
+ import { setDelayedInterval, clearDelayedInterval
12
+ // @ts-expect-error module with no types
13
+ } from 'set-delayed-interval';
14
+ // @ts-expect-error setMaxListeners is missing from the node 16 types
15
+ import { setMaxListeners } from 'events';
16
+ const log = logger('libp2p:peer-routing');
17
+ export class DefaultPeerRouting {
18
+ constructor(components, init) {
19
+ this.components = components;
20
+ this.routers = init.routers;
21
+ this.refreshManagerInit = init.refreshManager ?? {};
22
+ this.started = false;
23
+ this._findClosestPeersTask = this._findClosestPeersTask.bind(this);
24
+ }
25
+ isStarted() {
26
+ return this.started;
27
+ }
28
+ /**
29
+ * Start peer routing service.
30
+ */
31
+ async start() {
32
+ if (this.started || this.routers.length === 0 || this.timeoutId != null || this.refreshManagerInit.enabled === false) {
33
+ return;
34
+ }
35
+ this.timeoutId = setDelayedInterval(this._findClosestPeersTask, this.refreshManagerInit.interval, this.refreshManagerInit.bootDelay);
36
+ this.started = true;
37
+ }
38
+ /**
39
+ * Recurrent task to find closest peers and add their addresses to the Address Book.
40
+ */
41
+ async _findClosestPeersTask() {
42
+ if (this.abortController != null) {
43
+ // we are already running the query
44
+ return;
45
+ }
46
+ try {
47
+ this.abortController = new TimeoutController(this.refreshManagerInit.timeout ?? 10e3);
48
+ // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
49
+ // appearing in the console
50
+ try {
51
+ // fails on node < 15.4
52
+ setMaxListeners?.(Infinity, this.abortController.signal);
53
+ }
54
+ catch { }
55
+ // nb getClosestPeers adds the addresses to the address book
56
+ await drain(this.getClosestPeers(this.components.getPeerId().toBytes(), { signal: this.abortController.signal }));
57
+ }
58
+ catch (err) {
59
+ log.error(err);
60
+ }
61
+ finally {
62
+ this.abortController?.clear();
63
+ this.abortController = undefined;
64
+ }
65
+ }
66
+ /**
67
+ * Stop peer routing service.
68
+ */
69
+ async stop() {
70
+ clearDelayedInterval(this.timeoutId);
71
+ // abort query if it is in-flight
72
+ this.abortController?.abort();
73
+ this.started = false;
74
+ }
75
+ /**
76
+ * Iterates over all peer routers in parallel to find the given peer
77
+ */
78
+ async findPeer(id, options) {
79
+ if (this.routers.length === 0) {
80
+ throw errCode(new Error('No peer routers available'), codes.ERR_NO_ROUTERS_AVAILABLE);
81
+ }
82
+ if (id.toString() === this.components.getPeerId().toString()) {
83
+ throw errCode(new Error('Should not try to find self'), codes.ERR_FIND_SELF);
84
+ }
85
+ const output = await pipe(merge(...this.routers.map(router => (async function* () {
86
+ try {
87
+ yield await router.findPeer(id, options);
88
+ }
89
+ catch (err) {
90
+ log.error(err);
91
+ }
92
+ })())), (source) => filter(source, Boolean), (source) => storeAddresses(source, this.components.getPeerStore()), async (source) => await first(source));
93
+ if (output != null) {
94
+ return output;
95
+ }
96
+ throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND);
97
+ }
98
+ /**
99
+ * Attempt to find the closest peers on the network to the given key
100
+ */
101
+ async *getClosestPeers(key, options) {
102
+ if (this.routers.length === 0) {
103
+ throw errCode(new Error('No peer routers available'), codes.ERR_NO_ROUTERS_AVAILABLE);
104
+ }
105
+ yield* pipe(merge(...this.routers.map(router => router.getClosestPeers(key, options))), (source) => storeAddresses(source, this.components.getPeerStore()), (source) => uniquePeers(source), (source) => requirePeers(source));
106
+ }
107
+ }
108
+ //# sourceMappingURL=peer-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-routing.js","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export const PROTOCOL: string;
2
- export const PING_LENGTH: number;
3
- export const PROTOCOL_VERSION: string;
4
- export const PROTOCOL_NAME: string;
1
+ export declare const PROTOCOL = "/ipfs/ping/1.0.0";
2
+ export declare const PING_LENGTH = 32;
3
+ export declare const PROTOCOL_VERSION = "1.0.0";
4
+ export declare const PROTOCOL_NAME = "ping";
5
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAA;AACvC,eAAO,MAAM,aAAa,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ export const PROTOCOL = '/ipfs/ping/1.0.0';
2
+ export const PING_LENGTH = 32;
3
+ export const PROTOCOL_VERSION = '1.0.0';
4
+ export const PROTOCOL_NAME = 'ping';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA"}
@@ -1,35 +1,28 @@
1
- export = ping;
2
- /**
3
- * @typedef {import('../')} Libp2p
4
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
5
- * @typedef {import('peer-id')} PeerId
6
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
7
- */
8
- /**
9
- * Ping a given peer and wait for its response, getting the operation latency.
10
- *
11
- * @param {Libp2p} node
12
- * @param {PeerId|Multiaddr} peer
13
- * @returns {Promise<number>}
14
- */
15
- declare function ping(node: Libp2p, peer: PeerId | Multiaddr): Promise<number>;
16
- declare namespace ping {
17
- export { mount, unmount, Libp2p, Multiaddr, PeerId, MuxedStream };
1
+ import type { IncomingStreamData } from '@libp2p/interfaces/registrar';
2
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
3
+ import type { Startable } from '@libp2p/interfaces';
4
+ import type { Components } from '@libp2p/interfaces/components';
5
+ export interface PingServiceInit {
6
+ protocolPrefix: string;
7
+ }
8
+ export declare class PingService implements Startable {
9
+ private readonly components;
10
+ private readonly protocol;
11
+ private started;
12
+ constructor(components: Components, init: PingServiceInit);
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ isStarted(): boolean;
16
+ /**
17
+ * A handler to register with Libp2p to process ping messages
18
+ */
19
+ handleMessage(data: IncomingStreamData): void;
20
+ /**
21
+ * Ping a given peer and wait for its response, getting the operation latency.
22
+ *
23
+ * @param {PeerId|Multiaddr} peer
24
+ * @returns {Promise<number>}
25
+ */
26
+ ping(peer: PeerId): Promise<number>;
18
27
  }
19
- type Libp2p = import('../');
20
- type PeerId = import('peer-id');
21
- type Multiaddr = import('multiaddr').Multiaddr;
22
- /**
23
- * Subscribe ping protocol handler.
24
- *
25
- * @param {Libp2p} node
26
- */
27
- declare function mount(node: Libp2p): void;
28
- /**
29
- * Unsubscribe ping protocol handler.
30
- *
31
- * @param {Libp2p} node
32
- */
33
- declare function unmount(node: Libp2p): void;
34
- type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
35
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.js"],"names":[],"mappings":";AAiBA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,4BAJW,MAAM,QACN,MAAM,GAAC,SAAS,GACd,QAAQ,MAAM,CAAC,CA2B3B;;;;cAtCY,OAAO,KAAK,CAAC;cAEb,OAAO,SAAS,CAAC;iBADjB,OAAO,WAAW,EAAE,SAAS;AAuC1C;;;;GAIG;AACH,6BAFW,MAAM,QAOhB;AAED;;;;GAIG;AACH,+BAFW,MAAM,QAOhB;mBA3DY,OAAO,0CAA0C,EAAE,WAAW"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe;IAMpD,KAAK;IAKL,IAAI;IAKV,SAAS;IAIT;;OAEG;IACH,aAAa,CAAE,IAAI,EAAE,kBAAkB;IASvC;;;;;OAKG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoB3C"}
@@ -0,0 +1,56 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import errCode from 'err-code';
3
+ import { codes } from '../errors.js';
4
+ import { randomBytes } from '@libp2p/crypto';
5
+ import { pipe } from 'it-pipe';
6
+ import first from 'it-first';
7
+ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
8
+ import { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } from './constants.js';
9
+ const log = logger('libp2p:ping');
10
+ export class PingService {
11
+ constructor(components, init) {
12
+ this.components = components;
13
+ this.started = false;
14
+ this.protocol = `/${init.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
15
+ }
16
+ async start() {
17
+ await this.components.getRegistrar().handle(this.protocol, this.handleMessage);
18
+ this.started = true;
19
+ }
20
+ async stop() {
21
+ await this.components.getRegistrar().unhandle(this.protocol);
22
+ this.started = false;
23
+ }
24
+ isStarted() {
25
+ return this.started;
26
+ }
27
+ /**
28
+ * A handler to register with Libp2p to process ping messages
29
+ */
30
+ handleMessage(data) {
31
+ const { stream } = data;
32
+ void pipe(stream, stream)
33
+ .catch(err => {
34
+ log.error(err);
35
+ });
36
+ }
37
+ /**
38
+ * Ping a given peer and wait for its response, getting the operation latency.
39
+ *
40
+ * @param {PeerId|Multiaddr} peer
41
+ * @returns {Promise<number>}
42
+ */
43
+ async ping(peer) {
44
+ log('dialing %s to %p', this.protocol, peer);
45
+ const { stream } = await this.components.getDialer().dialProtocol(peer, this.protocol);
46
+ const start = Date.now();
47
+ const data = randomBytes(PING_LENGTH);
48
+ const result = await pipe([data], stream, async (source) => await first(source));
49
+ const end = Date.now();
50
+ if (result == null || !uint8ArrayEquals(data, result)) {
51
+ throw errCode(new Error('Received wrong ping ack'), codes.ERR_WRONG_PING_ACK);
52
+ }
53
+ return end - start;
54
+ }
55
+ }
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAM7E,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAMjC,MAAM,OAAO,WAAW;IAKtB,YAAa,UAAsB,EAAE,IAAqB;QACxD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAA;IAChF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC9E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,aAAa,CAAE,IAAwB;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAEvB,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;aACtB,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAE,IAAY;QACtB,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;QAErC,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,CAAC,IAAI,CAAC,EACN,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CACtC,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACrD,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;SAC9E;QAED,OAAO,GAAG,GAAG,KAAK,CAAA;IACpB,CAAC;CACF"}
@@ -1,8 +1,18 @@
1
- export function createBoxStream(nonce: Uint8Array, psk: Uint8Array): any;
2
- export function createUnboxStream(nonce: Uint8Array, psk: Uint8Array): any;
3
- export function decodeV1PSK(pskBuffer: Uint8Array): {
4
- tag?: string;
5
- codecName?: string;
1
+ import type { Source } from 'it-stream-types';
2
+ /**
3
+ * Creates a stream iterable to encrypt messages in a private network
4
+ */
5
+ export declare function createBoxStream(nonce: Uint8Array, psk: Uint8Array): (source: Source<Uint8Array>) => AsyncGenerator<Uint8Array, void, unknown>;
6
+ /**
7
+ * Creates a stream iterable to decrypt messages in a private network
8
+ */
9
+ export declare function createUnboxStream(nonce: Uint8Array, psk: Uint8Array): (source: Source<Uint8Array>) => AsyncGenerator<Uint8Array, void, unknown>;
10
+ /**
11
+ * Decode the version 1 psk from the given Uint8Array
12
+ */
13
+ export declare function decodeV1PSK(pskBuffer: Uint8Array): {
14
+ tag: string | undefined;
15
+ codecName: string | undefined;
6
16
  psk: Uint8Array;
7
17
  };
8
18
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/pnet/crypto.js"],"names":[],"mappings":"AAsBiC,uCAJtB,UAAU,OACV,UAAU,OAWpB;AASkC,yCAJxB,UAAU,OACV,UAAU,OAYpB;AAS4B,uCAJlB,UAAU,GAER;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,CA4BjE"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/pnet/crypto.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAI7C;;GAEG;AACH,wBAAgB,eAAe,CAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,YAGjD,OAAO,UAAU,CAAC,+CAKnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,YACnD,OAAO,UAAU,CAAC,+CAQnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,SAAS,EAAE,UAAU;;;;EA0BjD"}
@@ -0,0 +1,60 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import * as Errors from './errors.js';
3
+ import xsalsa20 from 'xsalsa20';
4
+ import { KEY_LENGTH } from './key-generator.js';
5
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
6
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
+ const log = logger('libp2p:pnet');
8
+ /**
9
+ * Creates a stream iterable to encrypt messages in a private network
10
+ */
11
+ export function createBoxStream(nonce, psk) {
12
+ const xor = xsalsa20(nonce, psk);
13
+ return (source) => (async function* () {
14
+ for await (const chunk of source) {
15
+ yield Uint8Array.from(xor.update(chunk.slice()));
16
+ }
17
+ })();
18
+ }
19
+ /**
20
+ * Creates a stream iterable to decrypt messages in a private network
21
+ */
22
+ export function createUnboxStream(nonce, psk) {
23
+ return (source) => (async function* () {
24
+ const xor = xsalsa20(nonce, psk);
25
+ log.trace('Decryption enabled');
26
+ for await (const chunk of source) {
27
+ yield Uint8Array.from(xor.update(chunk.slice()));
28
+ }
29
+ })();
30
+ }
31
+ /**
32
+ * Decode the version 1 psk from the given Uint8Array
33
+ */
34
+ export function decodeV1PSK(pskBuffer) {
35
+ try {
36
+ // This should pull from multibase/multicodec to allow for
37
+ // more encoding flexibility. Ideally we'd consume the codecs
38
+ // from the buffer line by line to evaluate the next line
39
+ // programmatically instead of making assumptions about the
40
+ // encodings of each line.
41
+ const metadata = uint8ArrayToString(pskBuffer).split(/(?:\r\n|\r|\n)/g);
42
+ const pskTag = metadata.shift();
43
+ const codec = metadata.shift();
44
+ const pskString = metadata.shift();
45
+ const psk = uint8ArrayFromString(pskString ?? '', 'base16');
46
+ if (psk.byteLength !== KEY_LENGTH) {
47
+ throw new Error(Errors.INVALID_PSK);
48
+ }
49
+ return {
50
+ tag: pskTag,
51
+ codecName: codec,
52
+ psk: psk
53
+ };
54
+ }
55
+ catch (err) {
56
+ log.error(err);
57
+ throw new Error(Errors.INVALID_PSK);
58
+ }
59
+ }
60
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/pnet/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAEjC;;GAEG;AACH,MAAM,UAAU,eAAe,CAAE,KAAiB,EAAE,GAAe;IACjE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAEhC,OAAO,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC,KAAK,SAAU,CAAC;QACtD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;SACjD;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAE,KAAiB,EAAE,GAAe;IACnE,OAAO,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC,KAAK,SAAU,CAAC;QACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAChC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE/B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;SACjD;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAE,SAAqB;IAChD,IAAI;QACF,0DAA0D;QAC1D,6DAA6D;QAC7D,yDAAyD;QACzD,2DAA2D;QAC3D,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,oBAAoB,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAA;QAE3D,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;SACpC;QAED,OAAO;YACL,GAAG,EAAE,MAAM;YACX,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;SACT,CAAA;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACd,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;KACpC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
- export var INVALID_PEER: string;
2
- export var INVALID_PSK: string;
3
- export var NO_LOCAL_ID: string;
4
- export var NO_HANDSHAKE_CONNECTION: string;
5
- export var STREAM_ENDED: string;
1
+ export declare const INVALID_PEER = "Not a valid peer connection";
2
+ export declare const INVALID_PSK = "Your private shared key is invalid";
3
+ export declare const NO_LOCAL_ID = "No local private key provided";
4
+ export declare const NO_HANDSHAKE_CONNECTION = "No connection for the handshake provided";
5
+ export declare const STREAM_ENDED = "Stream ended prematurely";
6
6
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/pnet/errors.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/pnet/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,gCAAgC,CAAA;AACzD,eAAO,MAAM,WAAW,uCAAuC,CAAA;AAC/D,eAAO,MAAM,WAAW,kCAAkC,CAAA;AAC1D,eAAO,MAAM,uBAAuB,6CAA6C,CAAA;AACjF,eAAO,MAAM,YAAY,6BAA6B,CAAA"}