libp2p 0.36.2 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +216 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +62 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +192 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +91 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +83 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +267 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +333 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +70 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +75 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +42 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +114 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +108 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +402 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +144 -201
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
  259. package/src/connection-manager/dialer/index.ts +382 -0
  260. package/src/connection-manager/index.ts +508 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +73 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +194 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +186 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +499 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/index.js +0 -376
  376. package/src/errors.js +0 -66
  377. package/src/fetch/constants.js +0 -6
  378. package/src/fetch/index.js +0 -159
  379. package/src/fetch/proto.d.ts +0 -134
  380. package/src/fetch/proto.js +0 -333
  381. package/src/get-peer.js +0 -49
  382. package/src/identify/consts.js +0 -15
  383. package/src/identify/index.js +0 -384
  384. package/src/identify/message.d.ts +0 -95
  385. package/src/identify/message.js +0 -328
  386. package/src/index.js +0 -813
  387. package/src/insecure/plaintext.js +0 -95
  388. package/src/insecure/proto.d.ts +0 -128
  389. package/src/insecure/proto.js +0 -371
  390. package/src/keychain/index.js +0 -561
  391. package/src/metrics/index.js +0 -290
  392. package/src/metrics/old-peers.js +0 -16
  393. package/src/metrics/stats.js +0 -270
  394. package/src/metrics/tracked-map.js +0 -94
  395. package/src/nat-manager.js +0 -197
  396. package/src/peer-routing.js +0 -176
  397. package/src/peer-store/README.md +0 -145
  398. package/src/peer-store/address-book.js +0 -382
  399. package/src/peer-store/index.js +0 -121
  400. package/src/peer-store/key-book.js +0 -141
  401. package/src/peer-store/metadata-book.js +0 -250
  402. package/src/peer-store/pb/peer.d.ts +0 -222
  403. package/src/peer-store/pb/peer.js +0 -643
  404. package/src/peer-store/pb/peer.proto +0 -31
  405. package/src/peer-store/proto-book.js +0 -237
  406. package/src/peer-store/store.js +0 -263
  407. package/src/peer-store/types.ts +0 -245
  408. package/src/ping/constants.js +0 -8
  409. package/src/ping/index.js +0 -84
  410. package/src/ping/util.js +0 -18
  411. package/src/pnet/crypto.js +0 -84
  412. package/src/pnet/errors.js +0 -7
  413. package/src/pnet/index.js +0 -86
  414. package/src/pnet/key-generator.js +0 -33
  415. package/src/pubsub-adapter.js +0 -61
  416. package/src/record/README.md +0 -130
  417. package/src/record/envelope/envelope.d.ts +0 -77
  418. package/src/record/envelope/envelope.js +0 -243
  419. package/src/record/envelope/envelope.proto +0 -19
  420. package/src/record/envelope/index.js +0 -183
  421. package/src/record/peer-record/consts.js +0 -14
  422. package/src/record/peer-record/index.js +0 -113
  423. package/src/record/peer-record/peer-record.d.ts +0 -133
  424. package/src/record/peer-record/peer-record.js +0 -367
  425. package/src/record/peer-record/peer-record.proto +0 -18
  426. package/src/record/utils.js +0 -25
  427. package/src/registrar.js +0 -127
  428. package/src/transport-manager.js +0 -269
  429. package/src/types.ts +0 -98
  430. package/src/upgrader.js +0 -492
@@ -1,67 +1,40 @@
1
- export type ICircuitRelay = import('../protocol').ICircuitRelay;
2
- export type Connection = import("libp2p-interfaces/src/connection/connection");
3
- export type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
4
- export type Transport = import('../transport');
5
- export type HopRequest = {
1
+ import { StreamHandler } from './stream-handler.js';
2
+ import { CircuitRelay as CircuitPB } from '../pb/index.js';
3
+ import type { Connection } from '@libp2p/interfaces/connection';
4
+ import type { Duplex } from 'it-stream-types';
5
+ import type { Circuit } from '../transport.js';
6
+ import type { ConnectionManager } from '@libp2p/interfaces/connection-manager';
7
+ export interface HopRequest {
6
8
  connection: Connection;
7
- request: ICircuitRelay;
9
+ request: CircuitPB;
8
10
  streamHandler: StreamHandler;
9
- circuit: Transport;
10
- };
11
- /**
12
- * @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
13
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
14
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
15
- * @typedef {import('../transport')} Transport
16
- */
17
- /**
18
- * @typedef {Object} HopRequest
19
- * @property {Connection} connection
20
- * @property {ICircuitRelay} request
21
- * @property {StreamHandler} streamHandler
22
- * @property {Transport} circuit
23
- */
24
- /**
25
- * @param {HopRequest} options
26
- * @returns {Promise<void>}
27
- */
28
- export function handleHop({ connection, request, streamHandler, circuit }: HopRequest): Promise<void>;
11
+ circuit: Circuit;
12
+ connectionManager: ConnectionManager;
13
+ }
14
+ export declare function handleHop(hopRequest: HopRequest): Promise<void>;
15
+ export interface HopConfig {
16
+ connection: Connection;
17
+ request: CircuitPB;
18
+ }
29
19
  /**
30
20
  * Performs a HOP request to a relay peer, to request a connection to another
31
21
  * peer. A new, virtual, connection will be created between the two via the relay.
32
- *
33
- * @param {object} options
34
- * @param {Connection} options.connection - Connection to the relay
35
- * @param {ICircuitRelay} options.request
36
- * @returns {Promise<MuxedStream>}
37
22
  */
38
- export function hop({ connection, request }: {
23
+ export declare function hop(options: HopConfig): Promise<Duplex<Uint8Array>>;
24
+ export interface CanHopOptions {
39
25
  connection: Connection;
40
- request: ICircuitRelay;
41
- }): Promise<MuxedStream>;
26
+ }
42
27
  /**
43
- * Performs a CAN_HOP request to a relay peer, in order to understand its capabilities.
44
- *
45
- * @param {object} options
46
- * @param {Connection} options.connection - Connection to the relay
47
- * @returns {Promise<boolean>}
28
+ * Performs a CAN_HOP request to a relay peer, in order to understand its capabilities
48
29
  */
49
- export function canHop({ connection }: {
30
+ export declare function canHop(options: CanHopOptions): Promise<boolean>;
31
+ export interface HandleCanHopOptions {
50
32
  connection: Connection;
51
- }): Promise<boolean>;
33
+ streamHandler: StreamHandler;
34
+ circuit: Circuit;
35
+ }
52
36
  /**
53
37
  * Creates an unencoded CAN_HOP response based on the Circuits configuration
54
- *
55
- * @param {Object} options
56
- * @param {Connection} options.connection
57
- * @param {StreamHandler} options.streamHandler
58
- * @param {Transport} options.circuit
59
- * @private
60
38
  */
61
- export function handleCanHop({ connection, streamHandler, circuit }: {
62
- connection: Connection;
63
- streamHandler: StreamHandler;
64
- circuit: Transport;
65
- }): void;
66
- import StreamHandler = require("./stream-handler");
39
+ export declare function handleCanHop(options: HandleCanHopOptions): void;
67
40
  //# sourceMappingURL=hop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.js"],"names":[],"mappings":"4BAoBa,OAAO,aAAa,EAAE,aAAa;;0BAEnC,OAAO,0CAA0C,EAAE,WAAW;wBAC9D,OAAO,cAAc,CAAC;;gBAKrB,UAAU;aACV,aAAa;mBACb,aAAa;aACb,SAAS;;AAZvB;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,2EAHW,UAAU,GACR,QAAQ,IAAI,CAAC,CA4EzB;AAED;;;;;;;;GAQG;AACH;IAJ+B,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACX,QAAQ,WAAW,CAAC,CA0BhC;AAED;;;;;;GAMG;AACH;IAH+B,UAAU,EAA9B,UAAU;IACR,QAAQ,OAAO,CAAC,CAqB5B;AAED;;;;;;;;GAQG;AACH;IAL+B,UAAU,EAA9B,UAAU;IACa,aAAa,EAApC,aAAa;IACM,OAAO,EAA1B,SAAS;SAcnB"}
1
+ {"version":3,"file":"hop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAI9E,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,wBAAsB,SAAS,CAAE,UAAU,EAAE,UAAU,iBA6FtD;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAsB,GAAG,CAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CA2B1E;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAE,OAAO,EAAE,aAAa,oBAsBnD;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,QAYzD"}
@@ -0,0 +1,138 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import errCode from 'err-code';
3
+ import { validateAddrs } from './utils.js';
4
+ import { StreamHandler } from './stream-handler.js';
5
+ import { CircuitRelay as CircuitPB } from '../pb/index.js';
6
+ import { pipe } from 'it-pipe';
7
+ import { codes as Errors } from '../../errors.js';
8
+ import { stop } from './stop.js';
9
+ import { RELAY_CODEC } from '../multicodec.js';
10
+ import { peerIdFromBytes } from '@libp2p/peer-id';
11
+ const log = logger('libp2p:circuit:hop');
12
+ export async function handleHop(hopRequest) {
13
+ const { connection, request, streamHandler, circuit, connectionManager } = hopRequest;
14
+ // Ensure hop is enabled
15
+ if (!circuit.hopEnabled()) {
16
+ log('HOP request received but we are not acting as a relay');
17
+ return streamHandler.end({
18
+ type: CircuitPB.Type.STATUS,
19
+ code: CircuitPB.Status.HOP_CANT_SPEAK_RELAY
20
+ });
21
+ }
22
+ // Validate the HOP request has the required input
23
+ try {
24
+ validateAddrs(request, streamHandler);
25
+ }
26
+ catch (err) {
27
+ log.error('invalid hop request via peer %p %o', connection.remotePeer, err);
28
+ return;
29
+ }
30
+ if (request.dstPeer == null) {
31
+ log('HOP request received but we do not receive a dstPeer');
32
+ return;
33
+ }
34
+ // Get the connection to the destination (stop) peer
35
+ const destinationPeer = peerIdFromBytes(request.dstPeer.id);
36
+ const destinationConnections = connectionManager.getConnections(destinationPeer);
37
+ if (destinationConnections.length === 0 && !circuit.hopActive()) {
38
+ log('HOP request received but we are not connected to the destination peer');
39
+ return streamHandler.end({
40
+ type: CircuitPB.Type.STATUS,
41
+ code: CircuitPB.Status.HOP_NO_CONN_TO_DST
42
+ });
43
+ }
44
+ // TODO: Handle being an active relay
45
+ if (destinationConnections.length === 0) {
46
+ log('did not have connection to remote peer');
47
+ return streamHandler.end({
48
+ type: CircuitPB.Type.STATUS,
49
+ code: CircuitPB.Status.HOP_NO_CONN_TO_DST
50
+ });
51
+ }
52
+ // Handle the incoming HOP request by performing a STOP request
53
+ const stopRequest = {
54
+ type: CircuitPB.Type.STOP,
55
+ dstPeer: request.dstPeer,
56
+ srcPeer: request.srcPeer
57
+ };
58
+ let destinationStream;
59
+ try {
60
+ log('performing STOP request');
61
+ const result = await stop({
62
+ connection: destinationConnections[0],
63
+ request: stopRequest
64
+ });
65
+ if (result == null) {
66
+ throw new Error('Could not stop');
67
+ }
68
+ destinationStream = result;
69
+ }
70
+ catch (err) {
71
+ log.error(err);
72
+ return;
73
+ }
74
+ log('hop request from %p is valid', connection.remotePeer);
75
+ streamHandler.write({
76
+ type: CircuitPB.Type.STATUS,
77
+ code: CircuitPB.Status.SUCCESS
78
+ });
79
+ const sourceStream = streamHandler.rest();
80
+ log('creating related connections');
81
+ // Short circuit the two streams to create the relayed connection
82
+ return await pipe(sourceStream, destinationStream, sourceStream);
83
+ }
84
+ /**
85
+ * Performs a HOP request to a relay peer, to request a connection to another
86
+ * peer. A new, virtual, connection will be created between the two via the relay.
87
+ */
88
+ export async function hop(options) {
89
+ const { connection, request } = options;
90
+ // Create a new stream to the relay
91
+ const { stream } = await connection.newStream(RELAY_CODEC);
92
+ // Send the HOP request
93
+ const streamHandler = new StreamHandler({ stream });
94
+ streamHandler.write(request);
95
+ const response = await streamHandler.read();
96
+ if (response == null) {
97
+ throw errCode(new Error('HOP request had no response'), Errors.ERR_HOP_REQUEST_FAILED);
98
+ }
99
+ if (response.code === CircuitPB.Status.SUCCESS) {
100
+ log('hop request was successful');
101
+ return streamHandler.rest();
102
+ }
103
+ log('hop request failed with code %d, closing stream', response.code);
104
+ streamHandler.close();
105
+ throw errCode(new Error(`HOP request failed with code "${response.code ?? 'unknown'}"`), Errors.ERR_HOP_REQUEST_FAILED);
106
+ }
107
+ /**
108
+ * Performs a CAN_HOP request to a relay peer, in order to understand its capabilities
109
+ */
110
+ export async function canHop(options) {
111
+ const { connection } = options;
112
+ // Create a new stream to the relay
113
+ const { stream } = await connection.newStream(RELAY_CODEC);
114
+ // Send the HOP request
115
+ const streamHandler = new StreamHandler({ stream });
116
+ streamHandler.write({
117
+ type: CircuitPB.Type.CAN_HOP
118
+ });
119
+ const response = await streamHandler.read();
120
+ await streamHandler.close();
121
+ if (response == null || response.code !== CircuitPB.Status.SUCCESS) {
122
+ return false;
123
+ }
124
+ return true;
125
+ }
126
+ /**
127
+ * Creates an unencoded CAN_HOP response based on the Circuits configuration
128
+ */
129
+ export function handleCanHop(options) {
130
+ const { connection, streamHandler, circuit } = options;
131
+ const canHop = circuit.hopEnabled();
132
+ log('can hop (%s) request from %p', canHop, connection.remotePeer);
133
+ streamHandler.end({
134
+ type: CircuitPB.Type.STATUS,
135
+ code: canHop ? CircuitPB.Status.SUCCESS : CircuitPB.Status.HOP_CANT_SPEAK_RELAY
136
+ });
137
+ }
138
+ //# sourceMappingURL=hop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hop.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,22 @@
1
- export function handleStop({ connection, request, streamHandler }: {
1
+ import { CircuitRelay as CircuitPB } from '../pb/index.js';
2
+ import { StreamHandler } from './stream-handler.js';
3
+ import type { Connection } from '@libp2p/interfaces/connection';
4
+ import type { Duplex } from 'it-stream-types';
5
+ export interface HandleStopOptions {
2
6
  connection: Connection;
3
- request: ICircuitRelay;
7
+ request: CircuitPB;
4
8
  streamHandler: StreamHandler;
5
- }): Promise<MuxedStream> | void;
6
- export function stop({ connection, request }: {
9
+ }
10
+ /**
11
+ * Handles incoming STOP requests
12
+ */
13
+ export declare function handleStop(options: HandleStopOptions): Duplex<Uint8Array> | undefined;
14
+ export interface StopOptions {
7
15
  connection: Connection;
8
- request: ICircuitRelay;
9
- }): Promise<MuxedStream | void>;
10
- export type Connection = import("libp2p-interfaces/src/connection/connection");
11
- export type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
12
- export type ICircuitRelay = import('../protocol').ICircuitRelay;
13
- import StreamHandler = require("./stream-handler");
16
+ request: CircuitPB;
17
+ }
18
+ /**
19
+ * Creates a STOP request
20
+ */
21
+ export declare function stop(options: StopOptions): Promise<Duplex<Uint8Array, Uint8Array, Promise<void>> | undefined>;
14
22
  //# sourceMappingURL=stop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.js"],"names":[],"mappings":"AA4B4B;IALG,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACU,aAAa,EAApC,aAAa;IACX,QAAQ,WAAW,CAAC,GAAC,IAAI,CAqBrC;AAWqB;IAJS,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACX,QAAQ,WAAW,GAAC,IAAI,CAAC,CAwBrC;;0BAlEY,OAAO,0CAA0C,EAAE,WAAW;4BAC9D,OAAO,aAAa,EAAE,aAAa"}
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAI7C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAuBtF;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;CACnB;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAE,OAAO,EAAE,WAAW,sEAyB/C"}
@@ -0,0 +1,49 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import { CircuitRelay as CircuitPB } from '../pb/index.js';
3
+ import { RELAY_CODEC } from '../multicodec.js';
4
+ import { StreamHandler } from './stream-handler.js';
5
+ import { validateAddrs } from './utils.js';
6
+ const log = logger('libp2p:circuit:stop');
7
+ /**
8
+ * Handles incoming STOP requests
9
+ */
10
+ export function handleStop(options) {
11
+ const { connection, request, streamHandler } = options;
12
+ // Validate the STOP request has the required input
13
+ try {
14
+ validateAddrs(request, streamHandler);
15
+ }
16
+ catch (err) {
17
+ log.error('invalid stop request via peer %p %o', connection.remotePeer, err);
18
+ return;
19
+ }
20
+ // The request is valid
21
+ log('stop request is valid');
22
+ streamHandler.write({
23
+ type: CircuitPB.Type.STATUS,
24
+ code: CircuitPB.Status.SUCCESS
25
+ });
26
+ return streamHandler.rest();
27
+ }
28
+ /**
29
+ * Creates a STOP request
30
+ */
31
+ export async function stop(options) {
32
+ const { connection, request } = options;
33
+ const { stream } = await connection.newStream([RELAY_CODEC]);
34
+ log('starting stop request to %p', connection.remotePeer);
35
+ const streamHandler = new StreamHandler({ stream });
36
+ streamHandler.write(request);
37
+ const response = await streamHandler.read();
38
+ if (response == null) {
39
+ streamHandler.close();
40
+ return;
41
+ }
42
+ if (response.code === CircuitPB.Status.SUCCESS) {
43
+ log('stop request to %p was successful', connection.remotePeer);
44
+ return streamHandler.rest();
45
+ }
46
+ log('stop request failed with code %d', response.code);
47
+ streamHandler.close();
48
+ }
49
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI1C,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAQzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAE,OAA0B;IACpD,MAAM,EACJ,UAAU,EACV,OAAO,EACP,aAAa,EACd,GAAG,OAAO,CAAA;IAEX,mDAAmD;IACnD,IAAI;QACF,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;KACtC;IAAC,OAAO,GAAQ,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAC5E,OAAM;KACP;IAED,uBAAuB;IACvB,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAC5B,aAAa,CAAC,KAAK,CAAC;QAClB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;QAC3B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAA;IAEF,OAAO,aAAa,CAAC,IAAI,EAAE,CAAA;AAC7B,CAAC;AAOD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAE,OAAoB;IAC9C,MAAM,EACJ,UAAU,EACV,OAAO,EACR,GAAG,OAAO,CAAA;IAEX,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IAC5D,GAAG,CAAC,6BAA6B,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAEnD,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE3C,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,aAAa,CAAC,KAAK,EAAE,CAAA;QACrB,OAAM;KACP;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;QAC9C,GAAG,CAAC,mCAAmC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QAC/D,OAAO,aAAa,CAAC,IAAI,EAAE,CAAA;KAC5B;IAED,GAAG,CAAC,kCAAkC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtD,aAAa,CAAC,KAAK,EAAE,CAAA;AACvB,CAAC"}
@@ -1,58 +1,39 @@
1
- export = StreamHandler;
2
- /**
3
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
4
- * @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
5
- */
6
- declare class StreamHandler {
1
+ import { CircuitRelay } from '../pb/index.js';
2
+ import type { Stream } from '@libp2p/interfaces/connection';
3
+ export interface StreamHandlerOptions {
7
4
  /**
8
- * Create a stream handler for connection
9
- *
10
- * @class
11
- * @param {object} options
12
- * @param {MuxedStream} options.stream - A duplex iterable
13
- * @param {number} [options.maxLength = 4096] - max bytes length of message
5
+ * A duplex iterable
14
6
  */
15
- constructor({ stream, maxLength }: {
16
- stream: MuxedStream;
17
- maxLength?: number | undefined;
18
- });
19
- stream: import("libp2p-interfaces/src/stream-muxer/types").MuxedStream;
20
- shake: any;
21
- decoder: AsyncGenerator<any, void, unknown>;
7
+ stream: Stream;
8
+ /**
9
+ * max bytes length of message
10
+ */
11
+ maxLength?: number;
12
+ }
13
+ export declare class StreamHandler {
14
+ private readonly stream;
15
+ private readonly shake;
16
+ private readonly decoder;
17
+ constructor(options: StreamHandlerOptions);
22
18
  /**
23
19
  * Read and decode message
24
- *
25
- * @async
26
20
  */
27
21
  read(): Promise<CircuitRelay | undefined>;
28
22
  /**
29
23
  * Encode and write array of buffers
30
- *
31
- * @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
32
- * @returns {void}
33
24
  */
34
- write(msg: ICircuitRelay): void;
25
+ write(msg: CircuitRelay): void;
35
26
  /**
36
27
  * Return the handshake rest stream and invalidate handler
37
- *
38
- * @returns {*} A duplex iterable
39
28
  */
40
- rest(): any;
29
+ rest(): import("it-stream-types").Duplex<Uint8Array, Uint8Array, Promise<void>>;
41
30
  /**
42
- * @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
31
+ * @param {CircuitRelay} msg - An unencoded CircuitRelay protobuf message
43
32
  */
44
- end(msg: ICircuitRelay): void;
33
+ end(msg: CircuitRelay): void;
45
34
  /**
46
35
  * Close the stream
47
- *
48
- * @returns {void}
49
36
  */
50
37
  close(): void;
51
38
  }
52
- declare namespace StreamHandler {
53
- export { MuxedStream, ICircuitRelay };
54
- }
55
- import { CircuitRelay } from "../protocol";
56
- type ICircuitRelay = import('../protocol').ICircuitRelay;
57
- type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
58
39
  //# sourceMappingURL=stream-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;IACE;;;;;;;OAOG;IACH;QAHgC,MAAM,EAA3B,WAAW;QACM,SAAS;OAQpC;IALC,uEAAoB;IAEpB,WAAmC;IAEnC,4CAAoF;IAGtF;;;;OAIG;IACH,0CAWC;IAED;;;;;OAKG;IACH,WAHW,aAAa,GACX,IAAI,CAMhB;IAED;;;;OAIG;IACH,YAGC;IAED;;OAEG;IACH,SAFW,aAAa,QAKvB;IAED;;;;OAIG;IACH,SAFa,IAAI,CAKhB;CACF;;;;;qBA7EY,OAAO,aAAa,EAAE,aAAa;mBADnC,OAAO,0CAA0C,EAAE,WAAW"}
1
+ {"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAK3D,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAE/B,OAAO,EAAE,oBAAoB;IAQ1C;;OAEG;IACG,IAAI;IAeV;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,YAAY;IAKxB;;OAEG;IACH,IAAI;IAKJ;;OAEG;IACH,GAAG,CAAE,GAAG,EAAE,YAAY;IAKtB;;OAEG;IACH,KAAK;CAMN"}
@@ -0,0 +1,59 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import * as lp from 'it-length-prefixed';
3
+ import { handshake } from 'it-handshake';
4
+ import { CircuitRelay } from '../pb/index.js';
5
+ const log = logger('libp2p:circuit:stream-handler');
6
+ export class StreamHandler {
7
+ constructor(options) {
8
+ const { stream, maxLength = 4096 } = options;
9
+ this.stream = stream;
10
+ this.shake = handshake(this.stream);
11
+ this.decoder = lp.decode.fromReader(this.shake.reader, { maxDataLength: maxLength });
12
+ }
13
+ /**
14
+ * Read and decode message
15
+ */
16
+ async read() {
17
+ // @ts-expect-error FIXME is a source, needs to be a generator
18
+ const msg = await this.decoder.next();
19
+ if (msg.value != null) {
20
+ const value = CircuitRelay.decode(msg.value.slice());
21
+ log('read message type', value.type);
22
+ return value;
23
+ }
24
+ log('read received no value, closing stream');
25
+ // End the stream, we didn't get data
26
+ this.close();
27
+ }
28
+ /**
29
+ * Encode and write array of buffers
30
+ */
31
+ write(msg) {
32
+ log('write message type %s', msg.type);
33
+ this.shake.write(lp.encode.single(CircuitRelay.encode(msg)).slice());
34
+ }
35
+ /**
36
+ * Return the handshake rest stream and invalidate handler
37
+ */
38
+ rest() {
39
+ this.shake.rest();
40
+ return this.shake.stream;
41
+ }
42
+ /**
43
+ * @param {CircuitRelay} msg - An unencoded CircuitRelay protobuf message
44
+ */
45
+ end(msg) {
46
+ this.write(msg);
47
+ this.close();
48
+ }
49
+ /**
50
+ * Close the stream
51
+ */
52
+ close() {
53
+ log('closing the stream');
54
+ void this.rest().sink([]).catch(err => {
55
+ log.error(err);
56
+ });
57
+ }
58
+ }
59
+ //# sourceMappingURL=stream-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handler.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAa,SAAS,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,MAAM,GAAG,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAA;AAcnD,MAAM,OAAO,aAAa;IAKxB,YAAa,OAA6B;QACxC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAA;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,8DAA8D;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAErC,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YACpD,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,KAAK,CAAA;SACb;QAED,GAAG,CAAC,wCAAwC,CAAC,CAAA;QAC7C,qCAAqC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAE,GAAiB;QACtB,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAE,GAAiB;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACzB,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,10 +1,7 @@
1
- export type StreamHandler = import('./stream-handler');
2
- export type ICircuitRelay = import('../protocol').ICircuitRelay;
1
+ import { CircuitRelay } from '../pb/index.js';
2
+ import type { StreamHandler } from './stream-handler.js';
3
3
  /**
4
4
  * Validate incomming HOP/STOP message
5
- *
6
- * @param {ICircuitRelay} msg - A CircuitRelay unencoded protobuf message
7
- * @param {StreamHandler} streamHandler
8
5
  */
9
- export function validateAddrs(msg: ICircuitRelay, streamHandler: StreamHandler): void;
6
+ export declare function validateAddrs(msg: CircuitRelay, streamHandler: StreamHandler): void;
10
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.js"],"names":[],"mappings":"4BAMa,OAAO,kBAAkB,CAAC;4BAC1B,OAAO,aAAa,EAAE,aAAa;AAgBhD;;;;;GAKG;AACH,mCAHW,aAAa,iBACb,aAAa,QA4BvB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAYxD;;GAEG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,QA0B7E"}
@@ -0,0 +1,43 @@
1
+ import { Multiaddr } from '@multiformats/multiaddr';
2
+ import { CircuitRelay } from '../pb/index.js';
3
+ /**
4
+ * Write a response
5
+ */
6
+ function writeResponse(streamHandler, status) {
7
+ streamHandler.write({
8
+ type: CircuitRelay.Type.STATUS,
9
+ code: status
10
+ });
11
+ }
12
+ /**
13
+ * Validate incomming HOP/STOP message
14
+ */
15
+ export function validateAddrs(msg, streamHandler) {
16
+ try {
17
+ if (msg.dstPeer?.addrs != null) {
18
+ msg.dstPeer.addrs.forEach((addr) => {
19
+ return new Multiaddr(addr);
20
+ });
21
+ }
22
+ }
23
+ catch (err) {
24
+ writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
25
+ ? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID
26
+ : CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID);
27
+ throw err;
28
+ }
29
+ try {
30
+ if (msg.srcPeer?.addrs != null) {
31
+ msg.srcPeer.addrs.forEach((addr) => {
32
+ return new Multiaddr(addr);
33
+ });
34
+ }
35
+ }
36
+ catch (err) {
37
+ writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
38
+ ? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID
39
+ : CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID);
40
+ throw err;
41
+ }
42
+ }
43
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C;;GAEG;AACH,SAAS,aAAa,CAAE,aAA4B,EAAE,MAA2B;IAC/E,aAAa,CAAC,KAAK,CAAC;QAClB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM;QAC9B,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,GAAiB,EAAE,aAA4B;IAC5E,IAAI;QACF,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG;YAC7D,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB;YAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,GAAG,CAAA;KACV;IAED,IAAI;QACF,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG;YAC7D,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB;YAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,GAAG,CAAA;KACV;AACH,CAAC"}
@@ -1,7 +1,25 @@
1
- export const ADVERTISE_BOOT_DELAY: number;
2
- export const ADVERTISE_TTL: number;
3
- export const CIRCUIT_PROTO_CODE: number;
4
- export const HOP_METADATA_KEY: string;
5
- export const HOP_METADATA_VALUE: string;
6
- export const RELAY_RENDEZVOUS_NS: string;
1
+ /**
2
+ * Delay before HOP relay service is advertised on the network
3
+ */
4
+ export declare const ADVERTISE_BOOT_DELAY: number;
5
+ /**
6
+ * Delay Between HOP relay service advertisements on the network
7
+ */
8
+ export declare const ADVERTISE_TTL: number;
9
+ /**
10
+ * Multicodec code
11
+ */
12
+ export declare const CIRCUIT_PROTO_CODE = 290;
13
+ /**
14
+ * PeerStore metadaBook key for HOP relay service
15
+ */
16
+ export declare const HOP_METADATA_KEY = "hop_relay";
17
+ /**
18
+ * PeerStore metadaBook value for HOP relay service
19
+ */
20
+ export declare const HOP_METADATA_VALUE = "true";
21
+ /**
22
+ * Relay HOP relay service namespace for discovery
23
+ */
24
+ export declare const RELAY_RENDEZVOUS_NS = "/libp2p/relay";
7
25
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,aAAa,QAAc,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,kBAAkB,SAAS,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAA"}
@@ -0,0 +1,26 @@
1
+ const minute = 60 * 1000;
2
+ /**
3
+ * Delay before HOP relay service is advertised on the network
4
+ */
5
+ export const ADVERTISE_BOOT_DELAY = 15 * minute;
6
+ /**
7
+ * Delay Between HOP relay service advertisements on the network
8
+ */
9
+ export const ADVERTISE_TTL = 30 * minute;
10
+ /**
11
+ * Multicodec code
12
+ */
13
+ export const CIRCUIT_PROTO_CODE = 290;
14
+ /**
15
+ * PeerStore metadaBook key for HOP relay service
16
+ */
17
+ export const HOP_METADATA_KEY = 'hop_relay';
18
+ /**
19
+ * PeerStore metadaBook value for HOP relay service
20
+ */
21
+ export const HOP_METADATA_VALUE = 'true';
22
+ /**
23
+ * Relay HOP relay service namespace for discovery
24
+ */
25
+ export const RELAY_RENDEZVOUS_NS = '/libp2p/relay';
26
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAA;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA"}