libp2p 0.36.2 → 0.37.0-5934b13

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
@@ -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"}