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,205 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:circuit:hop'), {
5
- error: debug('libp2p:circuit:hop:err')
6
- })
7
- const errCode = require('err-code')
8
-
9
- const PeerId = require('peer-id')
10
- const { validateAddrs } = require('./utils')
11
- const StreamHandler = require('./stream-handler')
12
- const { CircuitRelay: CircuitPB } = require('../protocol')
13
- const { pipe } = require('it-pipe')
14
- const { codes: Errors } = require('../../errors')
15
-
16
- const { stop } = require('./stop')
17
-
18
- const multicodec = require('./../multicodec')
19
-
20
- /**
21
- * @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
22
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
23
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
24
- * @typedef {import('../transport')} Transport
25
- */
26
-
27
- /**
28
- * @typedef {Object} HopRequest
29
- * @property {Connection} connection
30
- * @property {ICircuitRelay} request
31
- * @property {StreamHandler} streamHandler
32
- * @property {Transport} circuit
33
- */
34
-
35
- /**
36
- * @param {HopRequest} options
37
- * @returns {Promise<void>}
38
- */
39
- async function handleHop ({
40
- connection,
41
- request,
42
- streamHandler,
43
- circuit
44
- }) {
45
- // Ensure hop is enabled
46
- if (!circuit._options.hop.enabled) {
47
- log('HOP request received but we are not acting as a relay')
48
- return streamHandler.end({
49
- type: CircuitPB.Type.STATUS,
50
- code: CircuitPB.Status.HOP_CANT_SPEAK_RELAY
51
- })
52
- }
53
-
54
- // Validate the HOP request has the required input
55
- try {
56
- validateAddrs(request, streamHandler)
57
- } catch (/** @type {any} */ err) {
58
- return log.error('invalid hop request via peer %s', connection.remotePeer.toB58String(), err)
59
- }
60
-
61
- if (!request.dstPeer) {
62
- log('HOP request received but we do not receive a dstPeer')
63
- return
64
- }
65
-
66
- // Get the connection to the destination (stop) peer
67
- const destinationPeer = new PeerId(request.dstPeer.id)
68
-
69
- const destinationConnection = circuit._connectionManager.get(destinationPeer)
70
- if (!destinationConnection && !circuit._options.hop.active) {
71
- log('HOP request received but we are not connected to the destination peer')
72
- return streamHandler.end({
73
- type: CircuitPB.Type.STATUS,
74
- code: CircuitPB.Status.HOP_NO_CONN_TO_DST
75
- })
76
- }
77
-
78
- // TODO: Handle being an active relay
79
- if (!destinationConnection) {
80
- return
81
- }
82
-
83
- // Handle the incoming HOP request by performing a STOP request
84
- const stopRequest = {
85
- type: CircuitPB.Type.STOP,
86
- dstPeer: request.dstPeer,
87
- srcPeer: request.srcPeer
88
- }
89
-
90
- let destinationStream
91
- try {
92
- destinationStream = await stop({
93
- connection: destinationConnection,
94
- request: stopRequest
95
- })
96
- } catch (/** @type {any} */ err) {
97
- return log.error(err)
98
- }
99
-
100
- log('hop request from %s is valid', connection.remotePeer.toB58String())
101
- streamHandler.write({
102
- type: CircuitPB.Type.STATUS,
103
- code: CircuitPB.Status.SUCCESS
104
- })
105
- const sourceStream = streamHandler.rest()
106
-
107
- // Short circuit the two streams to create the relayed connection
108
- return pipe(
109
- sourceStream,
110
- destinationStream,
111
- sourceStream
112
- )
113
- }
114
-
115
- /**
116
- * Performs a HOP request to a relay peer, to request a connection to another
117
- * peer. A new, virtual, connection will be created between the two via the relay.
118
- *
119
- * @param {object} options
120
- * @param {Connection} options.connection - Connection to the relay
121
- * @param {ICircuitRelay} options.request
122
- * @returns {Promise<MuxedStream>}
123
- */
124
- async function hop ({
125
- connection,
126
- request
127
- }) {
128
- // Create a new stream to the relay
129
- const { stream } = await connection.newStream([multicodec.relay])
130
- // Send the HOP request
131
- const streamHandler = new StreamHandler({ stream })
132
- streamHandler.write(request)
133
-
134
- const response = await streamHandler.read()
135
-
136
- if (!response) {
137
- throw errCode(new Error('HOP request had no response'), Errors.ERR_HOP_REQUEST_FAILED)
138
- }
139
-
140
- if (response.code === CircuitPB.Status.SUCCESS) {
141
- log('hop request was successful')
142
- return streamHandler.rest()
143
- }
144
-
145
- log('hop request failed with code %d, closing stream', response.code)
146
- streamHandler.close()
147
- throw errCode(new Error(`HOP request failed with code ${response.code}`), Errors.ERR_HOP_REQUEST_FAILED)
148
- }
149
-
150
- /**
151
- * Performs a CAN_HOP request to a relay peer, in order to understand its capabilities.
152
- *
153
- * @param {object} options
154
- * @param {Connection} options.connection - Connection to the relay
155
- * @returns {Promise<boolean>}
156
- */
157
- async function canHop ({
158
- connection
159
- }) {
160
- // Create a new stream to the relay
161
- const { stream } = await connection.newStream([multicodec.relay])
162
- // Send the HOP request
163
- const streamHandler = new StreamHandler({ stream })
164
- streamHandler.write({
165
- type: CircuitPB.Type.CAN_HOP
166
- })
167
-
168
- const response = await streamHandler.read()
169
- await streamHandler.close()
170
-
171
- if (!response || response.code !== CircuitPB.Status.SUCCESS) {
172
- return false
173
- }
174
-
175
- return true
176
- }
177
-
178
- /**
179
- * Creates an unencoded CAN_HOP response based on the Circuits configuration
180
- *
181
- * @param {Object} options
182
- * @param {Connection} options.connection
183
- * @param {StreamHandler} options.streamHandler
184
- * @param {Transport} options.circuit
185
- * @private
186
- */
187
- function handleCanHop ({
188
- connection,
189
- streamHandler,
190
- circuit
191
- }) {
192
- const canHop = circuit._options.hop.enabled
193
- log('can hop (%s) request from %s', canHop, connection.remotePeer.toB58String())
194
- streamHandler.end({
195
- type: CircuitPB.Type.STATUS,
196
- code: canHop ? CircuitPB.Status.SUCCESS : CircuitPB.Status.HOP_CANT_SPEAK_RELAY
197
- })
198
- }
199
-
200
- module.exports = {
201
- handleHop,
202
- hop,
203
- canHop,
204
- handleCanHop
205
- }
@@ -1,81 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:circuit:stop'), {
5
- error: debug('libp2p:circuit:stop:err')
6
- })
7
-
8
- const { CircuitRelay: CircuitPB } = require('../protocol')
9
- const multicodec = require('../multicodec')
10
- const StreamHandler = require('./stream-handler')
11
- const { validateAddrs } = require('./utils')
12
-
13
- /**
14
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
15
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
16
- * @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
17
- */
18
-
19
- /**
20
- * Handles incoming STOP requests
21
- *
22
- * @private
23
- * @param {Object} options
24
- * @param {Connection} options.connection
25
- * @param {ICircuitRelay} options.request - The CircuitRelay protobuf request (unencoded)
26
- * @param {StreamHandler} options.streamHandler
27
- * @returns {Promise<MuxedStream>|void} Resolves a duplex iterable
28
- */
29
- module.exports.handleStop = function handleStop ({
30
- connection,
31
- request,
32
- streamHandler
33
- }) {
34
- // Validate the STOP request has the required input
35
- try {
36
- validateAddrs(request, streamHandler)
37
- } catch (/** @type {any} */ err) {
38
- return log.error('invalid stop request via peer %s', connection.remotePeer.toB58String(), err)
39
- }
40
-
41
- // The request is valid
42
- log('stop request is valid')
43
- streamHandler.write({
44
- type: CircuitPB.Type.STATUS,
45
- code: CircuitPB.Status.SUCCESS
46
- })
47
- return streamHandler.rest()
48
- }
49
-
50
- /**
51
- * Creates a STOP request
52
- *
53
- * @private
54
- * @param {Object} options
55
- * @param {Connection} options.connection
56
- * @param {ICircuitRelay} options.request - The CircuitRelay protobuf request (unencoded)
57
- * @returns {Promise<MuxedStream|void>} Resolves a duplex iterable
58
- */
59
- module.exports.stop = async function stop ({
60
- connection,
61
- request
62
- }) {
63
- const { stream } = await connection.newStream([multicodec.relay])
64
- log('starting stop request to %s', connection.remotePeer.toB58String())
65
- const streamHandler = new StreamHandler({ stream })
66
-
67
- streamHandler.write(request)
68
- const response = await streamHandler.read()
69
-
70
- if (!response) {
71
- return streamHandler.close()
72
- }
73
-
74
- if (response.code === CircuitPB.Status.SUCCESS) {
75
- log('stop request to %s was successful', connection.remotePeer.toB58String())
76
- return streamHandler.rest()
77
- }
78
-
79
- log('stop request failed with code %d', response.code)
80
- streamHandler.close()
81
- }
@@ -1,94 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:circuit:stream-handler'), {
5
- error: debug('libp2p:circuit:stream-handler:err')
6
- })
7
-
8
- const lp = require('it-length-prefixed')
9
- // @ts-ignore it-handshake does not export types
10
- const handshake = require('it-handshake')
11
- const { CircuitRelay } = require('../protocol')
12
-
13
- /**
14
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
15
- * @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
16
- */
17
-
18
- class StreamHandler {
19
- /**
20
- * Create a stream handler for connection
21
- *
22
- * @class
23
- * @param {object} options
24
- * @param {MuxedStream} options.stream - A duplex iterable
25
- * @param {number} [options.maxLength = 4096] - max bytes length of message
26
- */
27
- constructor ({ stream, maxLength = 4096 }) {
28
- this.stream = stream
29
-
30
- this.shake = handshake(this.stream)
31
- // @ts-ignore options are not optional
32
- this.decoder = lp.decode.fromReader(this.shake.reader, { maxDataLength: maxLength })
33
- }
34
-
35
- /**
36
- * Read and decode message
37
- *
38
- * @async
39
- */
40
- async read () {
41
- const msg = await this.decoder.next()
42
- if (msg.value) {
43
- const value = CircuitRelay.decode(msg.value.slice())
44
- log('read message type', value.type)
45
- return value
46
- }
47
-
48
- log('read received no value, closing stream')
49
- // End the stream, we didn't get data
50
- this.close()
51
- }
52
-
53
- /**
54
- * Encode and write array of buffers
55
- *
56
- * @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
57
- * @returns {void}
58
- */
59
- write (msg) {
60
- log('write message type %s', msg.type)
61
- // @ts-ignore lp.encode expects type type 'Buffer | BufferList', not 'Uint8Array'
62
- this.shake.write(lp.encode.single(CircuitRelay.encode(msg).finish()))
63
- }
64
-
65
- /**
66
- * Return the handshake rest stream and invalidate handler
67
- *
68
- * @returns {*} A duplex iterable
69
- */
70
- rest () {
71
- this.shake.rest()
72
- return this.shake.stream
73
- }
74
-
75
- /**
76
- * @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
77
- */
78
- end (msg) {
79
- this.write(msg)
80
- this.close()
81
- }
82
-
83
- /**
84
- * Close the stream
85
- *
86
- * @returns {void}
87
- */
88
- close () {
89
- log('closing the stream')
90
- this.rest().sink([])
91
- }
92
- }
93
-
94
- module.exports = StreamHandler
@@ -1,12 +0,0 @@
1
- 'use strict'
2
-
3
- const minute = 60 * 1000
4
-
5
- module.exports = {
6
- ADVERTISE_BOOT_DELAY: 15 * minute, // Delay before HOP relay service is advertised on the network
7
- ADVERTISE_TTL: 30 * minute, // Delay Between HOP relay service advertisements on the network
8
- CIRCUIT_PROTO_CODE: 290, // Multicodec code
9
- HOP_METADATA_KEY: 'hop_relay', // PeerStore metadaBook key for HOP relay service
10
- HOP_METADATA_VALUE: 'true', // PeerStore metadaBook value for HOP relay service
11
- RELAY_RENDEZVOUS_NS: '/libp2p/relay' // Relay HOP relay service namespace for discovery
12
- }
@@ -1,102 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:relay'), {
5
- error: debug('libp2p:relay:err')
6
- })
7
- const { codes } = require('./../errors')
8
- const {
9
- setDelayedInterval,
10
- clearDelayedInterval
11
- // @ts-ignore set-delayed-interval does not export types
12
- } = require('set-delayed-interval')
13
-
14
- const AutoRelay = require('./auto-relay')
15
- const { namespaceToCid } = require('./utils')
16
- const {
17
- RELAY_RENDEZVOUS_NS
18
- } = require('./constants')
19
-
20
- /**
21
- * @typedef {import('../')} Libp2p
22
- *
23
- * @typedef {Object} RelayAdvertiseOptions
24
- * @property {number} [bootDelay = ADVERTISE_BOOT_DELAY]
25
- * @property {boolean} [enabled = true]
26
- * @property {number} [ttl = ADVERTISE_TTL]
27
- *
28
- * @typedef {Object} HopOptions
29
- * @property {boolean} [enabled = false]
30
- * @property {boolean} [active = false]
31
- *
32
- * @typedef {Object} AutoRelayOptions
33
- * @property {number} [maxListeners = 2] - maximum number of relays to listen.
34
- * @property {boolean} [enabled = false]
35
- */
36
-
37
- class Relay {
38
- /**
39
- * Creates an instance of Relay.
40
- *
41
- * @class
42
- * @param {Libp2p} libp2p
43
- */
44
- constructor (libp2p) {
45
- this._libp2p = libp2p
46
- this._options = {
47
- ...libp2p._config.relay
48
- }
49
-
50
- // Create autoRelay if enabled
51
- this._autoRelay = this._options.autoRelay.enabled && new AutoRelay({ libp2p, ...this._options.autoRelay })
52
-
53
- this._advertiseService = this._advertiseService.bind(this)
54
- }
55
-
56
- /**
57
- * Start Relay service.
58
- *
59
- * @returns {void}
60
- */
61
- start () {
62
- // Advertise service if HOP enabled
63
- const canHop = this._options.hop.enabled
64
-
65
- if (canHop && this._options.advertise.enabled) {
66
- this._timeout = setDelayedInterval(
67
- this._advertiseService, this._options.advertise.ttl, this._options.advertise.bootDelay
68
- )
69
- }
70
- }
71
-
72
- /**
73
- * Stop Relay service.
74
- *
75
- * @returns {void}
76
- */
77
- stop () {
78
- clearDelayedInterval(this._timeout)
79
- }
80
-
81
- /**
82
- * Advertise hop relay service in the network.
83
- *
84
- * @returns {Promise<void>}
85
- */
86
- async _advertiseService () {
87
- try {
88
- const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS)
89
- await this._libp2p.contentRouting.provide(cid)
90
- } catch (/** @type {any} */ err) {
91
- if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
92
- log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err)
93
- // Stop the advertise
94
- this.stop()
95
- } else {
96
- log.error(err)
97
- }
98
- }
99
- }
100
- }
101
-
102
- module.exports = Relay
@@ -1,75 +0,0 @@
1
- 'use strict'
2
-
3
- const { EventEmitter } = require('events')
4
- const { Multiaddr } = require('multiaddr')
5
-
6
- /**
7
- * @typedef {import('libp2p-interfaces/src/transport/types').Listener} Listener
8
- */
9
-
10
- /**
11
- * @param {import('../')} libp2p
12
- * @returns {Listener} a transport listener
13
- */
14
- module.exports = (libp2p) => {
15
- const listeningAddrs = new Map()
16
-
17
- /**
18
- * Add swarm handler and listen for incoming connections
19
- *
20
- * @param {Multiaddr} addr
21
- * @returns {Promise<void>}
22
- */
23
- async function listen (addr) {
24
- const addrString = String(addr).split('/p2p-circuit').find(a => a !== '')
25
-
26
- const relayConn = await libp2p.dial(new Multiaddr(addrString))
27
- const relayedAddr = relayConn.remoteAddr.encapsulate('/p2p-circuit')
28
-
29
- listeningAddrs.set(relayConn.remotePeer.toB58String(), relayedAddr)
30
- listener.emit('listening')
31
- }
32
-
33
- /**
34
- * Get fixed up multiaddrs
35
- *
36
- * NOTE: This method will grab the peers multiaddrs and expand them such that:
37
- *
38
- * a) If it's an existing /p2p-circuit address for a specific relay i.e.
39
- * `/ip4/0.0.0.0/tcp/0/ipfs/QmRelay/p2p-circuit` this method will expand the
40
- * address to `/ip4/0.0.0.0/tcp/0/ipfs/QmRelay/p2p-circuit/ipfs/QmPeer` where
41
- * `QmPeer` is this peers id
42
- * b) If it's not a /p2p-circuit address, it will encapsulate the address as a /p2p-circuit
43
- * addr, such when dialing over a relay with this address, it will create the circuit using
44
- * the encapsulated transport address. This is useful when for example, a peer should only
45
- * be dialed over TCP rather than any other transport
46
- *
47
- * @returns {Multiaddr[]}
48
- */
49
- function getAddrs () {
50
- const addrs = []
51
- for (const addr of listeningAddrs.values()) {
52
- addrs.push(addr)
53
- }
54
- return addrs
55
- }
56
-
57
- /** @type Listener */
58
- const listener = Object.assign(new EventEmitter(), {
59
- close: () => Promise.resolve(),
60
- listen,
61
- getAddrs
62
- })
63
-
64
- // Remove listeningAddrs when a peer disconnects
65
- libp2p.connectionManager.on('peer:disconnect', (connection) => {
66
- const deleted = listeningAddrs.delete(connection.remotePeer.toB58String())
67
-
68
- if (deleted) {
69
- // Announce listen addresses change
70
- listener.emit('close')
71
- }
72
- })
73
-
74
- return listener
75
- }
@@ -1,5 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = {
4
- relay: '/libp2p/circuit/relay/0.1.0'
5
- }