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,229 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:circuit'), {
5
- error: debug('libp2p:circuit:err')
6
- })
7
-
8
- const errCode = require('err-code')
9
- const mafmt = require('mafmt')
10
- const { Multiaddr } = require('multiaddr')
11
- const PeerId = require('peer-id')
12
- const { CircuitRelay: CircuitPB } = require('./protocol')
13
- const { codes } = require('../errors')
14
-
15
- const toConnection = require('libp2p-utils/src/stream-to-ma-conn')
16
-
17
- const { relay: multicodec } = require('./multicodec')
18
- const createListener = require('./listener')
19
- const { handleCanHop, handleHop, hop } = require('./circuit/hop')
20
- const { handleStop } = require('./circuit/stop')
21
- const StreamHandler = require('./circuit/stream-handler')
22
-
23
- const transportSymbol = Symbol.for('@libp2p/js-libp2p-circuit/circuit')
24
-
25
- /**
26
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
27
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
28
- */
29
-
30
- class Circuit {
31
- /**
32
- * Creates an instance of the Circuit Transport.
33
- *
34
- * @class
35
- * @param {object} options
36
- * @param {import('../')} options.libp2p
37
- * @param {import('../upgrader')} options.upgrader
38
- */
39
- constructor ({ libp2p, upgrader }) {
40
- this._dialer = libp2p.dialer
41
- this._registrar = libp2p.registrar
42
- this._connectionManager = libp2p.connectionManager
43
- this._upgrader = upgrader
44
- this._options = libp2p._config.relay
45
- this._libp2p = libp2p
46
- this.peerId = libp2p.peerId
47
-
48
- this._registrar.handle(multicodec, this._onProtocol.bind(this))
49
- }
50
-
51
- /**
52
- * @param {Object} props
53
- * @param {Connection} props.connection
54
- * @param {MuxedStream} props.stream
55
- */
56
- async _onProtocol ({ connection, stream }) {
57
- /** @type {import('./circuit/stream-handler')} */
58
- const streamHandler = new StreamHandler({ stream })
59
- const request = await streamHandler.read()
60
-
61
- if (!request) {
62
- return
63
- }
64
-
65
- const circuit = this
66
- let virtualConnection
67
-
68
- switch (request.type) {
69
- case CircuitPB.Type.CAN_HOP: {
70
- log('received CAN_HOP request from %s', connection.remotePeer.toB58String())
71
- await handleCanHop({ circuit, connection, streamHandler })
72
- break
73
- }
74
- case CircuitPB.Type.HOP: {
75
- log('received HOP request from %s', connection.remotePeer.toB58String())
76
- virtualConnection = await handleHop({
77
- connection,
78
- request,
79
- streamHandler,
80
- circuit
81
- })
82
- break
83
- }
84
- case CircuitPB.Type.STOP: {
85
- log('received STOP request from %s', connection.remotePeer.toB58String())
86
- virtualConnection = await handleStop({
87
- connection,
88
- request,
89
- streamHandler
90
- })
91
- break
92
- }
93
- default: {
94
- log('Request of type %s not supported', request.type)
95
- }
96
- }
97
-
98
- if (virtualConnection) {
99
- // @ts-ignore dst peer will not be undefined
100
- const remoteAddr = new Multiaddr(request.dstPeer.addrs[0])
101
- // @ts-ignore src peer will not be undefined
102
- const localAddr = new Multiaddr(request.srcPeer.addrs[0])
103
- const maConn = toConnection({
104
- stream: virtualConnection,
105
- remoteAddr,
106
- localAddr
107
- })
108
- const type = request.type === CircuitPB.Type.HOP ? 'relay' : 'inbound'
109
- log('new %s connection %s', type, maConn.remoteAddr)
110
-
111
- const conn = await this._upgrader.upgradeInbound(maConn)
112
- log('%s connection %s upgraded', type, maConn.remoteAddr)
113
- this.handler && this.handler(conn)
114
- }
115
- }
116
-
117
- /**
118
- * Dial a peer over a relay
119
- *
120
- * @param {Multiaddr} ma - the multiaddr of the peer to dial
121
- * @param {Object} options - dial options
122
- * @param {AbortSignal} [options.signal] - An optional abort signal
123
- * @returns {Promise<Connection>} - the connection
124
- */
125
- async dial (ma, options) {
126
- // Check the multiaddr to see if it contains a relay and a destination peer
127
- const addrs = ma.toString().split('/p2p-circuit')
128
- const relayAddr = new Multiaddr(addrs[0])
129
- const destinationAddr = new Multiaddr(addrs[addrs.length - 1])
130
- const relayId = relayAddr.getPeerId()
131
- const destinationId = destinationAddr.getPeerId()
132
-
133
- if (!relayId || !destinationId) {
134
- const errMsg = 'Circuit relay dial failed as addresses did not have peer id'
135
- log.error(errMsg)
136
- throw errCode(new Error(errMsg), codes.ERR_RELAYED_DIAL)
137
- }
138
-
139
- const relayPeer = PeerId.createFromB58String(relayId)
140
- const destinationPeer = PeerId.createFromB58String(destinationId)
141
-
142
- let disconnectOnFailure = false
143
- let relayConnection = this._connectionManager.get(relayPeer)
144
- if (!relayConnection) {
145
- relayConnection = await this._dialer.connectToPeer(relayAddr, options)
146
- disconnectOnFailure = true
147
- }
148
-
149
- try {
150
- const virtualConnection = await hop({
151
- connection: relayConnection,
152
- request: {
153
- type: CircuitPB.Type.HOP,
154
- srcPeer: {
155
- id: this.peerId.toBytes(),
156
- addrs: this._libp2p.multiaddrs.map(addr => addr.bytes)
157
- },
158
- dstPeer: {
159
- id: destinationPeer.toBytes(),
160
- addrs: [new Multiaddr(destinationAddr).bytes]
161
- }
162
- }
163
- })
164
-
165
- const localAddr = relayAddr.encapsulate(`/p2p-circuit/p2p/${this.peerId.toB58String()}`)
166
- const maConn = toConnection({
167
- stream: virtualConnection,
168
- remoteAddr: ma,
169
- localAddr
170
- })
171
- log('new outbound connection %s', maConn.remoteAddr)
172
-
173
- return this._upgrader.upgradeOutbound(maConn)
174
- } catch (/** @type {any} */ err) {
175
- log.error('Circuit relay dial failed', err)
176
- disconnectOnFailure && await relayConnection.close()
177
- throw err
178
- }
179
- }
180
-
181
- /**
182
- * Create a listener
183
- *
184
- * @param {any} options
185
- * @param {Function} handler
186
- * @returns {import('libp2p-interfaces/src/transport/types').Listener}
187
- */
188
- createListener (options, handler) {
189
- if (typeof options === 'function') {
190
- handler = options
191
- options = {}
192
- }
193
-
194
- // Called on successful HOP and STOP requests
195
- this.handler = handler
196
-
197
- return createListener(this._libp2p)
198
- }
199
-
200
- /**
201
- * Filter check for all Multiaddrs that this transport can dial on
202
- *
203
- * @param {Multiaddr[]} multiaddrs
204
- * @returns {Multiaddr[]}
205
- */
206
- filter (multiaddrs) {
207
- multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs]
208
-
209
- return multiaddrs.filter((ma) => {
210
- return mafmt.Circuit.matches(ma)
211
- })
212
- }
213
-
214
- get [Symbol.toStringTag] () {
215
- return 'Circuit'
216
- }
217
-
218
- /**
219
- * Checks if the given value is a Transport instance.
220
- *
221
- * @param {any} other
222
- * @returns {other is Transport}
223
- */
224
- static isTransport (other) {
225
- return Boolean(other && other[transportSymbol])
226
- }
227
- }
228
-
229
- module.exports = Circuit
@@ -1,17 +0,0 @@
1
- 'use strict'
2
-
3
- const { CID } = require('multiformats/cid')
4
- const { sha256 } = require('multiformats/hashes/sha2')
5
-
6
- /**
7
- * Convert a namespace string into a cid.
8
- *
9
- * @param {string} namespace
10
- * @returns {Promise<CID>}
11
- */
12
- module.exports.namespaceToCid = async (namespace) => {
13
- const bytes = new TextEncoder().encode(namespace)
14
- const hash = await sha256.digest(bytes)
15
-
16
- return CID.createV0(hash)
17
- }
package/src/config.js DELETED
@@ -1,114 +0,0 @@
1
- 'use strict'
2
-
3
- const mergeOptions = require('merge-options')
4
- // @ts-ignore no types in multiaddr path
5
- const { dnsaddrResolver } = require('multiaddr/src/resolvers')
6
-
7
- const Constants = require('./constants')
8
- const { AGENT_VERSION } = require('./identify/consts')
9
- const RelayConstants = require('./circuit/constants')
10
-
11
- const { publicAddressesFirst } = require('libp2p-utils/src/address-sort')
12
- const { FaultTolerance } = require('./transport-manager')
13
-
14
- /**
15
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
16
- * @typedef {import('./types').ConnectionGater} ConnectionGater
17
- * @typedef {import('.').Libp2pOptions} Libp2pOptions
18
- * @typedef {import('.').constructorOptions} constructorOptions
19
- */
20
-
21
- const DefaultConfig = {
22
- addresses: {
23
- listen: [],
24
- announce: [],
25
- noAnnounce: [],
26
- announceFilter: (/** @type {Multiaddr[]} */ multiaddrs) => multiaddrs
27
- },
28
- connectionManager: {
29
- minConnections: 25
30
- },
31
- connectionGater: /** @type {ConnectionGater} */ {},
32
- transportManager: {
33
- faultTolerance: FaultTolerance.FATAL_ALL
34
- },
35
- dialer: {
36
- maxParallelDials: Constants.MAX_PARALLEL_DIALS,
37
- maxDialsPerPeer: Constants.MAX_PER_PEER_DIALS,
38
- dialTimeout: Constants.DIAL_TIMEOUT,
39
- resolvers: {
40
- dnsaddr: dnsaddrResolver
41
- },
42
- addressSorter: publicAddressesFirst
43
- },
44
- host: {
45
- agentVersion: AGENT_VERSION
46
- },
47
- metrics: {
48
- enabled: false
49
- },
50
- peerStore: {
51
- persistence: false,
52
- threshold: 5
53
- },
54
- peerRouting: {
55
- refreshManager: {
56
- enabled: true,
57
- interval: 6e5,
58
- bootDelay: 10e3
59
- }
60
- },
61
- config: {
62
- protocolPrefix: 'ipfs',
63
- dht: {
64
- enabled: false,
65
- kBucketSize: 20
66
- },
67
- nat: {
68
- enabled: true,
69
- ttl: 7200,
70
- keepAlive: true,
71
- gateway: null,
72
- externalIp: null,
73
- pmp: {
74
- enabled: false
75
- }
76
- },
77
- peerDiscovery: {
78
- autoDial: true
79
- },
80
- pubsub: {
81
- enabled: true
82
- },
83
- relay: {
84
- enabled: true,
85
- advertise: {
86
- bootDelay: RelayConstants.ADVERTISE_BOOT_DELAY,
87
- enabled: false,
88
- ttl: RelayConstants.ADVERTISE_TTL
89
- },
90
- hop: {
91
- enabled: false,
92
- active: false
93
- },
94
- autoRelay: {
95
- enabled: false,
96
- maxListeners: 2
97
- }
98
- },
99
- transport: {}
100
- }
101
- }
102
-
103
- /**
104
- * @param {Libp2pOptions} opts
105
- * @returns {DefaultConfig & Libp2pOptions & constructorOptions}
106
- */
107
- module.exports.validate = (opts) => {
108
- /** @type {DefaultConfig & Libp2pOptions & constructorOptions} */
109
- const resultingOptions = mergeOptions(DefaultConfig, opts)
110
-
111
- if (resultingOptions.modules.transport.length < 1) throw new Error("'options.modules.transport' must contain at least 1 transport")
112
-
113
- return resultingOptions
114
- }
@@ -1,132 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const mergeOptions = require('merge-options')
5
- // @ts-ignore retimer does not have types
6
- const retimer = require('retimer')
7
- const all = require('it-all')
8
- const { pipe } = require('it-pipe')
9
- const filter = require('it-filter')
10
- const sort = require('it-sort')
11
-
12
- const log = Object.assign(debug('libp2p:connection-manager:auto-dialler'), {
13
- error: debug('libp2p:connection-manager:auto-dialler:err')
14
- })
15
-
16
- const defaultOptions = {
17
- enabled: true,
18
- minConnections: 0,
19
- autoDialInterval: 10000
20
- }
21
-
22
- /**
23
- * @typedef {import('../index')} Libp2p
24
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
25
- */
26
-
27
- /**
28
- * @typedef {Object} AutoDiallerOptions
29
- * @property {boolean} [enabled = true] - Should preemptively guarantee connections are above the low watermark
30
- * @property {number} [minConnections = 0] - The minimum number of connections to avoid pruning
31
- * @property {number} [autoDialInterval = 10000] - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
32
- */
33
-
34
- class AutoDialler {
35
- /**
36
- * Proactively tries to connect to known peers stored in the PeerStore.
37
- * It will keep the number of connections below the upper limit and sort
38
- * the peers to connect based on wether we know their keys and protocols.
39
- *
40
- * @class
41
- * @param {Libp2p} libp2p
42
- * @param {AutoDiallerOptions} options
43
- */
44
- constructor (libp2p, options = {}) {
45
- this._options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, options)
46
- this._libp2p = libp2p
47
- this._running = false
48
- this._autoDialTimeout = null
49
- this._autoDial = this._autoDial.bind(this)
50
-
51
- log('options: %j', this._options)
52
- }
53
-
54
- /**
55
- * Starts the auto dialer
56
- */
57
- async start () {
58
- if (!this._options.enabled) {
59
- log('not enabled')
60
- return
61
- }
62
-
63
- this._running = true
64
- this._autoDial().catch(err => {
65
- log.error('could start autodial', err)
66
- })
67
- log('started')
68
- }
69
-
70
- /**
71
- * Stops the auto dialler
72
- */
73
- async stop () {
74
- if (!this._options.enabled) {
75
- log('not enabled')
76
- return
77
- }
78
-
79
- this._running = false
80
- this._autoDialTimeout && this._autoDialTimeout.clear()
81
- log('stopped')
82
- }
83
-
84
- async _autoDial () {
85
- const minConnections = this._options.minConnections
86
-
87
- // Already has enough connections
88
- if (this._libp2p.connections.size >= minConnections) {
89
- this._autoDialTimeout = retimer(this._autoDial, this._options.autoDialInterval)
90
- return
91
- }
92
-
93
- // Sort peers on whether we know protocols of public keys for them
94
- // TODO: assuming the `peerStore.getPeers()` order is stable this will mean
95
- // we keep trying to connect to the same peers?
96
- const peers = await pipe(
97
- this._libp2p.peerStore.getPeers(),
98
- (source) => filter(source, (peer) => !peer.id.equals(this._libp2p.peerId)),
99
- (source) => sort(source, (a, b) => {
100
- if (b.protocols && b.protocols.length && (!a.protocols || !a.protocols.length)) {
101
- return 1
102
- } else if (b.id.pubKey && !a.id.pubKey) {
103
- return 1
104
- }
105
- return -1
106
- }),
107
- (source) => all(source)
108
- )
109
-
110
- for (let i = 0; this._running && i < peers.length && this._libp2p.connections.size < minConnections; i++) {
111
- const peer = peers[i]
112
-
113
- if (!this._libp2p.connectionManager.get(peer.id)) {
114
- log('connecting to a peerStore stored peer %s', peer.id.toB58String())
115
- try {
116
- await this._libp2p.dialer.connectToPeer(peer.id)
117
- } catch (/** @type {any} */ err) {
118
- log.error('could not connect to peerStore stored peer', err)
119
- }
120
- }
121
- }
122
-
123
- // Connection Manager was stopped
124
- if (!this._running) {
125
- return
126
- }
127
-
128
- this._autoDialTimeout = retimer(this._autoDial, this._options.autoDialInterval)
129
- }
130
- }
131
-
132
- module.exports = AutoDialler