libp2p 0.36.0 → 0.36.2-199395d

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 (398) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -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 +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +25 -52
  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 +16 -8
  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 +16 -35
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +60 -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 +54 -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/{protocol → pb}/index.d.ts +0 -0
  44. package/{src/circuit/protocol → dist/src/circuit/pb}/index.js +7 -9
  45. package/dist/src/circuit/transport.d.ts +18 -78
  46. package/dist/src/circuit/transport.d.ts.map +1 -1
  47. package/dist/src/circuit/transport.js +190 -0
  48. package/dist/src/circuit/transport.js.map +1 -0
  49. package/dist/src/circuit/utils.d.ts +5 -2
  50. package/dist/src/circuit/utils.d.ts.map +1 -1
  51. package/dist/src/circuit/utils.js +11 -0
  52. package/dist/src/circuit/utils.js.map +1 -0
  53. package/dist/src/config.d.ts +3 -85
  54. package/dist/src/config.d.ts.map +1 -1
  55. package/dist/src/config.js +93 -0
  56. package/dist/src/config.js.map +1 -0
  57. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  58. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  59. package/dist/src/connection-manager/auto-dialler.js +105 -0
  60. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  61. package/dist/src/connection-manager/index.d.ts +79 -144
  62. package/dist/src/connection-manager/index.d.ts.map +1 -1
  63. package/dist/src/connection-manager/index.js +295 -0
  64. package/dist/src/connection-manager/index.js.map +1 -0
  65. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  66. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  67. package/dist/src/connection-manager/latency-monitor.js +220 -0
  68. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  69. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  70. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  71. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  72. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  73. package/dist/src/constants.d.ts +22 -10
  74. package/dist/src/constants.d.ts.map +1 -1
  75. package/dist/src/constants.js +27 -0
  76. package/dist/src/constants.js.map +1 -0
  77. package/dist/src/content-routing/index.d.ts +26 -81
  78. package/dist/src/content-routing/index.d.ts.map +1 -1
  79. package/dist/src/content-routing/index.js +99 -0
  80. package/dist/src/content-routing/index.js.map +1 -0
  81. package/dist/src/content-routing/utils.d.ts +6 -49
  82. package/dist/src/content-routing/utils.d.ts.map +1 -1
  83. package/dist/src/content-routing/utils.js +42 -0
  84. package/dist/src/content-routing/utils.js.map +1 -0
  85. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  86. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  87. package/dist/src/dht/dht-content-routing.js +32 -0
  88. package/dist/src/dht/dht-content-routing.js.map +1 -0
  89. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  90. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  91. package/dist/src/dht/dht-peer-routing.js +26 -0
  92. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  93. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  94. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  95. package/dist/src/dialer/auto-dialer.js +24 -0
  96. package/dist/src/dialer/auto-dialer.js.map +1 -0
  97. package/dist/src/dialer/dial-request.d.ts +18 -46
  98. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  99. package/dist/src/dialer/dial-request.js +83 -0
  100. package/dist/src/dialer/dial-request.js.map +1 -0
  101. package/dist/src/dialer/index.d.ts +41 -148
  102. package/dist/src/dialer/index.d.ts.map +1 -1
  103. package/dist/src/dialer/index.js +281 -0
  104. package/dist/src/dialer/index.js.map +1 -0
  105. package/dist/src/errors.d.ts +68 -63
  106. package/dist/src/errors.d.ts.map +1 -1
  107. package/dist/src/errors.js +73 -0
  108. package/dist/src/errors.js.map +1 -0
  109. package/dist/src/fetch/constants.d.ts +1 -1
  110. package/dist/src/fetch/constants.d.ts.map +1 -1
  111. package/dist/src/fetch/constants.js +3 -0
  112. package/dist/src/fetch/constants.js.map +1 -0
  113. package/dist/src/fetch/index.d.ts +30 -49
  114. package/dist/src/fetch/index.d.ts.map +1 -1
  115. package/dist/src/fetch/index.js +130 -0
  116. package/dist/src/fetch/index.js.map +1 -0
  117. package/dist/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  118. package/{src/fetch → dist/src/fetch/pb}/proto.js +7 -9
  119. package/dist/src/get-peer.d.ts +4 -11
  120. package/dist/src/get-peer.d.ts.map +1 -1
  121. package/dist/src/get-peer.js +43 -0
  122. package/dist/src/get-peer.js.map +1 -0
  123. package/dist/src/identify/consts.d.ts +9 -9
  124. package/dist/src/identify/consts.d.ts.map +1 -1
  125. package/dist/src/identify/consts.js +11 -0
  126. package/dist/src/identify/consts.js.map +1 -0
  127. package/dist/src/identify/index.d.ts +40 -96
  128. package/dist/src/identify/index.d.ts.map +1 -1
  129. package/dist/src/identify/index.js +322 -0
  130. package/dist/src/identify/index.js.map +1 -0
  131. package/{src/identify → dist/src/identify/pb}/message.d.ts +20 -5
  132. package/{src/identify → dist/src/identify/pb}/message.js +83 -42
  133. package/dist/src/index.d.ts +157 -583
  134. package/dist/src/index.d.ts.map +1 -1
  135. package/dist/src/index.js +9 -0
  136. package/dist/src/index.js.map +1 -0
  137. package/dist/src/insecure/index.d.ts +9 -0
  138. package/dist/src/insecure/index.d.ts.map +1 -0
  139. package/dist/src/insecure/index.js +78 -0
  140. package/dist/src/insecure/index.js.map +1 -0
  141. package/dist/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  142. package/{src/insecure → dist/src/insecure/pb}/proto.js +39 -22
  143. package/dist/src/keychain/cms.d.ts +6 -14
  144. package/dist/src/keychain/cms.d.ts.map +1 -1
  145. package/dist/src/keychain/cms.js +129 -0
  146. package/dist/src/keychain/cms.js.map +1 -0
  147. package/dist/src/keychain/index.d.ts +62 -82
  148. package/dist/src/keychain/index.d.ts.map +1 -1
  149. package/dist/src/keychain/index.js +493 -0
  150. package/dist/src/keychain/index.js.map +1 -0
  151. package/dist/src/keychain/util.d.ts +3 -6
  152. package/dist/src/keychain/util.d.ts.map +1 -1
  153. package/dist/src/keychain/util.js +79 -0
  154. package/dist/src/keychain/util.js.map +1 -0
  155. package/dist/src/libp2p.d.ts +75 -0
  156. package/dist/src/libp2p.d.ts.map +1 -0
  157. package/dist/src/libp2p.js +368 -0
  158. package/dist/src/libp2p.js.map +1 -0
  159. package/dist/src/metrics/index.d.ts +47 -104
  160. package/dist/src/metrics/index.d.ts.map +1 -1
  161. package/dist/src/metrics/index.js +231 -0
  162. package/dist/src/metrics/index.js.map +1 -0
  163. package/dist/src/metrics/moving-average.d.ts +14 -0
  164. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  165. package/dist/src/metrics/moving-average.js +40 -0
  166. package/dist/src/metrics/moving-average.js.map +1 -0
  167. package/dist/src/metrics/stats.d.ts +45 -93
  168. package/dist/src/metrics/stats.d.ts.map +1 -1
  169. package/dist/src/metrics/stats.js +183 -0
  170. package/dist/src/metrics/stats.js.map +1 -0
  171. package/dist/src/nat-manager.d.ts +42 -99
  172. package/dist/src/nat-manager.d.ts.map +1 -1
  173. package/dist/src/nat-manager.js +114 -0
  174. package/dist/src/nat-manager.js.map +1 -0
  175. package/dist/src/peer-record-updater.d.ts +15 -0
  176. package/dist/src/peer-record-updater.d.ts.map +1 -0
  177. package/dist/src/peer-record-updater.js +44 -0
  178. package/dist/src/peer-record-updater.js.map +1 -0
  179. package/dist/src/peer-routing.d.ts +39 -84
  180. package/dist/src/peer-routing.d.ts.map +1 -1
  181. package/dist/src/peer-routing.js +108 -0
  182. package/dist/src/peer-routing.js.map +1 -0
  183. package/dist/src/ping/constants.d.ts +4 -4
  184. package/dist/src/ping/constants.d.ts.map +1 -1
  185. package/dist/src/ping/constants.js +5 -0
  186. package/dist/src/ping/constants.js.map +1 -0
  187. package/dist/src/ping/index.d.ts +26 -33
  188. package/dist/src/ping/index.d.ts.map +1 -1
  189. package/dist/src/ping/index.js +56 -0
  190. package/dist/src/ping/index.js.map +1 -0
  191. package/dist/src/pnet/crypto.d.ts +15 -5
  192. package/dist/src/pnet/crypto.d.ts.map +1 -1
  193. package/dist/src/pnet/crypto.js +60 -0
  194. package/dist/src/pnet/crypto.js.map +1 -0
  195. package/dist/src/pnet/errors.d.ts +5 -5
  196. package/dist/src/pnet/errors.d.ts.map +1 -1
  197. package/dist/src/pnet/errors.js +6 -0
  198. package/dist/src/pnet/errors.js.map +1 -0
  199. package/dist/src/pnet/index.d.ts +11 -20
  200. package/dist/src/pnet/index.d.ts.map +1 -1
  201. package/dist/src/pnet/index.js +66 -0
  202. package/dist/src/pnet/index.js.map +1 -0
  203. package/dist/src/pnet/key-generator.d.ts +3 -7
  204. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  205. package/dist/src/pnet/key-generator.js +25 -0
  206. package/dist/src/pnet/key-generator.js.map +1 -0
  207. package/dist/src/registrar.d.ts +27 -65
  208. package/dist/src/registrar.d.ts.map +1 -1
  209. package/dist/src/registrar.js +159 -0
  210. package/dist/src/registrar.js.map +1 -0
  211. package/dist/src/transport-manager.d.ts +34 -82
  212. package/dist/src/transport-manager.d.ts.map +1 -1
  213. package/dist/src/transport-manager.js +223 -0
  214. package/dist/src/transport-manager.js.map +1 -0
  215. package/dist/src/upgrader.d.ts +49 -129
  216. package/dist/src/upgrader.d.ts.map +1 -1
  217. package/dist/src/upgrader.js +402 -0
  218. package/dist/src/upgrader.js.map +1 -0
  219. package/dist/src/version.d.ts +3 -0
  220. package/dist/src/version.d.ts.map +1 -0
  221. package/dist/src/version.js +3 -0
  222. package/dist/src/version.js.map +1 -0
  223. package/package.json +145 -197
  224. package/src/address-manager/index.ts +129 -0
  225. package/src/circuit/README.md +16 -11
  226. package/src/circuit/auto-relay.ts +284 -0
  227. package/src/circuit/circuit/hop.ts +211 -0
  228. package/src/circuit/circuit/stop.ts +78 -0
  229. package/src/circuit/circuit/stream-handler.ts +87 -0
  230. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  231. package/src/circuit/constants.ts +31 -0
  232. package/src/circuit/index.ts +120 -0
  233. package/src/circuit/{listener.js → listener.ts} +21 -27
  234. package/src/circuit/multicodec.ts +2 -0
  235. package/src/circuit/{protocol → pb}/index.d.ts +0 -0
  236. package/src/circuit/pb/index.js +528 -0
  237. package/src/circuit/{protocol → pb}/index.proto +0 -0
  238. package/src/circuit/transport.ts +216 -0
  239. package/src/circuit/utils.ts +12 -0
  240. package/src/config.ts +101 -0
  241. package/src/connection-manager/auto-dialler.ts +154 -0
  242. package/src/connection-manager/index.ts +422 -0
  243. package/src/connection-manager/latency-monitor.ts +319 -0
  244. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  245. package/src/constants.ts +31 -0
  246. package/src/content-routing/index.ts +143 -0
  247. package/src/content-routing/utils.ts +54 -0
  248. package/src/dht/dht-content-routing.ts +43 -0
  249. package/src/dht/dht-peer-routing.ts +35 -0
  250. package/src/dialer/auto-dialer.ts +40 -0
  251. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  252. package/src/dialer/index.ts +374 -0
  253. package/src/errors.ts +71 -0
  254. package/src/fetch/README.md +1 -1
  255. package/src/fetch/constants.ts +3 -0
  256. package/src/fetch/{index.js → index.ts} +79 -70
  257. package/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  258. package/src/fetch/pb/proto.js +331 -0
  259. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  260. package/src/get-peer.ts +57 -0
  261. package/src/identify/consts.ts +13 -0
  262. package/src/identify/index.ts +445 -0
  263. package/{dist/src/identify → src/identify/pb}/message.d.ts +20 -5
  264. package/src/identify/pb/message.js +369 -0
  265. package/src/identify/{message.proto → pb/message.proto} +0 -0
  266. package/src/index.ts +234 -0
  267. package/src/insecure/index.ts +97 -0
  268. package/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  269. package/src/insecure/pb/proto.js +388 -0
  270. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  271. package/src/keychain/{cms.js → cms.ts} +62 -58
  272. package/src/keychain/index.ts +588 -0
  273. package/src/keychain/{util.js → util.ts} +7 -17
  274. package/src/libp2p.ts +501 -0
  275. package/src/metrics/index.ts +310 -0
  276. package/src/metrics/moving-average.ts +53 -0
  277. package/src/metrics/stats.ts +243 -0
  278. package/src/nat-manager.ts +194 -0
  279. package/src/peer-record-updater.ts +55 -0
  280. package/src/peer-routing.ts +185 -0
  281. package/src/ping/README.md +1 -1
  282. package/src/ping/constants.ts +5 -0
  283. package/src/ping/index.ts +83 -0
  284. package/src/pnet/README.md +2 -2
  285. package/src/pnet/crypto.ts +67 -0
  286. package/src/pnet/errors.ts +5 -0
  287. package/src/pnet/index.ts +95 -0
  288. package/src/pnet/key-generator.ts +28 -0
  289. package/src/registrar.ts +205 -0
  290. package/src/transport-manager.ts +279 -0
  291. package/src/upgrader.ts +499 -0
  292. package/src/version.ts +3 -0
  293. package/dist/index.min.js +0 -55
  294. package/dist/src/insecure/plaintext.d.ts +0 -12
  295. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  296. package/dist/src/metrics/old-peers.d.ts +0 -3
  297. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  298. package/dist/src/metrics/tracked-map.d.ts +0 -8
  299. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  300. package/dist/src/peer-store/address-book.d.ts +0 -67
  301. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  302. package/dist/src/peer-store/index.d.ts +0 -58
  303. package/dist/src/peer-store/index.d.ts.map +0 -1
  304. package/dist/src/peer-store/key-book.d.ts +0 -40
  305. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  306. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  307. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  308. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  309. package/dist/src/peer-store/proto-book.d.ts +0 -43
  310. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  311. package/dist/src/peer-store/store.d.ts +0 -73
  312. package/dist/src/peer-store/store.d.ts.map +0 -1
  313. package/dist/src/peer-store/types.d.ts +0 -202
  314. package/dist/src/peer-store/types.d.ts.map +0 -1
  315. package/dist/src/ping/util.d.ts +0 -5
  316. package/dist/src/ping/util.d.ts.map +0 -1
  317. package/dist/src/pubsub-adapter.d.ts +0 -22
  318. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  319. package/dist/src/record/envelope/envelope.d.ts +0 -77
  320. package/dist/src/record/envelope/index.d.ts +0 -80
  321. package/dist/src/record/envelope/index.d.ts.map +0 -1
  322. package/dist/src/record/peer-record/consts.d.ts +0 -4
  323. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  324. package/dist/src/record/peer-record/index.d.ts +0 -60
  325. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  326. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  327. package/dist/src/record/utils.d.ts +0 -12
  328. package/dist/src/record/utils.d.ts.map +0 -1
  329. package/dist/src/types.d.ts +0 -90
  330. package/dist/src/types.d.ts.map +0 -1
  331. package/src/address-manager/index.js +0 -96
  332. package/src/circuit/auto-relay.js +0 -302
  333. package/src/circuit/circuit/hop.js +0 -205
  334. package/src/circuit/circuit/stop.js +0 -81
  335. package/src/circuit/circuit/stream-handler.js +0 -94
  336. package/src/circuit/constants.js +0 -12
  337. package/src/circuit/index.js +0 -102
  338. package/src/circuit/multicodec.js +0 -5
  339. package/src/circuit/transport.js +0 -229
  340. package/src/circuit/utils.js +0 -17
  341. package/src/config.js +0 -114
  342. package/src/connection-manager/auto-dialler.js +0 -132
  343. package/src/connection-manager/index.js +0 -363
  344. package/src/connection-manager/latency-monitor.js +0 -264
  345. package/src/constants.js +0 -18
  346. package/src/content-routing/index.js +0 -163
  347. package/src/content-routing/utils.js +0 -89
  348. package/src/dht/dht-content-routing.js +0 -44
  349. package/src/dht/dht-peer-routing.js +0 -51
  350. package/src/dialer/index.js +0 -376
  351. package/src/errors.js +0 -66
  352. package/src/fetch/constants.js +0 -6
  353. package/src/get-peer.js +0 -49
  354. package/src/identify/consts.js +0 -15
  355. package/src/identify/index.js +0 -384
  356. package/src/index.js +0 -811
  357. package/src/insecure/plaintext.js +0 -95
  358. package/src/keychain/index.js +0 -561
  359. package/src/metrics/index.js +0 -290
  360. package/src/metrics/old-peers.js +0 -16
  361. package/src/metrics/stats.js +0 -270
  362. package/src/metrics/tracked-map.js +0 -94
  363. package/src/nat-manager.js +0 -197
  364. package/src/peer-routing.js +0 -176
  365. package/src/peer-store/README.md +0 -145
  366. package/src/peer-store/address-book.js +0 -382
  367. package/src/peer-store/index.js +0 -121
  368. package/src/peer-store/key-book.js +0 -141
  369. package/src/peer-store/metadata-book.js +0 -250
  370. package/src/peer-store/pb/peer.d.ts +0 -222
  371. package/src/peer-store/pb/peer.js +0 -643
  372. package/src/peer-store/pb/peer.proto +0 -31
  373. package/src/peer-store/proto-book.js +0 -237
  374. package/src/peer-store/store.js +0 -263
  375. package/src/peer-store/types.ts +0 -245
  376. package/src/ping/constants.js +0 -8
  377. package/src/ping/index.js +0 -85
  378. package/src/ping/util.js +0 -18
  379. package/src/pnet/crypto.js +0 -84
  380. package/src/pnet/errors.js +0 -7
  381. package/src/pnet/index.js +0 -86
  382. package/src/pnet/key-generator.js +0 -33
  383. package/src/pubsub-adapter.js +0 -61
  384. package/src/record/README.md +0 -130
  385. package/src/record/envelope/envelope.d.ts +0 -77
  386. package/src/record/envelope/envelope.js +0 -243
  387. package/src/record/envelope/envelope.proto +0 -19
  388. package/src/record/envelope/index.js +0 -183
  389. package/src/record/peer-record/consts.js +0 -14
  390. package/src/record/peer-record/index.js +0 -113
  391. package/src/record/peer-record/peer-record.d.ts +0 -133
  392. package/src/record/peer-record/peer-record.js +0 -367
  393. package/src/record/peer-record/peer-record.proto +0 -18
  394. package/src/record/utils.js +0 -25
  395. package/src/registrar.js +0 -127
  396. package/src/transport-manager.js +0 -269
  397. package/src/types.ts +0 -98
  398. package/src/upgrader.js +0 -492
@@ -1,264 +0,0 @@
1
- // @ts-nocheck
2
- 'use strict'
3
-
4
- /**
5
- * This code is based on `latency-monitor` (https://github.com/mlucool/latency-monitor) by `mlucool` (https://github.com/mlucool), available under Apache License 2.0 (https://github.com/mlucool/latency-monitor/blob/master/LICENSE)
6
- */
7
-
8
- const { EventEmitter } = require('events')
9
- const VisibilityChangeEmitter = require('./visibility-change-emitter')
10
- const debug = require('debug')('latency-monitor:LatencyMonitor')
11
-
12
- /**
13
- * @typedef {Object} SummaryObject
14
- * @property {number} events How many events were called
15
- * @property {number} minMS What was the min time for a cb to be called
16
- * @property {number} maxMS What was the max time for a cb to be called
17
- * @property {number} avgMs What was the average time for a cb to be called
18
- * @property {number} lengthMs How long this interval was in ms
19
- *
20
- * @typedef {Object} LatencyMonitorOptions
21
- * @property {number} [latencyCheckIntervalMs=500] - How often to add a latency check event (ms)
22
- * @property {number} [dataEmitIntervalMs=5000] - How often to summarize latency check events. null or 0 disables event firing
23
- * @property {Function} [asyncTestFn] - What cb-style async function to use
24
- * @property {number} [latencyRandomPercentage=5] - What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
25
- */
26
-
27
- /**
28
- * A class to monitor latency of any async function which works in a browser or node. This works by periodically calling
29
- * the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.
30
- * This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.
31
- *
32
- * @extends {EventEmitter}
33
- *
34
- * The default implementation is an event loop latency monitor. This works by firing periodic events into the event loop
35
- * and timing how long it takes to get back.
36
- *
37
- * @example
38
- * const monitor = new LatencyMonitor();
39
- * monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));
40
- *
41
- * @example
42
- * const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});
43
- * monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));
44
- */
45
- class LatencyMonitor extends EventEmitter {
46
- /**
47
- * @class
48
- * @param {LatencyMonitorOptions} [options]
49
- */
50
- constructor ({ latencyCheckIntervalMs, dataEmitIntervalMs, asyncTestFn, latencyRandomPercentage } = {}) {
51
- super()
52
- const that = this
53
-
54
- // 0 isn't valid here, so its ok to use ||
55
- that.latencyCheckIntervalMs = latencyCheckIntervalMs || 500 // 0.5s
56
- that.latencyRandomPercentage = latencyRandomPercentage || 10
57
- that._latecyCheckMultiply = 2 * (that.latencyRandomPercentage / 100.0) * that.latencyCheckIntervalMs
58
- that._latecyCheckSubtract = that._latecyCheckMultiply / 2
59
-
60
- that.dataEmitIntervalMs = (dataEmitIntervalMs === null || dataEmitIntervalMs === 0)
61
- ? undefined
62
- : dataEmitIntervalMs || 5 * 1000 // 5s
63
- debug('latencyCheckIntervalMs: %s dataEmitIntervalMs: %s',
64
- that.latencyCheckIntervalMs, that.dataEmitIntervalMs)
65
- if (that.dataEmitIntervalMs) {
66
- debug('Expecting ~%s events per summary', that.latencyCheckIntervalMs / that.dataEmitIntervalMs)
67
- } else {
68
- debug('Not emitting summaries')
69
- }
70
-
71
- that.asyncTestFn = asyncTestFn // If there is no asyncFn, we measure latency
72
- }
73
-
74
- start () {
75
- // If process: use high resolution timer
76
- if (globalThis.process && globalThis.process.hrtime) { // eslint-disable-line no-undef
77
- debug('Using process.hrtime for timing')
78
- this.now = globalThis.process.hrtime // eslint-disable-line no-undef
79
- this.getDeltaMS = (startTime) => {
80
- const hrtime = this.now(startTime)
81
- return (hrtime[0] * 1000) + (hrtime[1] / 1000000)
82
- }
83
- // Let's try for a timer that only monotonically increases
84
- } else if (typeof window !== 'undefined' && window.performance && window.performance.now) {
85
- debug('Using performance.now for timing')
86
- this.now = window.performance.now.bind(window.performance)
87
- this.getDeltaMS = (startTime) => Math.round(this.now() - startTime)
88
- } else {
89
- debug('Using Date.now for timing')
90
- this.now = Date.now
91
- this.getDeltaMS = (startTime) => this.now() - startTime
92
- }
93
-
94
- this._latencyData = this._initLatencyData()
95
-
96
- // We check for isBrowser because of browsers set max rates of timeouts when a page is hidden,
97
- // so we fall back to another library
98
- // See: http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs
99
- if (isBrowser()) {
100
- this._visibilityChangeEmitter = new VisibilityChangeEmitter()
101
-
102
- this._visibilityChangeEmitter.on('visibilityChange', (pageInFocus) => {
103
- if (pageInFocus) {
104
- this._startTimers()
105
- } else {
106
- this._emitSummary()
107
- this._stopTimers()
108
- }
109
- })
110
- }
111
-
112
- if (!this._visibilityChangeEmitter || this._visibilityChangeEmitter.isVisible()) {
113
- this._startTimers()
114
- }
115
- }
116
-
117
- stop () {
118
- this._stopTimers()
119
- }
120
-
121
- /**
122
- * Start internal timers
123
- *
124
- * @private
125
- */
126
- _startTimers () {
127
- // Timer already started, ignore this
128
- if (this._checkLatencyID) {
129
- return
130
- }
131
- this._checkLatency()
132
- if (this.dataEmitIntervalMs) {
133
- this._emitIntervalID = setInterval(() => this._emitSummary(), this.dataEmitIntervalMs)
134
- if (typeof this._emitIntervalID.unref === 'function') {
135
- this._emitIntervalID.unref() // Doesn't block exit
136
- }
137
- }
138
- }
139
-
140
- /**
141
- * Stop internal timers
142
- *
143
- * @private
144
- */
145
- _stopTimers () {
146
- if (this._checkLatencyID) {
147
- clearTimeout(this._checkLatencyID)
148
- this._checkLatencyID = undefined
149
- }
150
- if (this._emitIntervalID) {
151
- clearInterval(this._emitIntervalID)
152
- this._emitIntervalID = undefined
153
- }
154
- }
155
-
156
- /**
157
- * Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show
158
- *
159
- * @private
160
- */
161
- _emitSummary () {
162
- const summary = this.getSummary()
163
- if (summary.events > 0) {
164
- this.emit('data', summary)
165
- }
166
- }
167
-
168
- /**
169
- * Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,
170
- * it will not count for this time period
171
- *
172
- * @returns {SummaryObject}
173
- */
174
- getSummary () {
175
- // We might want to adjust for the number of expected events
176
- // Example: first 1 event it comes back, then such a long blocker that the next emit check comes
177
- // Then this fires - looks like no latency!!
178
- const latency = {
179
- events: this._latencyData.events,
180
- minMs: this._latencyData.minMs,
181
- maxMs: this._latencyData.maxMs,
182
- avgMs: this._latencyData.events
183
- ? this._latencyData.totalMs / this._latencyData.events
184
- : Number.POSITIVE_INFINITY,
185
- lengthMs: this.getDeltaMS(this._latencyData.startTime)
186
- }
187
- this._latencyData = this._initLatencyData() // Clear
188
-
189
- debug('Summary: %O', latency)
190
- return latency
191
- }
192
-
193
- /**
194
- * Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,
195
- * it will simply report on event loop latency.
196
- *
197
- * @private
198
- */
199
- _checkLatency () {
200
- const that = this
201
- // Randomness is needed to avoid alignment by accident to regular things in the event loop
202
- const randomness = (Math.random() * that._latecyCheckMultiply) - that._latecyCheckSubtract
203
-
204
- // We use this to ensure that in case some overlap somehow, we don't take the wrong startTime/offset
205
- const localData = {
206
- deltaOffset: Math.ceil(that.latencyCheckIntervalMs + randomness),
207
- startTime: that.now()
208
- }
209
-
210
- const cb = () => {
211
- // We are already stopped, ignore this datapoint
212
- if (!this._checkLatencyID) {
213
- return
214
- }
215
- const deltaMS = that.getDeltaMS(localData.startTime) - localData.deltaOffset
216
- that._checkLatency() // Start again ASAP
217
-
218
- // Add the data point. If this gets complex, refactor it
219
- that._latencyData.events++
220
- that._latencyData.minMs = Math.min(that._latencyData.minMs, deltaMS)
221
- that._latencyData.maxMs = Math.max(that._latencyData.maxMs, deltaMS)
222
- that._latencyData.totalMs += deltaMS
223
- debug('MS: %s Data: %O', deltaMS, that._latencyData)
224
- }
225
- debug('localData: %O', localData)
226
-
227
- this._checkLatencyID = setTimeout(() => {
228
- // This gets rid of including event loop
229
- if (that.asyncTestFn) {
230
- // Clear timing related things
231
- localData.deltaOffset = 0
232
- localData.startTime = that.now()
233
- that.asyncTestFn(cb)
234
- } else {
235
- // setTimeout is not more accurate than 1ms, so this will ensure positive numbers. Add 1 to emitted data to remove.
236
- // This is not the best, but for now it'll be just fine. This isn't meant to be sub ms accurate.
237
- localData.deltaOffset -= 1
238
- // If there is no function to test, we mean check latency which is a special case that is really cb => cb()
239
- // We avoid that for the few extra function all overheads. Also, we want to keep the timers different
240
- cb()
241
- }
242
- }, localData.deltaOffset)
243
-
244
- if (typeof this._checkLatencyID.unref === 'function') {
245
- this._checkLatencyID.unref() // Doesn't block exit
246
- }
247
- }
248
-
249
- _initLatencyData () {
250
- return {
251
- startTime: this.now(),
252
- minMs: Number.POSITIVE_INFINITY,
253
- maxMs: Number.NEGATIVE_INFINITY,
254
- events: 0,
255
- totalMs: 0
256
- }
257
- }
258
- }
259
-
260
- function isBrowser () {
261
- return typeof window !== 'undefined'
262
- }
263
-
264
- module.exports = LatencyMonitor
package/src/constants.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = {
4
- DIAL_TIMEOUT: 30e3, // How long in ms a dial attempt is allowed to take
5
- MAX_PARALLEL_DIALS: 100, // Maximum allowed concurrent dials
6
- MAX_PER_PEER_DIALS: 4, // Allowed parallel dials per DialRequest
7
- MAX_ADDRS_TO_DIAL: 25, // Maximum number of allowed addresses to attempt to dial
8
- METRICS: {
9
- computeThrottleMaxQueueSize: 1000,
10
- computeThrottleTimeout: 2000,
11
- movingAverageIntervals: [
12
- 60 * 1000, // 1 minute
13
- 5 * 60 * 1000, // 5 minutes
14
- 15 * 60 * 1000 // 15 minutes
15
- ],
16
- maxOldPeersRetention: 50
17
- }
18
- }
@@ -1,163 +0,0 @@
1
- 'use strict'
2
-
3
- const errCode = require('err-code')
4
- const { messages, codes } = require('../errors')
5
- const {
6
- storeAddresses,
7
- uniquePeers,
8
- requirePeers,
9
- maybeLimitSource
10
- } = require('./utils')
11
- const drain = require('it-drain')
12
- const merge = require('it-merge')
13
- const { pipe } = require('it-pipe')
14
- const { DHTContentRouting } = require('../dht/dht-content-routing')
15
-
16
- /**
17
- * @typedef {import('peer-id')} PeerId
18
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
19
- * @typedef {import('multiformats/cid').CID} CID
20
- * @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
21
- */
22
-
23
- /**
24
- * @typedef {Object} GetData
25
- * @property {PeerId} from
26
- * @property {Uint8Array} val
27
- */
28
-
29
- class ContentRouting {
30
- /**
31
- * @class
32
- * @param {import('..')} libp2p
33
- */
34
- constructor (libp2p) {
35
- this.libp2p = libp2p
36
- /** @type {ContentRoutingModule[]} */
37
- this.routers = libp2p._modules.contentRouting || []
38
- this.dht = libp2p._dht
39
-
40
- // If we have the dht, add it to the available content routers
41
- if (this.dht && libp2p._config.dht.enabled) {
42
- this.routers.push(new DHTContentRouting(this.dht))
43
- }
44
- }
45
-
46
- /**
47
- * Iterates over all content routers in parallel to find providers of the given key.
48
- *
49
- * @param {CID} key - The CID key of the content to find
50
- * @param {object} [options]
51
- * @param {number} [options.timeout] - How long the query should run
52
- * @param {number} [options.maxNumProviders] - maximum number of providers to find
53
- * @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
54
- */
55
- async * findProviders (key, options = {}) {
56
- if (!this.routers.length) {
57
- throw errCode(new Error('No content this.routers available'), codes.ERR_NO_ROUTERS_AVAILABLE)
58
- }
59
-
60
- yield * pipe(
61
- merge(
62
- ...this.routers.map(router => router.findProviders(key, options))
63
- ),
64
- (source) => storeAddresses(source, this.libp2p.peerStore),
65
- (source) => uniquePeers(source),
66
- (source) => maybeLimitSource(source, options.maxNumProviders),
67
- (source) => requirePeers(source)
68
- )
69
- }
70
-
71
- /**
72
- * Iterates over all content routers in parallel to notify it is
73
- * a provider of the given key.
74
- *
75
- * @param {CID} key - The CID key of the content to find
76
- * @returns {Promise<void>}
77
- */
78
- async provide (key) {
79
- if (!this.routers.length) {
80
- throw errCode(new Error('No content routers available'), codes.ERR_NO_ROUTERS_AVAILABLE)
81
- }
82
-
83
- await Promise.all(this.routers.map((router) => router.provide(key)))
84
- }
85
-
86
- /**
87
- * Store the given key/value pair in the DHT.
88
- *
89
- * @param {Uint8Array} key
90
- * @param {Uint8Array} value
91
- * @param {Object} [options] - put options
92
- * @param {number} [options.minPeers] - minimum number of peers required to successfully put
93
- * @returns {Promise<void>}
94
- */
95
- async put (key, value, options) {
96
- if (!this.libp2p.isStarted() || !this.dht.isStarted) {
97
- throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
98
- }
99
-
100
- await drain(this.dht.put(key, value, options))
101
- }
102
-
103
- /**
104
- * Get the value to the given key.
105
- * Times out after 1 minute by default.
106
- *
107
- * @param {Uint8Array} key
108
- * @param {Object} [options] - get options
109
- * @param {number} [options.timeout] - optional timeout (default: 60000)
110
- * @returns {Promise<GetData>}
111
- */
112
- async get (key, options) {
113
- if (!this.libp2p.isStarted() || !this.dht.isStarted) {
114
- throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
115
- }
116
-
117
- for await (const event of this.dht.get(key, options)) {
118
- if (event.name === 'VALUE') {
119
- return { from: event.peerId, val: event.value }
120
- }
121
- }
122
-
123
- throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
124
- }
125
-
126
- /**
127
- * Get the `n` values to the given key without sorting.
128
- *
129
- * @param {Uint8Array} key
130
- * @param {number} nVals
131
- * @param {Object} [options] - get options
132
- * @param {number} [options.timeout] - optional timeout (default: 60000)
133
- */
134
- async * getMany (key, nVals, options) { // eslint-disable-line require-await
135
- if (!this.libp2p.isStarted() || !this.dht.isStarted) {
136
- throw errCode(new Error(messages.NOT_STARTED_YET), codes.DHT_NOT_STARTED)
137
- }
138
-
139
- if (!nVals) {
140
- return
141
- }
142
-
143
- let gotValues = 0
144
-
145
- for await (const event of this.dht.get(key, options)) {
146
- if (event.name === 'VALUE') {
147
- yield { from: event.peerId, val: event.value }
148
-
149
- gotValues++
150
-
151
- if (gotValues === nVals) {
152
- break
153
- }
154
- }
155
- }
156
-
157
- if (gotValues === 0) {
158
- throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
159
- }
160
- }
161
- }
162
-
163
- module.exports = ContentRouting
@@ -1,89 +0,0 @@
1
- 'use strict'
2
-
3
- const errCode = require('err-code')
4
- const filter = require('it-filter')
5
- const map = require('it-map')
6
- const take = require('it-take')
7
-
8
- /**
9
- * @typedef {import('peer-id')} PeerId
10
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
11
- */
12
-
13
- /**
14
- * Store the multiaddrs from every peer in the passed peer store
15
- *
16
- * @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
17
- * @param {import('../peer-store/types').PeerStore} peerStore
18
- */
19
- async function * storeAddresses (source, peerStore) {
20
- yield * map(source, async (peer) => {
21
- // ensure we have the addresses for a given peer
22
- await peerStore.addressBook.add(peer.id, peer.multiaddrs)
23
-
24
- return peer
25
- })
26
- }
27
-
28
- /**
29
- * Filter peers by unique peer id
30
- *
31
- * @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
32
- */
33
- function uniquePeers (source) {
34
- /** @type Set<string> */
35
- const seen = new Set()
36
-
37
- return filter(source, (peer) => {
38
- // dedupe by peer id
39
- if (seen.has(peer.id.toString())) {
40
- return false
41
- }
42
-
43
- seen.add(peer.id.toString())
44
-
45
- return true
46
- })
47
- }
48
-
49
- /**
50
- * Require at least `min` peers to be yielded from `source`
51
- *
52
- * @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
53
- * @param {number} min
54
- */
55
- async function * requirePeers (source, min = 1) {
56
- let seen = 0
57
-
58
- for await (const peer of source) {
59
- seen++
60
-
61
- yield peer
62
- }
63
-
64
- if (seen < min) {
65
- throw errCode(new Error('not found'), 'NOT_FOUND')
66
- }
67
- }
68
-
69
- /**
70
- * If `max` is passed, only take that number of peers from the source
71
- * otherwise take all the peers
72
- *
73
- * @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
74
- * @param {number} [max]
75
- */
76
- function maybeLimitSource (source, max) {
77
- if (max) {
78
- return take(source, max)
79
- }
80
-
81
- return source
82
- }
83
-
84
- module.exports = {
85
- storeAddresses,
86
- uniquePeers,
87
- requirePeers,
88
- maybeLimitSource
89
- }
@@ -1,44 +0,0 @@
1
- 'use strict'
2
-
3
- const drain = require('it-drain')
4
-
5
- /**
6
- * @typedef {import('peer-id')} PeerId
7
- * @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
8
- * @typedef {import('multiformats/cid').CID} CID
9
- */
10
-
11
- /**
12
- * Wrapper class to convert events into returned values
13
- *
14
- * @implements {ContentRoutingModule}
15
- */
16
- class DHTContentRouting {
17
- /**
18
- * @param {import('libp2p-kad-dht').DHT} dht
19
- */
20
- constructor (dht) {
21
- this._dht = dht
22
- }
23
-
24
- /**
25
- * @param {CID} cid
26
- */
27
- async provide (cid) {
28
- await drain(this._dht.provide(cid))
29
- }
30
-
31
- /**
32
- * @param {CID} cid
33
- * @param {*} options
34
- */
35
- async * findProviders (cid, options) {
36
- for await (const event of this._dht.findProviders(cid, options)) {
37
- if (event.name === 'PROVIDER') {
38
- yield * event.providers
39
- }
40
- }
41
- }
42
- }
43
-
44
- module.exports = { DHTContentRouting }
@@ -1,51 +0,0 @@
1
- 'use strict'
2
-
3
- const errCode = require('err-code')
4
- const { messages, codes } = require('../errors')
5
-
6
- /**
7
- * @typedef {import('peer-id')} PeerId
8
- * @typedef {import('libp2p-interfaces/src/peer-routing/types').PeerRouting} PeerRoutingModule
9
- */
10
-
11
- /**
12
- * Wrapper class to convert events into returned values
13
- *
14
- * @implements {PeerRoutingModule}
15
- */
16
- class DHTPeerRouting {
17
- /**
18
- * @param {import('libp2p-kad-dht').DHT} dht
19
- */
20
- constructor (dht) {
21
- this._dht = dht
22
- }
23
-
24
- /**
25
- * @param {PeerId} peerId
26
- * @param {any} options
27
- */
28
- async findPeer (peerId, options = {}) {
29
- for await (const event of this._dht.findPeer(peerId, options)) {
30
- if (event.name === 'FINAL_PEER') {
31
- return event.peer
32
- }
33
- }
34
-
35
- throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
36
- }
37
-
38
- /**
39
- * @param {Uint8Array} key
40
- * @param {any} options
41
- */
42
- async * getClosestPeers (key, options = {}) {
43
- for await (const event of this._dht.getClosestPeers(key, options)) {
44
- if (event.name === 'PEER_RESPONSE') {
45
- yield * event.closer
46
- }
47
- }
48
- }
49
- }
50
-
51
- module.exports = { DHTPeerRouting }