libp2p 0.36.2 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +216 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +62 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +192 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +91 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +83 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +267 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +333 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +70 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +75 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +42 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +114 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +108 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +402 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +144 -201
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
  259. package/src/connection-manager/dialer/index.ts +382 -0
  260. package/src/connection-manager/index.ts +508 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +73 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +194 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +186 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +499 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/index.js +0 -376
  376. package/src/errors.js +0 -66
  377. package/src/fetch/constants.js +0 -6
  378. package/src/fetch/index.js +0 -159
  379. package/src/fetch/proto.d.ts +0 -134
  380. package/src/fetch/proto.js +0 -333
  381. package/src/get-peer.js +0 -49
  382. package/src/identify/consts.js +0 -15
  383. package/src/identify/index.js +0 -384
  384. package/src/identify/message.d.ts +0 -95
  385. package/src/identify/message.js +0 -328
  386. package/src/index.js +0 -813
  387. package/src/insecure/plaintext.js +0 -95
  388. package/src/insecure/proto.d.ts +0 -128
  389. package/src/insecure/proto.js +0 -371
  390. package/src/keychain/index.js +0 -561
  391. package/src/metrics/index.js +0 -290
  392. package/src/metrics/old-peers.js +0 -16
  393. package/src/metrics/stats.js +0 -270
  394. package/src/metrics/tracked-map.js +0 -94
  395. package/src/nat-manager.js +0 -197
  396. package/src/peer-routing.js +0 -176
  397. package/src/peer-store/README.md +0 -145
  398. package/src/peer-store/address-book.js +0 -382
  399. package/src/peer-store/index.js +0 -121
  400. package/src/peer-store/key-book.js +0 -141
  401. package/src/peer-store/metadata-book.js +0 -250
  402. package/src/peer-store/pb/peer.d.ts +0 -222
  403. package/src/peer-store/pb/peer.js +0 -643
  404. package/src/peer-store/pb/peer.proto +0 -31
  405. package/src/peer-store/proto-book.js +0 -237
  406. package/src/peer-store/store.js +0 -263
  407. package/src/peer-store/types.ts +0 -245
  408. package/src/ping/constants.js +0 -8
  409. package/src/ping/index.js +0 -84
  410. package/src/ping/util.js +0 -18
  411. package/src/pnet/crypto.js +0 -84
  412. package/src/pnet/errors.js +0 -7
  413. package/src/pnet/index.js +0 -86
  414. package/src/pnet/key-generator.js +0 -33
  415. package/src/pubsub-adapter.js +0 -61
  416. package/src/record/README.md +0 -130
  417. package/src/record/envelope/envelope.d.ts +0 -77
  418. package/src/record/envelope/envelope.js +0 -243
  419. package/src/record/envelope/envelope.proto +0 -19
  420. package/src/record/envelope/index.js +0 -183
  421. package/src/record/peer-record/consts.js +0 -14
  422. package/src/record/peer-record/index.js +0 -113
  423. package/src/record/peer-record/peer-record.d.ts +0 -133
  424. package/src/record/peer-record/peer-record.js +0 -367
  425. package/src/record/peer-record/peer-record.proto +0 -18
  426. package/src/record/utils.js +0 -25
  427. package/src/registrar.js +0 -127
  428. package/src/transport-manager.js +0 -269
  429. package/src/types.ts +0 -98
  430. package/src/upgrader.js +0 -492
@@ -0,0 +1,43 @@
1
+ import drain from 'it-drain'
2
+ import errCode from 'err-code'
3
+ import type { DHT } from '@libp2p/interfaces/dht'
4
+ import type { ContentRouting } from '@libp2p/interfaces/content-routing'
5
+ import type { CID } from 'multiformats/cid'
6
+ import type { AbortOptions } from '@libp2p/interfaces'
7
+
8
+ /**
9
+ * Wrapper class to convert events into returned values
10
+ */
11
+ export class DHTContentRouting implements ContentRouting {
12
+ private readonly dht: DHT
13
+
14
+ constructor (dht: DHT) {
15
+ this.dht = dht
16
+ }
17
+
18
+ async provide (cid: CID) {
19
+ await drain(this.dht.provide(cid))
20
+ }
21
+
22
+ async * findProviders (cid: CID, options: AbortOptions = {}) {
23
+ for await (const event of this.dht.findProviders(cid, options)) {
24
+ if (event.name === 'PROVIDER') {
25
+ yield * event.providers
26
+ }
27
+ }
28
+ }
29
+
30
+ async put (key: Uint8Array, value: Uint8Array, options?: AbortOptions): Promise<void> {
31
+ await drain(this.dht.put(key, value, options))
32
+ }
33
+
34
+ async get (key: Uint8Array, options?: AbortOptions): Promise<Uint8Array> {
35
+ for await (const event of this.dht.get(key, options)) {
36
+ if (event.name === 'VALUE') {
37
+ return event.value
38
+ }
39
+ }
40
+
41
+ throw errCode(new Error('Not found'), 'ERR_NOT_FOUND')
42
+ }
43
+ }
@@ -0,0 +1,35 @@
1
+ import errCode from 'err-code'
2
+ import { messages, codes } from '../errors.js'
3
+ import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
4
+ import type { DHT } from '@libp2p/interfaces/dht'
5
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
6
+ import type { AbortOptions } from '@libp2p/interfaces'
7
+
8
+ /**
9
+ * Wrapper class to convert events into returned values
10
+ */
11
+ export class DHTPeerRouting implements PeerRouting {
12
+ private readonly dht: DHT
13
+
14
+ constructor (dht: DHT) {
15
+ this.dht = dht
16
+ }
17
+
18
+ async findPeer (peerId: PeerId, options: AbortOptions = {}) {
19
+ for await (const event of this.dht.findPeer(peerId, options)) {
20
+ if (event.name === 'FINAL_PEER') {
21
+ return event.peer
22
+ }
23
+ }
24
+
25
+ throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
26
+ }
27
+
28
+ async * getClosestPeers (key: Uint8Array, options: AbortOptions = {}) {
29
+ for await (const event of this.dht.getClosestPeers(key, options)) {
30
+ if (event.name === 'PEER_RESPONSE') {
31
+ yield * event.closer
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,60 @@
1
+ import type { DualDHT, QueryEvent, SingleDHT } from '@libp2p/interfaces/dht'
2
+ import type { PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery'
3
+ import errCode from 'err-code'
4
+ import { messages, codes } from '../errors.js'
5
+ import { EventEmitter } from '@libp2p/interfaces/events'
6
+ import { symbol } from '@libp2p/interfaces/peer-discovery'
7
+
8
+ export class DummyDHT extends EventEmitter<PeerDiscoveryEvents> implements DualDHT {
9
+ get [symbol] (): true {
10
+ return true
11
+ }
12
+
13
+ get [Symbol.toStringTag] () {
14
+ return '@libp2p/dummy-dht'
15
+ }
16
+
17
+ get wan (): SingleDHT {
18
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
19
+ }
20
+
21
+ get lan (): SingleDHT {
22
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
23
+ }
24
+
25
+ get (): AsyncIterable<QueryEvent> {
26
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
27
+ }
28
+
29
+ findProviders (): AsyncIterable<QueryEvent> {
30
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
31
+ }
32
+
33
+ findPeer (): AsyncIterable<QueryEvent> {
34
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
35
+ }
36
+
37
+ getClosestPeers (): AsyncIterable<QueryEvent> {
38
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
39
+ }
40
+
41
+ provide (): AsyncIterable<QueryEvent> {
42
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
43
+ }
44
+
45
+ put (): AsyncIterable<QueryEvent> {
46
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
47
+ }
48
+
49
+ async getMode (): Promise<'client' | 'server'> {
50
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
51
+ }
52
+
53
+ async setMode (): Promise<void> {
54
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
55
+ }
56
+
57
+ async refreshRoutingTable (): Promise<void> {
58
+ throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
59
+ }
60
+ }
package/src/errors.ts ADDED
@@ -0,0 +1,73 @@
1
+ export enum messages {
2
+ NOT_STARTED_YET = 'The libp2p node is not started yet',
3
+ DHT_DISABLED = 'DHT is not available',
4
+ PUBSUB_DISABLED = 'PubSub is not available',
5
+ CONN_ENCRYPTION_REQUIRED = 'At least one connection encryption module is required',
6
+ ERR_TRANSPORTS_REQUIRED = 'At least one transport module is required',
7
+ ERR_PROTECTOR_REQUIRED = 'Private network is enforced, but no protector was provided',
8
+ NOT_FOUND = 'Not found'
9
+ }
10
+
11
+ export enum codes {
12
+ DHT_DISABLED = 'ERR_DHT_DISABLED',
13
+ ERR_PUBSUB_DISABLED = 'ERR_PUBSUB_DISABLED',
14
+ PUBSUB_NOT_STARTED = 'ERR_PUBSUB_NOT_STARTED',
15
+ DHT_NOT_STARTED = 'ERR_DHT_NOT_STARTED',
16
+ CONN_ENCRYPTION_REQUIRED = 'ERR_CONN_ENCRYPTION_REQUIRED',
17
+ ERR_TRANSPORTS_REQUIRED = 'ERR_TRANSPORTS_REQUIRED',
18
+ ERR_PROTECTOR_REQUIRED = 'ERR_PROTECTOR_REQUIRED',
19
+ ERR_PEER_DIAL_INTERCEPTED = 'ERR_PEER_DIAL_INTERCEPTED',
20
+ ERR_CONNECTION_INTERCEPTED = 'ERR_CONNECTION_INTERCEPTED',
21
+ ERR_INVALID_PROTOCOLS_FOR_STREAM = 'ERR_INVALID_PROTOCOLS_FOR_STREAM',
22
+ ERR_CONNECTION_ENDED = 'ERR_CONNECTION_ENDED',
23
+ ERR_CONNECTION_FAILED = 'ERR_CONNECTION_FAILED',
24
+ ERR_NODE_NOT_STARTED = 'ERR_NODE_NOT_STARTED',
25
+ ERR_ALREADY_ABORTED = 'ERR_ALREADY_ABORTED',
26
+ ERR_TOO_MANY_ADDRESSES = 'ERR_TOO_MANY_ADDRESSES',
27
+ ERR_NO_VALID_ADDRESSES = 'ERR_NO_VALID_ADDRESSES',
28
+ ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL',
29
+ ERR_DIALED_SELF = 'ERR_DIALED_SELF',
30
+ ERR_DISCOVERED_SELF = 'ERR_DISCOVERED_SELF',
31
+ ERR_DUPLICATE_TRANSPORT = 'ERR_DUPLICATE_TRANSPORT',
32
+ ERR_ENCRYPTION_FAILED = 'ERR_ENCRYPTION_FAILED',
33
+ ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED',
34
+ ERR_INVALID_KEY = 'ERR_INVALID_KEY',
35
+ ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE',
36
+ ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS',
37
+ ERR_INVALID_PEER = 'ERR_INVALID_PEER',
38
+ ERR_MUXER_UNAVAILABLE = 'ERR_MUXER_UNAVAILABLE',
39
+ ERR_NOT_FOUND = 'ERR_NOT_FOUND',
40
+ ERR_TIMEOUT = 'ERR_TIMEOUT',
41
+ ERR_TRANSPORT_UNAVAILABLE = 'ERR_TRANSPORT_UNAVAILABLE',
42
+ ERR_TRANSPORT_DIAL_FAILED = 'ERR_TRANSPORT_DIAL_FAILED',
43
+ ERR_UNSUPPORTED_PROTOCOL = 'ERR_UNSUPPORTED_PROTOCOL',
44
+ ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED = 'ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED',
45
+ ERR_INVALID_MULTIADDR = 'ERR_INVALID_MULTIADDR',
46
+ ERR_SIGNATURE_NOT_VALID = 'ERR_SIGNATURE_NOT_VALID',
47
+ ERR_FIND_SELF = 'ERR_FIND_SELF',
48
+ ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE',
49
+ ERR_CONNECTION_NOT_MULTIPLEXED = 'ERR_CONNECTION_NOT_MULTIPLEXED',
50
+ ERR_NO_DIAL_TOKENS = 'ERR_NO_DIAL_TOKENS',
51
+ ERR_KEYCHAIN_REQUIRED = 'ERR_KEYCHAIN_REQUIRED',
52
+ ERR_INVALID_CMS = 'ERR_INVALID_CMS',
53
+ ERR_MISSING_KEYS = 'ERR_MISSING_KEYS',
54
+ ERR_NO_KEY = 'ERR_NO_KEY',
55
+ ERR_INVALID_KEY_NAME = 'ERR_INVALID_KEY_NAME',
56
+ ERR_INVALID_KEY_TYPE = 'ERR_INVALID_KEY_TYPE',
57
+ ERR_KEY_ALREADY_EXISTS = 'ERR_KEY_ALREADY_EXISTS',
58
+ ERR_INVALID_KEY_SIZE = 'ERR_INVALID_KEY_SIZE',
59
+ ERR_KEY_NOT_FOUND = 'ERR_KEY_NOT_FOUND',
60
+ ERR_OLD_KEY_NAME_INVALID = 'ERR_OLD_KEY_NAME_INVALID',
61
+ ERR_NEW_KEY_NAME_INVALID = 'ERR_NEW_KEY_NAME_INVALID',
62
+ ERR_PASSWORD_REQUIRED = 'ERR_PASSWORD_REQUIRED',
63
+ ERR_PEM_REQUIRED = 'ERR_PEM_REQUIRED',
64
+ ERR_CANNOT_READ_KEY = 'ERR_CANNOT_READ_KEY',
65
+ ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY',
66
+ ERR_MISSING_PUBLIC_KEY = 'ERR_MISSING_PUBLIC_KEY',
67
+ ERR_INVALID_OLD_PASS_TYPE = 'ERR_INVALID_OLD_PASS_TYPE',
68
+ ERR_INVALID_NEW_PASS_TYPE = 'ERR_INVALID_NEW_PASS_TYPE',
69
+ ERR_INVALID_PASS_LENGTH = 'ERR_INVALID_PASS_LENGTH',
70
+ ERR_NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',
71
+ ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK',
72
+ ERR_INVALID_RECORD = 'ERR_INVALID_RECORD'
73
+ }
@@ -12,7 +12,7 @@ The fetch protocol is a simple protocol for requesting a value corresponding to
12
12
  ## Usage
13
13
 
14
14
  ```javascript
15
- const Libp2p = require('libp2p')
15
+ import { createLibp2p } from 'libp2p'
16
16
 
17
17
  /**
18
18
  * Given a key (as a string) returns a value (as a Uint8Array), or null if the key isn't found.
@@ -0,0 +1,3 @@
1
+
2
+ // https://github.com/libp2p/specs/tree/master/fetch#wire-protocol
3
+ export const PROTOCOL = '/libp2p/fetch/0.0.1'
@@ -0,0 +1,167 @@
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
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
9
+ import type { Startable } from '@libp2p/interfaces/startable'
10
+ import type { Stream } from '@libp2p/interfaces/connection'
11
+ import type { IncomingStreamData } from '@libp2p/interfaces/registrar'
12
+ import type { Components } from '@libp2p/interfaces/components'
13
+
14
+ const log = logger('libp2p:fetch')
15
+
16
+ export interface FetchInit {
17
+ protocolPrefix: string
18
+ }
19
+
20
+ export interface HandleMessageOptions {
21
+ stream: Stream
22
+ protocol: string
23
+ }
24
+
25
+ export interface LookupFunction {
26
+ (key: string): Promise<Uint8Array | null>
27
+ }
28
+
29
+ /**
30
+ * A simple libp2p protocol for requesting a value corresponding to a key from a peer.
31
+ * Developers can register one or more lookup function for retrieving the value corresponding to
32
+ * a given key. Each lookup function must act on a distinct part of the overall key space, defined
33
+ * by a fixed prefix that all keys that should be routed to that lookup function will start with.
34
+ */
35
+ export class FetchService implements Startable {
36
+ private readonly components: Components
37
+ private readonly lookupFunctions: Map<string, LookupFunction>
38
+ private readonly protocol: string
39
+ private started: boolean
40
+
41
+ constructor (components: Components, init: FetchInit) {
42
+ this.started = false
43
+ this.components = components
44
+ this.protocol = PROTOCOL
45
+ this.lookupFunctions = new Map() // Maps key prefix to value lookup function
46
+ this.handleMessage = this.handleMessage.bind(this)
47
+ }
48
+
49
+ async start () {
50
+ await this.components.getRegistrar().handle(this.protocol, (data) => {
51
+ void this.handleMessage(data).catch(err => {
52
+ log.error(err)
53
+ })
54
+ })
55
+ this.started = true
56
+ }
57
+
58
+ async stop () {
59
+ await this.components.getRegistrar().unhandle(this.protocol)
60
+ this.started = false
61
+ }
62
+
63
+ isStarted () {
64
+ return this.started
65
+ }
66
+
67
+ /**
68
+ * Sends a request to fetch the value associated with the given key from the given peer
69
+ */
70
+ async fetch (peer: PeerId, key: string): Promise<Uint8Array | null> {
71
+ log('dialing %s to %p', this.protocol, peer)
72
+
73
+ const connection = await this.components.getConnectionManager().openConnection(peer)
74
+ const { stream } = await connection.newStream([this.protocol])
75
+ const shake = handshake(stream)
76
+
77
+ // send message
78
+ shake.write(lp.encode.single(FetchRequest.encode({ identifier: key })).slice())
79
+
80
+ // read response
81
+ // @ts-expect-error fromReader returns a Source which has no .next method
82
+ const response = FetchResponse.decode((await lp.decode.fromReader(shake.reader).next()).value.slice())
83
+ switch (response.status) {
84
+ case (FetchResponse.StatusCode.OK): {
85
+ return response.data
86
+ }
87
+ case (FetchResponse.StatusCode.NOT_FOUND): {
88
+ return null
89
+ }
90
+ case (FetchResponse.StatusCode.ERROR): {
91
+ const errmsg = (new TextDecoder()).decode(response.data)
92
+ throw errCode(new Error('Error in fetch protocol response: ' + errmsg), codes.ERR_INVALID_PARAMETERS)
93
+ }
94
+ default: {
95
+ throw errCode(new Error('Unknown response status'), codes.ERR_INVALID_MESSAGE)
96
+ }
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Invoked when a fetch request is received. Reads the request message off the given stream and
102
+ * responds based on looking up the key in the request via the lookup callback that corresponds
103
+ * to the key's prefix.
104
+ */
105
+ async handleMessage (data: IncomingStreamData) {
106
+ const { stream } = data
107
+ const shake = handshake(stream)
108
+ // @ts-expect-error fromReader returns a Source which has no .next method
109
+ const request = FetchRequest.decode((await lp.decode.fromReader(shake.reader).next()).value.slice())
110
+
111
+ let response: FetchResponse
112
+ const lookup = this._getLookupFunction(request.identifier)
113
+ if (lookup != null) {
114
+ const data = await lookup(request.identifier)
115
+ if (data != null) {
116
+ response = { status: FetchResponse.StatusCode.OK, data }
117
+ } else {
118
+ response = { status: FetchResponse.StatusCode.NOT_FOUND, data: new Uint8Array(0) }
119
+ }
120
+ } else {
121
+ const errmsg = (new TextEncoder()).encode('No lookup function registered for key: ' + request.identifier)
122
+ response = { status: FetchResponse.StatusCode.ERROR, data: errmsg }
123
+ }
124
+
125
+ shake.write(lp.encode.single(FetchResponse.encode(response)).slice())
126
+ }
127
+
128
+ /**
129
+ * Given a key, finds the appropriate function for looking up its corresponding value, based on
130
+ * the key's prefix.
131
+ */
132
+ _getLookupFunction (key: string) {
133
+ for (const prefix of this.lookupFunctions.keys()) {
134
+ if (key.startsWith(prefix)) {
135
+ return this.lookupFunctions.get(prefix)
136
+ }
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Registers a new lookup callback that can map keys to values, for a given set of keys that
142
+ * share the same prefix
143
+ */
144
+ registerLookupFunction (prefix: string, lookup: LookupFunction) {
145
+ if (this.lookupFunctions.has(prefix)) {
146
+ throw errCode(new Error("Fetch protocol handler for key prefix '" + prefix + "' already registered"), codes.ERR_KEY_ALREADY_EXISTS)
147
+ }
148
+
149
+ this.lookupFunctions.set(prefix, lookup)
150
+ }
151
+
152
+ /**
153
+ * Registers a new lookup callback that can map keys to values, for a given set of keys that
154
+ * share the same prefix.
155
+ */
156
+ unregisterLookupFunction (prefix: string, lookup?: LookupFunction) {
157
+ if (lookup != null) {
158
+ const existingLookup = this.lookupFunctions.get(prefix)
159
+
160
+ if (existingLookup !== lookup) {
161
+ return
162
+ }
163
+ }
164
+
165
+ this.lookupFunctions.delete(prefix)
166
+ }
167
+ }
File without changes
@@ -0,0 +1,65 @@
1
+ /* eslint-disable import/export */
2
+ /* eslint-disable @typescript-eslint/no-namespace */
3
+
4
+ import { encodeMessage, decodeMessage, message, string, enumeration, bytes } from 'protons-runtime'
5
+ import type { Codec } from 'protons-runtime'
6
+
7
+ export interface FetchRequest {
8
+ identifier: string
9
+ }
10
+
11
+ export namespace FetchRequest {
12
+ export const codec = (): Codec<FetchRequest> => {
13
+ return message<FetchRequest>({
14
+ 1: { name: 'identifier', codec: string }
15
+ })
16
+ }
17
+
18
+ export const encode = (obj: FetchRequest): Uint8Array => {
19
+ return encodeMessage(obj, FetchRequest.codec())
20
+ }
21
+
22
+ export const decode = (buf: Uint8Array): FetchRequest => {
23
+ return decodeMessage(buf, FetchRequest.codec())
24
+ }
25
+ }
26
+
27
+ export interface FetchResponse {
28
+ status: FetchResponse.StatusCode
29
+ data: Uint8Array
30
+ }
31
+
32
+ export namespace FetchResponse {
33
+ export enum StatusCode {
34
+ OK = 'OK',
35
+ NOT_FOUND = 'NOT_FOUND',
36
+ ERROR = 'ERROR'
37
+ }
38
+
39
+ enum __StatusCodeValues {
40
+ OK = 0,
41
+ NOT_FOUND = 1,
42
+ ERROR = 2
43
+ }
44
+
45
+ export namespace StatusCode {
46
+ export const codec = () => {
47
+ return enumeration<typeof StatusCode>(__StatusCodeValues)
48
+ }
49
+ }
50
+
51
+ export const codec = (): Codec<FetchResponse> => {
52
+ return message<FetchResponse>({
53
+ 1: { name: 'status', codec: FetchResponse.StatusCode.codec() },
54
+ 2: { name: 'data', codec: bytes }
55
+ })
56
+ }
57
+
58
+ export const encode = (obj: FetchResponse): Uint8Array => {
59
+ return encodeMessage(obj, FetchResponse.codec())
60
+ }
61
+
62
+ export const decode = (buf: Uint8Array): FetchResponse => {
63
+ return decodeMessage(buf, FetchResponse.codec())
64
+ }
65
+ }
@@ -0,0 +1,57 @@
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
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
7
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info'
8
+
9
+ function peerIdFromMultiaddr (ma: Multiaddr) {
10
+ const idStr = ma.getPeerId()
11
+
12
+ if (idStr == null) {
13
+ throw errCode(
14
+ new Error(`${ma.toString()} does not have a valid peer type`),
15
+ codes.ERR_INVALID_MULTIADDR
16
+ )
17
+ }
18
+
19
+ try {
20
+ return peerIdFromString(idStr)
21
+ } catch (err: any) {
22
+ throw errCode(
23
+ new Error(`${ma.toString()} is not a valid peer type`),
24
+ codes.ERR_INVALID_MULTIADDR
25
+ )
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Converts the given `peer` to a `Peer` object.
31
+ */
32
+ export function getPeer (peer: PeerId | Multiaddr | string): PeerInfo {
33
+ if (isPeerId(peer)) {
34
+ return {
35
+ id: peer,
36
+ multiaddrs: [],
37
+ protocols: []
38
+ }
39
+ }
40
+
41
+ if (typeof peer === 'string') {
42
+ peer = new Multiaddr(peer)
43
+ }
44
+
45
+ let addr
46
+
47
+ if (Multiaddr.isMultiaddr(peer)) {
48
+ addr = peer
49
+ peer = peerIdFromMultiaddr(peer)
50
+ }
51
+
52
+ return {
53
+ id: peer,
54
+ multiaddrs: addr != null ? [addr] : [],
55
+ protocols: []
56
+ }
57
+ }
@@ -0,0 +1,13 @@
1
+
2
+ import { version } from '../version.js'
3
+
4
+ export const PROTOCOL_VERSION = 'ipfs/0.1.0' // deprecated
5
+ export const AGENT_VERSION = `js-libp2p/${version}`
6
+ export const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0' // deprecated
7
+ export const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0' // deprecated
8
+
9
+ export const IDENTIFY_PROTOCOL_VERSION = '0.1.0'
10
+ export const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id'
11
+ export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push'
12
+ export const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0'
13
+ export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0'