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
@@ -19,11 +19,17 @@ export class Exchange implements IExchange {
19
19
  constructor(p?: IExchange);
20
20
 
21
21
  /** Exchange id. */
22
- public id: Uint8Array;
22
+ public id?: (Uint8Array|null);
23
23
 
24
24
  /** Exchange pubkey. */
25
25
  public pubkey?: (IPublicKey|null);
26
26
 
27
+ /** Exchange _id. */
28
+ public _id?: "id";
29
+
30
+ /** Exchange _pubkey. */
31
+ public _pubkey?: "pubkey";
32
+
27
33
  /**
28
34
  * Encodes the specified Exchange message. Does not implicitly {@link Exchange.verify|verify} messages.
29
35
  * @param m Exchange message or plain object to encode
@@ -0,0 +1,388 @@
1
+ /*eslint-disable*/
2
+ import $protobuf from "protobufjs/minimal.js";
3
+
4
+ // Common aliases
5
+ const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
6
+
7
+ // Exported root namespace
8
+ const $root = $protobuf.roots["libp2p-plaintext"] || ($protobuf.roots["libp2p-plaintext"] = {});
9
+
10
+ export const Exchange = $root.Exchange = (() => {
11
+
12
+ /**
13
+ * Properties of an Exchange.
14
+ * @exports IExchange
15
+ * @interface IExchange
16
+ * @property {Uint8Array|null} [id] Exchange id
17
+ * @property {IPublicKey|null} [pubkey] Exchange pubkey
18
+ */
19
+
20
+ /**
21
+ * Constructs a new Exchange.
22
+ * @exports Exchange
23
+ * @classdesc Represents an Exchange.
24
+ * @implements IExchange
25
+ * @constructor
26
+ * @param {IExchange=} [p] Properties to set
27
+ */
28
+ function Exchange(p) {
29
+ if (p)
30
+ for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
31
+ if (p[ks[i]] != null)
32
+ this[ks[i]] = p[ks[i]];
33
+ }
34
+
35
+ /**
36
+ * Exchange id.
37
+ * @member {Uint8Array|null|undefined} id
38
+ * @memberof Exchange
39
+ * @instance
40
+ */
41
+ Exchange.prototype.id = null;
42
+
43
+ /**
44
+ * Exchange pubkey.
45
+ * @member {IPublicKey|null|undefined} pubkey
46
+ * @memberof Exchange
47
+ * @instance
48
+ */
49
+ Exchange.prototype.pubkey = null;
50
+
51
+ // OneOf field names bound to virtual getters and setters
52
+ let $oneOfFields;
53
+
54
+ /**
55
+ * Exchange _id.
56
+ * @member {"id"|undefined} _id
57
+ * @memberof Exchange
58
+ * @instance
59
+ */
60
+ Object.defineProperty(Exchange.prototype, "_id", {
61
+ get: $util.oneOfGetter($oneOfFields = ["id"]),
62
+ set: $util.oneOfSetter($oneOfFields)
63
+ });
64
+
65
+ /**
66
+ * Exchange _pubkey.
67
+ * @member {"pubkey"|undefined} _pubkey
68
+ * @memberof Exchange
69
+ * @instance
70
+ */
71
+ Object.defineProperty(Exchange.prototype, "_pubkey", {
72
+ get: $util.oneOfGetter($oneOfFields = ["pubkey"]),
73
+ set: $util.oneOfSetter($oneOfFields)
74
+ });
75
+
76
+ /**
77
+ * Encodes the specified Exchange message. Does not implicitly {@link Exchange.verify|verify} messages.
78
+ * @function encode
79
+ * @memberof Exchange
80
+ * @static
81
+ * @param {IExchange} m Exchange message or plain object to encode
82
+ * @param {$protobuf.Writer} [w] Writer to encode to
83
+ * @returns {$protobuf.Writer} Writer
84
+ */
85
+ Exchange.encode = function encode(m, w) {
86
+ if (!w)
87
+ w = $Writer.create();
88
+ if (m.id != null && Object.hasOwnProperty.call(m, "id"))
89
+ w.uint32(10).bytes(m.id);
90
+ if (m.pubkey != null && Object.hasOwnProperty.call(m, "pubkey"))
91
+ $root.PublicKey.encode(m.pubkey, w.uint32(18).fork()).ldelim();
92
+ return w;
93
+ };
94
+
95
+ /**
96
+ * Decodes an Exchange message from the specified reader or buffer.
97
+ * @function decode
98
+ * @memberof Exchange
99
+ * @static
100
+ * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
101
+ * @param {number} [l] Message length if known beforehand
102
+ * @returns {Exchange} Exchange
103
+ * @throws {Error} If the payload is not a reader or valid buffer
104
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
105
+ */
106
+ Exchange.decode = function decode(r, l) {
107
+ if (!(r instanceof $Reader))
108
+ r = $Reader.create(r);
109
+ var c = l === undefined ? r.len : r.pos + l, m = new $root.Exchange();
110
+ while (r.pos < c) {
111
+ var t = r.uint32();
112
+ switch (t >>> 3) {
113
+ case 1:
114
+ m.id = r.bytes();
115
+ break;
116
+ case 2:
117
+ m.pubkey = $root.PublicKey.decode(r, r.uint32());
118
+ break;
119
+ default:
120
+ r.skipType(t & 7);
121
+ break;
122
+ }
123
+ }
124
+ return m;
125
+ };
126
+
127
+ /**
128
+ * Creates an Exchange message from a plain object. Also converts values to their respective internal types.
129
+ * @function fromObject
130
+ * @memberof Exchange
131
+ * @static
132
+ * @param {Object.<string,*>} d Plain object
133
+ * @returns {Exchange} Exchange
134
+ */
135
+ Exchange.fromObject = function fromObject(d) {
136
+ if (d instanceof $root.Exchange)
137
+ return d;
138
+ var m = new $root.Exchange();
139
+ if (d.id != null) {
140
+ if (typeof d.id === "string")
141
+ $util.base64.decode(d.id, m.id = $util.newBuffer($util.base64.length(d.id)), 0);
142
+ else if (d.id.length)
143
+ m.id = d.id;
144
+ }
145
+ if (d.pubkey != null) {
146
+ if (typeof d.pubkey !== "object")
147
+ throw TypeError(".Exchange.pubkey: object expected");
148
+ m.pubkey = $root.PublicKey.fromObject(d.pubkey);
149
+ }
150
+ return m;
151
+ };
152
+
153
+ /**
154
+ * Creates a plain object from an Exchange message. Also converts values to other types if specified.
155
+ * @function toObject
156
+ * @memberof Exchange
157
+ * @static
158
+ * @param {Exchange} m Exchange
159
+ * @param {$protobuf.IConversionOptions} [o] Conversion options
160
+ * @returns {Object.<string,*>} Plain object
161
+ */
162
+ Exchange.toObject = function toObject(m, o) {
163
+ if (!o)
164
+ o = {};
165
+ var d = {};
166
+ if (m.id != null && m.hasOwnProperty("id")) {
167
+ d.id = o.bytes === String ? $util.base64.encode(m.id, 0, m.id.length) : o.bytes === Array ? Array.prototype.slice.call(m.id) : m.id;
168
+ if (o.oneofs)
169
+ d._id = "id";
170
+ }
171
+ if (m.pubkey != null && m.hasOwnProperty("pubkey")) {
172
+ d.pubkey = $root.PublicKey.toObject(m.pubkey, o);
173
+ if (o.oneofs)
174
+ d._pubkey = "pubkey";
175
+ }
176
+ return d;
177
+ };
178
+
179
+ /**
180
+ * Converts this Exchange to JSON.
181
+ * @function toJSON
182
+ * @memberof Exchange
183
+ * @instance
184
+ * @returns {Object.<string,*>} JSON object
185
+ */
186
+ Exchange.prototype.toJSON = function toJSON() {
187
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
188
+ };
189
+
190
+ return Exchange;
191
+ })();
192
+
193
+ /**
194
+ * KeyType enum.
195
+ * @exports KeyType
196
+ * @enum {number}
197
+ * @property {number} RSA=0 RSA value
198
+ * @property {number} Ed25519=1 Ed25519 value
199
+ * @property {number} Secp256k1=2 Secp256k1 value
200
+ * @property {number} ECDSA=3 ECDSA value
201
+ */
202
+ export const KeyType = $root.KeyType = (() => {
203
+ const valuesById = {}, values = Object.create(valuesById);
204
+ values[valuesById[0] = "RSA"] = 0;
205
+ values[valuesById[1] = "Ed25519"] = 1;
206
+ values[valuesById[2] = "Secp256k1"] = 2;
207
+ values[valuesById[3] = "ECDSA"] = 3;
208
+ return values;
209
+ })();
210
+
211
+ export const PublicKey = $root.PublicKey = (() => {
212
+
213
+ /**
214
+ * Properties of a PublicKey.
215
+ * @exports IPublicKey
216
+ * @interface IPublicKey
217
+ * @property {KeyType|null} [Type] PublicKey Type
218
+ * @property {Uint8Array|null} [Data] PublicKey Data
219
+ */
220
+
221
+ /**
222
+ * Constructs a new PublicKey.
223
+ * @exports PublicKey
224
+ * @classdesc Represents a PublicKey.
225
+ * @implements IPublicKey
226
+ * @constructor
227
+ * @param {IPublicKey=} [p] Properties to set
228
+ */
229
+ function PublicKey(p) {
230
+ if (p)
231
+ for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
232
+ if (p[ks[i]] != null)
233
+ this[ks[i]] = p[ks[i]];
234
+ }
235
+
236
+ /**
237
+ * PublicKey Type.
238
+ * @member {KeyType} Type
239
+ * @memberof PublicKey
240
+ * @instance
241
+ */
242
+ PublicKey.prototype.Type = 0;
243
+
244
+ /**
245
+ * PublicKey Data.
246
+ * @member {Uint8Array} Data
247
+ * @memberof PublicKey
248
+ * @instance
249
+ */
250
+ PublicKey.prototype.Data = $util.newBuffer([]);
251
+
252
+ /**
253
+ * Encodes the specified PublicKey message. Does not implicitly {@link PublicKey.verify|verify} messages.
254
+ * @function encode
255
+ * @memberof PublicKey
256
+ * @static
257
+ * @param {IPublicKey} m PublicKey message or plain object to encode
258
+ * @param {$protobuf.Writer} [w] Writer to encode to
259
+ * @returns {$protobuf.Writer} Writer
260
+ */
261
+ PublicKey.encode = function encode(m, w) {
262
+ if (!w)
263
+ w = $Writer.create();
264
+ if (m.Type != null && Object.hasOwnProperty.call(m, "Type"))
265
+ w.uint32(8).int32(m.Type);
266
+ if (m.Data != null && Object.hasOwnProperty.call(m, "Data"))
267
+ w.uint32(18).bytes(m.Data);
268
+ return w;
269
+ };
270
+
271
+ /**
272
+ * Decodes a PublicKey message from the specified reader or buffer.
273
+ * @function decode
274
+ * @memberof PublicKey
275
+ * @static
276
+ * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
277
+ * @param {number} [l] Message length if known beforehand
278
+ * @returns {PublicKey} PublicKey
279
+ * @throws {Error} If the payload is not a reader or valid buffer
280
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
281
+ */
282
+ PublicKey.decode = function decode(r, l) {
283
+ if (!(r instanceof $Reader))
284
+ r = $Reader.create(r);
285
+ var c = l === undefined ? r.len : r.pos + l, m = new $root.PublicKey();
286
+ while (r.pos < c) {
287
+ var t = r.uint32();
288
+ switch (t >>> 3) {
289
+ case 1:
290
+ m.Type = r.int32();
291
+ break;
292
+ case 2:
293
+ m.Data = r.bytes();
294
+ break;
295
+ default:
296
+ r.skipType(t & 7);
297
+ break;
298
+ }
299
+ }
300
+ return m;
301
+ };
302
+
303
+ /**
304
+ * Creates a PublicKey message from a plain object. Also converts values to their respective internal types.
305
+ * @function fromObject
306
+ * @memberof PublicKey
307
+ * @static
308
+ * @param {Object.<string,*>} d Plain object
309
+ * @returns {PublicKey} PublicKey
310
+ */
311
+ PublicKey.fromObject = function fromObject(d) {
312
+ if (d instanceof $root.PublicKey)
313
+ return d;
314
+ var m = new $root.PublicKey();
315
+ switch (d.Type) {
316
+ case "RSA":
317
+ case 0:
318
+ m.Type = 0;
319
+ break;
320
+ case "Ed25519":
321
+ case 1:
322
+ m.Type = 1;
323
+ break;
324
+ case "Secp256k1":
325
+ case 2:
326
+ m.Type = 2;
327
+ break;
328
+ case "ECDSA":
329
+ case 3:
330
+ m.Type = 3;
331
+ break;
332
+ }
333
+ if (d.Data != null) {
334
+ if (typeof d.Data === "string")
335
+ $util.base64.decode(d.Data, m.Data = $util.newBuffer($util.base64.length(d.Data)), 0);
336
+ else if (d.Data.length)
337
+ m.Data = d.Data;
338
+ }
339
+ return m;
340
+ };
341
+
342
+ /**
343
+ * Creates a plain object from a PublicKey message. Also converts values to other types if specified.
344
+ * @function toObject
345
+ * @memberof PublicKey
346
+ * @static
347
+ * @param {PublicKey} m PublicKey
348
+ * @param {$protobuf.IConversionOptions} [o] Conversion options
349
+ * @returns {Object.<string,*>} Plain object
350
+ */
351
+ PublicKey.toObject = function toObject(m, o) {
352
+ if (!o)
353
+ o = {};
354
+ var d = {};
355
+ if (o.defaults) {
356
+ d.Type = o.enums === String ? "RSA" : 0;
357
+ if (o.bytes === String)
358
+ d.Data = "";
359
+ else {
360
+ d.Data = [];
361
+ if (o.bytes !== Array)
362
+ d.Data = $util.newBuffer(d.Data);
363
+ }
364
+ }
365
+ if (m.Type != null && m.hasOwnProperty("Type")) {
366
+ d.Type = o.enums === String ? $root.KeyType[m.Type] : m.Type;
367
+ }
368
+ if (m.Data != null && m.hasOwnProperty("Data")) {
369
+ d.Data = o.bytes === String ? $util.base64.encode(m.Data, 0, m.Data.length) : o.bytes === Array ? Array.prototype.slice.call(m.Data) : m.Data;
370
+ }
371
+ return d;
372
+ };
373
+
374
+ /**
375
+ * Converts this PublicKey to JSON.
376
+ * @function toJSON
377
+ * @memberof PublicKey
378
+ * @instance
379
+ * @returns {Object.<string,*>} JSON object
380
+ */
381
+ PublicKey.prototype.toJSON = function toJSON() {
382
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
383
+ };
384
+
385
+ return PublicKey;
386
+ })();
387
+
388
+ export { $root as default };
File without changes
@@ -1,18 +1,18 @@
1
- 'use strict'
2
-
3
- // @ts-ignore node-forge types not exported
4
- require('node-forge/lib/pkcs7')
5
- // @ts-ignore node-forge types not exported
6
- require('node-forge/lib/pbe')
7
- // @ts-ignore node-forge types not exported
8
- const forge = require('node-forge/lib/forge')
9
- const { certificateForKey, findAsync } = require('./util')
10
- const errcode = require('err-code')
11
- const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
12
- const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
13
- const { codes } = require('../errors')
14
-
15
- const privates = new WeakMap()
1
+ import 'node-forge/lib/pkcs7.js'
2
+ import 'node-forge/lib/pbe.js'
3
+ // @ts-expect-error types are missing
4
+ import forge from 'node-forge/lib/forge.js'
5
+ import { certificateForKey, findAsync } from './util.js'
6
+ import errCode from 'err-code'
7
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
8
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
9
+ import { codes } from '../errors.js'
10
+ import { logger } from '@libp2p/logger'
11
+ import type { KeyChain } from './index.js'
12
+
13
+ const log = logger('libp2p:keychain:cms')
14
+
15
+ const privates = new WeakMap<object, { dek: string }>()
16
16
 
17
17
  /**
18
18
  * Cryptographic Message Syntax (aka PKCS #7)
@@ -23,16 +23,15 @@ const privates = new WeakMap()
23
23
  *
24
24
  * See RFC 5652 for all the details.
25
25
  */
26
- class CMS {
26
+ export class CMS {
27
+ private readonly keychain: KeyChain
28
+
27
29
  /**
28
30
  * Creates a new instance with a keychain
29
- *
30
- * @param {import('./index')} keychain - the available keys
31
- * @param {string} dek
32
31
  */
33
- constructor (keychain, dek) {
34
- if (!keychain) {
35
- throw errcode(new Error('keychain is required'), codes.ERR_KEYCHAIN_REQUIRED)
32
+ constructor (keychain: KeyChain, dek: string) {
33
+ if (keychain == null) {
34
+ throw errCode(new Error('keychain is required'), codes.ERR_KEYCHAIN_REQUIRED)
36
35
  }
37
36
 
38
37
  this.keychain = keychain
@@ -43,20 +42,21 @@ class CMS {
43
42
  * Creates some protected data.
44
43
  *
45
44
  * The output Uint8Array contains the PKCS #7 message in DER.
46
- *
47
- * @param {string} name - The local key name.
48
- * @param {Uint8Array} plain - The data to encrypt.
49
- * @returns {Promise<Uint8Array>}
50
45
  */
51
- async encrypt (name, plain) {
46
+ async encrypt (name: string, plain: Uint8Array): Promise<Uint8Array> {
52
47
  if (!(plain instanceof Uint8Array)) {
53
- throw errcode(new Error('Plain data must be a Uint8Array'), codes.ERR_INVALID_PARAMETERS)
48
+ throw errCode(new Error('Plain data must be a Uint8Array'), codes.ERR_INVALID_PARAMETERS)
54
49
  }
55
50
 
56
51
  const key = await this.keychain.findKeyByName(name)
57
- const pem = await this.keychain._getPrivateKey(name)
58
- /** @type {string} */
59
- const dek = privates.get(this).dek
52
+ const pem = await this.keychain.getPrivateKey(name)
53
+ const cached = privates.get(this)
54
+
55
+ if (cached == null) {
56
+ throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
57
+ }
58
+
59
+ const dek = cached.dek
60
60
  const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
61
61
  const certificate = await certificateForKey(key, privateKey)
62
62
 
@@ -76,71 +76,75 @@ class CMS {
76
76
  *
77
77
  * The keychain must contain one of the keys used to encrypt the data. If none of the keys
78
78
  * exists, an Error is returned with the property 'missingKeys'. It is array of key ids.
79
- *
80
- * @param {Uint8Array} cmsData - The CMS encrypted data to decrypt.
81
- * @returns {Promise<Uint8Array>}
82
79
  */
83
- async decrypt (cmsData) {
80
+ async decrypt (cmsData: Uint8Array): Promise<Uint8Array> {
84
81
  if (!(cmsData instanceof Uint8Array)) {
85
- throw errcode(new Error('CMS data is required'), codes.ERR_INVALID_PARAMETERS)
82
+ throw errCode(new Error('CMS data is required'), codes.ERR_INVALID_PARAMETERS)
86
83
  }
87
84
 
88
- let cms
85
+ let cms: any
89
86
  try {
90
87
  const buf = forge.util.createBuffer(uint8ArrayToString(cmsData, 'ascii'))
91
88
  const obj = forge.asn1.fromDer(buf)
92
- // @ts-ignore not defined
89
+
93
90
  cms = forge.pkcs7.messageFromAsn1(obj)
94
- } catch (/** @type {any} */ err) {
95
- throw errcode(new Error('Invalid CMS: ' + err.message), codes.ERR_INVALID_CMS)
91
+ } catch (err: any) {
92
+ log.error(err)
93
+ throw errCode(new Error('Invalid CMS'), codes.ERR_INVALID_CMS)
96
94
  }
97
95
 
98
96
  // Find a recipient whose key we hold. We only deal with recipient certs
99
97
  // issued by ipfs (O=ipfs).
100
- const recipients = cms.recipients
101
- // @ts-ignore cms types not defined
98
+ const recipients: any = cms.recipients
99
+ // @ts-expect-error cms types not defined
102
100
  .filter(r => r.issuer.find(a => a.shortName === 'O' && a.value === 'ipfs'))
103
- // @ts-ignore cms types not defined
101
+ // @ts-expect-error cms types not defined
104
102
  .filter(r => r.issuer.find(a => a.shortName === 'CN'))
105
- // @ts-ignore cms types not defined
103
+ // @ts-expect-error cms types not defined
106
104
  .map(r => {
107
105
  return {
108
106
  recipient: r,
109
- // @ts-ignore cms types not defined
107
+ // @ts-expect-error cms types not defined
110
108
  keyId: r.issuer.find(a => a.shortName === 'CN').value
111
109
  }
112
110
  })
113
111
 
114
- const r = await findAsync(recipients, async (recipient) => {
112
+ const r = await findAsync(recipients, async (recipient: any) => {
115
113
  try {
116
114
  const key = await this.keychain.findKeyById(recipient.keyId)
117
- if (key) return true
118
- } catch (/** @type {any} */ err) {
115
+ if (key != null) {
116
+ return true
117
+ }
118
+ } catch (err: any) {
119
119
  return false
120
120
  }
121
121
  return false
122
122
  })
123
123
 
124
- if (!r) {
125
- // @ts-ignore cms types not defined
126
- const missingKeys = recipients.map(r => r.keyId)
127
- throw errcode(new Error('Decryption needs one of the key(s): ' + missingKeys.join(', ')), codes.ERR_MISSING_KEYS, {
124
+ if (r == null) {
125
+ // @ts-expect-error cms types not defined
126
+ const missingKeys: string[] = recipients.map(r => r.keyId)
127
+ throw errCode(new Error(`Decryption needs one of the key(s): ${missingKeys.join(', ')}`), codes.ERR_MISSING_KEYS, {
128
128
  missingKeys
129
129
  })
130
130
  }
131
131
 
132
132
  const key = await this.keychain.findKeyById(r.keyId)
133
133
 
134
- if (!key) {
135
- throw errcode(new Error('No key available to decrypto'), codes.ERR_NO_KEY)
134
+ if (key == null) {
135
+ throw errCode(new Error('No key available to decrypto'), codes.ERR_NO_KEY)
136
+ }
137
+
138
+ const pem = await this.keychain.getPrivateKey(key.name)
139
+ const cached = privates.get(this)
140
+
141
+ if (cached == null) {
142
+ throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
136
143
  }
137
144
 
138
- const pem = await this.keychain._getPrivateKey(key.name)
139
- const dek = privates.get(this).dek
145
+ const dek = cached.dek
140
146
  const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
141
147
  cms.decrypt(r.recipient, privateKey)
142
148
  return uint8ArrayFromString(cms.content.getBytes(), 'ascii')
143
149
  }
144
150
  }
145
-
146
- module.exports = CMS