libp2p 0.36.2 → 0.37.0-b09eb8f

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 (431) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +216 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +62 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +192 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +91 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +107 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +266 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +339 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +71 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +76 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +45 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +117 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +107 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +404 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +143 -203
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/connection-manager/dialer/dial-request.ts +137 -0
  259. package/src/connection-manager/dialer/index.ts +381 -0
  260. package/src/connection-manager/index.ts +513 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +74 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +198 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +185 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +501 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/dial-request.js +0 -103
  376. package/src/dialer/index.js +0 -376
  377. package/src/errors.js +0 -66
  378. package/src/fetch/constants.js +0 -6
  379. package/src/fetch/index.js +0 -159
  380. package/src/fetch/proto.d.ts +0 -134
  381. package/src/fetch/proto.js +0 -333
  382. package/src/get-peer.js +0 -49
  383. package/src/identify/consts.js +0 -15
  384. package/src/identify/index.js +0 -384
  385. package/src/identify/message.d.ts +0 -95
  386. package/src/identify/message.js +0 -328
  387. package/src/index.js +0 -813
  388. package/src/insecure/plaintext.js +0 -95
  389. package/src/insecure/proto.d.ts +0 -128
  390. package/src/insecure/proto.js +0 -371
  391. package/src/keychain/index.js +0 -561
  392. package/src/metrics/index.js +0 -290
  393. package/src/metrics/old-peers.js +0 -16
  394. package/src/metrics/stats.js +0 -270
  395. package/src/metrics/tracked-map.js +0 -94
  396. package/src/nat-manager.js +0 -197
  397. package/src/peer-routing.js +0 -176
  398. package/src/peer-store/README.md +0 -145
  399. package/src/peer-store/address-book.js +0 -382
  400. package/src/peer-store/index.js +0 -121
  401. package/src/peer-store/key-book.js +0 -141
  402. package/src/peer-store/metadata-book.js +0 -250
  403. package/src/peer-store/pb/peer.d.ts +0 -222
  404. package/src/peer-store/pb/peer.js +0 -643
  405. package/src/peer-store/pb/peer.proto +0 -31
  406. package/src/peer-store/proto-book.js +0 -237
  407. package/src/peer-store/store.js +0 -263
  408. package/src/peer-store/types.ts +0 -245
  409. package/src/ping/constants.js +0 -8
  410. package/src/ping/index.js +0 -84
  411. package/src/ping/util.js +0 -18
  412. package/src/pnet/crypto.js +0 -84
  413. package/src/pnet/errors.js +0 -7
  414. package/src/pnet/index.js +0 -86
  415. package/src/pnet/key-generator.js +0 -33
  416. package/src/pubsub-adapter.js +0 -61
  417. package/src/record/README.md +0 -130
  418. package/src/record/envelope/envelope.d.ts +0 -77
  419. package/src/record/envelope/envelope.js +0 -243
  420. package/src/record/envelope/envelope.proto +0 -19
  421. package/src/record/envelope/index.js +0 -183
  422. package/src/record/peer-record/consts.js +0 -14
  423. package/src/record/peer-record/index.js +0 -113
  424. package/src/record/peer-record/peer-record.d.ts +0 -133
  425. package/src/record/peer-record/peer-record.js +0 -367
  426. package/src/record/peer-record/peer-record.proto +0 -18
  427. package/src/record/utils.js +0 -25
  428. package/src/registrar.js +0 -127
  429. package/src/transport-manager.js +0 -269
  430. package/src/types.ts +0 -98
  431. package/src/upgrader.js +0 -492
@@ -0,0 +1,101 @@
1
+ import { logger } from '@libp2p/logger'
2
+ import { handshake } from 'it-handshake'
3
+ import * as lp from 'it-length-prefixed'
4
+ import { UnexpectedPeerError, InvalidCryptoExchangeError } from '@libp2p/interfaces/connection-encrypter/errors'
5
+ import { Exchange, KeyType } from './pb/proto.js'
6
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
7
+ import { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id'
8
+ import type { ConnectionEncrypter, SecuredConnection } from '@libp2p/interfaces/connection-encrypter'
9
+ import type { Duplex } from 'it-stream-types'
10
+
11
+ const log = logger('libp2p:plaintext')
12
+ const PROTOCOL = '/plaintext/2.0.0'
13
+
14
+ function lpEncodeExchange (exchange: Exchange) {
15
+ const pb = Exchange.encode(exchange)
16
+
17
+ return lp.encode.single(pb)
18
+ }
19
+
20
+ /**
21
+ * Encrypt connection
22
+ */
23
+ async function encrypt (localId: PeerId, conn: Duplex<Uint8Array>, remoteId?: PeerId): Promise<SecuredConnection> {
24
+ const shake = handshake(conn)
25
+
26
+ let type = KeyType.RSA
27
+
28
+ if (localId.type === 'Ed25519') {
29
+ type = KeyType.Ed25519
30
+ } else if (localId.type === 'secp256k1') {
31
+ type = KeyType.Secp256k1
32
+ }
33
+
34
+ // Encode the public key and write it to the remote peer
35
+ shake.write(
36
+ lpEncodeExchange({
37
+ id: localId.toBytes(),
38
+ pubkey: {
39
+ Type: type,
40
+ Data: localId.publicKey ?? new Uint8Array(0)
41
+ }
42
+ }).slice()
43
+ )
44
+
45
+ log('write pubkey exchange to peer %p', remoteId)
46
+
47
+ // Get the Exchange message
48
+ // @ts-expect-error needs to be generator
49
+ const response = (await lp.decode.fromReader(shake.reader).next()).value
50
+ const id = Exchange.decode(response.slice())
51
+ log('read pubkey exchange from peer %p', remoteId)
52
+
53
+ let peerId
54
+ try {
55
+ if (id.pubkey == null) {
56
+ throw new Error('Public key missing')
57
+ }
58
+
59
+ if (id.pubkey.Data.length === 0) {
60
+ throw new Error('Public key data too short')
61
+ }
62
+
63
+ if (id.id == null) {
64
+ throw new Error('Remote id missing')
65
+ }
66
+
67
+ peerId = await peerIdFromKeys(id.pubkey.Data)
68
+
69
+ if (!peerId.equals(peerIdFromBytes(id.id))) {
70
+ throw new Error('Public key did not match id')
71
+ }
72
+ } catch (err: any) {
73
+ log.error(err)
74
+ throw new InvalidCryptoExchangeError('Remote did not provide its public key')
75
+ }
76
+
77
+ if (remoteId != null && !peerId.equals(remoteId)) {
78
+ throw new UnexpectedPeerError()
79
+ }
80
+
81
+ log('plaintext key exchange completed successfully with peer %p', peerId)
82
+
83
+ shake.rest()
84
+ return {
85
+ conn: shake.stream,
86
+ remotePeer: peerId,
87
+ remoteEarlyData: new Uint8Array()
88
+ }
89
+ }
90
+
91
+ export class Plaintext implements ConnectionEncrypter {
92
+ public protocol: string = PROTOCOL
93
+
94
+ async secureInbound (localId: PeerId, conn: Duplex<Uint8Array>, remoteId?: PeerId): Promise<SecuredConnection> {
95
+ return await encrypt(localId, conn, remoteId)
96
+ }
97
+
98
+ async secureOutbound (localId: PeerId, conn: Duplex<Uint8Array>, remoteId: PeerId): Promise<SecuredConnection> {
99
+ return await encrypt(localId, conn, remoteId)
100
+ }
101
+ }
File without changes
@@ -0,0 +1,68 @@
1
+ /* eslint-disable import/export */
2
+ /* eslint-disable @typescript-eslint/no-namespace */
3
+
4
+ import { encodeMessage, decodeMessage, message, bytes, enumeration } from 'protons-runtime'
5
+ import type { Codec } from 'protons-runtime'
6
+
7
+ export interface Exchange {
8
+ id?: Uint8Array
9
+ pubkey?: PublicKey
10
+ }
11
+
12
+ export namespace Exchange {
13
+ export const codec = (): Codec<Exchange> => {
14
+ return message<Exchange>({
15
+ 1: { name: 'id', codec: bytes, optional: true },
16
+ 2: { name: 'pubkey', codec: PublicKey.codec(), optional: true }
17
+ })
18
+ }
19
+
20
+ export const encode = (obj: Exchange): Uint8Array => {
21
+ return encodeMessage(obj, Exchange.codec())
22
+ }
23
+
24
+ export const decode = (buf: Uint8Array): Exchange => {
25
+ return decodeMessage(buf, Exchange.codec())
26
+ }
27
+ }
28
+
29
+ export enum KeyType {
30
+ RSA = 'RSA',
31
+ Ed25519 = 'Ed25519',
32
+ Secp256k1 = 'Secp256k1',
33
+ ECDSA = 'ECDSA'
34
+ }
35
+
36
+ enum __KeyTypeValues {
37
+ RSA = 0,
38
+ Ed25519 = 1,
39
+ Secp256k1 = 2,
40
+ ECDSA = 3
41
+ }
42
+
43
+ export namespace KeyType {
44
+ export const codec = () => {
45
+ return enumeration<typeof KeyType>(__KeyTypeValues)
46
+ }
47
+ }
48
+ export interface PublicKey {
49
+ Type: KeyType
50
+ Data: Uint8Array
51
+ }
52
+
53
+ export namespace PublicKey {
54
+ export const codec = (): Codec<PublicKey> => {
55
+ return message<PublicKey>({
56
+ 1: { name: 'Type', codec: KeyType.codec() },
57
+ 2: { name: 'Data', codec: bytes }
58
+ })
59
+ }
60
+
61
+ export const encode = (obj: PublicKey): Uint8Array => {
62
+ return encodeMessage(obj, PublicKey.codec())
63
+ }
64
+
65
+ export const decode = (buf: Uint8Array): PublicKey => {
66
+ return decodeMessage(buf, PublicKey.codec())
67
+ }
68
+ }
@@ -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