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,245 +0,0 @@
1
- import type PeerId from 'peer-id'
2
- import type { Multiaddr } from 'multiaddr'
3
- import type Envelope from '../record/envelope'
4
- import type { PublicKey } from 'libp2p-interfaces/src/keys/types'
5
-
6
- export interface Address {
7
- /**
8
- * Peer multiaddr
9
- */
10
- multiaddr: Multiaddr
11
-
12
- /**
13
- * Obtained from a signed peer record
14
- */
15
- isCertified: boolean
16
- }
17
-
18
- export interface Peer {
19
- /**
20
- * Peer's peer-id instance
21
- */
22
- id: PeerId
23
-
24
- /**
25
- * Peer's addresses containing its multiaddrs and metadata
26
- */
27
- addresses: Address[]
28
-
29
- /**
30
- * Peer's supported protocols
31
- */
32
- protocols: string[]
33
-
34
- /**
35
- * Peer's metadata map
36
- */
37
- metadata: Map<string, Uint8Array>
38
-
39
- /**
40
- * May be set if the key that this Peer has is an RSA key
41
- */
42
- pubKey?: PublicKey
43
-
44
- /**
45
- * The last peer record envelope received
46
- */
47
- peerRecordEnvelope?: Uint8Array
48
- }
49
-
50
- export interface CertifiedRecord {
51
- raw: Uint8Array
52
- seqNumber: number
53
- }
54
-
55
- export interface AddressBookEntry {
56
- addresses: Address[]
57
- record: CertifiedRecord
58
- }
59
-
60
- export interface Book<Type> {
61
- /**
62
- * Get the known data of a peer
63
- */
64
- get: (peerId: PeerId) => Promise<Type>
65
-
66
- /**
67
- * Set the known data of a peer
68
- */
69
- set: (peerId: PeerId, data: Type) => Promise<void>
70
-
71
- /**
72
- * Remove the known data of a peer
73
- */
74
- delete: (peerId: PeerId) => Promise<void>
75
- }
76
-
77
- /**
78
- * AddressBook containing a map of peerIdStr to Address.
79
- */
80
- export interface AddressBook {
81
- /**
82
- * ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
83
- * This will return a boolean that indicates if the record was successfully processed and added
84
- * into the AddressBook
85
- */
86
- consumePeerRecord: (envelope: Envelope) => Promise<boolean>
87
-
88
- /**
89
- * Get the raw Envelope for a peer. Returns
90
- * undefined if no Envelope is found
91
- */
92
- getRawEnvelope: (peerId: PeerId) => Promise<Uint8Array | undefined>
93
-
94
- /**
95
- * Get an Envelope containing a PeerRecord for the given peer.
96
- * Returns undefined if no record exists.
97
- */
98
- getPeerRecord: (peerId: PeerId) => Promise<Envelope | undefined>
99
-
100
- /**
101
- * Add known addresses of a provided peer.
102
- * If the peer is not known, it is set with the given addresses.
103
- */
104
- add: (peerId: PeerId, multiaddrs: Multiaddr[]) => Promise<void>
105
-
106
- /**
107
- * Set the known addresses of a peer
108
- */
109
- set: (peerId: PeerId, data: Multiaddr[]) => Promise<void>
110
-
111
- /**
112
- * Return the known addresses of a peer
113
- */
114
- get: (peerId: PeerId) => Promise<Address[]>
115
-
116
- /**
117
- * Get the known multiaddrs for a given peer. All returned multiaddrs
118
- * will include the encapsulated `PeerId` of the peer.
119
- */
120
- getMultiaddrsForPeer: (peerId: PeerId, addressSorter?: (ms: Address[]) => Address[]) => Promise<Multiaddr[]>
121
- }
122
-
123
- /**
124
- * KeyBook containing a map of peerIdStr to their PeerId with public keys.
125
- */
126
- export interface KeyBook {
127
- /**
128
- * Get the known data of a peer
129
- */
130
- get: (peerId: PeerId) => Promise<PublicKey | undefined>
131
-
132
- /**
133
- * Set the known data of a peer
134
- */
135
- set: (peerId: PeerId, data: PublicKey) => Promise<void>
136
-
137
- /**
138
- * Remove the known data of a peer
139
- */
140
- delete: (peerId: PeerId) => Promise<void>
141
- }
142
-
143
- /**
144
- * MetadataBook containing a map of peerIdStr to their metadata Map.
145
- */
146
- export interface MetadataBook extends Book<Map<string, Uint8Array>> {
147
- /**
148
- * Set a specific metadata value
149
- */
150
- setValue: (peerId: PeerId, key: string, value: Uint8Array) => Promise<void>
151
-
152
- /**
153
- * Get specific metadata value, if it exists
154
- */
155
- getValue: (peerId: PeerId, key: string) => Promise<Uint8Array | undefined>
156
-
157
- /**
158
- * Deletes the provided peer metadata key from the book
159
- */
160
- deleteValue: (peerId: PeerId, key: string) => Promise<void>
161
- }
162
-
163
- /**
164
- * ProtoBook containing a map of peerIdStr to supported protocols.
165
- */
166
- export interface ProtoBook extends Book<string[]> {
167
- /**
168
- * Adds known protocols of a provided peer.
169
- * If the peer was not known before, it will be added.
170
- */
171
- add: (peerId: PeerId, protocols: string[]) => Promise<void>
172
-
173
- /**
174
- * Removes known protocols of a provided peer.
175
- * If the protocols did not exist before, nothing will be done.
176
- */
177
- remove: (peerId: PeerId, protocols: string[]) => Promise<void>
178
- }
179
-
180
- export interface PeerProtocolsChangeEvent {
181
- peerId: PeerId
182
- protocols: string[]
183
- }
184
-
185
- export interface PeerMultiaddrsChangeEvent {
186
- peerId: PeerId
187
- multiaddrs: Multiaddr[]
188
- }
189
-
190
- export interface PeerPublicKeyChangeEvent {
191
- peerId: PeerId
192
- pubKey?: PublicKey
193
- }
194
-
195
- export interface PeerMetadataChangeEvent {
196
- peerId: PeerId
197
- metadata: Map<string, Uint8Array>
198
- }
199
-
200
- export type EventName = 'peer' | 'change:protocols' | 'change:multiaddrs' | 'change:pubkey' | 'change:metadata'
201
-
202
- export interface PeerStoreEvents {
203
- 'peer': (event: PeerId) => void
204
- 'change:protocols': (event: PeerProtocolsChangeEvent) => void
205
- 'change:multiaddrs': (event: PeerMultiaddrsChangeEvent) => void
206
- 'change:pubkey': (event: PeerPublicKeyChangeEvent) => void
207
- 'change:metadata': (event: PeerMetadataChangeEvent) => void
208
- }
209
-
210
- export interface PeerStore {
211
- addressBook: AddressBook
212
- keyBook: KeyBook
213
- metadataBook: MetadataBook
214
- protoBook: ProtoBook
215
-
216
- getPeers: () => AsyncIterable<Peer>
217
- delete: (peerId: PeerId) => Promise<void>
218
- has: (peerId: PeerId) => Promise<boolean>
219
- get: (peerId: PeerId) => Promise<Peer>
220
- on: <U extends keyof PeerStoreEvents>(
221
- event: U, listener: PeerStoreEvents[U]
222
- ) => this
223
- once: <U extends keyof PeerStoreEvents>(
224
- event: U, listener: PeerStoreEvents[U]
225
- ) => this
226
- emit: <U extends keyof PeerStoreEvents>(
227
- event: U, ...args: Parameters<PeerStoreEvents[U]>
228
- ) => boolean
229
- }
230
-
231
- export interface Store {
232
- has: (peerId: PeerId) => Promise<boolean>
233
- save: (peer: Peer) => Promise<Peer>
234
- load: (peerId: PeerId) => Promise<Peer>
235
- merge: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>
236
- mergeOrCreate: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>
237
- patch: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>
238
- patchOrCreate: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>
239
- all: () => AsyncIterable<Peer>
240
-
241
- lock: {
242
- readLock: () => Promise<() => void>
243
- writeLock: () => Promise<() => void>
244
- }
245
- }
@@ -1,8 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = {
4
- PROTOCOL: '/ipfs/ping/1.0.0', // deprecated
5
- PING_LENGTH: 32,
6
- PROTOCOL_VERSION: '1.0.0',
7
- PROTOCOL_NAME: 'ping'
8
- }
package/src/ping/index.js DELETED
@@ -1,85 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:ping'), {
5
- error: debug('libp2p:ping:err')
6
- })
7
- const errCode = require('err-code')
8
- const { codes } = require('../errors')
9
- const crypto = require('libp2p-crypto')
10
- const { pipe } = require('it-pipe')
11
- // @ts-ignore it-buffer has no types exported
12
- const { toBuffer } = require('it-buffer')
13
- const { collect, take } = require('streaming-iterables')
14
- const { equals } = require('uint8arrays/equals')
15
-
16
- const { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } = require('./constants')
17
-
18
- /**
19
- * @typedef {import('../')} Libp2p
20
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
21
- * @typedef {import('peer-id')} PeerId
22
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
23
- */
24
-
25
- /**
26
- * Ping a given peer and wait for its response, getting the operation latency.
27
- *
28
- * @param {Libp2p} node
29
- * @param {PeerId|Multiaddr} peer
30
- * @returns {Promise<number>}
31
- */
32
- async function ping (node, peer) {
33
- const protocol = `/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`
34
- // @ts-ignore multiaddr might not have toB58String
35
- log('dialing %s to %s', protocol, peer.toB58String ? peer.toB58String() : peer)
36
-
37
- const connection = await node.dial(peer)
38
- const { stream } = await connection.newStream(protocol)
39
-
40
- const start = Date.now()
41
- const data = crypto.randomBytes(PING_LENGTH)
42
-
43
- const [result] = await pipe(
44
- [data],
45
- stream,
46
- (/** @type {MuxedStream} */ stream) => take(1, stream),
47
- toBuffer,
48
- collect
49
- )
50
- const end = Date.now()
51
-
52
- if (!equals(data, result)) {
53
- throw errCode(new Error('Received wrong ping ack'), codes.ERR_WRONG_PING_ACK)
54
- }
55
-
56
- return end - start
57
- }
58
-
59
- /**
60
- * Subscribe ping protocol handler.
61
- *
62
- * @param {Libp2p} node
63
- */
64
- function mount (node) {
65
- node.handle(`/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`, ({ stream }) => pipe(stream, stream))
66
- .catch(err => {
67
- log.error(err)
68
- })
69
- }
70
-
71
- /**
72
- * Unsubscribe ping protocol handler.
73
- *
74
- * @param {Libp2p} node
75
- */
76
- function unmount (node) {
77
- node.unhandle(`/${node._config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`)
78
- .catch(err => {
79
- log.error(err)
80
- })
81
- }
82
-
83
- exports = module.exports = ping
84
- exports.mount = mount
85
- exports.unmount = unmount
package/src/ping/util.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict'
2
-
3
- const crypto = require('libp2p-crypto')
4
- const constants = require('./constants')
5
-
6
- /**
7
- * @param {number} length
8
- */
9
- function rnd (length) {
10
- if (!length) {
11
- length = constants.PING_LENGTH
12
- }
13
- return crypto.randomBytes(length)
14
- }
15
-
16
- module.exports = {
17
- rnd
18
- }
@@ -1,84 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:pnet'), {
5
- trace: debug('libp2p:pnet:trace'),
6
- error: debug('libp2p:pnet:err')
7
- })
8
-
9
- const Errors = require('./errors')
10
- // @ts-ignore xsalsa20 has no types exported
11
- const xsalsa20 = require('xsalsa20')
12
- const KEY_LENGTH = require('./key-generator').KEY_LENGTH
13
- const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
14
- const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
15
-
16
- /**
17
- * Creates a stream iterable to encrypt messages in a private network
18
- *
19
- * @param {Uint8Array} nonce - The nonce to use in encryption
20
- * @param {Uint8Array} psk - The private shared key to use in encryption
21
- * @returns {*} a through iterable
22
- */
23
- module.exports.createBoxStream = (nonce, psk) => {
24
- const xor = xsalsa20(nonce, psk)
25
-
26
- return (/** @type {AsyncIterable<Uint8Array>} */ source) => (async function * () {
27
- for await (const chunk of source) {
28
- yield Uint8Array.from(xor.update(chunk.slice()))
29
- }
30
- })()
31
- }
32
-
33
- /**
34
- * Creates a stream iterable to decrypt messages in a private network
35
- *
36
- * @param {Uint8Array} nonce - The nonce of the remote peer
37
- * @param {Uint8Array} psk - The private shared key to use in decryption
38
- * @returns {*} a through iterable
39
- */
40
- module.exports.createUnboxStream = (nonce, psk) => {
41
- return (/** @type {AsyncIterable<Uint8Array>} */ source) => (async function * () {
42
- const xor = xsalsa20(nonce, psk)
43
- log.trace('Decryption enabled')
44
-
45
- for await (const chunk of source) {
46
- yield Uint8Array.from(xor.update(chunk.slice()))
47
- }
48
- })()
49
- }
50
-
51
- /**
52
- * Decode the version 1 psk from the given Uint8Array
53
- *
54
- * @param {Uint8Array} pskBuffer
55
- * @throws {INVALID_PSK}
56
- * @returns {{ tag?: string, codecName?: string, psk: Uint8Array }} The PSK metadata (tag, codecName, psk)
57
- */
58
- module.exports.decodeV1PSK = (pskBuffer) => {
59
- try {
60
- // This should pull from multibase/multicodec to allow for
61
- // more encoding flexibility. Ideally we'd consume the codecs
62
- // from the buffer line by line to evaluate the next line
63
- // programmatically instead of making assumptions about the
64
- // encodings of each line.
65
- const metadata = uint8ArrayToString(pskBuffer).split(/(?:\r\n|\r|\n)/g)
66
- const pskTag = metadata.shift()
67
- const codec = metadata.shift()
68
- const pskString = metadata.shift()
69
- const psk = pskString && uint8ArrayFromString(pskString, 'base16')
70
-
71
- if (!psk || psk.byteLength !== KEY_LENGTH) {
72
- throw new Error(Errors.INVALID_PSK)
73
- }
74
-
75
- return {
76
- tag: pskTag,
77
- codecName: codec,
78
- psk: psk
79
- }
80
- } catch (/** @type {any} */ err) {
81
- log.error(err)
82
- throw new Error(Errors.INVALID_PSK)
83
- }
84
- }
@@ -1,7 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports.INVALID_PEER = 'Not a valid peer connection'
4
- module.exports.INVALID_PSK = 'Your private shared key is invalid'
5
- module.exports.NO_LOCAL_ID = 'No local private key provided'
6
- module.exports.NO_HANDSHAKE_CONNECTION = 'No connection for the handshake provided'
7
- module.exports.STREAM_ENDED = 'Stream ended prematurely'
package/src/pnet/index.js DELETED
@@ -1,86 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:pnet'), {
5
- error: debug('libp2p:pnet:err')
6
- })
7
- const { pipe } = require('it-pipe')
8
- const errcode = require('err-code')
9
- // @ts-ignore it-pair has no types exported
10
- const duplexPair = require('it-pair/duplex')
11
- const crypto = require('libp2p-crypto')
12
- const Errors = require('./errors')
13
- const {
14
- codes: { ERR_INVALID_PARAMETERS }
15
- } = require('../errors')
16
- const {
17
- createBoxStream,
18
- createUnboxStream,
19
- decodeV1PSK
20
- } = require('./crypto')
21
- // @ts-ignore it-handshake has no types exported
22
- const handshake = require('it-handshake')
23
- const { NONCE_LENGTH } = require('./key-generator')
24
-
25
- /**
26
- * @typedef {import('libp2p-interfaces/src/transport/types').MultiaddrConnection} MultiaddrConnection
27
- */
28
-
29
- class Protector {
30
- /**
31
- * Takes a Private Shared Key (psk) and provides a `protect` method
32
- * for wrapping existing connections in a private encryption stream.
33
- *
34
- * @param {Uint8Array} keyBuffer - The private shared key buffer
35
- * @class
36
- */
37
- constructor (keyBuffer) {
38
- const decodedPSK = decodeV1PSK(keyBuffer)
39
- this.psk = decodedPSK.psk
40
- this.tag = decodedPSK.tag
41
- }
42
-
43
- /**
44
- * Takes a given Connection and creates a private encryption stream
45
- * between its two peers from the PSK the Protector instance was
46
- * created with.
47
- *
48
- * @param {MultiaddrConnection} connection - The connection to protect
49
- * @returns {Promise<MultiaddrConnection>} A protected duplex iterable
50
- */
51
- async protect (connection) {
52
- if (!connection) {
53
- throw errcode(new Error(Errors.NO_HANDSHAKE_CONNECTION), ERR_INVALID_PARAMETERS)
54
- }
55
-
56
- // Exchange nonces
57
- log('protecting the connection')
58
- const localNonce = crypto.randomBytes(NONCE_LENGTH)
59
-
60
- const shake = handshake(connection)
61
- shake.write(localNonce)
62
-
63
- const result = await shake.reader.next(NONCE_LENGTH)
64
- const remoteNonce = result.value.slice()
65
- shake.rest()
66
-
67
- // Create the boxing/unboxing pipe
68
- log('exchanged nonces')
69
- const [internal, external] = duplexPair()
70
- pipe(
71
- external,
72
- // Encrypt all outbound traffic
73
- createBoxStream(localNonce, this.psk),
74
- shake.stream,
75
- // Decrypt all inbound traffic
76
- createUnboxStream(remoteNonce, this.psk),
77
- external
78
- ).catch(log.error)
79
-
80
- return internal
81
- }
82
- }
83
-
84
- module.exports = Protector
85
- module.exports.errors = Errors
86
- module.exports.generate = require('./key-generator')
@@ -1,33 +0,0 @@
1
- 'use strict'
2
-
3
- const crypto = require('libp2p-crypto')
4
- const KEY_LENGTH = 32
5
- const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
6
- const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
7
-
8
- /**
9
- * Generates a PSK that can be used in a libp2p-pnet private network
10
- *
11
- * @param {Uint8Array} bytes - An object to write the psk into
12
- * @returns {void}
13
- */
14
- function generate (bytes) {
15
- const psk = uint8ArrayToString(crypto.randomBytes(KEY_LENGTH), 'base16')
16
- const key = uint8ArrayFromString('/key/swarm/psk/1.0.0/\n/base16/\n' + psk)
17
-
18
- bytes.set(key)
19
- }
20
-
21
- module.exports = generate
22
- module.exports.NONCE_LENGTH = 24
23
- module.exports.KEY_LENGTH = KEY_LENGTH
24
-
25
- try {
26
- // @ts-ignore This condition will always return 'false' since the types 'Module | undefined'
27
- if (require.main === module) {
28
- // @ts-ignore
29
- generate(process.stdout)
30
- }
31
- } catch (/** @type {any} */ error) {
32
-
33
- }
@@ -1,61 +0,0 @@
1
- 'use strict'
2
-
3
- // Pubsub adapter to keep API with handlers while not removed.
4
- /**
5
- * @typedef {import('libp2p-interfaces/src/pubsub').InMessage} InMessage
6
- * @typedef {import('libp2p-interfaces/src/pubsub')} PubsubRouter
7
- */
8
-
9
- /**
10
- * @param {{new(...args: any[]): PubsubRouter}} PubsubRouter
11
- * @param {import('.')} libp2p
12
- * @param {{ enabled: boolean; } & import(".").PubsubLocalOptions & import("libp2p-interfaces/src/pubsub").PubsubOptions} options
13
- */
14
- function pubsubAdapter (PubsubRouter, libp2p, options) {
15
- /** @type {PubsubRouter & { _subscribeAdapter: PubsubRouter['subscribe'], _unsubscribeAdapter: PubsubRouter['unsubscribe'] }} */
16
- // @ts-ignore we set the extra _subscribeAdapter and _unsubscribeAdapter properties afterwards
17
- const pubsub = new PubsubRouter(libp2p, options)
18
- pubsub._subscribeAdapter = pubsub.subscribe
19
- pubsub._unsubscribeAdapter = pubsub.unsubscribe
20
-
21
- /**
22
- * Subscribes to a given topic.
23
- *
24
- * @override
25
- * @param {string} topic
26
- * @param {(msg: InMessage) => void} [handler]
27
- * @returns {void}
28
- */
29
- function subscribe (topic, handler) {
30
- // Bind provided handler
31
- handler && pubsub.on(topic, handler)
32
- pubsub._subscribeAdapter(topic)
33
- }
34
-
35
- /**
36
- * Unsubscribe from the given topic.
37
- *
38
- * @override
39
- * @param {string} topic
40
- * @param {(msg: InMessage) => void} [handler]
41
- * @returns {void}
42
- */
43
- function unsubscribe (topic, handler) {
44
- if (!handler) {
45
- pubsub.removeAllListeners(topic)
46
- } else {
47
- pubsub.removeListener(topic, handler)
48
- }
49
-
50
- if (pubsub.listenerCount(topic) === 0) {
51
- pubsub._unsubscribeAdapter(topic)
52
- }
53
- }
54
-
55
- pubsub.subscribe = subscribe
56
- pubsub.unsubscribe = unsubscribe
57
-
58
- return pubsub
59
- }
60
-
61
- module.exports = pubsubAdapter