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,290 +0,0 @@
1
- // @ts-nocheck
2
- 'use strict'
3
-
4
- const mergeOptions = require('merge-options')
5
- const { pipe } = require('it-pipe')
6
- const { tap } = require('streaming-iterables')
7
- const oldPeerLRU = require('./old-peers')
8
- const { METRICS: defaultOptions } = require('../constants')
9
- const Stats = require('./stats')
10
-
11
- const initialCounters = [
12
- 'dataReceived',
13
- 'dataSent'
14
- ]
15
-
16
- const directionToEvent = {
17
- in: 'dataReceived',
18
- out: 'dataSent'
19
- }
20
-
21
- /**
22
- * @typedef {import('peer-id')} PeerId
23
- * @typedef {import('libp2p-interfaces/src/transport/types').MultiaddrConnection} MultiaddrConnection
24
- */
25
-
26
- /**
27
- * @typedef MetricsOptions
28
- * @property {number} [computeThrottleMaxQueueSize = defaultOptions.computeThrottleMaxQueueSize]
29
- * @property {number} [computeThrottleTimeout = defaultOptions.computeThrottleTimeout]
30
- * @property {number[]} [movingAverageIntervals = defaultOptions.movingAverageIntervals]
31
- * @property {number} [maxOldPeersRetention = defaultOptions.maxOldPeersRetention]
32
- */
33
-
34
- class Metrics {
35
- /**
36
- * @class
37
- * @param {MetricsOptions} options
38
- */
39
- constructor (options) {
40
- this._options = mergeOptions(defaultOptions, options)
41
- this._globalStats = new Stats(initialCounters, this._options)
42
- this._peerStats = new Map()
43
- this._protocolStats = new Map()
44
- this._oldPeers = oldPeerLRU(this._options.maxOldPeersRetention)
45
- this._running = false
46
- this._onMessage = this._onMessage.bind(this)
47
- this._systems = new Map()
48
- }
49
-
50
- /**
51
- * Must be called for stats to saved. Any data pushed for tracking
52
- * will be ignored.
53
- */
54
- start () {
55
- this._running = true
56
- }
57
-
58
- /**
59
- * Stops all averages timers and prevents new data from being tracked.
60
- * Once `stop` is called, `start` must be called to resume stats tracking.
61
- */
62
- stop () {
63
- this._running = false
64
- this._globalStats.stop()
65
- for (const stats of this._peerStats.values()) {
66
- stats.stop()
67
- }
68
- for (const stats of this._protocolStats.values()) {
69
- stats.stop()
70
- }
71
- }
72
-
73
- /**
74
- * Gets the global `Stats` object
75
- *
76
- * @returns {Stats}
77
- */
78
- get global () {
79
- return this._globalStats
80
- }
81
-
82
- /**
83
- * Returns a list of `PeerId` strings currently being tracked
84
- *
85
- * @returns {string[]}
86
- */
87
- get peers () {
88
- return Array.from(this._peerStats.keys())
89
- }
90
-
91
- /**
92
- * @returns {Map<string, Map<string, Map<string, any>>>}
93
- */
94
- getComponentMetrics () {
95
- return this._systems
96
- }
97
-
98
- updateComponentMetric ({ system = 'libp2p', component, metric, value }) {
99
- if (!this._systems.has(system)) {
100
- this._systems.set(system, new Map())
101
- }
102
-
103
- const systemMetrics = this._systems.get(system)
104
-
105
- if (!systemMetrics.has(component)) {
106
- systemMetrics.set(component, new Map())
107
- }
108
-
109
- const componentMetrics = systemMetrics.get(component)
110
-
111
- componentMetrics.set(metric, value)
112
- }
113
-
114
- /**
115
- * Returns the `Stats` object for the given `PeerId` whether it
116
- * is a live peer, or in the disconnected peer LRU cache.
117
- *
118
- * @param {PeerId} peerId
119
- * @returns {Stats}
120
- */
121
- forPeer (peerId) {
122
- const idString = peerId.toB58String()
123
- return this._peerStats.get(idString) || this._oldPeers.get(idString)
124
- }
125
-
126
- /**
127
- * Returns a list of all protocol strings currently being tracked.
128
- *
129
- * @returns {string[]}
130
- */
131
- get protocols () {
132
- return Array.from(this._protocolStats.keys())
133
- }
134
-
135
- /**
136
- * Returns the `Stats` object for the given `protocol`.
137
- *
138
- * @param {string} protocol
139
- * @returns {Stats}
140
- */
141
- forProtocol (protocol) {
142
- return this._protocolStats.get(protocol)
143
- }
144
-
145
- /**
146
- * Should be called when all connections to a given peer
147
- * have closed. The `Stats` collection for the peer will
148
- * be stopped and moved to an LRU for temporary retention.
149
- *
150
- * @param {PeerId} peerId
151
- */
152
- onPeerDisconnected (peerId) {
153
- const idString = peerId.toB58String()
154
- const peerStats = this._peerStats.get(idString)
155
- if (peerStats) {
156
- peerStats.stop()
157
- this._peerStats.delete(idString)
158
- this._oldPeers.set(idString, peerStats)
159
- }
160
- }
161
-
162
- /**
163
- * Takes the metadata for a message and tracks it in the
164
- * appropriate categories. If the protocol is present, protocol
165
- * stats will also be tracked.
166
- *
167
- * @private
168
- * @param {object} params
169
- * @param {PeerId} params.remotePeer - Remote peer
170
- * @param {string} [params.protocol] - Protocol string the stream is running
171
- * @param {string} params.direction - One of ['in','out']
172
- * @param {number} params.dataLength - Size of the message
173
- * @returns {void}
174
- */
175
- _onMessage ({ remotePeer, protocol, direction, dataLength }) {
176
- if (!this._running) return
177
-
178
- const key = directionToEvent[direction]
179
-
180
- let peerStats = this.forPeer(remotePeer)
181
- if (!peerStats) {
182
- peerStats = new Stats(initialCounters, this._options)
183
- this._peerStats.set(remotePeer.toB58String(), peerStats)
184
- }
185
-
186
- // Peer and global stats
187
- peerStats.push(key, dataLength)
188
- this._globalStats.push(key, dataLength)
189
-
190
- // Protocol specific stats
191
- if (protocol) {
192
- let protocolStats = this.forProtocol(protocol)
193
- if (!protocolStats) {
194
- protocolStats = new Stats(initialCounters, this._options)
195
- this._protocolStats.set(protocol, protocolStats)
196
- }
197
- protocolStats.push(key, dataLength)
198
- }
199
- }
200
-
201
- /**
202
- * Replaces the `PeerId` string with the given `peerId`.
203
- * If stats are already being tracked for the given `peerId`, the
204
- * placeholder stats will be merged with the existing stats.
205
- *
206
- * @param {PeerId} placeholder - A peerId string
207
- * @param {PeerId} peerId
208
- * @returns {void}
209
- */
210
- updatePlaceholder (placeholder, peerId) {
211
- if (!this._running) return
212
- const placeholderStats = this.forPeer(placeholder)
213
- const peerIdString = peerId.toB58String()
214
- const existingStats = this.forPeer(peerId)
215
- let mergedStats = placeholderStats
216
-
217
- // If we already have stats, merge the two
218
- if (existingStats) {
219
- // If existing, merge
220
- mergedStats = Metrics.mergeStats(existingStats, mergedStats)
221
- // Attempt to delete from the old peers list just in case it was tracked there
222
- this._oldPeers.delete(peerIdString)
223
- }
224
-
225
- this._peerStats.delete(placeholder.toB58String())
226
- this._peerStats.set(peerIdString, mergedStats)
227
- mergedStats.start()
228
- }
229
-
230
- /**
231
- * Tracks data running through a given Duplex Iterable `stream`. If
232
- * the `peerId` is not provided, a placeholder string will be created and
233
- * returned. This allows lazy tracking of a peer when the peer is not yet known.
234
- * When the `PeerId` is known, `Metrics.updatePlaceholder` should be called
235
- * with the placeholder string returned from here, and the known `PeerId`.
236
- *
237
- * @param {Object} options
238
- * @param {MultiaddrConnection} options.stream - A duplex iterable stream
239
- * @param {PeerId} [options.remotePeer] - The id of the remote peer that's connected
240
- * @param {string} [options.protocol] - The protocol the stream is running
241
- * @returns {MultiaddrConnection} The peerId string or placeholder string
242
- */
243
- trackStream ({ stream, remotePeer, protocol }) {
244
- const metrics = this
245
- const _source = stream.source
246
- stream.source = tap(chunk => metrics._onMessage({
247
- remotePeer,
248
- protocol,
249
- direction: 'in',
250
- dataLength: chunk.length
251
- }))(_source)
252
-
253
- const _sink = stream.sink
254
- stream.sink = source => {
255
- return pipe(
256
- source,
257
- tap(chunk => metrics._onMessage({
258
- remotePeer,
259
- protocol,
260
- direction: 'out',
261
- dataLength: chunk.length
262
- })),
263
- _sink
264
- )
265
- }
266
-
267
- return stream
268
- }
269
-
270
- /**
271
- * Merges `other` into `target`. `target` will be modified
272
- * and returned.
273
- *
274
- * @param {Stats} target
275
- * @param {Stats} other
276
- * @returns {Stats}
277
- */
278
- static mergeStats (target, other) {
279
- target.stop()
280
- other.stop()
281
-
282
- // Merge queues
283
- target._queue = [...target._queue, ...other._queue]
284
-
285
- // TODO: how to merge moving averages?
286
- return target
287
- }
288
- }
289
-
290
- module.exports = Metrics
@@ -1,16 +0,0 @@
1
- 'use strict'
2
-
3
- const LRU = require('hashlru')
4
-
5
- /**
6
- * Creates and returns a Least Recently Used Cache
7
- *
8
- * @param {number} maxSize
9
- * @returns {any}
10
- */
11
- module.exports = (maxSize) => {
12
- // @ts-ignore LRU expression is not callable
13
- const patched = LRU(maxSize)
14
- patched.delete = patched.remove
15
- return patched
16
- }
@@ -1,270 +0,0 @@
1
- // @ts-nocheck
2
- 'use strict'
3
-
4
- const { EventEmitter } = require('events')
5
- const { BigNumber: Big } = require('bignumber.js')
6
- const MovingAverage = require('@vascosantos/moving-average')
7
- const retimer = require('retimer')
8
-
9
- /**
10
- * @typedef {import('@vascosantos/moving-average').IMovingAverage} IMovingAverage
11
- * @typedef {import('bignumber.js').BigNumber} Big
12
- */
13
-
14
- class Stats extends EventEmitter {
15
- /**
16
- * A queue based manager for stat processing
17
- *
18
- * @class
19
- * @param {string[]} initialCounters
20
- * @param {any} options
21
- */
22
- constructor (initialCounters, options) {
23
- super()
24
-
25
- this._options = options
26
- this._queue = []
27
-
28
- /** @type {{ dataReceived: Big, dataSent: Big }} */
29
- this._stats = {
30
- dataReceived: Big(0),
31
- dataSent: Big(0)
32
- }
33
-
34
- this._frequencyLastTime = Date.now()
35
- this._frequencyAccumulators = {}
36
-
37
- /** @type {{ dataReceived: IMovingAverage[], dataSent: IMovingAverage[] }} */
38
- this._movingAverages = {}
39
-
40
- this._update = this._update.bind(this)
41
-
42
- const intervals = this._options.movingAverageIntervals
43
-
44
- for (let i = 0; i < initialCounters.length; i++) {
45
- const key = initialCounters[i]
46
- this._stats[key] = Big(0)
47
- this._movingAverages[key] = {}
48
- for (let k = 0; k < intervals.length; k++) {
49
- const interval = intervals[k]
50
- const ma = this._movingAverages[key][interval] = MovingAverage(interval)
51
- ma.push(this._frequencyLastTime, 0)
52
- }
53
- }
54
- }
55
-
56
- /**
57
- * Initializes the internal timer if there are items in the queue. This
58
- * should only need to be called if `Stats.stop` was previously called, as
59
- * `Stats.push` will also start the processing.
60
- *
61
- * @returns {void}
62
- */
63
- start () {
64
- if (this._queue.length) {
65
- this._resetComputeTimeout()
66
- }
67
- }
68
-
69
- /**
70
- * Stops processing and computing of stats by clearing the internal
71
- * timer.
72
- *
73
- * @returns {void}
74
- */
75
- stop () {
76
- if (this._timeout) {
77
- this._timeout.clear()
78
- this._timeout = null
79
- }
80
- }
81
-
82
- /**
83
- * Returns a clone of the current stats.
84
- */
85
- get snapshot () {
86
- return Object.assign({}, this._stats)
87
- }
88
-
89
- /**
90
- * Returns a clone of the internal movingAverages
91
- */
92
- get movingAverages () {
93
- return Object.assign({}, this._movingAverages)
94
- }
95
-
96
- /**
97
- * Returns a plain JSON object of the stats
98
- *
99
- * @returns {*}
100
- */
101
- toJSON () {
102
- const snapshot = this.snapshot
103
- const movingAverages = this.movingAverages
104
- const data = {
105
- dataReceived: snapshot.dataReceived.toString(),
106
- dataSent: snapshot.dataSent.toString(),
107
- movingAverages: {}
108
- }
109
-
110
- const counters = Object.keys(movingAverages)
111
- for (const key of counters) {
112
- data.movingAverages[key] = {}
113
- for (const interval of Object.keys(movingAverages[key])) {
114
- data.movingAverages[key][interval] = movingAverages[key][interval].movingAverage()
115
- }
116
- }
117
-
118
- return data
119
- }
120
-
121
- /**
122
- * Pushes the given operation data to the queue, along with the
123
- * current Timestamp, then resets the update timer.
124
- *
125
- * @param {string} counter
126
- * @param {number} inc
127
- * @returns {void}
128
- */
129
- push (counter, inc) {
130
- this._queue.push([counter, inc, Date.now()])
131
- this._resetComputeTimeout()
132
- }
133
-
134
- /**
135
- * Resets the timeout for triggering updates.
136
- *
137
- * @private
138
- * @returns {void}
139
- */
140
- _resetComputeTimeout () {
141
- this._timeout = retimer(this._update, this._nextTimeout())
142
- }
143
-
144
- /**
145
- * Calculates and returns the timeout for the next update based on
146
- * the urgency of the update.
147
- *
148
- * @private
149
- * @returns {number}
150
- */
151
- _nextTimeout () {
152
- // calculate the need for an update, depending on the queue length
153
- const urgency = this._queue.length / this._options.computeThrottleMaxQueueSize
154
- const timeout = Math.max(this._options.computeThrottleTimeout * (1 - urgency), 0)
155
- return timeout
156
- }
157
-
158
- /**
159
- * If there are items in the queue, they will will be processed and
160
- * the frequency for all items will be updated based on the Timestamp
161
- * of the last item in the queue. The `update` event will also be emitted
162
- * with the latest stats.
163
- *
164
- * If there are no items in the queue, no action is taken.
165
- *
166
- * @private
167
- * @returns {void}
168
- */
169
- _update () {
170
- this._timeout = null
171
- if (this._queue.length) {
172
- let last
173
- for (last of this._queue) {
174
- this._applyOp(last)
175
- }
176
- this._queue = []
177
-
178
- this._updateFrequency(last[2]) // contains timestamp of last op
179
-
180
- this.emit('update', this._stats)
181
- }
182
- }
183
-
184
- /**
185
- * For each key in the stats, the frequency and moving averages
186
- * will be updated via Stats._updateFrequencyFor based on the time
187
- * difference between calls to this method.
188
- *
189
- * @private
190
- * @param {Timestamp} latestTime
191
- * @returns {void}
192
- */
193
- _updateFrequency (latestTime) {
194
- const timeDiff = latestTime - this._frequencyLastTime
195
-
196
- Object.keys(this._stats).forEach((key) => {
197
- this._updateFrequencyFor(key, timeDiff, latestTime)
198
- })
199
-
200
- this._frequencyLastTime = latestTime
201
- }
202
-
203
- /**
204
- * Updates the `movingAverages` for the given `key` and also
205
- * resets the `frequencyAccumulator` for the `key`.
206
- *
207
- * @private
208
- * @param {string} key
209
- * @param {number} timeDiffMS - Time in milliseconds
210
- * @param {Timestamp} latestTime - Time in ticks
211
- * @returns {void}
212
- */
213
- _updateFrequencyFor (key, timeDiffMS, latestTime) {
214
- const count = this._frequencyAccumulators[key] || 0
215
- this._frequencyAccumulators[key] = 0
216
- // if `timeDiff` is zero, `hz` becomes Infinity, so we fallback to 1ms
217
- const safeTimeDiff = timeDiffMS || 1
218
- const hz = (count / safeTimeDiff) * 1000
219
-
220
- let movingAverages = this._movingAverages[key]
221
- if (!movingAverages) {
222
- movingAverages = this._movingAverages[key] = {}
223
- }
224
-
225
- const intervals = this._options.movingAverageIntervals
226
-
227
- for (let i = 0; i < intervals.length; i++) {
228
- const movingAverageInterval = intervals[i]
229
- let movingAverage = movingAverages[movingAverageInterval]
230
- if (!movingAverage) {
231
- movingAverage = movingAverages[movingAverageInterval] = MovingAverage(movingAverageInterval)
232
- }
233
- movingAverage.push(latestTime, hz)
234
- }
235
- }
236
-
237
- /**
238
- * For the given operation, `op`, the stats and `frequencyAccumulator`
239
- * will be updated or initialized if they don't already exist.
240
- *
241
- * @private
242
- * @param {{string, number}[]} op
243
- * @throws {InvalidNumber}
244
- * @returns {void}
245
- */
246
- _applyOp (op) {
247
- const key = op[0]
248
- const inc = op[1]
249
-
250
- if (typeof inc !== 'number') {
251
- throw new Error(`invalid increment number: ${inc}`)
252
- }
253
-
254
- let n
255
-
256
- if (!Object.prototype.hasOwnProperty.call(this._stats, key)) {
257
- n = this._stats[key] = Big(0)
258
- } else {
259
- n = this._stats[key]
260
- }
261
- this._stats[key] = n.plus(inc)
262
-
263
- if (!this._frequencyAccumulators[key]) {
264
- this._frequencyAccumulators[key] = 0
265
- }
266
- this._frequencyAccumulators[key] += inc
267
- }
268
- }
269
-
270
- module.exports = Stats
@@ -1,94 +0,0 @@
1
- 'use strict'
2
-
3
- /**
4
- * @template K
5
- * @template V
6
- */
7
- class TrackedMap extends Map {
8
- /**
9
- * @param {object} options
10
- * @param {string} options.system
11
- * @param {string} options.component
12
- * @param {string} options.metric
13
- * @param {import('.')} options.metrics
14
- */
15
- constructor (options) {
16
- super()
17
-
18
- const { system, component, metric, metrics } = options
19
- this._system = system
20
- this._component = component
21
- this._metric = metric
22
- this._metrics = metrics
23
-
24
- this._metrics.updateComponentMetric({
25
- system: this._system,
26
- component: this._component,
27
- metric: this._metric,
28
- value: this.size
29
- })
30
- }
31
-
32
- /**
33
- * @param {K} key
34
- * @param {V} value
35
- */
36
- set (key, value) {
37
- super.set(key, value)
38
- this._metrics.updateComponentMetric({
39
- system: this._system,
40
- component: this._component,
41
- metric: this._metric,
42
- value: this.size
43
- })
44
- return this
45
- }
46
-
47
- /**
48
- * @param {K} key
49
- */
50
- delete (key) {
51
- const deleted = super.delete(key)
52
- this._metrics.updateComponentMetric({
53
- system: this._system,
54
- component: this._component,
55
- metric: this._metric,
56
- value: this.size
57
- })
58
- return deleted
59
- }
60
-
61
- clear () {
62
- super.clear()
63
-
64
- this._metrics.updateComponentMetric({
65
- system: this._system,
66
- component: this._component,
67
- metric: this._metric,
68
- value: this.size
69
- })
70
- }
71
- }
72
-
73
- /**
74
- * @template K
75
- * @template V
76
- * @param {object} options
77
- * @param {string} [options.system]
78
- * @param {string} options.component
79
- * @param {string} options.metric
80
- * @param {import('.')} [options.metrics]
81
- * @returns {Map<K, V>}
82
- */
83
- module.exports = ({ system = 'libp2p', component, metric, metrics }) => {
84
- /** @type {Map<K, V>} */
85
- let map
86
-
87
- if (metrics) {
88
- map = new TrackedMap({ system, component, metric, metrics })
89
- } else {
90
- map = new Map()
91
- }
92
-
93
- return map
94
- }