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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAA;AACpE,+CAA+C;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAU,MAAM,4BAA4B,CAAA;AAC7D,qEAAqE;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAiB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,MAAM,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI1C,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAE/C,MAAM,cAAc,GAAmC;IACrD,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,QAAQ;IACrB,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,CAAC;CACpB,CAAA;AAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAC9C,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AACnD,MAAM,mBAAmB,GAAG,aAAa,CAAA;AA+FzC;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,YAAqC;IAUjF,YAAa,IAA2B;QACtC,KAAK,EAAE,CAAA;QATD,eAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAWnC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;QAE9E,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACvD,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uEAAuE,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChI;QAED,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7B;;;;WAIG;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC3B,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;SACtC,CAAC,CAAA;QAEF;;WAEG;QACH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC5B,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;SACtC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,sBAAsB,EAAE,IAAI,CAAC,YAAY;YACzC,kBAAkB,EAAE,IAAI,CAAC,YAAY;SACtC,CAAC,CAAA;QAEF,IAAI;YACF,sCAAsC;YACtC,eAAe,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;SAClC;QAAC,MAAM,GAAE;QAEV,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAE,UAAsB;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC/E;QAED,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACpF,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/E,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;QAEnB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACvE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAExB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,GAAG,CAAC,SAAS,CAAC,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,uCAAuC;QACvC,MAAM,KAAK,GAAG,EAAE,CAAA;QAChB,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACtD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;aAC/B;SACF;QAED,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,YAAY,CAAE,MAAc,EAAE,KAAa;QACzC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;QAE5C,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBAC3F,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;gBACtD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAA;gBACnF,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBAC9C,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAA;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBAC3C,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;aACnC;oBAAS;gBACR,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;aACjE;SACF;IACH,CAAC;IAED,SAAS,CAAE,GAA4B;QACrC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAE,GAA4B;QAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAEnD,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;SAC9C;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;SAC3E;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;SAC3D;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAA;QACzE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACzF,CAAC;IAED;;OAEG;IACH,YAAY,CAAE,GAA4B;QACxC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,uEAAuE;YACvE,OAAM;SACP;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE7C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;SACzC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YACxD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,iBAAiB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;YAE1F,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;SACxE;IACH,CAAC;IAED,cAAc,CAAE,MAAe;QAC7B,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;SACrD;QAED,IAAI,KAAK,GAAiB,EAAE,CAAA;QAE5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACxB;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,MAAc,EAAE,OAAsB;QAC1D,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAA;YAE/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAA;SAC9B;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC1D,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE7D,IAAI,eAAe,IAAI,IAAI,EAAE;YAC3B,eAAe,GAAG,EAAE,CAAA;YACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;SACzD;QAED,wEAAwE;QACxE,yEAAyE;QACzE,aAAa;QACb,IAAI,iBAAiB,GAAG,KAAK,CAAA;QAE7B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;YAClC,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE;gBAC7B,iBAAiB,GAAG,IAAI,CAAA;aACzB;SACF;QAED,IAAI,CAAC,iBAAiB,EAAE;YACtB,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACjC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAE,MAAc;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;QAEjE,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YACjC,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;QACjC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAE,MAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SAChG;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE5C,8BAA8B;QAC9B,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;SAChF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAE,GAA+B;QAChD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;QAE/B,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC;aACpD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAE,IAAiC,EAAE,KAAa;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9E,IAAI,KAAK,GAAG,KAAK,EAAE;YACjB,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC3E,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;SACjC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACpD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAElG,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,CAAA;YAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YAEpC,IAAI,cAAc,IAAI,IAAI,EAAE;gBAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBAChC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAA;gBACvE,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAA;gBAE1E,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;oBACnD,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;wBACnD,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;6BACxB,KAAK,CAAC,GAAG,CAAC,EAAE;4BACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAChB,CAAC,CAAC,CAAA;wBAEJ,gDAAgD;wBAChD,IAAI,CAAC,YAAY,CAAC,IAAI,WAAW,CAAa,eAAe,EAAE;4BAC7D,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;yBACvB,CAAC,CAAC,CAAA;wBACH,MAAK;qBACN;iBACF;aACF;SACF;IACH,CAAC;CACF"}
@@ -1,18 +1,57 @@
1
- export = LatencyMonitor;
2
1
  /**
3
- * @typedef {Object} SummaryObject
4
- * @property {number} events How many events were called
5
- * @property {number} minMS What was the min time for a cb to be called
6
- * @property {number} maxMS What was the max time for a cb to be called
7
- * @property {number} avgMs What was the average time for a cb to be called
8
- * @property {number} lengthMs How long this interval was in ms
9
- *
10
- * @typedef {Object} LatencyMonitorOptions
11
- * @property {number} [latencyCheckIntervalMs=500] - How often to add a latency check event (ms)
12
- * @property {number} [dataEmitIntervalMs=5000] - How often to summarize latency check events. null or 0 disables event firing
13
- * @property {Function} [asyncTestFn] - What cb-style async function to use
14
- * @property {number} [latencyRandomPercentage=5] - What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
2
+ * 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)
15
3
  */
4
+ import { EventEmitter } from '@libp2p/interfaces/events';
5
+ export interface LatencyMonitorEvents {
6
+ 'data': CustomEvent<SummaryObject>;
7
+ }
8
+ export interface LatencyMonitorInit {
9
+ /**
10
+ * How often to add a latency check event (ms)
11
+ */
12
+ latencyCheckIntervalMs?: number;
13
+ /**
14
+ * How often to summarize latency check events. null or 0 disables event firing
15
+ */
16
+ dataEmitIntervalMs?: number;
17
+ /**
18
+ * What cb-style async function to use
19
+ */
20
+ asyncTestFn?: (cb: () => void) => void;
21
+ /**
22
+ * What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
23
+ */
24
+ latencyRandomPercentage?: number;
25
+ }
26
+ export interface SummaryObject {
27
+ /**
28
+ * How many events were called
29
+ */
30
+ events: number;
31
+ /**
32
+ * What was the min time for a cb to be called
33
+ */
34
+ minMs: number;
35
+ /**
36
+ * What was the max time for a cb to be called
37
+ */
38
+ maxMs: number;
39
+ /**
40
+ * What was the average time for a cb to be called
41
+ */
42
+ avgMs: number;
43
+ /**
44
+ * How long this interval was in ms
45
+ */
46
+ lengthMs: number;
47
+ }
48
+ interface LatencyData {
49
+ startTime: number;
50
+ events: number;
51
+ minMs: number;
52
+ maxMs: number;
53
+ totalMs: number;
54
+ }
16
55
  /**
17
56
  * A class to monitor latency of any async function which works in a browser or node. This works by periodically calling
18
57
  * the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.
@@ -31,115 +70,51 @@ export = LatencyMonitor;
31
70
  * const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});
32
71
  * monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));
33
72
  */
34
- declare class LatencyMonitor extends EventEmitter {
35
- /**
36
- * @class
37
- * @param {LatencyMonitorOptions} [options]
38
- */
39
- constructor({ latencyCheckIntervalMs, dataEmitIntervalMs, asyncTestFn, latencyRandomPercentage }?: LatencyMonitorOptions | undefined);
40
- latencyCheckIntervalMs: number;
41
- latencyRandomPercentage: number;
42
- _latecyCheckMultiply: number;
43
- _latecyCheckSubtract: number;
44
- dataEmitIntervalMs: number | undefined;
45
- asyncTestFn: Function | undefined;
73
+ export declare class LatencyMonitor extends EventEmitter<LatencyMonitorEvents> {
74
+ private readonly latencyCheckIntervalMs;
75
+ private readonly latencyRandomPercentage;
76
+ private readonly latencyCheckMultiply;
77
+ private readonly latencyCheckSubtract;
78
+ private readonly dataEmitIntervalMs?;
79
+ private readonly asyncTestFn?;
80
+ private readonly now;
81
+ private readonly getDeltaMS;
82
+ private visibilityChangeEmitter?;
83
+ private latencyData;
84
+ private checkLatencyID?;
85
+ private emitIntervalID?;
86
+ constructor(init?: LatencyMonitorInit);
46
87
  start(): void;
47
- now: (() => number) | NodeJS.HRTime | undefined;
48
- getDeltaMS: ((startTime: any) => number) | undefined;
49
- _latencyData: {
50
- startTime: number | [number, number];
51
- minMs: number;
52
- maxMs: number;
53
- events: number;
54
- totalMs: number;
55
- } | undefined;
56
- _visibilityChangeEmitter: VisibilityChangeEmitter | undefined;
57
88
  stop(): void;
58
89
  /**
59
90
  * Start internal timers
60
91
  *
61
92
  * @private
62
93
  */
63
- private _startTimers;
64
- _emitIntervalID: NodeJS.Timer | undefined;
94
+ _startTimers(): void;
65
95
  /**
66
96
  * Stop internal timers
67
97
  *
68
98
  * @private
69
99
  */
70
- private _stopTimers;
71
- _checkLatencyID: NodeJS.Timeout | undefined;
100
+ _stopTimers(): void;
72
101
  /**
73
102
  * Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show
74
103
  *
75
104
  * @private
76
105
  */
77
- private _emitSummary;
106
+ _emitSummary(): void;
78
107
  /**
79
108
  * Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,
80
109
  * it will not count for this time period
81
- *
82
- * @returns {SummaryObject}
83
110
  */
84
111
  getSummary(): SummaryObject;
85
112
  /**
86
113
  * Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,
87
114
  * it will simply report on event loop latency.
88
- *
89
- * @private
90
115
  */
91
- private _checkLatency;
92
- _initLatencyData(): {
93
- startTime: number | [number, number];
94
- minMs: number;
95
- maxMs: number;
96
- events: number;
97
- totalMs: number;
98
- };
99
- }
100
- declare namespace LatencyMonitor {
101
- export { SummaryObject, LatencyMonitorOptions };
116
+ checkLatency(): void;
117
+ initLatencyData(): LatencyData;
102
118
  }
103
- import { EventEmitter } from "events";
104
- import VisibilityChangeEmitter = require("./visibility-change-emitter");
105
- type SummaryObject = {
106
- /**
107
- * How many events were called
108
- */
109
- events: number;
110
- /**
111
- * What was the min time for a cb to be called
112
- */
113
- minMS: number;
114
- /**
115
- * What was the max time for a cb to be called
116
- */
117
- maxMS: number;
118
- /**
119
- * What was the average time for a cb to be called
120
- */
121
- avgMs: number;
122
- /**
123
- * How long this interval was in ms
124
- */
125
- lengthMs: number;
126
- };
127
- type LatencyMonitorOptions = {
128
- /**
129
- * - How often to add a latency check event (ms)
130
- */
131
- latencyCheckIntervalMs?: number | undefined;
132
- /**
133
- * - How often to summarize latency check events. null or 0 disables event firing
134
- */
135
- dataEmitIntervalMs?: number | undefined;
136
- /**
137
- * - What cb-style async function to use
138
- */
139
- asyncTestFn?: Function | undefined;
140
- /**
141
- * - What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
142
- */
143
- latencyRandomPercentage?: number | undefined;
144
- };
119
+ export {};
145
120
  //# sourceMappingURL=latency-monitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"latency-monitor.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/latency-monitor.js"],"names":[],"mappings":";AAWA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;IACE;;;OAGG;IACH,sIAsBC;IAjBC,+BAA2D;IAC3D,gCAA4D;IAC5D,6BAAoG;IACpG,6BAAyD;IAEzD,uCAEkC;IASlC,kCAA8B;IAGhC,cAyCC;IArCG,gDAAoC;IACpC,qDAGC;IAYH;;;;;;kBAA2C;IAMzC,8DAA6D;IAiBjE,aAEC;IAED;;;;OAIG;IACH,qBAYC;IALG,0CAAsF;IAO1F;;;;OAIG;IACH,oBASC;IANG,4CAAgC;IAQpC;;;;OAIG;IACH,qBAKC;IAED;;;;;OAKG;IACH,cAFa,aAAa,CAmBzB;IAED;;;;;OAKG;IACH,sBAgDC;IAED;;;;;;MAQC;CACF;;;;;;;;;;YApPa,MAAM;;;;WACN,MAAM;;;;WACN,MAAM;;;;WACN,MAAM;;;;cACN,MAAM"}
1
+ {"version":3,"file":"latency-monitor.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/latency-monitor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAMrE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAEtC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA0B;IAEvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,uBAAuB,CAAC,CAAyB;IACzD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAE1B,IAAI,GAAE,kBAAuB;IA8C1C,KAAK;IAwBL,IAAI;IAIJ;;;;OAIG;IACH,YAAY;IAgBZ;;;;OAIG;IACH,WAAW;IAWX;;;;OAIG;IACH,YAAY;IASZ;;;OAGG;IACH,UAAU,IAAK,aAAa;IAmB5B;;;OAGG;IACH,YAAY;IAiDZ,eAAe,IAAK,WAAW;CAShC"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * 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)
3
+ */
4
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
5
+ import { VisibilityChangeEmitter } from './visibility-change-emitter.js';
6
+ import { logger } from '@libp2p/logger';
7
+ const log = logger('libp2p:connection-manager:latency-monitor');
8
+ /**
9
+ * A class to monitor latency of any async function which works in a browser or node. This works by periodically calling
10
+ * the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.
11
+ * This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.
12
+ *
13
+ * @extends {EventEmitter}
14
+ *
15
+ * The default implementation is an event loop latency monitor. This works by firing periodic events into the event loop
16
+ * and timing how long it takes to get back.
17
+ *
18
+ * @example
19
+ * const monitor = new LatencyMonitor();
20
+ * monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));
21
+ *
22
+ * @example
23
+ * const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});
24
+ * monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));
25
+ */
26
+ export class LatencyMonitor extends EventEmitter {
27
+ constructor(init = {}) {
28
+ super();
29
+ const { latencyCheckIntervalMs, dataEmitIntervalMs, asyncTestFn, latencyRandomPercentage } = init;
30
+ // 0 isn't valid here, so its ok to use ||
31
+ this.latencyCheckIntervalMs = latencyCheckIntervalMs ?? 500; // 0.5s
32
+ this.latencyRandomPercentage = latencyRandomPercentage ?? 10;
33
+ this.latencyCheckMultiply = 2 * (this.latencyRandomPercentage / 100.0) * this.latencyCheckIntervalMs;
34
+ this.latencyCheckSubtract = this.latencyCheckMultiply / 2;
35
+ this.dataEmitIntervalMs = (dataEmitIntervalMs === null || dataEmitIntervalMs === 0)
36
+ ? undefined
37
+ : dataEmitIntervalMs ?? 5 * 1000; // 5s
38
+ log('latencyCheckIntervalMs: %s dataEmitIntervalMs: %s', this.latencyCheckIntervalMs, this.dataEmitIntervalMs);
39
+ if (this.dataEmitIntervalMs != null) {
40
+ log('Expecting ~%s events per summary', this.latencyCheckIntervalMs / this.dataEmitIntervalMs);
41
+ }
42
+ else {
43
+ log('Not emitting summaries');
44
+ }
45
+ this.asyncTestFn = asyncTestFn; // If there is no asyncFn, we measure latency
46
+ // If process: use high resolution timer
47
+ if (globalThis.process?.hrtime != null) {
48
+ log('Using process.hrtime for timing');
49
+ this.now = globalThis.process.hrtime; // eslint-disable-line no-undef
50
+ this.getDeltaMS = (startTime) => {
51
+ const hrtime = this.now(startTime);
52
+ return (hrtime[0] * 1000) + (hrtime[1] / 1000000);
53
+ };
54
+ // Let's try for a timer that only monotonically increases
55
+ }
56
+ else if (typeof window !== 'undefined' && window.performance?.now != null) {
57
+ log('Using performance.now for timing');
58
+ this.now = window.performance.now.bind(window.performance);
59
+ this.getDeltaMS = (startTime) => Math.round(this.now() - startTime);
60
+ }
61
+ else {
62
+ log('Using Date.now for timing');
63
+ this.now = Date.now;
64
+ this.getDeltaMS = (startTime) => this.now() - startTime;
65
+ }
66
+ this.latencyData = this.initLatencyData();
67
+ }
68
+ start() {
69
+ // We check for isBrowser because of browsers set max rates of timeouts when a page is hidden,
70
+ // so we fall back to another library
71
+ // See: http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs
72
+ if (isBrowser()) {
73
+ this.visibilityChangeEmitter = new VisibilityChangeEmitter();
74
+ this.visibilityChangeEmitter.addEventListener('visibilityChange', (evt) => {
75
+ const { detail: pageInFocus } = evt;
76
+ if (pageInFocus) {
77
+ this._startTimers();
78
+ }
79
+ else {
80
+ this._emitSummary();
81
+ this._stopTimers();
82
+ }
83
+ });
84
+ }
85
+ if (this.visibilityChangeEmitter?.isVisible() === true) {
86
+ this._startTimers();
87
+ }
88
+ }
89
+ stop() {
90
+ this._stopTimers();
91
+ }
92
+ /**
93
+ * Start internal timers
94
+ *
95
+ * @private
96
+ */
97
+ _startTimers() {
98
+ // Timer already started, ignore this
99
+ if (this.checkLatencyID != null) {
100
+ return;
101
+ }
102
+ this.checkLatency();
103
+ if (this.dataEmitIntervalMs != null) {
104
+ this.emitIntervalID = setInterval(() => this._emitSummary(), this.dataEmitIntervalMs);
105
+ if (typeof this.emitIntervalID.unref === 'function') {
106
+ this.emitIntervalID.unref(); // Doesn't block exit
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Stop internal timers
112
+ *
113
+ * @private
114
+ */
115
+ _stopTimers() {
116
+ if (this.checkLatencyID != null) {
117
+ clearTimeout(this.checkLatencyID);
118
+ this.checkLatencyID = undefined;
119
+ }
120
+ if (this.emitIntervalID != null) {
121
+ clearInterval(this.emitIntervalID);
122
+ this.emitIntervalID = undefined;
123
+ }
124
+ }
125
+ /**
126
+ * Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show
127
+ *
128
+ * @private
129
+ */
130
+ _emitSummary() {
131
+ const summary = this.getSummary();
132
+ if (summary.events > 0) {
133
+ this.dispatchEvent(new CustomEvent('data', {
134
+ detail: summary
135
+ }));
136
+ }
137
+ }
138
+ /**
139
+ * Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,
140
+ * it will not count for this time period
141
+ */
142
+ getSummary() {
143
+ // We might want to adjust for the number of expected events
144
+ // Example: first 1 event it comes back, then such a long blocker that the next emit check comes
145
+ // Then this fires - looks like no latency!!
146
+ const latency = {
147
+ events: this.latencyData.events,
148
+ minMs: this.latencyData.minMs,
149
+ maxMs: this.latencyData.maxMs,
150
+ avgMs: this.latencyData.events > 0
151
+ ? this.latencyData.totalMs / this.latencyData.events
152
+ : Number.POSITIVE_INFINITY,
153
+ lengthMs: this.getDeltaMS(this.latencyData.startTime)
154
+ };
155
+ this.latencyData = this.initLatencyData(); // Clear
156
+ log.trace('Summary: %O', latency);
157
+ return latency;
158
+ }
159
+ /**
160
+ * Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,
161
+ * it will simply report on event loop latency.
162
+ */
163
+ checkLatency() {
164
+ // Randomness is needed to avoid alignment by accident to regular things in the event loop
165
+ const randomness = (Math.random() * this.latencyCheckMultiply) - this.latencyCheckSubtract;
166
+ // We use this to ensure that in case some overlap somehow, we don't take the wrong startTime/offset
167
+ const localData = {
168
+ deltaOffset: Math.ceil(this.latencyCheckIntervalMs + randomness),
169
+ startTime: this.now()
170
+ };
171
+ const cb = () => {
172
+ // We are already stopped, ignore this datapoint
173
+ if (this.checkLatencyID == null) {
174
+ return;
175
+ }
176
+ const deltaMS = this.getDeltaMS(localData.startTime) - localData.deltaOffset;
177
+ this.checkLatency(); // Start again ASAP
178
+ // Add the data point. If this gets complex, refactor it
179
+ this.latencyData.events++;
180
+ this.latencyData.minMs = Math.min(this.latencyData.minMs, deltaMS);
181
+ this.latencyData.maxMs = Math.max(this.latencyData.maxMs, deltaMS);
182
+ this.latencyData.totalMs += deltaMS;
183
+ log.trace('MS: %s Data: %O', deltaMS, this.latencyData);
184
+ };
185
+ log.trace('localData: %O', localData);
186
+ this.checkLatencyID = setTimeout(() => {
187
+ // This gets rid of including event loop
188
+ if (this.asyncTestFn != null) {
189
+ // Clear timing related things
190
+ localData.deltaOffset = 0;
191
+ localData.startTime = this.now();
192
+ this.asyncTestFn(cb);
193
+ }
194
+ else {
195
+ // setTimeout is not more accurate than 1ms, so this will ensure positive numbers. Add 1 to emitted data to remove.
196
+ // This is not the best, but for now it'll be just fine. This isn't meant to be sub ms accurate.
197
+ localData.deltaOffset -= 1;
198
+ // If there is no function to test, we mean check latency which is a special case that is really cb => cb()
199
+ // We avoid that for the few extra function all overheads. Also, we want to keep the timers different
200
+ cb();
201
+ }
202
+ }, localData.deltaOffset);
203
+ if (typeof this.checkLatencyID.unref === 'function') {
204
+ this.checkLatencyID.unref(); // Doesn't block exit
205
+ }
206
+ }
207
+ initLatencyData() {
208
+ return {
209
+ startTime: this.now(),
210
+ minMs: Number.POSITIVE_INFINITY,
211
+ maxMs: Number.NEGATIVE_INFINITY,
212
+ events: 0,
213
+ totalMs: 0
214
+ };
215
+ }
216
+ }
217
+ function isBrowser() {
218
+ return typeof globalThis.window !== 'undefined';
219
+ }
220
+ //# sourceMappingURL=latency-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latency-monitor.js","sourceRoot":"","sources":["../../../src/connection-manager/latency-monitor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- export = VisibilityChangeEmitter;
1
+ /**
2
+ * 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)
3
+ */
4
+ import { EventEmitter } from '@libp2p/interfaces/events';
5
+ interface VisibilityChangeEmitterEvents {
6
+ 'visibilityChange': CustomEvent<boolean>;
7
+ }
2
8
  /**
3
9
  * Listen to page visibility change events (i.e. when the page is focused / blurred) by an event emitter.
4
10
  *
@@ -21,12 +27,9 @@ export = VisibilityChangeEmitter;
21
27
  * // To access the visibility state directly, call:
22
28
  * console.log('Am I focused now? ' + myVisibilityEmitter.isVisible());
23
29
  */
24
- declare class VisibilityChangeEmitter extends EventEmitter {
25
- /**
26
- * Creates a VisibilityChangeEmitter
27
- *
28
- * @class
29
- */
30
+ export declare class VisibilityChangeEmitter extends EventEmitter<VisibilityChangeEmitterEvents> {
31
+ private hidden;
32
+ private visibilityChange;
30
33
  constructor();
31
34
  /**
32
35
  * document.hidden and document.visibilityChange are the two variables we need to check for;
@@ -37,23 +40,19 @@ declare class VisibilityChangeEmitter extends EventEmitter {
37
40
  *
38
41
  * @private
39
42
  */
40
- private _initializeVisibilityVarNames;
41
- _hidden: string | undefined;
42
- _visibilityChange: string | undefined;
43
+ _initializeVisibilityVarNames(): void;
43
44
  /**
44
45
  * Adds an event listener on the document that listens to changes in document.visibilityChange
45
46
  * (or whatever name by which the visibilityChange variable is known in the browser)
46
47
  *
47
48
  * @private
48
49
  */
49
- private _addVisibilityChangeListener;
50
+ _addVisibilityChangeListener(): void;
50
51
  /**
51
52
  * The function returns ```true``` if the page is visible or ```false``` if the page is not visible and
52
53
  * ```undefined``` if the page visibility API is not supported by the browser.
53
- *
54
- * @returns {boolean | void} whether the page is now visible or not (undefined is unknown)
55
54
  */
56
- isVisible(): boolean | void;
55
+ isVisible(): boolean | undefined;
57
56
  /**
58
57
  * The function that is called when document.visibilityChange has changed
59
58
  * It emits an event called visibilityChange and sends the value of document.hidden as a
@@ -61,7 +60,7 @@ declare class VisibilityChangeEmitter extends EventEmitter {
61
60
  *
62
61
  * @private
63
62
  */
64
- private _handleVisibilityChange;
63
+ _handleVisibilityChange(): void;
65
64
  }
66
- import { EventEmitter } from "events";
65
+ export {};
67
66
  //# sourceMappingURL=visibility-change-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visibility-change-emitter.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/visibility-change-emitter.js"],"names":[],"mappings":";AAYA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IACE;;;;OAIG;IACH,cAQC;IAED;;;;;;;;OAQG;IACH,sCAkBC;IAFC,4BAAqB;IACrB,sCAAyC;IAG3C;;;;;OAKG;IACH,qCAQC;IAED;;;;;OAKG;IACH,aAFa,OAAO,GAAG,IAAI,CAQ1B;IAED;;;;;;OAMG;IACH,gCAKC;CACF"}
1
+ {"version":3,"file":"visibility-change-emitter.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/visibility-change-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAKrE,UAAU,6BAA6B;IACrC,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CACzC;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,uBAAwB,SAAQ,YAAY,CAAC,6BAA6B,CAAC;IACtF,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,gBAAgB,CAAQ;;IAchC;;;;;;;;OAQG;IACH,6BAA6B;IAyB7B;;;;;OAKG;IACH,4BAA4B;IAU5B;;;OAGG;IACH,SAAS;IAUT;;;;;;OAMG;IACH,uBAAuB;CAUxB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * 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)
3
+ */
4
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
5
+ import { logger } from '@libp2p/logger';
6
+ const log = logger('libp2p:connection-manager:latency-monitor:visibility-change-emitter');
7
+ /**
8
+ * Listen to page visibility change events (i.e. when the page is focused / blurred) by an event emitter.
9
+ *
10
+ * Warning: This does not work on all browsers, but should work on all modern browsers
11
+ *
12
+ * @example
13
+ *
14
+ * const myVisibilityEmitter = new VisibilityChangeEmitter();
15
+ *
16
+ * myVisibilityEmitter.on('visibilityChange', (pageInFocus) => {
17
+ * if ( pageInFocus ){
18
+ * // Page is in focus
19
+ * console.log('In focus');
20
+ * }
21
+ * else {
22
+ * // Page is blurred
23
+ * console.log('Out of focus');
24
+ * }
25
+ * });
26
+ * // To access the visibility state directly, call:
27
+ * console.log('Am I focused now? ' + myVisibilityEmitter.isVisible());
28
+ */
29
+ export class VisibilityChangeEmitter extends EventEmitter {
30
+ constructor() {
31
+ super();
32
+ this.hidden = 'hidden';
33
+ this.visibilityChange = 'visibilityChange';
34
+ if (globalThis.document != null) {
35
+ this._initializeVisibilityVarNames();
36
+ this._addVisibilityChangeListener();
37
+ }
38
+ }
39
+ /**
40
+ * document.hidden and document.visibilityChange are the two variables we need to check for;
41
+ * Since these variables are named differently in different browsers, this function sets
42
+ * the appropriate name based on the browser being used. Once executed, tha actual names of
43
+ * document.hidden and document.visibilityChange are found in this._hidden and this._visibilityChange
44
+ * respectively
45
+ *
46
+ * @private
47
+ */
48
+ _initializeVisibilityVarNames() {
49
+ let hidden = 'hidden';
50
+ let visibilityChange = 'visibilitychange';
51
+ if (typeof globalThis.document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
52
+ hidden = 'hidden';
53
+ visibilityChange = 'visibilitychange';
54
+ // @ts-expect-error mozHidden is a non-standard field name
55
+ }
56
+ else if (typeof globalThis.document.mozHidden !== 'undefined') {
57
+ hidden = 'mozHidden';
58
+ visibilityChange = 'mozvisibilitychange';
59
+ // @ts-expect-error msHidden is a non-standard field name
60
+ }
61
+ else if (typeof globalThis.document.msHidden !== 'undefined') {
62
+ hidden = 'msHidden';
63
+ visibilityChange = 'msvisibilitychange';
64
+ // @ts-expect-error webkitHidden is a non-standard field name
65
+ }
66
+ else if (typeof globalThis.document.webkitHidden !== 'undefined') {
67
+ hidden = 'webkitHidden';
68
+ visibilityChange = 'webkitvisibilitychange';
69
+ }
70
+ this.hidden = hidden;
71
+ this.visibilityChange = visibilityChange;
72
+ }
73
+ /**
74
+ * Adds an event listener on the document that listens to changes in document.visibilityChange
75
+ * (or whatever name by which the visibilityChange variable is known in the browser)
76
+ *
77
+ * @private
78
+ */
79
+ _addVisibilityChangeListener() {
80
+ // @ts-expect-error cannot index document object with string key
81
+ if (typeof globalThis.document.addEventListener === 'undefined' || typeof document[this.hidden] === 'undefined') {
82
+ log('Checking page visibility requires a browser that supports the Page Visibility API.');
83
+ }
84
+ else {
85
+ // Handle page visibility change
86
+ globalThis.document.addEventListener(this.visibilityChange, this._handleVisibilityChange.bind(this), false);
87
+ }
88
+ }
89
+ /**
90
+ * The function returns ```true``` if the page is visible or ```false``` if the page is not visible and
91
+ * ```undefined``` if the page visibility API is not supported by the browser.
92
+ */
93
+ isVisible() {
94
+ // @ts-expect-error cannot index document object with string key
95
+ if (this.hidden === undefined || document[this.hidden] === undefined) {
96
+ return undefined;
97
+ }
98
+ // @ts-expect-error cannot index document object with string key
99
+ return document[this.hidden] == null;
100
+ }
101
+ /**
102
+ * The function that is called when document.visibilityChange has changed
103
+ * It emits an event called visibilityChange and sends the value of document.hidden as a
104
+ * parameter
105
+ *
106
+ * @private
107
+ */
108
+ _handleVisibilityChange() {
109
+ // @ts-expect-error cannot index document object with string key
110
+ const visible = globalThis.document[this.hidden] === false;
111
+ log(visible ? 'Page Visible' : 'Page Hidden');
112
+ // Emit the event
113
+ this.dispatchEvent(new CustomEvent('visibilityChange', {
114
+ detail: visible
115
+ }));
116
+ }
117
+ }
118
+ //# sourceMappingURL=visibility-change-emitter.js.map