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
@@ -1,76 +1,57 @@
1
- export = FetchProtocol;
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
- * @typedef {(key: string) => Promise<Uint8Array | null>} LookupFunction
8
- */
1
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
2
+ import type { Startable } from '@libp2p/interfaces';
3
+ import type { Stream } from '@libp2p/interfaces/connection';
4
+ import type { IncomingStreamData } from '@libp2p/interfaces/registrar';
5
+ import type { Components } from '@libp2p/interfaces/components';
6
+ export interface FetchInit {
7
+ protocolPrefix: string;
8
+ }
9
+ export interface HandleMessageOptions {
10
+ stream: Stream;
11
+ protocol: string;
12
+ }
13
+ export interface LookupFunction {
14
+ (key: string): Promise<Uint8Array | null>;
15
+ }
9
16
  /**
10
17
  * A simple libp2p protocol for requesting a value corresponding to a key from a peer.
11
18
  * Developers can register one or more lookup function for retrieving the value corresponding to
12
19
  * a given key. Each lookup function must act on a distinct part of the overall key space, defined
13
20
  * by a fixed prefix that all keys that should be routed to that lookup function will start with.
14
21
  */
15
- declare class FetchProtocol {
22
+ export declare class FetchService implements Startable {
23
+ private readonly components;
24
+ private readonly lookupFunctions;
25
+ private readonly protocol;
26
+ private started;
27
+ constructor(components: Components, init: FetchInit);
28
+ start(): Promise<void>;
29
+ stop(): Promise<void>;
30
+ isStarted(): boolean;
16
31
  /**
17
- * @param {Libp2p} libp2p
32
+ * Sends a request to fetch the value associated with the given key from the given peer
18
33
  */
19
- constructor(libp2p: Libp2p);
20
- _lookupFunctions: Map<any, any>;
21
- _libp2p: import("../");
34
+ fetch(peer: PeerId, key: string): Promise<Uint8Array | null>;
22
35
  /**
23
36
  * Invoked when a fetch request is received. Reads the request message off the given stream and
24
37
  * responds based on looking up the key in the request via the lookup callback that corresponds
25
38
  * to the key's prefix.
26
- *
27
- * @param {object} options
28
- * @param {MuxedStream} options.stream
29
- * @param {string} options.protocol
30
39
  */
31
- handleMessage(options: {
32
- stream: MuxedStream;
33
- protocol: string;
34
- }): Promise<void>;
35
- /**
36
- * Sends a request to fetch the value associated with the given key from the given peer.
37
- *
38
- * @param {PeerId|Multiaddr} peer
39
- * @param {string} key
40
- * @returns {Promise<Uint8Array | null>}
41
- */
42
- fetch(peer: PeerId | Multiaddr, key: string): Promise<Uint8Array | null>;
40
+ handleMessage(data: IncomingStreamData): Promise<void>;
43
41
  /**
44
42
  * Given a key, finds the appropriate function for looking up its corresponding value, based on
45
43
  * the key's prefix.
46
- *
47
- * @param {string} key
48
44
  */
49
- _getLookupFunction(key: string): any;
45
+ _getLookupFunction(key: string): LookupFunction | undefined;
50
46
  /**
51
47
  * Registers a new lookup callback that can map keys to values, for a given set of keys that
52
- * share the same prefix.
53
- *
54
- * @param {string} prefix
55
- * @param {LookupFunction} lookup
48
+ * share the same prefix
56
49
  */
57
50
  registerLookupFunction(prefix: string, lookup: LookupFunction): void;
58
51
  /**
59
52
  * Registers a new lookup callback that can map keys to values, for a given set of keys that
60
53
  * share the same prefix.
61
- *
62
- * @param {string} prefix
63
- * @param {LookupFunction} [lookup]
64
54
  */
65
- unregisterLookupFunction(prefix: string, lookup?: LookupFunction | undefined): void;
66
- }
67
- declare namespace FetchProtocol {
68
- export { PROTOCOL, Libp2p, Multiaddr, PeerId, MuxedStream, LookupFunction };
55
+ unregisterLookupFunction(prefix: string, lookup?: LookupFunction): void;
69
56
  }
70
- type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
71
- type PeerId = import('peer-id');
72
- type Multiaddr = import('multiaddr').Multiaddr;
73
- type LookupFunction = (key: string) => Promise<Uint8Array | null>;
74
- type Libp2p = import('../');
75
- import { PROTOCOL } from "./constants";
76
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fetch/index.js"],"names":[],"mappings":";AAcA;;;;;;GAMG;AAEH;;;;;GAKG;AACH;IACE;;OAEG;IACH,oBAFW,MAAM,EAMhB;IAHC,gCAAiC;IACjC,uBAAqB;IA0CvB;;;;;;;;OAQG;IACH;QAHgC,MAAM,EAA3B,WAAW;QACK,QAAQ,EAAxB,MAAM;sBAsBhB;IAnED;;;;;;OAMG;IACH,YAJW,MAAM,GAAC,SAAS,OAChB,MAAM,GACJ,QAAQ,UAAU,GAAG,IAAI,CAAC,CA+BtC;IAiCD;;;;;OAKG;IACH,wBAFW,MAAM,OAShB;IAED;;;;;;OAMG;IACH,+BAHW,MAAM,gCAQhB;IAED;;;;;;OAMG;IACH,iCAHW,MAAM,6CAahB;CACF;;;;mBAxIY,OAAO,0CAA0C,EAAE,WAAW;cAD9D,OAAO,SAAS,CAAC;iBADjB,OAAO,WAAW,EAAE,SAAS;4BAGvB,MAAM,KAAK,QAAQ,UAAU,GAAG,IAAI,CAAC;cAJ3C,OAAO,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAC1C;AAED;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS;IAQ9C,KAAK;IASL,IAAI;IAKV,SAAS;IAIT;;OAEG;IACG,KAAK,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA+BnE;;;;OAIG;IACG,aAAa,CAAE,IAAI,EAAE,kBAAkB;IAuB7C;;;OAGG;IACH,kBAAkB,CAAE,GAAG,EAAE,MAAM;IAQ/B;;;OAGG;IACH,sBAAsB,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc;IAQ9D;;;OAGG;IACH,wBAAwB,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;CAWlE"}
@@ -0,0 +1,130 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import errCode from 'err-code';
3
+ import { codes } from '../errors.js';
4
+ import * as lp from 'it-length-prefixed';
5
+ import { FetchRequest, FetchResponse } from './pb/proto.js';
6
+ import { handshake } from 'it-handshake';
7
+ import { PROTOCOL } from './constants.js';
8
+ const log = logger('libp2p:fetch');
9
+ /**
10
+ * A simple libp2p protocol for requesting a value corresponding to a key from a peer.
11
+ * Developers can register one or more lookup function for retrieving the value corresponding to
12
+ * a given key. Each lookup function must act on a distinct part of the overall key space, defined
13
+ * by a fixed prefix that all keys that should be routed to that lookup function will start with.
14
+ */
15
+ export class FetchService {
16
+ constructor(components, init) {
17
+ this.started = false;
18
+ this.components = components;
19
+ this.protocol = PROTOCOL;
20
+ this.lookupFunctions = new Map(); // Maps key prefix to value lookup function
21
+ this.handleMessage = this.handleMessage.bind(this);
22
+ }
23
+ async start() {
24
+ await this.components.getRegistrar().handle(this.protocol, (data) => {
25
+ void this.handleMessage(data).catch(err => {
26
+ log.error(err);
27
+ });
28
+ });
29
+ this.started = true;
30
+ }
31
+ async stop() {
32
+ await this.components.getRegistrar().unhandle(this.protocol);
33
+ this.started = false;
34
+ }
35
+ isStarted() {
36
+ return this.started;
37
+ }
38
+ /**
39
+ * Sends a request to fetch the value associated with the given key from the given peer
40
+ */
41
+ async fetch(peer, key) {
42
+ log('dialing %s to %p', this.protocol, peer);
43
+ const connection = await this.components.getDialer().dial(peer);
44
+ const { stream } = await connection.newStream([this.protocol]);
45
+ const shake = handshake(stream);
46
+ // send message
47
+ const request = new FetchRequest({ identifier: key });
48
+ shake.write(lp.encode.single(FetchRequest.encode(request).finish()).slice());
49
+ // read response
50
+ // @ts-expect-error fromReader returns a Source which has no .next method
51
+ const response = FetchResponse.decode((await lp.decode.fromReader(shake.reader).next()).value.slice());
52
+ switch (response.status) {
53
+ case (FetchResponse.StatusCode.OK): {
54
+ return response.data;
55
+ }
56
+ case (FetchResponse.StatusCode.NOT_FOUND): {
57
+ return null;
58
+ }
59
+ case (FetchResponse.StatusCode.ERROR): {
60
+ const errmsg = (new TextDecoder()).decode(response.data);
61
+ throw errCode(new Error('Error in fetch protocol response: ' + errmsg), codes.ERR_INVALID_PARAMETERS);
62
+ }
63
+ default: {
64
+ throw errCode(new Error('Unknown response status'), codes.ERR_INVALID_MESSAGE);
65
+ }
66
+ }
67
+ }
68
+ /**
69
+ * Invoked when a fetch request is received. Reads the request message off the given stream and
70
+ * responds based on looking up the key in the request via the lookup callback that corresponds
71
+ * to the key's prefix.
72
+ */
73
+ async handleMessage(data) {
74
+ const { stream } = data;
75
+ const shake = handshake(stream);
76
+ // @ts-expect-error fromReader returns a Source which has no .next method
77
+ const request = FetchRequest.decode((await lp.decode.fromReader(shake.reader).next()).value.slice());
78
+ let response;
79
+ const lookup = this._getLookupFunction(request.identifier);
80
+ if (lookup != null) {
81
+ const data = await lookup(request.identifier);
82
+ if (data != null) {
83
+ response = new FetchResponse({ status: FetchResponse.StatusCode.OK, data });
84
+ }
85
+ else {
86
+ response = new FetchResponse({ status: FetchResponse.StatusCode.NOT_FOUND });
87
+ }
88
+ }
89
+ else {
90
+ const errmsg = (new TextEncoder()).encode('No lookup function registered for key: ' + request.identifier);
91
+ response = new FetchResponse({ status: FetchResponse.StatusCode.ERROR, data: errmsg });
92
+ }
93
+ shake.write(lp.encode.single(FetchResponse.encode(response).finish()).slice());
94
+ }
95
+ /**
96
+ * Given a key, finds the appropriate function for looking up its corresponding value, based on
97
+ * the key's prefix.
98
+ */
99
+ _getLookupFunction(key) {
100
+ for (const prefix of this.lookupFunctions.keys()) {
101
+ if (key.startsWith(prefix)) {
102
+ return this.lookupFunctions.get(prefix);
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Registers a new lookup callback that can map keys to values, for a given set of keys that
108
+ * share the same prefix
109
+ */
110
+ registerLookupFunction(prefix, lookup) {
111
+ if (this.lookupFunctions.has(prefix)) {
112
+ throw errCode(new Error("Fetch protocol handler for key prefix '" + prefix + "' already registered"), codes.ERR_KEY_ALREADY_EXISTS);
113
+ }
114
+ this.lookupFunctions.set(prefix, lookup);
115
+ }
116
+ /**
117
+ * Registers a new lookup callback that can map keys to values, for a given set of keys that
118
+ * share the same prefix.
119
+ */
120
+ unregisterLookupFunction(prefix, lookup) {
121
+ if (lookup != null) {
122
+ const existingLookup = this.lookupFunctions.get(prefix);
123
+ if (existingLookup !== lookup) {
124
+ return;
125
+ }
126
+ }
127
+ this.lookupFunctions.delete(prefix);
128
+ }
129
+ }
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"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"}
File without changes
@@ -1,15 +1,13 @@
1
1
  /*eslint-disable*/
2
- "use strict";
3
-
4
- var $protobuf = require("protobufjs/minimal");
2
+ import $protobuf from "protobufjs/minimal.js";
5
3
 
6
4
  // Common aliases
7
- var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
5
+ const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
8
6
 
9
7
  // Exported root namespace
10
- var $root = $protobuf.roots["libp2p-fetch"] || ($protobuf.roots["libp2p-fetch"] = {});
8
+ const $root = $protobuf.roots["libp2p-fetch"] || ($protobuf.roots["libp2p-fetch"] = {});
11
9
 
12
- $root.FetchRequest = (function() {
10
+ export const FetchRequest = $root.FetchRequest = (() => {
13
11
 
14
12
  /**
15
13
  * Properties of a FetchRequest.
@@ -141,7 +139,7 @@ $root.FetchRequest = (function() {
141
139
  return FetchRequest;
142
140
  })();
143
141
 
144
- $root.FetchResponse = (function() {
142
+ export const FetchResponse = $root.FetchResponse = (() => {
145
143
 
146
144
  /**
147
145
  * Properties of a FetchResponse.
@@ -320,7 +318,7 @@ $root.FetchResponse = (function() {
320
318
  * @property {number} ERROR=2 ERROR value
321
319
  */
322
320
  FetchResponse.StatusCode = (function() {
323
- var valuesById = {}, values = Object.create(valuesById);
321
+ const valuesById = {}, values = Object.create(valuesById);
324
322
  values[valuesById[0] = "OK"] = 0;
325
323
  values[valuesById[1] = "NOT_FOUND"] = 1;
326
324
  values[valuesById[2] = "ERROR"] = 2;
@@ -330,4 +328,4 @@ $root.FetchResponse = (function() {
330
328
  return FetchResponse;
331
329
  })();
332
330
 
333
- module.exports = $root;
331
+ export { $root as default };
@@ -1,15 +1,8 @@
1
- export = getPeer;
1
+ import { Multiaddr } from '@multiformats/multiaddr';
2
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
3
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info';
2
4
  /**
3
5
  * Converts the given `peer` to a `Peer` object.
4
- * If a multiaddr is received, the addressBook is updated.
5
- *
6
- * @param {PeerId|Multiaddr|string} peer
7
- * @returns {{ id: PeerId, multiaddrs: Multiaddr[]|undefined }}
8
6
  */
9
- declare function getPeer(peer: PeerId | Multiaddr | string): {
10
- id: PeerId;
11
- multiaddrs: Multiaddr[] | undefined;
12
- };
13
- import PeerId = require("peer-id");
14
- import { Multiaddr } from "multiaddr";
7
+ export declare function getPeer(peer: PeerId | Multiaddr | string): PeerInfo;
15
8
  //# sourceMappingURL=get-peer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-peer.d.ts","sourceRoot":"","sources":["../../src/get-peer.js"],"names":[],"mappings":";AAQA;;;;;;GAMG;AACH,+BAHW,MAAM,GAAC,SAAS,GAAC,MAAM,GACrB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,GAAC,SAAS,CAAA;CAAE,CAiC7D"}
1
+ {"version":3,"file":"get-peer.d.ts","sourceRoot":"","sources":["../../src/get-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAsB5D;;GAEG;AACH,wBAAgB,OAAO,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAyBpE"}
@@ -0,0 +1,43 @@
1
+ import { peerIdFromString } from '@libp2p/peer-id';
2
+ import { Multiaddr } from '@multiformats/multiaddr';
3
+ import errCode from 'err-code';
4
+ import { codes } from './errors.js';
5
+ import { isPeerId } from '@libp2p/interfaces/peer-id';
6
+ function peerIdFromMultiaddr(ma) {
7
+ const idStr = ma.getPeerId();
8
+ if (idStr == null) {
9
+ throw errCode(new Error(`${ma.toString()} does not have a valid peer type`), codes.ERR_INVALID_MULTIADDR);
10
+ }
11
+ try {
12
+ return peerIdFromString(idStr);
13
+ }
14
+ catch (err) {
15
+ throw errCode(new Error(`${ma.toString()} is not a valid peer type`), codes.ERR_INVALID_MULTIADDR);
16
+ }
17
+ }
18
+ /**
19
+ * Converts the given `peer` to a `Peer` object.
20
+ */
21
+ export function getPeer(peer) {
22
+ if (isPeerId(peer)) {
23
+ return {
24
+ id: peer,
25
+ multiaddrs: [],
26
+ protocols: []
27
+ };
28
+ }
29
+ if (typeof peer === 'string') {
30
+ peer = new Multiaddr(peer);
31
+ }
32
+ let addr;
33
+ if (Multiaddr.isMultiaddr(peer)) {
34
+ addr = peer;
35
+ peer = peerIdFromMultiaddr(peer);
36
+ }
37
+ return {
38
+ id: peer,
39
+ multiaddrs: addr != null ? [addr] : [],
40
+ protocols: []
41
+ };
42
+ }
43
+ //# sourceMappingURL=get-peer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-peer.js","sourceRoot":"","sources":["../../src/get-peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAIrD,SAAS,mBAAmB,CAAE,EAAa;IACzC,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,EAAE,CAAA;IAE5B,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,MAAM,OAAO,CACX,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,kCAAkC,CAAC,EAC7D,KAAK,CAAC,qBAAqB,CAC5B,CAAA;KACF;IAED,IAAI;QACF,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;KAC/B;IAAC,OAAO,GAAQ,EAAE;QACjB,MAAM,OAAO,CACX,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,2BAA2B,CAAC,EACtD,KAAK,CAAC,qBAAqB,CAC5B,CAAA;KACF;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAE,IAAiC;IACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;QAClB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,EAAE;SACd,CAAA;KACF;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;KAC3B;IAED,IAAI,IAAI,CAAA;IAER,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,GAAG,IAAI,CAAA;QACX,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;KACjC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACtC,SAAS,EAAE,EAAE;KACd,CAAA;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
- export var PROTOCOL_VERSION: string;
2
- export var AGENT_VERSION: string;
3
- export var MULTICODEC_IDENTIFY: string;
4
- export var MULTICODEC_IDENTIFY_PUSH: string;
5
- export var IDENTIFY_PROTOCOL_VERSION: string;
6
- export var MULTICODEC_IDENTIFY_PROTOCOL_NAME: string;
7
- export var MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME: string;
8
- export var MULTICODEC_IDENTIFY_PROTOCOL_VERSION: string;
9
- export var MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION: string;
1
+ export declare const PROTOCOL_VERSION = "ipfs/0.1.0";
2
+ export declare const AGENT_VERSION: string;
3
+ export declare const MULTICODEC_IDENTIFY = "/ipfs/id/1.0.0";
4
+ export declare const MULTICODEC_IDENTIFY_PUSH = "/ipfs/id/push/1.0.0";
5
+ export declare const IDENTIFY_PROTOCOL_VERSION = "0.1.0";
6
+ export declare const MULTICODEC_IDENTIFY_PROTOCOL_NAME = "id";
7
+ export declare const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = "id/push";
8
+ export declare const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = "1.0.0";
9
+ export declare const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = "1.0.0";
10
10
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/identify/consts.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/identify/consts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,eAAe,CAAA;AAC5C,eAAO,MAAM,aAAa,QAAyB,CAAA;AACnD,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AACnD,eAAO,MAAM,wBAAwB,wBAAwB,CAAA;AAE7D,eAAO,MAAM,yBAAyB,UAAU,CAAA;AAChD,eAAO,MAAM,iCAAiC,OAAO,CAAA;AACrD,eAAO,MAAM,sCAAsC,YAAY,CAAA;AAC/D,eAAO,MAAM,oCAAoC,UAAU,CAAA;AAC3D,eAAO,MAAM,yCAAyC,UAAU,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { version } from '../version.js';
2
+ export const PROTOCOL_VERSION = 'ipfs/0.1.0'; // deprecated
3
+ export const AGENT_VERSION = `js-libp2p/${version}`;
4
+ export const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'; // deprecated
5
+ export const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'; // deprecated
6
+ export const IDENTIFY_PROTOCOL_VERSION = '0.1.0';
7
+ export const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id';
8
+ export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push';
9
+ export const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0';
10
+ export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0';
11
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/identify/consts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAA,CAAC,aAAa;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,OAAO,EAAE,CAAA;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAA,CAAC,aAAa;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAA,CAAC,aAAa;AAE3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAChD,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAA;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAS,CAAA;AAC/D,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAA;AAC3D,MAAM,CAAC,MAAM,yCAAyC,GAAG,OAAO,CAAA"}
@@ -1,120 +1,64 @@
1
- export = IdentifyService;
2
- /**
3
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
4
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
5
- */
6
- /**
7
- * @typedef {Object} HostProperties
8
- * @property {string} agentVersion
9
- */
10
- declare class IdentifyService {
11
- /**
12
- * @param {import('../')} libp2p
13
- */
14
- static getProtocolStr(libp2p: import('../')): {
15
- identifyProtocolStr: string;
16
- identifyPushProtocolStr: string;
17
- };
18
- /**
19
- * Takes the `addr` and converts it to a Multiaddr if possible
20
- *
21
- * @param {Uint8Array | string} addr
22
- * @returns {Multiaddr|null}
23
- */
24
- static getCleanMultiaddr(addr: Uint8Array | string): Multiaddr | null;
25
- /**
26
- * @class
27
- * @param {Object} options
28
- * @param {import('../')} options.libp2p
29
- */
30
- constructor({ libp2p }: {
31
- libp2p: import('../');
32
- });
33
- _libp2p: import("../");
34
- peerStore: import("../peer-store/types").PeerStore;
35
- addressManager: import("../address-manager");
36
- connectionManager: import("../connection-manager");
37
- peerId: PeerId;
38
- /**
39
- * A handler to register with Libp2p to process identify messages.
40
- *
41
- * @param {Object} options
42
- * @param {Connection} options.connection
43
- * @param {MuxedStream} options.stream
44
- * @param {string} options.protocol
45
- * @returns {Promise<void>|undefined}
46
- */
47
- handleMessage({ connection, stream, protocol }: {
48
- connection: Connection;
49
- stream: MuxedStream;
50
- protocol: string;
51
- }): Promise<void> | undefined;
52
- identifyProtocolStr: string;
53
- identifyPushProtocolStr: string;
54
- _host: {
55
- agentVersion: string;
56
- protocolVersion: string;
57
- };
1
+ import { Multiaddr } from '@multiformats/multiaddr';
2
+ import Message from './pb/message.js';
3
+ import type { IncomingStreamData } from '@libp2p/interfaces/registrar';
4
+ import type { Connection } from '@libp2p/interfaces/connection';
5
+ import type { Startable } from '@libp2p/interfaces';
6
+ import type { Components } from '@libp2p/interfaces/components';
7
+ export interface HostProperties {
8
+ agentVersion: string;
9
+ }
10
+ export interface IdentifyServiceInit {
11
+ protocolPrefix: string;
12
+ host: HostProperties;
13
+ }
14
+ export declare class IdentifyService implements Startable {
15
+ private readonly components;
16
+ private readonly identifyProtocolStr;
17
+ private readonly identifyPushProtocolStr;
18
+ private readonly host;
19
+ private started;
20
+ constructor(components: Components, init: IdentifyServiceInit);
21
+ isStarted(): boolean;
58
22
  start(): Promise<void>;
59
23
  stop(): Promise<void>;
60
24
  /**
61
25
  * Send an Identify Push update to the list of connections
62
- *
63
- * @param {Connection[]} connections
64
- * @returns {Promise<void[]>}
65
26
  */
66
- push(connections: Connection[]): Promise<void[]>;
27
+ push(connections: Connection[]): Promise<void>;
67
28
  /**
68
- * Calls `push` for all peers in the `peerStore` that are connected
29
+ * Calls `push` on all peer connections
69
30
  */
70
31
  pushToPeerStore(): Promise<void>;
71
32
  /**
72
33
  * Requests the `Identify` message from peer associated with the given `connection`.
73
34
  * If the identified peer does not match the `PeerId` associated with the connection,
74
35
  * an error will be thrown.
75
- *
76
- * @async
77
- * @param {Connection} connection
78
- * @returns {Promise<void>}
79
36
  */
80
37
  identify(connection: Connection): Promise<void>;
38
+ /**
39
+ * A handler to register with Libp2p to process identify messages
40
+ */
41
+ handleMessage(data: IncomingStreamData): Promise<void> | undefined;
81
42
  /**
82
43
  * Sends the `Identify` response with the Signed Peer Record
83
44
  * to the requesting peer over the given `connection`
84
- *
85
- * @private
86
- * @param {Object} options
87
- * @param {MuxedStream} options.stream
88
- * @param {Connection} options.connection
89
- * @returns {Promise<void>}
90
45
  */
91
- private _handleIdentify;
46
+ _handleIdentify(data: IncomingStreamData): Promise<void>;
92
47
  /**
93
48
  * Reads the Identify Push message from the given `connection`
94
- *
95
- * @private
96
- * @param {object} options
97
- * @param {MuxedStream} options.stream
98
- * @param {Connection} options.connection
99
- * @returns {Promise<void>}
100
49
  */
101
- private _handlePush;
102
- }
103
- declare namespace IdentifyService {
104
- export { multicodecs, Message as Messsage, Connection, MuxedStream, HostProperties };
105
- }
106
- import PeerId = require("peer-id");
107
- type Connection = import("libp2p-interfaces/src/connection/connection");
108
- import { Multiaddr } from "multiaddr";
109
- declare namespace multicodecs {
110
- export { MULTICODEC_IDENTIFY as IDENTIFY };
111
- export { MULTICODEC_IDENTIFY_PUSH as IDENTIFY_PUSH };
50
+ _handlePush(data: IncomingStreamData): Promise<void>;
51
+ /**
52
+ * Takes the `addr` and converts it to a Multiaddr if possible
53
+ */
54
+ static getCleanMultiaddr(addr: Uint8Array | string | null | undefined): Multiaddr | undefined;
112
55
  }
113
- import Message = require("./message");
114
- type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
115
- type HostProperties = {
116
- agentVersion: string;
56
+ /**
57
+ * The protocols the IdentifyService supports
58
+ */
59
+ export declare const multicodecs: {
60
+ IDENTIFY: string;
61
+ IDENTIFY_PUSH: string;
117
62
  };
118
- import { MULTICODEC_IDENTIFY } from "./consts";
119
- import { MULTICODEC_IDENTIFY_PUSH } from "./consts";
63
+ export { Message };
120
64
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.js"],"names":[],"mappings":";AAkCA;;;GAGG;AAEH;;;GAGG;AAEH;IACE;;OAEG;IACH,8BAFW,OAAO,KAAK,CAAC;;;MAOvB;IA2SD;;;;;OAKG;IACH,+BAHW,UAAU,GAAG,MAAM,GACjB,SAAS,GAAC,IAAI,CAW1B;IAxTD;;;;OAIG;IACH;QAFkC,MAAM,EAA7B,OAAO,KAAK,CAAC;OAuCvB;IApCC,uBAAqB;IACrB,mDAAiC;IACjC,6CAA2C;IAC3C,mDAAiD;IACjD,eAA2B;IA6K7B;;;;;;;;OAQG;IACH;oBALW,UAAU;gBACV,WAAW;kBACX,MAAM;QACJ,QAAQ,IAAI,CAAC,GAAC,SAAS,CAWnC;IA1LC,4BAA0D;IAC1D,gCAAkE;IAGlE;sBAjCU,MAAM;;MAoCf;IAsBH,uBAGC;IAED,sBAEC;IAED;;;;;OAKG;IACH,kBAHW,UAAU,EAAE,GACV,QAAQ,IAAI,EAAE,CAAC,CA4B3B;IAED;;OAEG;IACH,iCAeC;IAED;;;;;;;;OAQG;IACH,qBAHW,UAAU,GACR,QAAQ,IAAI,CAAC,CAmEzB;IAsBD;;;;;;;;;OASG;IACH,wBA6BC;IAED;;;;;;;;OAQG;IACH,oBA0CC;CAkBF;;;;;;;;;;;;mBA5UY,OAAO,0CAA0C,EAAE,WAAW;;kBAK7D,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAC9D,OAAO,OAAO,MAAM,iBAAiB,CAAA;AAYrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGpB;IAED,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB;IAwC9D,SAAS;IAIH,KAAK;IAoBL,IAAI;IAOV;;OAEG;IACG,IAAI,CAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrD;;OAEG;IACG,eAAe;IAsBrB;;;;OAIG;IACG,QAAQ,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA0GtD;;OAEG;IACH,aAAa,CAAE,IAAI,EAAE,kBAAkB;IAavC;;;OAGG;IACG,eAAe,CAAE,IAAI,EAAE,kBAAkB;IAwC/C;;OAEG;IACG,WAAW,CAAE,IAAI,EAAE,kBAAkB;IAuE3C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;CASvE;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGvB,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}