libp2p 0.36.0 → 0.36.2-1473044

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +54 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +51 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +72 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +190 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +93 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/index.d.ts +79 -144
  64. package/dist/src/connection-manager/index.d.ts.map +1 -1
  65. package/dist/src/connection-manager/index.js +295 -0
  66. package/dist/src/connection-manager/index.js.map +1 -0
  67. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  68. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  69. package/dist/src/connection-manager/latency-monitor.js +220 -0
  70. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  71. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  72. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  73. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  74. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  75. package/dist/src/constants.d.ts +22 -10
  76. package/dist/src/constants.d.ts.map +1 -1
  77. package/dist/src/constants.js +27 -0
  78. package/dist/src/constants.js.map +1 -0
  79. package/dist/src/content-routing/index.d.ts +26 -81
  80. package/dist/src/content-routing/index.d.ts.map +1 -1
  81. package/dist/src/content-routing/index.js +99 -0
  82. package/dist/src/content-routing/index.js.map +1 -0
  83. package/dist/src/content-routing/utils.d.ts +6 -49
  84. package/dist/src/content-routing/utils.d.ts.map +1 -1
  85. package/dist/src/content-routing/utils.js +42 -0
  86. package/dist/src/content-routing/utils.js.map +1 -0
  87. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  88. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  89. package/dist/src/dht/dht-content-routing.js +32 -0
  90. package/dist/src/dht/dht-content-routing.js.map +1 -0
  91. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  92. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  93. package/dist/src/dht/dht-peer-routing.js +26 -0
  94. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  95. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  96. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  97. package/dist/src/dialer/auto-dialer.js +24 -0
  98. package/dist/src/dialer/auto-dialer.js.map +1 -0
  99. package/dist/src/dialer/dial-request.d.ts +18 -46
  100. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  101. package/dist/src/dialer/dial-request.js +83 -0
  102. package/dist/src/dialer/dial-request.js.map +1 -0
  103. package/dist/src/dialer/index.d.ts +41 -148
  104. package/dist/src/dialer/index.d.ts.map +1 -1
  105. package/dist/src/dialer/index.js +280 -0
  106. package/dist/src/dialer/index.js.map +1 -0
  107. package/dist/src/errors.d.ts +68 -63
  108. package/dist/src/errors.d.ts.map +1 -1
  109. package/dist/src/errors.js +73 -0
  110. package/dist/src/errors.js.map +1 -0
  111. package/dist/src/fetch/constants.d.ts +1 -1
  112. package/dist/src/fetch/constants.d.ts.map +1 -1
  113. package/dist/src/fetch/constants.js +3 -0
  114. package/dist/src/fetch/constants.js.map +1 -0
  115. package/dist/src/fetch/index.d.ts +30 -49
  116. package/dist/src/fetch/index.d.ts.map +1 -1
  117. package/dist/src/fetch/index.js +129 -0
  118. package/dist/src/fetch/index.js.map +1 -0
  119. package/dist/src/fetch/pb/proto.d.ts +26 -0
  120. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  121. package/dist/src/fetch/pb/proto.js +44 -0
  122. package/dist/src/fetch/pb/proto.js.map +1 -0
  123. package/dist/src/get-peer.d.ts +4 -11
  124. package/dist/src/get-peer.d.ts.map +1 -1
  125. package/dist/src/get-peer.js +43 -0
  126. package/dist/src/get-peer.js.map +1 -0
  127. package/dist/src/identify/consts.d.ts +9 -9
  128. package/dist/src/identify/consts.d.ts.map +1 -1
  129. package/dist/src/identify/consts.js +11 -0
  130. package/dist/src/identify/consts.js.map +1 -0
  131. package/dist/src/identify/index.d.ts +42 -96
  132. package/dist/src/identify/index.d.ts.map +1 -1
  133. package/dist/src/identify/index.js +322 -0
  134. package/dist/src/identify/index.js.map +1 -0
  135. package/dist/src/identify/pb/message.d.ts +15 -0
  136. package/dist/src/identify/pb/message.d.ts.map +1 -0
  137. package/dist/src/identify/pb/message.js +24 -0
  138. package/dist/src/identify/pb/message.js.map +1 -0
  139. package/dist/src/index.d.ts +162 -581
  140. package/dist/src/index.d.ts.map +1 -1
  141. package/dist/src/index.js +9 -0
  142. package/dist/src/index.js.map +1 -0
  143. package/dist/src/insecure/index.d.ts +9 -0
  144. package/dist/src/insecure/index.d.ts.map +1 -0
  145. package/dist/src/insecure/index.js +81 -0
  146. package/dist/src/insecure/index.js.map +1 -0
  147. package/dist/src/insecure/pb/proto.d.ts +28 -0
  148. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  149. package/dist/src/insecure/pb/proto.js +46 -0
  150. package/dist/src/insecure/pb/proto.js.map +1 -0
  151. package/dist/src/keychain/cms.d.ts +6 -14
  152. package/dist/src/keychain/cms.d.ts.map +1 -1
  153. package/dist/src/keychain/cms.js +129 -0
  154. package/dist/src/keychain/cms.js.map +1 -0
  155. package/dist/src/keychain/index.d.ts +61 -81
  156. package/dist/src/keychain/index.d.ts.map +1 -1
  157. package/dist/src/keychain/index.js +493 -0
  158. package/dist/src/keychain/index.js.map +1 -0
  159. package/dist/src/keychain/util.d.ts +3 -6
  160. package/dist/src/keychain/util.d.ts.map +1 -1
  161. package/dist/src/keychain/util.js +79 -0
  162. package/dist/src/keychain/util.js.map +1 -0
  163. package/dist/src/libp2p.d.ts +78 -0
  164. package/dist/src/libp2p.d.ts.map +1 -0
  165. package/dist/src/libp2p.js +375 -0
  166. package/dist/src/libp2p.js.map +1 -0
  167. package/dist/src/metrics/index.d.ts +47 -104
  168. package/dist/src/metrics/index.d.ts.map +1 -1
  169. package/dist/src/metrics/index.js +231 -0
  170. package/dist/src/metrics/index.js.map +1 -0
  171. package/dist/src/metrics/moving-average.d.ts +14 -0
  172. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  173. package/dist/src/metrics/moving-average.js +40 -0
  174. package/dist/src/metrics/moving-average.js.map +1 -0
  175. package/dist/src/metrics/stats.d.ts +41 -93
  176. package/dist/src/metrics/stats.d.ts.map +1 -1
  177. package/dist/src/metrics/stats.js +183 -0
  178. package/dist/src/metrics/stats.js.map +1 -0
  179. package/dist/src/nat-manager.d.ts +42 -99
  180. package/dist/src/nat-manager.d.ts.map +1 -1
  181. package/dist/src/nat-manager.js +114 -0
  182. package/dist/src/nat-manager.js.map +1 -0
  183. package/dist/src/peer-record-updater.d.ts +15 -0
  184. package/dist/src/peer-record-updater.d.ts.map +1 -0
  185. package/dist/src/peer-record-updater.js +44 -0
  186. package/dist/src/peer-record-updater.js.map +1 -0
  187. package/dist/src/peer-routing.d.ts +39 -84
  188. package/dist/src/peer-routing.d.ts.map +1 -1
  189. package/dist/src/peer-routing.js +108 -0
  190. package/dist/src/peer-routing.js.map +1 -0
  191. package/dist/src/ping/constants.d.ts +4 -4
  192. package/dist/src/ping/constants.d.ts.map +1 -1
  193. package/dist/src/ping/constants.js +5 -0
  194. package/dist/src/ping/constants.js.map +1 -0
  195. package/dist/src/ping/index.d.ts +26 -33
  196. package/dist/src/ping/index.d.ts.map +1 -1
  197. package/dist/src/ping/index.js +56 -0
  198. package/dist/src/ping/index.js.map +1 -0
  199. package/dist/src/pnet/crypto.d.ts +15 -5
  200. package/dist/src/pnet/crypto.d.ts.map +1 -1
  201. package/dist/src/pnet/crypto.js +60 -0
  202. package/dist/src/pnet/crypto.js.map +1 -0
  203. package/dist/src/pnet/errors.d.ts +5 -5
  204. package/dist/src/pnet/errors.d.ts.map +1 -1
  205. package/dist/src/pnet/errors.js +6 -0
  206. package/dist/src/pnet/errors.js.map +1 -0
  207. package/dist/src/pnet/index.d.ts +11 -20
  208. package/dist/src/pnet/index.d.ts.map +1 -1
  209. package/dist/src/pnet/index.js +66 -0
  210. package/dist/src/pnet/index.js.map +1 -0
  211. package/dist/src/pnet/key-generator.d.ts +3 -7
  212. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  213. package/dist/src/pnet/key-generator.js +25 -0
  214. package/dist/src/pnet/key-generator.js.map +1 -0
  215. package/dist/src/registrar.d.ts +27 -65
  216. package/dist/src/registrar.d.ts.map +1 -1
  217. package/dist/src/registrar.js +159 -0
  218. package/dist/src/registrar.js.map +1 -0
  219. package/dist/src/transport-manager.d.ts +34 -82
  220. package/dist/src/transport-manager.d.ts.map +1 -1
  221. package/dist/src/transport-manager.js +223 -0
  222. package/dist/src/transport-manager.js.map +1 -0
  223. package/dist/src/upgrader.d.ts +49 -129
  224. package/dist/src/upgrader.d.ts.map +1 -1
  225. package/dist/src/upgrader.js +402 -0
  226. package/dist/src/upgrader.js.map +1 -0
  227. package/dist/src/version.d.ts +3 -0
  228. package/dist/src/version.d.ts.map +1 -0
  229. package/dist/src/version.js +3 -0
  230. package/dist/src/version.js.map +1 -0
  231. package/package.json +150 -197
  232. package/src/address-manager/index.ts +129 -0
  233. package/src/circuit/README.md +16 -11
  234. package/src/circuit/auto-relay.ts +284 -0
  235. package/src/circuit/circuit/hop.ts +211 -0
  236. package/src/circuit/circuit/stop.ts +78 -0
  237. package/src/circuit/circuit/stream-handler.ts +86 -0
  238. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  239. package/src/circuit/constants.ts +31 -0
  240. package/src/circuit/index.ts +120 -0
  241. package/src/circuit/{listener.js → listener.ts} +21 -27
  242. package/src/circuit/multicodec.ts +2 -0
  243. package/src/circuit/{protocol → pb}/index.proto +1 -1
  244. package/src/circuit/pb/index.ts +88 -0
  245. package/src/circuit/transport.ts +216 -0
  246. package/src/circuit/utils.ts +12 -0
  247. package/src/config.ts +101 -0
  248. package/src/connection-manager/auto-dialler.ts +154 -0
  249. package/src/connection-manager/index.ts +422 -0
  250. package/src/connection-manager/latency-monitor.ts +319 -0
  251. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  252. package/src/constants.ts +31 -0
  253. package/src/content-routing/index.ts +143 -0
  254. package/src/content-routing/utils.ts +54 -0
  255. package/src/dht/dht-content-routing.ts +43 -0
  256. package/src/dht/dht-peer-routing.ts +35 -0
  257. package/src/dialer/auto-dialer.ts +40 -0
  258. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  259. package/src/dialer/index.ts +371 -0
  260. package/src/errors.ts +71 -0
  261. package/src/fetch/README.md +1 -1
  262. package/src/fetch/constants.ts +3 -0
  263. package/src/fetch/index.ts +167 -0
  264. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  265. package/src/fetch/pb/proto.ts +58 -0
  266. package/src/get-peer.ts +57 -0
  267. package/src/identify/consts.ts +13 -0
  268. package/src/identify/index.ts +445 -0
  269. package/src/identify/{message.proto → pb/message.proto} +0 -0
  270. package/src/identify/pb/message.ts +36 -0
  271. package/src/index.ts +242 -0
  272. package/src/insecure/index.ts +101 -0
  273. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/insecure/pb/proto.ts +61 -0
  275. package/src/keychain/{cms.js → cms.ts} +62 -58
  276. package/src/keychain/index.ts +588 -0
  277. package/src/keychain/{util.js → util.ts} +7 -17
  278. package/src/libp2p.ts +513 -0
  279. package/src/metrics/index.ts +310 -0
  280. package/src/metrics/moving-average.ts +53 -0
  281. package/src/metrics/stats.ts +238 -0
  282. package/src/nat-manager.ts +194 -0
  283. package/src/peer-record-updater.ts +55 -0
  284. package/src/peer-routing.ts +185 -0
  285. package/src/ping/README.md +1 -1
  286. package/src/ping/constants.ts +5 -0
  287. package/src/ping/index.ts +83 -0
  288. package/src/pnet/README.md +2 -2
  289. package/src/pnet/crypto.ts +67 -0
  290. package/src/pnet/errors.ts +5 -0
  291. package/src/pnet/index.ts +95 -0
  292. package/src/pnet/key-generator.ts +28 -0
  293. package/src/registrar.ts +205 -0
  294. package/src/transport-manager.ts +279 -0
  295. package/src/upgrader.ts +499 -0
  296. package/src/version.ts +3 -0
  297. package/dist/index.min.js +0 -55
  298. package/dist/src/circuit/protocol/index.d.ts +0 -173
  299. package/dist/src/fetch/proto.d.ts +0 -134
  300. package/dist/src/identify/message.d.ts +0 -95
  301. package/dist/src/insecure/plaintext.d.ts +0 -12
  302. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  303. package/dist/src/insecure/proto.d.ts +0 -128
  304. package/dist/src/metrics/old-peers.d.ts +0 -3
  305. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  306. package/dist/src/metrics/tracked-map.d.ts +0 -8
  307. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  308. package/dist/src/peer-store/address-book.d.ts +0 -67
  309. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  310. package/dist/src/peer-store/index.d.ts +0 -58
  311. package/dist/src/peer-store/index.d.ts.map +0 -1
  312. package/dist/src/peer-store/key-book.d.ts +0 -40
  313. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  314. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  315. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  316. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  317. package/dist/src/peer-store/proto-book.d.ts +0 -43
  318. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  319. package/dist/src/peer-store/store.d.ts +0 -73
  320. package/dist/src/peer-store/store.d.ts.map +0 -1
  321. package/dist/src/peer-store/types.d.ts +0 -202
  322. package/dist/src/peer-store/types.d.ts.map +0 -1
  323. package/dist/src/ping/util.d.ts +0 -5
  324. package/dist/src/ping/util.d.ts.map +0 -1
  325. package/dist/src/pubsub-adapter.d.ts +0 -22
  326. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  327. package/dist/src/record/envelope/envelope.d.ts +0 -77
  328. package/dist/src/record/envelope/index.d.ts +0 -80
  329. package/dist/src/record/envelope/index.d.ts.map +0 -1
  330. package/dist/src/record/peer-record/consts.d.ts +0 -4
  331. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  332. package/dist/src/record/peer-record/index.d.ts +0 -60
  333. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  334. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  335. package/dist/src/record/utils.d.ts +0 -12
  336. package/dist/src/record/utils.d.ts.map +0 -1
  337. package/dist/src/types.d.ts +0 -90
  338. package/dist/src/types.d.ts.map +0 -1
  339. package/src/address-manager/index.js +0 -96
  340. package/src/circuit/auto-relay.js +0 -302
  341. package/src/circuit/circuit/hop.js +0 -205
  342. package/src/circuit/circuit/stop.js +0 -81
  343. package/src/circuit/circuit/stream-handler.js +0 -94
  344. package/src/circuit/constants.js +0 -12
  345. package/src/circuit/index.js +0 -102
  346. package/src/circuit/multicodec.js +0 -5
  347. package/src/circuit/protocol/index.d.ts +0 -173
  348. package/src/circuit/protocol/index.js +0 -530
  349. package/src/circuit/transport.js +0 -229
  350. package/src/circuit/utils.js +0 -17
  351. package/src/config.js +0 -114
  352. package/src/connection-manager/auto-dialler.js +0 -132
  353. package/src/connection-manager/index.js +0 -363
  354. package/src/connection-manager/latency-monitor.js +0 -264
  355. package/src/constants.js +0 -18
  356. package/src/content-routing/index.js +0 -163
  357. package/src/content-routing/utils.js +0 -89
  358. package/src/dht/dht-content-routing.js +0 -44
  359. package/src/dht/dht-peer-routing.js +0 -51
  360. package/src/dialer/index.js +0 -376
  361. package/src/errors.js +0 -66
  362. package/src/fetch/constants.js +0 -6
  363. package/src/fetch/index.js +0 -159
  364. package/src/fetch/proto.d.ts +0 -134
  365. package/src/fetch/proto.js +0 -333
  366. package/src/get-peer.js +0 -49
  367. package/src/identify/consts.js +0 -15
  368. package/src/identify/index.js +0 -384
  369. package/src/identify/message.d.ts +0 -95
  370. package/src/identify/message.js +0 -328
  371. package/src/index.js +0 -811
  372. package/src/insecure/plaintext.js +0 -95
  373. package/src/insecure/proto.d.ts +0 -128
  374. package/src/insecure/proto.js +0 -371
  375. package/src/keychain/index.js +0 -561
  376. package/src/metrics/index.js +0 -290
  377. package/src/metrics/old-peers.js +0 -16
  378. package/src/metrics/stats.js +0 -270
  379. package/src/metrics/tracked-map.js +0 -94
  380. package/src/nat-manager.js +0 -197
  381. package/src/peer-routing.js +0 -176
  382. package/src/peer-store/README.md +0 -145
  383. package/src/peer-store/address-book.js +0 -382
  384. package/src/peer-store/index.js +0 -121
  385. package/src/peer-store/key-book.js +0 -141
  386. package/src/peer-store/metadata-book.js +0 -250
  387. package/src/peer-store/pb/peer.d.ts +0 -222
  388. package/src/peer-store/pb/peer.js +0 -643
  389. package/src/peer-store/pb/peer.proto +0 -31
  390. package/src/peer-store/proto-book.js +0 -237
  391. package/src/peer-store/store.js +0 -263
  392. package/src/peer-store/types.ts +0 -245
  393. package/src/ping/constants.js +0 -8
  394. package/src/ping/index.js +0 -85
  395. package/src/ping/util.js +0 -18
  396. package/src/pnet/crypto.js +0 -84
  397. package/src/pnet/errors.js +0 -7
  398. package/src/pnet/index.js +0 -86
  399. package/src/pnet/key-generator.js +0 -33
  400. package/src/pubsub-adapter.js +0 -61
  401. package/src/record/README.md +0 -130
  402. package/src/record/envelope/envelope.d.ts +0 -77
  403. package/src/record/envelope/envelope.js +0 -243
  404. package/src/record/envelope/envelope.proto +0 -19
  405. package/src/record/envelope/index.js +0 -183
  406. package/src/record/peer-record/consts.js +0 -14
  407. package/src/record/peer-record/index.js +0 -113
  408. package/src/record/peer-record/peer-record.d.ts +0 -133
  409. package/src/record/peer-record/peer-record.js +0 -367
  410. package/src/record/peer-record/peer-record.proto +0 -18
  411. package/src/record/utils.js +0 -25
  412. package/src/registrar.js +0 -127
  413. package/src/transport-manager.js +0 -269
  414. package/src/types.ts +0 -98
  415. package/src/upgrader.js +0 -492
package/src/errors.ts ADDED
@@ -0,0 +1,71 @@
1
+ export enum messages {
2
+ NOT_STARTED_YET = 'The libp2p node is not started yet',
3
+ DHT_DISABLED = 'DHT is not available',
4
+ CONN_ENCRYPTION_REQUIRED = 'At least one connection encryption module is required',
5
+ ERR_TRANSPORTS_REQUIRED = 'At least one transport module is required',
6
+ ERR_PROTECTOR_REQUIRED = 'Private network is enforced, but no protector was provided',
7
+ NOT_FOUND = 'Not found'
8
+ }
9
+
10
+ export enum codes {
11
+ DHT_DISABLED = 'ERR_DHT_DISABLED',
12
+ PUBSUB_NOT_STARTED = 'ERR_PUBSUB_NOT_STARTED',
13
+ DHT_NOT_STARTED = 'ERR_DHT_NOT_STARTED',
14
+ CONN_ENCRYPTION_REQUIRED = 'ERR_CONN_ENCRYPTION_REQUIRED',
15
+ ERR_TRANSPORTS_REQUIRED = 'ERR_TRANSPORTS_REQUIRED',
16
+ ERR_PROTECTOR_REQUIRED = 'ERR_PROTECTOR_REQUIRED',
17
+ ERR_PEER_DIAL_INTERCEPTED = 'ERR_PEER_DIAL_INTERCEPTED',
18
+ ERR_CONNECTION_INTERCEPTED = 'ERR_CONNECTION_INTERCEPTED',
19
+ ERR_INVALID_PROTOCOLS_FOR_STREAM = 'ERR_INVALID_PROTOCOLS_FOR_STREAM',
20
+ ERR_CONNECTION_ENDED = 'ERR_CONNECTION_ENDED',
21
+ ERR_CONNECTION_FAILED = 'ERR_CONNECTION_FAILED',
22
+ ERR_NODE_NOT_STARTED = 'ERR_NODE_NOT_STARTED',
23
+ ERR_ALREADY_ABORTED = 'ERR_ALREADY_ABORTED',
24
+ ERR_TOO_MANY_ADDRESSES = 'ERR_TOO_MANY_ADDRESSES',
25
+ ERR_NO_VALID_ADDRESSES = 'ERR_NO_VALID_ADDRESSES',
26
+ ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL',
27
+ ERR_DIALED_SELF = 'ERR_DIALED_SELF',
28
+ ERR_DISCOVERED_SELF = 'ERR_DISCOVERED_SELF',
29
+ ERR_DUPLICATE_TRANSPORT = 'ERR_DUPLICATE_TRANSPORT',
30
+ ERR_ENCRYPTION_FAILED = 'ERR_ENCRYPTION_FAILED',
31
+ ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED',
32
+ ERR_INVALID_KEY = 'ERR_INVALID_KEY',
33
+ ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE',
34
+ ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS',
35
+ ERR_INVALID_PEER = 'ERR_INVALID_PEER',
36
+ ERR_MUXER_UNAVAILABLE = 'ERR_MUXER_UNAVAILABLE',
37
+ ERR_NOT_FOUND = 'ERR_NOT_FOUND',
38
+ ERR_TIMEOUT = 'ERR_TIMEOUT',
39
+ ERR_TRANSPORT_UNAVAILABLE = 'ERR_TRANSPORT_UNAVAILABLE',
40
+ ERR_TRANSPORT_DIAL_FAILED = 'ERR_TRANSPORT_DIAL_FAILED',
41
+ ERR_UNSUPPORTED_PROTOCOL = 'ERR_UNSUPPORTED_PROTOCOL',
42
+ ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED = 'ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED',
43
+ ERR_INVALID_MULTIADDR = 'ERR_INVALID_MULTIADDR',
44
+ ERR_SIGNATURE_NOT_VALID = 'ERR_SIGNATURE_NOT_VALID',
45
+ ERR_FIND_SELF = 'ERR_FIND_SELF',
46
+ ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE',
47
+ ERR_CONNECTION_NOT_MULTIPLEXED = 'ERR_CONNECTION_NOT_MULTIPLEXED',
48
+ ERR_NO_DIAL_TOKENS = 'ERR_NO_DIAL_TOKENS',
49
+ ERR_KEYCHAIN_REQUIRED = 'ERR_KEYCHAIN_REQUIRED',
50
+ ERR_INVALID_CMS = 'ERR_INVALID_CMS',
51
+ ERR_MISSING_KEYS = 'ERR_MISSING_KEYS',
52
+ ERR_NO_KEY = 'ERR_NO_KEY',
53
+ ERR_INVALID_KEY_NAME = 'ERR_INVALID_KEY_NAME',
54
+ ERR_INVALID_KEY_TYPE = 'ERR_INVALID_KEY_TYPE',
55
+ ERR_KEY_ALREADY_EXISTS = 'ERR_KEY_ALREADY_EXISTS',
56
+ ERR_INVALID_KEY_SIZE = 'ERR_INVALID_KEY_SIZE',
57
+ ERR_KEY_NOT_FOUND = 'ERR_KEY_NOT_FOUND',
58
+ ERR_OLD_KEY_NAME_INVALID = 'ERR_OLD_KEY_NAME_INVALID',
59
+ ERR_NEW_KEY_NAME_INVALID = 'ERR_NEW_KEY_NAME_INVALID',
60
+ ERR_PASSWORD_REQUIRED = 'ERR_PASSWORD_REQUIRED',
61
+ ERR_PEM_REQUIRED = 'ERR_PEM_REQUIRED',
62
+ ERR_CANNOT_READ_KEY = 'ERR_CANNOT_READ_KEY',
63
+ ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY',
64
+ ERR_MISSING_PUBLIC_KEY = 'ERR_MISSING_PUBLIC_KEY',
65
+ ERR_INVALID_OLD_PASS_TYPE = 'ERR_INVALID_OLD_PASS_TYPE',
66
+ ERR_INVALID_NEW_PASS_TYPE = 'ERR_INVALID_NEW_PASS_TYPE',
67
+ ERR_INVALID_PASS_LENGTH = 'ERR_INVALID_PASS_LENGTH',
68
+ ERR_NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',
69
+ ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK',
70
+ ERR_INVALID_RECORD = 'ERR_INVALID_RECORD'
71
+ }
@@ -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'
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.getDialer().dial(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,58 @@
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
+
6
+ export interface FetchRequest {
7
+ identifier: string
8
+ }
9
+
10
+ export namespace FetchRequest {
11
+ export const codec = () => {
12
+ return message<FetchRequest>({
13
+ 1: { name: 'identifier', codec: string }
14
+ })
15
+ }
16
+
17
+ export const encode = (obj: FetchRequest): Uint8Array => {
18
+ return encodeMessage(obj, FetchRequest.codec())
19
+ }
20
+
21
+ export const decode = (buf: Uint8Array): FetchRequest => {
22
+ return decodeMessage(buf, FetchRequest.codec())
23
+ }
24
+ }
25
+
26
+ export interface FetchResponse {
27
+ status: FetchResponse.StatusCode
28
+ data: Uint8Array
29
+ }
30
+
31
+ export namespace FetchResponse {
32
+ export enum StatusCode {
33
+ OK = 'OK',
34
+ NOT_FOUND = 'NOT_FOUND',
35
+ ERROR = 'ERROR'
36
+ }
37
+
38
+ export namespace StatusCode {
39
+ export const codec = () => {
40
+ return enumeration<typeof StatusCode>(StatusCode)
41
+ }
42
+ }
43
+
44
+ export const codec = () => {
45
+ return message<FetchResponse>({
46
+ 1: { name: 'status', codec: FetchResponse.StatusCode.codec() },
47
+ 2: { name: 'data', codec: bytes }
48
+ })
49
+ }
50
+
51
+ export const encode = (obj: FetchResponse): Uint8Array => {
52
+ return encodeMessage(obj, FetchResponse.codec())
53
+ }
54
+
55
+ export const decode = (buf: Uint8Array): FetchResponse => {
56
+ return decodeMessage(buf, FetchResponse.codec())
57
+ }
58
+ }
@@ -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'