@geekmidas/telescope 10.0.0-alpha.2 → 10.0.0-alpha.21

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 (391) hide show
  1. package/dist/{MetricsAggregator-4SqelGcG.d.cts → MetricsAggregator-BxBLQUPj.d.cts} +3 -6
  2. package/dist/MetricsAggregator-BxBLQUPj.d.cts.map +1 -0
  3. package/dist/{MetricsAggregator-DZrW8ls6.d.mts → MetricsAggregator-j9wmZ0K_.d.mts} +3 -6
  4. package/dist/MetricsAggregator-j9wmZ0K_.d.mts.map +1 -0
  5. package/dist/{Telescope-D4nmwDRA.d.cts → Telescope-BcrWTaar.d.mts} +4 -7
  6. package/dist/Telescope-BcrWTaar.d.mts.map +1 -0
  7. package/dist/{Telescope-Dl6VSfxd.d.mts → Telescope-DnCMZT7V.d.cts} +4 -7
  8. package/dist/Telescope-DnCMZT7V.d.cts.map +1 -0
  9. package/dist/Telescope.cjs +385 -4
  10. package/dist/Telescope.cjs.map +1 -0
  11. package/dist/Telescope.d.cts +1 -3
  12. package/dist/Telescope.d.mts +1 -3
  13. package/dist/Telescope.mjs +384 -4
  14. package/dist/Telescope.mjs.map +1 -0
  15. package/dist/adapters/index.d.cts +2 -2
  16. package/dist/adapters/index.d.mts +2 -2
  17. package/dist/adapters/index.mjs +1 -0
  18. package/dist/adapters/lambda.cjs +9 -10
  19. package/dist/adapters/lambda.cjs.map +1 -1
  20. package/dist/adapters/lambda.d.cts +9 -13
  21. package/dist/adapters/lambda.d.cts.map +1 -1
  22. package/dist/adapters/lambda.d.mts +9 -13
  23. package/dist/adapters/lambda.d.mts.map +1 -1
  24. package/dist/adapters/lambda.mjs +3 -4
  25. package/dist/adapters/lambda.mjs.map +1 -1
  26. package/dist/adapters/middy.cjs +236 -4
  27. package/dist/adapters/middy.cjs.map +1 -0
  28. package/dist/adapters/middy.d.cts +60 -5
  29. package/dist/adapters/middy.d.cts.map +1 -0
  30. package/dist/adapters/middy.d.mts +60 -5
  31. package/dist/adapters/middy.d.mts.map +1 -0
  32. package/dist/adapters/middy.mjs +234 -3
  33. package/dist/adapters/middy.mjs.map +1 -0
  34. package/dist/adapters/types.d.cts +162 -2
  35. package/dist/adapters/types.d.cts.map +1 -0
  36. package/dist/adapters/types.d.mts +162 -2
  37. package/dist/adapters/types.d.mts.map +1 -0
  38. package/dist/adapters/types.mjs +1 -0
  39. package/dist/core.cjs +22 -22
  40. package/dist/core.d.cts +4 -4
  41. package/dist/core.d.mts +4 -4
  42. package/dist/core.mjs +3 -4
  43. package/dist/index.cjs +8 -9
  44. package/dist/index.d.cts +5 -6
  45. package/dist/index.d.mts +5 -6
  46. package/dist/index.mjs +5 -7
  47. package/dist/instrumentation/core.cjs +147 -11
  48. package/dist/instrumentation/core.cjs.map +1 -0
  49. package/dist/instrumentation/core.d.cts +74 -3
  50. package/dist/instrumentation/core.d.cts.map +1 -0
  51. package/dist/instrumentation/core.d.mts +74 -3
  52. package/dist/instrumentation/core.d.mts.map +1 -0
  53. package/dist/instrumentation/core.mjs +137 -2
  54. package/dist/instrumentation/core.mjs.map +1 -0
  55. package/dist/instrumentation/hono.cjs +134 -6
  56. package/dist/instrumentation/hono.cjs.map +1 -0
  57. package/dist/instrumentation/hono.d.cts +67 -2
  58. package/dist/instrumentation/hono.d.cts.map +1 -0
  59. package/dist/instrumentation/hono.d.mts +67 -2
  60. package/dist/instrumentation/hono.d.mts.map +1 -0
  61. package/dist/instrumentation/hono.mjs +130 -3
  62. package/dist/instrumentation/hono.mjs.map +1 -0
  63. package/dist/instrumentation/http.cjs +164 -11
  64. package/dist/instrumentation/http.cjs.map +1 -0
  65. package/dist/instrumentation/http.d.cts +103 -2
  66. package/dist/instrumentation/http.d.cts.map +1 -0
  67. package/dist/instrumentation/http.d.mts +103 -2
  68. package/dist/instrumentation/http.d.mts.map +1 -0
  69. package/dist/instrumentation/http.mjs +154 -2
  70. package/dist/instrumentation/http.mjs.map +1 -0
  71. package/dist/instrumentation/index.cjs +47 -47
  72. package/dist/instrumentation/index.d.cts +9 -9
  73. package/dist/instrumentation/index.d.mts +9 -9
  74. package/dist/instrumentation/index.mjs +8 -9
  75. package/dist/instrumentation/middleware.cjs +162 -6
  76. package/dist/instrumentation/middleware.cjs.map +1 -0
  77. package/dist/instrumentation/middleware.d.cts +70 -2
  78. package/dist/instrumentation/middleware.d.cts.map +1 -0
  79. package/dist/instrumentation/middleware.d.mts +70 -2
  80. package/dist/instrumentation/middleware.d.mts.map +1 -0
  81. package/dist/instrumentation/middleware.mjs +158 -3
  82. package/dist/instrumentation/middleware.mjs.map +1 -0
  83. package/dist/instrumentation/otel.cjs +137 -3
  84. package/dist/instrumentation/otel.cjs.map +1 -0
  85. package/dist/instrumentation/otel.d.cts +97 -2
  86. package/dist/instrumentation/otel.d.cts.map +1 -0
  87. package/dist/instrumentation/otel.d.mts +97 -2
  88. package/dist/instrumentation/otel.d.mts.map +1 -0
  89. package/dist/instrumentation/otel.mjs +136 -3
  90. package/dist/instrumentation/otel.mjs.map +1 -0
  91. package/dist/instrumentation/setup.cjs +100 -4
  92. package/dist/instrumentation/setup.cjs.map +1 -0
  93. package/dist/instrumentation/setup.d.cts +83 -3
  94. package/dist/instrumentation/setup.d.cts.map +1 -0
  95. package/dist/instrumentation/setup.d.mts +83 -3
  96. package/dist/instrumentation/setup.d.mts.map +1 -0
  97. package/dist/instrumentation/setup.mjs +98 -3
  98. package/dist/instrumentation/setup.mjs.map +1 -0
  99. package/dist/instrumentation/tracing.cjs +114 -10
  100. package/dist/instrumentation/tracing.cjs.map +1 -0
  101. package/dist/instrumentation/tracing.d.cts +49 -2
  102. package/dist/instrumentation/tracing.d.cts.map +1 -0
  103. package/dist/instrumentation/tracing.d.mts +49 -2
  104. package/dist/instrumentation/tracing.d.mts.map +1 -0
  105. package/dist/instrumentation/tracing.mjs +105 -2
  106. package/dist/instrumentation/tracing.mjs.map +1 -0
  107. package/dist/logger/console.cjs +18 -12
  108. package/dist/logger/console.cjs.map +1 -1
  109. package/dist/logger/console.d.cts +7 -10
  110. package/dist/logger/console.d.cts.map +1 -1
  111. package/dist/logger/console.d.mts +7 -10
  112. package/dist/logger/console.d.mts.map +1 -1
  113. package/dist/logger/console.mjs +17 -11
  114. package/dist/logger/console.mjs.map +1 -1
  115. package/dist/logger/pino.cjs +6 -5
  116. package/dist/logger/pino.cjs.map +1 -1
  117. package/dist/logger/pino.d.cts +6 -10
  118. package/dist/logger/pino.d.cts.map +1 -1
  119. package/dist/logger/pino.d.mts +6 -10
  120. package/dist/logger/pino.d.mts.map +1 -1
  121. package/dist/logger/pino.mjs +2 -3
  122. package/dist/logger/pino.mjs.map +1 -1
  123. package/dist/metrics/MetricsAggregator.cjs +354 -2
  124. package/dist/metrics/MetricsAggregator.cjs.map +1 -0
  125. package/dist/metrics/MetricsAggregator.d.cts +1 -2
  126. package/dist/metrics/MetricsAggregator.d.mts +1 -2
  127. package/dist/metrics/MetricsAggregator.mjs +353 -2
  128. package/dist/metrics/MetricsAggregator.mjs.map +1 -0
  129. package/dist/metrics/index.cjs +3 -4
  130. package/dist/metrics/index.d.cts +2 -4
  131. package/dist/metrics/index.d.mts +2 -4
  132. package/dist/metrics/index.mjs +2 -4
  133. package/dist/metrics/storage/InMemoryMetricsStorage.cjs +240 -3
  134. package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +1 -0
  135. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +43 -4
  136. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +1 -0
  137. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +43 -4
  138. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +1 -0
  139. package/dist/metrics/storage/InMemoryMetricsStorage.mjs +239 -3
  140. package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +1 -0
  141. package/dist/metrics/storage/MetricsStorage.cjs +0 -1
  142. package/dist/metrics/storage/MetricsStorage.d.cts +56 -3
  143. package/dist/metrics/storage/MetricsStorage.d.cts.map +1 -0
  144. package/dist/metrics/storage/MetricsStorage.d.mts +56 -3
  145. package/dist/metrics/storage/MetricsStorage.d.mts.map +1 -0
  146. package/dist/metrics/storage/MetricsStorage.mjs +1 -1
  147. package/dist/metrics/storage/index.cjs +6 -6
  148. package/dist/metrics/storage/index.d.cts +3 -3
  149. package/dist/metrics/storage/index.d.mts +3 -3
  150. package/dist/metrics/storage/index.mjs +4 -5
  151. package/dist/metrics/storage/types.cjs +34 -2
  152. package/dist/metrics/storage/types.cjs.map +1 -0
  153. package/dist/metrics/storage/types.d.cts +207 -2
  154. package/dist/metrics/storage/types.d.cts.map +1 -0
  155. package/dist/metrics/storage/types.d.mts +207 -2
  156. package/dist/metrics/storage/types.d.mts.map +1 -0
  157. package/dist/metrics/storage/types.mjs +33 -2
  158. package/dist/metrics/storage/types.mjs.map +1 -0
  159. package/dist/otlp/hono.cjs +9 -15
  160. package/dist/otlp/hono.cjs.map +1 -1
  161. package/dist/otlp/hono.d.cts +3 -13
  162. package/dist/otlp/hono.d.cts.map +1 -1
  163. package/dist/otlp/hono.d.mts +3 -13
  164. package/dist/otlp/hono.d.mts.map +1 -1
  165. package/dist/otlp/hono.mjs +5 -11
  166. package/dist/otlp/hono.mjs.map +1 -1
  167. package/dist/otlp/index.cjs +11 -11
  168. package/dist/otlp/index.d.cts +4 -7
  169. package/dist/otlp/index.d.mts +4 -7
  170. package/dist/otlp/index.mjs +4 -5
  171. package/dist/otlp/receiver.cjs +88 -4
  172. package/dist/otlp/receiver.cjs.map +1 -0
  173. package/dist/otlp/receiver.d.cts +59 -7
  174. package/dist/otlp/receiver.d.cts.map +1 -0
  175. package/dist/otlp/receiver.d.mts +59 -7
  176. package/dist/otlp/receiver.d.mts.map +1 -0
  177. package/dist/otlp/receiver.mjs +87 -4
  178. package/dist/otlp/receiver.mjs.map +1 -0
  179. package/dist/otlp/transformer.cjs +214 -5
  180. package/dist/otlp/transformer.cjs.map +1 -0
  181. package/dist/otlp/transformer.d.cts +1 -3
  182. package/dist/otlp/transformer.d.mts +1 -3
  183. package/dist/otlp/transformer.mjs +211 -3
  184. package/dist/otlp/transformer.mjs.map +1 -0
  185. package/dist/otlp/types.cjs +57 -5
  186. package/dist/otlp/types.cjs.map +1 -0
  187. package/dist/otlp/types.d.cts +1 -1
  188. package/dist/otlp/types.d.mts +1 -1
  189. package/dist/otlp/types.mjs +53 -2
  190. package/dist/otlp/types.mjs.map +1 -0
  191. package/dist/redact.cjs +84 -3
  192. package/dist/redact.cjs.map +1 -0
  193. package/dist/redact.d.cts +4 -8
  194. package/dist/redact.d.cts.map +1 -1
  195. package/dist/redact.d.mts +4 -8
  196. package/dist/redact.d.mts.map +1 -1
  197. package/dist/redact.mjs +80 -2
  198. package/dist/redact.mjs.map +1 -0
  199. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
  200. package/dist/server/hono.cjs +24 -33
  201. package/dist/server/hono.cjs.map +1 -1
  202. package/dist/server/hono.d.cts +10 -13
  203. package/dist/server/hono.d.cts.map +1 -1
  204. package/dist/server/hono.d.mts +10 -13
  205. package/dist/server/hono.d.mts.map +1 -1
  206. package/dist/server/hono.mjs +22 -31
  207. package/dist/server/hono.mjs.map +1 -1
  208. package/dist/storage/kysely.cjs +34 -32
  209. package/dist/storage/kysely.cjs.map +1 -1
  210. package/dist/storage/kysely.d.cts +8 -12
  211. package/dist/storage/kysely.d.cts.map +1 -1
  212. package/dist/storage/kysely.d.mts +8 -12
  213. package/dist/storage/kysely.d.mts.map +1 -1
  214. package/dist/storage/kysely.mjs +33 -31
  215. package/dist/storage/kysely.mjs.map +1 -1
  216. package/dist/storage/memory.cjs +122 -2
  217. package/dist/storage/memory.cjs.map +1 -0
  218. package/dist/storage/memory.d.cts +36 -3
  219. package/dist/storage/memory.d.cts.map +1 -0
  220. package/dist/storage/memory.d.mts +36 -3
  221. package/dist/storage/memory.d.mts.map +1 -0
  222. package/dist/storage/memory.mjs +121 -2
  223. package/dist/storage/memory.mjs.map +1 -0
  224. package/dist/{transformer-CTGsaVfV.d.mts → transformer-BBBXCjHP.d.mts} +4 -8
  225. package/dist/transformer-BBBXCjHP.d.mts.map +1 -0
  226. package/dist/{transformer-ICEbxpFf.d.cts → transformer-DlESim6Q.d.cts} +4 -8
  227. package/dist/transformer-DlESim6Q.d.cts.map +1 -0
  228. package/dist/{types-CmOB7CLO.d.cts → types-DVETVdpa.d.cts} +6 -7
  229. package/dist/types-DVETVdpa.d.cts.map +1 -0
  230. package/dist/{types-DBc0q5KD.d.mts → types-DVETVdpa.d.mts} +6 -7
  231. package/dist/types-DVETVdpa.d.mts.map +1 -0
  232. package/dist/{types-B1EIa_cQ.d.mts → types-a9Vistj1.d.cts} +2 -3
  233. package/dist/types-a9Vistj1.d.cts.map +1 -0
  234. package/dist/{types-l7Rlb5Mg.d.cts → types-a9Vistj1.d.mts} +2 -3
  235. package/dist/types-a9Vistj1.d.mts.map +1 -0
  236. package/dist/types.d.cts +1 -1
  237. package/dist/types.d.mts +1 -1
  238. package/dist/types.mjs +1 -0
  239. package/dist/ui-assets.cjs +31 -4
  240. package/dist/ui-assets.cjs.map +1 -0
  241. package/dist/ui-assets.d.cts +4 -6
  242. package/dist/ui-assets.d.cts.map +1 -1
  243. package/dist/ui-assets.d.mts +4 -6
  244. package/dist/ui-assets.d.mts.map +1 -1
  245. package/dist/ui-assets.mjs +28 -2
  246. package/dist/ui-assets.mjs.map +1 -0
  247. package/package.json +39 -37
  248. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +0 -47
  249. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +0 -1
  250. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +0 -247
  251. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +0 -1
  252. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +0 -252
  253. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +0 -1
  254. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +0 -47
  255. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +0 -1
  256. package/dist/MetricsAggregator-4SqelGcG.d.cts.map +0 -1
  257. package/dist/MetricsAggregator-B7lUICdH.cjs +0 -363
  258. package/dist/MetricsAggregator-B7lUICdH.cjs.map +0 -1
  259. package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +0 -1
  260. package/dist/MetricsAggregator-S3DQWNas.mjs +0 -357
  261. package/dist/MetricsAggregator-S3DQWNas.mjs.map +0 -1
  262. package/dist/MetricsStorage-B86e4131.d.cts +0 -60
  263. package/dist/MetricsStorage-B86e4131.d.cts.map +0 -1
  264. package/dist/MetricsStorage-BWyP2_12.d.mts +0 -60
  265. package/dist/MetricsStorage-BWyP2_12.d.mts.map +0 -1
  266. package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
  267. package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
  268. package/dist/Telescope-Cs3fv8jt.cjs +0 -395
  269. package/dist/Telescope-Cs3fv8jt.cjs.map +0 -1
  270. package/dist/Telescope-D4nmwDRA.d.cts.map +0 -1
  271. package/dist/Telescope-Dh5av3FC.mjs +0 -389
  272. package/dist/Telescope-Dh5av3FC.mjs.map +0 -1
  273. package/dist/Telescope-Dl6VSfxd.d.mts.map +0 -1
  274. package/dist/core--quSp5Qr.d.mts +0 -78
  275. package/dist/core--quSp5Qr.d.mts.map +0 -1
  276. package/dist/core-B4Jpia5H.d.cts +0 -78
  277. package/dist/core-B4Jpia5H.d.cts.map +0 -1
  278. package/dist/core-CtVHRJGv.cjs +0 -199
  279. package/dist/core-CtVHRJGv.cjs.map +0 -1
  280. package/dist/core-D6hJ6exL.mjs +0 -139
  281. package/dist/core-D6hJ6exL.mjs.map +0 -1
  282. package/dist/hono--uKQ7Jgi.d.mts +0 -71
  283. package/dist/hono--uKQ7Jgi.d.mts.map +0 -1
  284. package/dist/hono-Bw-ey6CT.mjs +0 -136
  285. package/dist/hono-Bw-ey6CT.mjs.map +0 -1
  286. package/dist/hono-CPHX7FAm.cjs +0 -160
  287. package/dist/hono-CPHX7FAm.cjs.map +0 -1
  288. package/dist/hono-CemCKU87.d.cts +0 -71
  289. package/dist/hono-CemCKU87.d.cts.map +0 -1
  290. package/dist/http-BIvr0YdI.mjs +0 -159
  291. package/dist/http-BIvr0YdI.mjs.map +0 -1
  292. package/dist/http-BiNtg85L.d.mts +0 -107
  293. package/dist/http-BiNtg85L.d.mts.map +0 -1
  294. package/dist/http-BsqmhurZ.cjs +0 -219
  295. package/dist/http-BsqmhurZ.cjs.map +0 -1
  296. package/dist/http-D1oTbfap.d.cts +0 -107
  297. package/dist/http-D1oTbfap.d.cts.map +0 -1
  298. package/dist/index-BL32-cvv.d.cts +0 -1
  299. package/dist/index-CsuikFeJ.d.mts +0 -1
  300. package/dist/memory--BK4iWiv.d.cts +0 -40
  301. package/dist/memory--BK4iWiv.d.cts.map +0 -1
  302. package/dist/memory-6S9H-IF5.mjs +0 -123
  303. package/dist/memory-6S9H-IF5.mjs.map +0 -1
  304. package/dist/memory-B0d_n1g5.cjs +0 -129
  305. package/dist/memory-B0d_n1g5.cjs.map +0 -1
  306. package/dist/memory-DCirEVFW.d.mts +0 -40
  307. package/dist/memory-DCirEVFW.d.mts.map +0 -1
  308. package/dist/metrics-D5YT-Rnq.mjs +0 -0
  309. package/dist/metrics-fhD3l3C3.cjs +0 -0
  310. package/dist/middleware-Bcq6XXGG.cjs +0 -184
  311. package/dist/middleware-Bcq6XXGG.cjs.map +0 -1
  312. package/dist/middleware-D1XEHvyy.mjs +0 -160
  313. package/dist/middleware-D1XEHvyy.mjs.map +0 -1
  314. package/dist/middleware-PeyS-9Ny.d.cts +0 -74
  315. package/dist/middleware-PeyS-9Ny.d.cts.map +0 -1
  316. package/dist/middleware-oHvo_ZgU.d.mts +0 -74
  317. package/dist/middleware-oHvo_ZgU.d.mts.map +0 -1
  318. package/dist/middy-B6Btl8XE.d.mts +0 -64
  319. package/dist/middy-B6Btl8XE.d.mts.map +0 -1
  320. package/dist/middy-Bq0defVg.d.cts +0 -64
  321. package/dist/middy-Bq0defVg.d.cts.map +0 -1
  322. package/dist/middy-DHWLmUAD.mjs +0 -236
  323. package/dist/middy-DHWLmUAD.mjs.map +0 -1
  324. package/dist/middy-DlWnZilH.cjs +0 -247
  325. package/dist/middy-DlWnZilH.cjs.map +0 -1
  326. package/dist/otel-B9bNoeZ2.mjs +0 -130
  327. package/dist/otel-B9bNoeZ2.mjs.map +0 -1
  328. package/dist/otel-Bk89b1lX.d.cts +0 -101
  329. package/dist/otel-Bk89b1lX.d.cts.map +0 -1
  330. package/dist/otel-BzjOtVxZ.cjs +0 -136
  331. package/dist/otel-BzjOtVxZ.cjs.map +0 -1
  332. package/dist/otel-lPMsM26e.d.mts +0 -101
  333. package/dist/otel-lPMsM26e.d.mts.map +0 -1
  334. package/dist/receiver-D46dfkYI.mjs +0 -89
  335. package/dist/receiver-D46dfkYI.mjs.map +0 -1
  336. package/dist/receiver-DLICx5uU.d.cts +0 -63
  337. package/dist/receiver-DLICx5uU.d.cts.map +0 -1
  338. package/dist/receiver-UeZT-H8u.d.mts +0 -63
  339. package/dist/receiver-UeZT-H8u.d.mts.map +0 -1
  340. package/dist/receiver-slCoAFat.cjs +0 -94
  341. package/dist/receiver-slCoAFat.cjs.map +0 -1
  342. package/dist/redact-BzkITCNW.mjs +0 -83
  343. package/dist/redact-BzkITCNW.mjs.map +0 -1
  344. package/dist/redact-DVaSSPZT.cjs +0 -95
  345. package/dist/redact-DVaSSPZT.cjs.map +0 -1
  346. package/dist/setup-Bkxm4g6b.d.mts +0 -87
  347. package/dist/setup-Bkxm4g6b.d.mts.map +0 -1
  348. package/dist/setup-D58N1f9O.d.cts +0 -87
  349. package/dist/setup-D58N1f9O.d.cts.map +0 -1
  350. package/dist/setup-DC9JMEYZ.mjs +0 -98
  351. package/dist/setup-DC9JMEYZ.mjs.map +0 -1
  352. package/dist/setup-DufxQpi9.cjs +0 -110
  353. package/dist/setup-DufxQpi9.cjs.map +0 -1
  354. package/dist/tracing-BX8uY2nR.d.cts +0 -53
  355. package/dist/tracing-BX8uY2nR.d.cts.map +0 -1
  356. package/dist/tracing-Bt1zWRlb.cjs +0 -167
  357. package/dist/tracing-Bt1zWRlb.cjs.map +0 -1
  358. package/dist/tracing-Cijm_5NI.mjs +0 -113
  359. package/dist/tracing-Cijm_5NI.mjs.map +0 -1
  360. package/dist/tracing-PnECEbEu.d.mts +0 -53
  361. package/dist/tracing-PnECEbEu.d.mts.map +0 -1
  362. package/dist/transformer-CFQ4WFk6.mjs +0 -215
  363. package/dist/transformer-CFQ4WFk6.mjs.map +0 -1
  364. package/dist/transformer-CTGsaVfV.d.mts.map +0 -1
  365. package/dist/transformer-Csl6fbgv.cjs +0 -232
  366. package/dist/transformer-Csl6fbgv.cjs.map +0 -1
  367. package/dist/transformer-ICEbxpFf.d.cts.map +0 -1
  368. package/dist/types-B1EIa_cQ.d.mts.map +0 -1
  369. package/dist/types-BMiHgsi4.cjs +0 -78
  370. package/dist/types-BMiHgsi4.cjs.map +0 -1
  371. package/dist/types-BRzW1NM8.d.cts +0 -166
  372. package/dist/types-BRzW1NM8.d.cts.map +0 -1
  373. package/dist/types-BS3Rx8Sk.d.cts +0 -209
  374. package/dist/types-BS3Rx8Sk.d.cts.map +0 -1
  375. package/dist/types-BzQ78Efw.d.mts +0 -166
  376. package/dist/types-BzQ78Efw.d.mts.map +0 -1
  377. package/dist/types-CbNGXnJE.d.mts +0 -209
  378. package/dist/types-CbNGXnJE.d.mts.map +0 -1
  379. package/dist/types-Cj59nqy7.mjs +0 -54
  380. package/dist/types-Cj59nqy7.mjs.map +0 -1
  381. package/dist/types-CmOB7CLO.d.cts.map +0 -1
  382. package/dist/types-DBc0q5KD.d.mts.map +0 -1
  383. package/dist/types-ZW-nfWf6.cjs +0 -40
  384. package/dist/types-ZW-nfWf6.cjs.map +0 -1
  385. package/dist/types-l7Rlb5Mg.d.cts.map +0 -1
  386. package/dist/types-ojhnLdwz.mjs +0 -34
  387. package/dist/types-ojhnLdwz.mjs.map +0 -1
  388. package/dist/ui-assets-BEXqOQLe.cjs +0 -48
  389. package/dist/ui-assets-BEXqOQLe.cjs.map +0 -1
  390. package/dist/ui-assets-BhTDUsrM.mjs +0 -30
  391. package/dist/ui-assets-BhTDUsrM.mjs.map +0 -1
@@ -1,357 +0,0 @@
1
- //#region src/metrics/MetricsAggregator.ts
2
- const DEFAULT_OPTIONS = {
3
- bucketSize: 6e4,
4
- maxBuckets: 1440,
5
- maxSamplesPerBucket: 1e3
6
- };
7
- var MetricsAggregator = class {
8
- options;
9
- buckets = /* @__PURE__ */ new Map();
10
- endpoints = /* @__PURE__ */ new Map();
11
- endpointTimeBuckets = /* @__PURE__ */ new Map();
12
- constructor(options = {}) {
13
- this.options = {
14
- ...DEFAULT_OPTIONS,
15
- ...options
16
- };
17
- }
18
- /**
19
- * Record a request for metrics aggregation
20
- */
21
- record(entry) {
22
- const timestamp = entry.timestamp.getTime();
23
- const bucketTs = this.getBucketTimestamp(timestamp);
24
- this.updateBucket(bucketTs, entry);
25
- this.updateEndpoint(entry);
26
- this.pruneBuckets();
27
- }
28
- /**
29
- * Get aggregated request metrics
30
- */
31
- getMetrics(options = {}) {
32
- const range = options.range ?? this.getDefaultRange();
33
- const bucketSize = options.bucketSize ?? this.options.bucketSize;
34
- const bucketsInRange = this.getBucketsInRange(range);
35
- if (bucketsInRange.length === 0) return this.emptyMetrics();
36
- const allDurations = [];
37
- let totalRequests = 0;
38
- let totalDuration = 0;
39
- let totalErrors = 0;
40
- for (const bucket of bucketsInRange) {
41
- totalRequests += bucket.count;
42
- totalDuration += bucket.durationSum;
43
- totalErrors += bucket.errorCount;
44
- allDurations.push(...bucket.durationSamples);
45
- }
46
- allDurations.sort((a, b) => a - b);
47
- const p50 = this.percentile(allDurations, 50);
48
- const p95 = this.percentile(allDurations, 95);
49
- const p99 = this.percentile(allDurations, 99);
50
- const rangeMs = range.end.getTime() - range.start.getTime();
51
- const rangeSeconds = rangeMs / 1e3;
52
- const avgDuration = totalRequests > 0 ? totalDuration / totalRequests : 0;
53
- const errorRate = totalRequests > 0 ? totalErrors / totalRequests * 100 : 0;
54
- const timeSeries = this.buildTimeSeries(bucketsInRange, range, bucketSize);
55
- return {
56
- totalRequests,
57
- avgDuration,
58
- p50Duration: p50,
59
- p95Duration: p95,
60
- p99Duration: p99,
61
- errorRate,
62
- successRate: 100 - errorRate,
63
- requestsPerSecond: rangeSeconds > 0 ? totalRequests / rangeSeconds : 0,
64
- timeSeries
65
- };
66
- }
67
- /**
68
- * Get metrics for individual endpoints
69
- */
70
- getEndpointMetrics(options = {}) {
71
- const limit = options.limit ?? 50;
72
- const results = [];
73
- for (const [, bucket] of this.endpoints) {
74
- const avgDuration = bucket.count > 0 ? bucket.durationSum / bucket.count : 0;
75
- bucket.durationSamples.sort((a, b) => a - b);
76
- const p95 = this.percentile(bucket.durationSamples, 95);
77
- const errorRate = bucket.count > 0 ? bucket.errorCount / bucket.count * 100 : 0;
78
- results.push({
79
- method: bucket.method,
80
- path: bucket.path,
81
- count: bucket.count,
82
- avgDuration,
83
- p95Duration: p95,
84
- errorRate,
85
- lastSeen: bucket.lastSeen
86
- });
87
- }
88
- results.sort((a, b) => b.count - a.count);
89
- return results.slice(0, limit);
90
- }
91
- /**
92
- * Get status code distribution
93
- */
94
- getStatusDistribution(options = {}) {
95
- const range = options.range ?? this.getDefaultRange();
96
- const bucketsInRange = this.getBucketsInRange(range);
97
- const distribution = {
98
- "2xx": 0,
99
- "3xx": 0,
100
- "4xx": 0,
101
- "5xx": 0
102
- };
103
- for (const bucket of bucketsInRange) {
104
- distribution["2xx"] += bucket.statusDistribution["2xx"];
105
- distribution["3xx"] += bucket.statusDistribution["3xx"];
106
- distribution["4xx"] += bucket.statusDistribution["4xx"];
107
- distribution["5xx"] += bucket.statusDistribution["5xx"];
108
- }
109
- return distribution;
110
- }
111
- /**
112
- * Get detailed metrics for a specific endpoint
113
- */
114
- getEndpointDetails(method, path, options = {}) {
115
- const key = `${method}:${path}`;
116
- const endpoint = this.endpoints.get(key);
117
- if (!endpoint) return null;
118
- const samples = [...endpoint.durationSamples].sort((a, b) => a - b);
119
- const p50 = this.percentile(samples, 50);
120
- const p95 = this.percentile(samples, 95);
121
- const p99 = this.percentile(samples, 99);
122
- const avgDuration = endpoint.count > 0 ? endpoint.durationSum / endpoint.count : 0;
123
- const errorRate = endpoint.count > 0 ? endpoint.errorCount / endpoint.count * 100 : 0;
124
- const endpointBuckets = this.endpointTimeBuckets.get(key);
125
- const timeSeries = [];
126
- const statusDistribution = {
127
- "2xx": 0,
128
- "3xx": 0,
129
- "4xx": 0,
130
- "5xx": 0
131
- };
132
- if (endpointBuckets) {
133
- const range = options.range ?? this.getDefaultRange();
134
- const startTs = range.start.getTime();
135
- const endTs = range.end.getTime();
136
- for (const [ts, bucket] of endpointBuckets) if (ts >= startTs && ts <= endTs) {
137
- timeSeries.push({
138
- timestamp: bucket.timestamp,
139
- count: bucket.count,
140
- avgDuration: bucket.count > 0 ? bucket.durationSum / bucket.count : 0,
141
- errorCount: bucket.errorCount
142
- });
143
- statusDistribution["2xx"] += bucket.statusDistribution["2xx"];
144
- statusDistribution["3xx"] += bucket.statusDistribution["3xx"];
145
- statusDistribution["4xx"] += bucket.statusDistribution["4xx"];
146
- statusDistribution["5xx"] += bucket.statusDistribution["5xx"];
147
- }
148
- timeSeries.sort((a, b) => a.timestamp - b.timestamp);
149
- }
150
- return {
151
- method: endpoint.method,
152
- path: endpoint.path,
153
- count: endpoint.count,
154
- avgDuration,
155
- p50Duration: p50,
156
- p95Duration: p95,
157
- p99Duration: p99,
158
- errorRate,
159
- successRate: 100 - errorRate,
160
- lastSeen: endpoint.lastSeen,
161
- statusDistribution,
162
- timeSeries
163
- };
164
- }
165
- /**
166
- * Reset all metrics
167
- */
168
- reset() {
169
- this.buckets.clear();
170
- this.endpoints.clear();
171
- this.endpointTimeBuckets.clear();
172
- }
173
- getBucketTimestamp(timestamp) {
174
- return Math.floor(timestamp / this.options.bucketSize) * this.options.bucketSize;
175
- }
176
- updateBucket(bucketTs, entry) {
177
- let bucket = this.buckets.get(bucketTs);
178
- if (!bucket) {
179
- bucket = this.createEmptyBucket(bucketTs);
180
- this.buckets.set(bucketTs, bucket);
181
- }
182
- bucket.count++;
183
- bucket.durationSum += entry.duration;
184
- bucket.durationMin = Math.min(bucket.durationMin, entry.duration);
185
- bucket.durationMax = Math.max(bucket.durationMax, entry.duration);
186
- if (bucket.durationSamples.length < this.options.maxSamplesPerBucket) bucket.durationSamples.push(entry.duration);
187
- else {
188
- const idx = Math.floor(Math.random() * bucket.count);
189
- if (idx < this.options.maxSamplesPerBucket) bucket.durationSamples[idx] = entry.duration;
190
- }
191
- const isError = entry.status >= 400;
192
- if (isError) bucket.errorCount++;
193
- if (entry.status >= 200 && entry.status < 300) bucket.statusDistribution["2xx"]++;
194
- else if (entry.status >= 300 && entry.status < 400) bucket.statusDistribution["3xx"]++;
195
- else if (entry.status >= 400 && entry.status < 500) bucket.statusDistribution["4xx"]++;
196
- else if (entry.status >= 500) bucket.statusDistribution["5xx"]++;
197
- }
198
- updateEndpoint(entry) {
199
- const key = `${entry.method}:${entry.path}`;
200
- let endpoint = this.endpoints.get(key);
201
- if (!endpoint) {
202
- endpoint = {
203
- method: entry.method,
204
- path: entry.path,
205
- count: 0,
206
- durationSum: 0,
207
- durationSamples: [],
208
- errorCount: 0,
209
- lastSeen: 0
210
- };
211
- this.endpoints.set(key, endpoint);
212
- }
213
- endpoint.count++;
214
- endpoint.durationSum += entry.duration;
215
- endpoint.lastSeen = entry.timestamp.getTime();
216
- if (entry.status >= 400) endpoint.errorCount++;
217
- if (endpoint.durationSamples.length < this.options.maxSamplesPerBucket) endpoint.durationSamples.push(entry.duration);
218
- else {
219
- const idx = Math.floor(Math.random() * endpoint.count);
220
- if (idx < this.options.maxSamplesPerBucket) endpoint.durationSamples[idx] = entry.duration;
221
- }
222
- this.updateEndpointTimeBucket(key, entry);
223
- }
224
- updateEndpointTimeBucket(key, entry) {
225
- const timestamp = entry.timestamp.getTime();
226
- const bucketTs = this.getBucketTimestamp(timestamp);
227
- let endpointBuckets = this.endpointTimeBuckets.get(key);
228
- if (!endpointBuckets) {
229
- endpointBuckets = /* @__PURE__ */ new Map();
230
- this.endpointTimeBuckets.set(key, endpointBuckets);
231
- }
232
- let bucket = endpointBuckets.get(bucketTs);
233
- if (!bucket) {
234
- bucket = {
235
- timestamp: bucketTs,
236
- count: 0,
237
- durationSum: 0,
238
- errorCount: 0,
239
- statusDistribution: {
240
- "2xx": 0,
241
- "3xx": 0,
242
- "4xx": 0,
243
- "5xx": 0
244
- }
245
- };
246
- endpointBuckets.set(bucketTs, bucket);
247
- }
248
- bucket.count++;
249
- bucket.durationSum += entry.duration;
250
- if (entry.status >= 400) bucket.errorCount++;
251
- if (entry.status >= 200 && entry.status < 300) bucket.statusDistribution["2xx"]++;
252
- else if (entry.status >= 300 && entry.status < 400) bucket.statusDistribution["3xx"]++;
253
- else if (entry.status >= 400 && entry.status < 500) bucket.statusDistribution["4xx"]++;
254
- else if (entry.status >= 500) bucket.statusDistribution["5xx"]++;
255
- if (endpointBuckets.size > this.options.maxBuckets) {
256
- const timestamps = Array.from(endpointBuckets.keys()).sort((a, b) => a - b);
257
- const toRemove = timestamps.slice(0, timestamps.length - this.options.maxBuckets);
258
- for (const ts of toRemove) endpointBuckets.delete(ts);
259
- }
260
- }
261
- createEmptyBucket(timestamp) {
262
- return {
263
- timestamp,
264
- bucketSize: this.options.bucketSize,
265
- count: 0,
266
- durationSum: 0,
267
- durationMin: Infinity,
268
- durationMax: 0,
269
- durationSamples: [],
270
- errorCount: 0,
271
- statusDistribution: {
272
- "2xx": 0,
273
- "3xx": 0,
274
- "4xx": 0,
275
- "5xx": 0
276
- }
277
- };
278
- }
279
- pruneBuckets() {
280
- if (this.buckets.size <= this.options.maxBuckets) return;
281
- const timestamps = Array.from(this.buckets.keys()).sort((a, b) => a - b);
282
- const toRemove = timestamps.slice(0, timestamps.length - this.options.maxBuckets);
283
- for (const ts of toRemove) this.buckets.delete(ts);
284
- }
285
- getDefaultRange() {
286
- const now = /* @__PURE__ */ new Date();
287
- const oneHourAgo = new Date(now.getTime() - 60 * 60 * 1e3);
288
- return {
289
- start: oneHourAgo,
290
- end: now
291
- };
292
- }
293
- getBucketsInRange(range) {
294
- const startTs = range.start.getTime();
295
- const endTs = range.end.getTime();
296
- const results = [];
297
- for (const [ts, bucket] of this.buckets) if (ts >= startTs && ts <= endTs) results.push(bucket);
298
- return results.sort((a, b) => a.timestamp - b.timestamp);
299
- }
300
- buildTimeSeries(buckets, _range, targetBucketSize) {
301
- if (buckets.length === 0) return [];
302
- if (targetBucketSize === this.options.bucketSize) return buckets.map((b) => ({
303
- timestamp: b.timestamp,
304
- count: b.count,
305
- avgDuration: b.count > 0 ? b.durationSum / b.count : 0,
306
- errorCount: b.errorCount
307
- }));
308
- const points = /* @__PURE__ */ new Map();
309
- for (const bucket of buckets) {
310
- const targetTs = Math.floor(bucket.timestamp / targetBucketSize) * targetBucketSize;
311
- let point = points.get(targetTs);
312
- if (!point) {
313
- point = {
314
- timestamp: targetTs,
315
- count: 0,
316
- avgDuration: 0,
317
- errorCount: 0
318
- };
319
- points.set(targetTs, point);
320
- }
321
- const totalCount = point.count + bucket.count;
322
- if (totalCount > 0) point.avgDuration = (point.avgDuration * point.count + (bucket.count > 0 ? bucket.durationSum / bucket.count : 0) * bucket.count) / totalCount;
323
- point.count = totalCount;
324
- point.errorCount += bucket.errorCount;
325
- }
326
- return Array.from(points.values()).sort((a, b) => a.timestamp - b.timestamp);
327
- }
328
- percentile(sortedValues, p) {
329
- if (sortedValues.length === 0) return 0;
330
- if (sortedValues.length === 1) return sortedValues[0];
331
- const index = p / 100 * (sortedValues.length - 1);
332
- const lower = Math.floor(index);
333
- const upper = Math.ceil(index);
334
- if (lower === upper) return sortedValues[lower];
335
- const weight = index - lower;
336
- const lowerVal = sortedValues[lower];
337
- const upperVal = sortedValues[upper];
338
- return lowerVal * (1 - weight) + upperVal * weight;
339
- }
340
- emptyMetrics() {
341
- return {
342
- totalRequests: 0,
343
- avgDuration: 0,
344
- p50Duration: 0,
345
- p95Duration: 0,
346
- p99Duration: 0,
347
- errorRate: 0,
348
- successRate: 100,
349
- requestsPerSecond: 0,
350
- timeSeries: []
351
- };
352
- }
353
- };
354
-
355
- //#endregion
356
- export { MetricsAggregator };
357
- //# sourceMappingURL=MetricsAggregator-S3DQWNas.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetricsAggregator-S3DQWNas.mjs","names":["DEFAULT_OPTIONS: Required<MetricsAggregatorOptions>","options: MetricsAggregatorOptions","entry: RequestEntry","options: MetricsQueryOptions","allDurations: number[]","results: EndpointMetrics[]","distribution: StatusDistribution","method: string","path: string","timeSeries: TimeSeriesPoint[]","statusDistribution: StatusDistribution","timestamp: number","bucketTs: number","key: string","range: TimeRange","results: MetricsBucket[]","buckets: MetricsBucket[]","_range: TimeRange","targetBucketSize: number","points: Map<number, TimeSeriesPoint>","sortedValues: number[]","p: number"],"sources":["../src/metrics/MetricsAggregator.ts"],"sourcesContent":["import type {\n\tEndpointBucket,\n\tEndpointDetails,\n\tEndpointMetrics,\n\tMetricsBucket,\n\tMetricsQueryOptions,\n\tRequestEntry,\n\tRequestMetrics,\n\tStatusDistribution,\n\tTimeRange,\n\tTimeSeriesPoint,\n} from '../types';\n\n/**\n * Configuration for MetricsAggregator\n */\nexport interface MetricsAggregatorOptions {\n\t/** Bucket size in milliseconds (default: 60000 = 1 minute) */\n\tbucketSize?: number;\n\t/** Maximum number of buckets to retain (default: 1440 = 24 hours at 1 min buckets) */\n\tmaxBuckets?: number;\n\t/** Maximum duration samples to keep per bucket for percentiles (default: 1000) */\n\tmaxSamplesPerBucket?: number;\n}\n\nconst DEFAULT_OPTIONS: Required<MetricsAggregatorOptions> = {\n\tbucketSize: 60_000, // 1 minute\n\tmaxBuckets: 1440, // 24 hours\n\tmaxSamplesPerBucket: 1000,\n};\n\n/**\n * In-memory metrics aggregator for Telescope.\n * Aggregates request data into time-bucketed metrics for efficient querying.\n */\n/**\n * Endpoint time bucket for per-endpoint time series\n */\ninterface EndpointTimeBucket {\n\ttimestamp: number;\n\tcount: number;\n\tdurationSum: number;\n\terrorCount: number;\n\tstatusDistribution: StatusDistribution;\n}\n\nexport class MetricsAggregator {\n\tprivate options: Required<MetricsAggregatorOptions>;\n\tprivate buckets: Map<number, MetricsBucket> = new Map();\n\tprivate endpoints: Map<string, EndpointBucket> = new Map();\n\t// Map of endpoint key -> Map of timestamp -> bucket\n\tprivate endpointTimeBuckets: Map<string, Map<number, EndpointTimeBucket>> =\n\t\tnew Map();\n\n\tconstructor(options: MetricsAggregatorOptions = {}) {\n\t\tthis.options = { ...DEFAULT_OPTIONS, ...options };\n\t}\n\n\t/**\n\t * Record a request for metrics aggregation\n\t */\n\trecord(entry: RequestEntry): void {\n\t\tconst timestamp = entry.timestamp.getTime();\n\t\tconst bucketTs = this.getBucketTimestamp(timestamp);\n\n\t\t// Update time bucket\n\t\tthis.updateBucket(bucketTs, entry);\n\n\t\t// Update endpoint metrics\n\t\tthis.updateEndpoint(entry);\n\n\t\t// Prune old buckets\n\t\tthis.pruneBuckets();\n\t}\n\n\t/**\n\t * Get aggregated request metrics\n\t */\n\tgetMetrics(options: MetricsQueryOptions = {}): RequestMetrics {\n\t\tconst range = options.range ?? this.getDefaultRange();\n\t\tconst bucketSize = options.bucketSize ?? this.options.bucketSize;\n\n\t\t// Get buckets in range\n\t\tconst bucketsInRange = this.getBucketsInRange(range);\n\n\t\tif (bucketsInRange.length === 0) {\n\t\t\treturn this.emptyMetrics();\n\t\t}\n\n\t\t// Aggregate all durations for percentile calculations\n\t\tconst allDurations: number[] = [];\n\t\tlet totalRequests = 0;\n\t\tlet totalDuration = 0;\n\t\tlet totalErrors = 0;\n\n\t\tfor (const bucket of bucketsInRange) {\n\t\t\ttotalRequests += bucket.count;\n\t\t\ttotalDuration += bucket.durationSum;\n\t\t\ttotalErrors += bucket.errorCount;\n\t\t\tallDurations.push(...bucket.durationSamples);\n\t\t}\n\n\t\t// Calculate percentiles\n\t\tallDurations.sort((a, b) => a - b);\n\t\tconst p50 = this.percentile(allDurations, 50);\n\t\tconst p95 = this.percentile(allDurations, 95);\n\t\tconst p99 = this.percentile(allDurations, 99);\n\n\t\t// Calculate rates\n\t\tconst rangeMs = range.end.getTime() - range.start.getTime();\n\t\tconst rangeSeconds = rangeMs / 1000;\n\t\tconst avgDuration = totalRequests > 0 ? totalDuration / totalRequests : 0;\n\t\tconst errorRate =\n\t\t\ttotalRequests > 0 ? (totalErrors / totalRequests) * 100 : 0;\n\n\t\t// Build time series (re-bucket if needed)\n\t\tconst timeSeries = this.buildTimeSeries(bucketsInRange, range, bucketSize);\n\n\t\treturn {\n\t\t\ttotalRequests,\n\t\t\tavgDuration,\n\t\t\tp50Duration: p50,\n\t\t\tp95Duration: p95,\n\t\t\tp99Duration: p99,\n\t\t\terrorRate,\n\t\t\tsuccessRate: 100 - errorRate,\n\t\t\trequestsPerSecond: rangeSeconds > 0 ? totalRequests / rangeSeconds : 0,\n\t\t\ttimeSeries,\n\t\t};\n\t}\n\n\t/**\n\t * Get metrics for individual endpoints\n\t */\n\tgetEndpointMetrics(options: MetricsQueryOptions = {}): EndpointMetrics[] {\n\t\tconst limit = options.limit ?? 50;\n\n\t\tconst results: EndpointMetrics[] = [];\n\n\t\tfor (const [, bucket] of this.endpoints) {\n\t\t\tconst avgDuration =\n\t\t\t\tbucket.count > 0 ? bucket.durationSum / bucket.count : 0;\n\t\t\tbucket.durationSamples.sort((a, b) => a - b);\n\t\t\tconst p95 = this.percentile(bucket.durationSamples, 95);\n\t\t\tconst errorRate =\n\t\t\t\tbucket.count > 0 ? (bucket.errorCount / bucket.count) * 100 : 0;\n\n\t\t\tresults.push({\n\t\t\t\tmethod: bucket.method,\n\t\t\t\tpath: bucket.path,\n\t\t\t\tcount: bucket.count,\n\t\t\t\tavgDuration,\n\t\t\t\tp95Duration: p95,\n\t\t\t\terrorRate,\n\t\t\t\tlastSeen: bucket.lastSeen,\n\t\t\t});\n\t\t}\n\n\t\t// Sort by count descending\n\t\tresults.sort((a, b) => b.count - a.count);\n\n\t\treturn results.slice(0, limit);\n\t}\n\n\t/**\n\t * Get status code distribution\n\t */\n\tgetStatusDistribution(options: MetricsQueryOptions = {}): StatusDistribution {\n\t\tconst range = options.range ?? this.getDefaultRange();\n\t\tconst bucketsInRange = this.getBucketsInRange(range);\n\n\t\tconst distribution: StatusDistribution = {\n\t\t\t'2xx': 0,\n\t\t\t'3xx': 0,\n\t\t\t'4xx': 0,\n\t\t\t'5xx': 0,\n\t\t};\n\n\t\tfor (const bucket of bucketsInRange) {\n\t\t\tdistribution['2xx'] += bucket.statusDistribution['2xx'];\n\t\t\tdistribution['3xx'] += bucket.statusDistribution['3xx'];\n\t\t\tdistribution['4xx'] += bucket.statusDistribution['4xx'];\n\t\t\tdistribution['5xx'] += bucket.statusDistribution['5xx'];\n\t\t}\n\n\t\treturn distribution;\n\t}\n\n\t/**\n\t * Get detailed metrics for a specific endpoint\n\t */\n\tgetEndpointDetails(\n\t\tmethod: string,\n\t\tpath: string,\n\t\toptions: MetricsQueryOptions = {},\n\t): EndpointDetails | null {\n\t\tconst key = `${method}:${path}`;\n\t\tconst endpoint = this.endpoints.get(key);\n\n\t\tif (!endpoint) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Calculate percentiles\n\t\tconst samples = [...endpoint.durationSamples].sort((a, b) => a - b);\n\t\tconst p50 = this.percentile(samples, 50);\n\t\tconst p95 = this.percentile(samples, 95);\n\t\tconst p99 = this.percentile(samples, 99);\n\n\t\tconst avgDuration =\n\t\t\tendpoint.count > 0 ? endpoint.durationSum / endpoint.count : 0;\n\t\tconst errorRate =\n\t\t\tendpoint.count > 0 ? (endpoint.errorCount / endpoint.count) * 100 : 0;\n\n\t\t// Get time series for this endpoint\n\t\tconst endpointBuckets = this.endpointTimeBuckets.get(key);\n\t\tconst timeSeries: TimeSeriesPoint[] = [];\n\t\tconst statusDistribution: StatusDistribution = {\n\t\t\t'2xx': 0,\n\t\t\t'3xx': 0,\n\t\t\t'4xx': 0,\n\t\t\t'5xx': 0,\n\t\t};\n\n\t\tif (endpointBuckets) {\n\t\t\tconst range = options.range ?? this.getDefaultRange();\n\t\t\tconst startTs = range.start.getTime();\n\t\t\tconst endTs = range.end.getTime();\n\n\t\t\tfor (const [ts, bucket] of endpointBuckets) {\n\t\t\t\tif (ts >= startTs && ts <= endTs) {\n\t\t\t\t\ttimeSeries.push({\n\t\t\t\t\t\ttimestamp: bucket.timestamp,\n\t\t\t\t\t\tcount: bucket.count,\n\t\t\t\t\t\tavgDuration:\n\t\t\t\t\t\t\tbucket.count > 0 ? bucket.durationSum / bucket.count : 0,\n\t\t\t\t\t\terrorCount: bucket.errorCount,\n\t\t\t\t\t});\n\n\t\t\t\t\tstatusDistribution['2xx'] += bucket.statusDistribution['2xx'];\n\t\t\t\t\tstatusDistribution['3xx'] += bucket.statusDistribution['3xx'];\n\t\t\t\t\tstatusDistribution['4xx'] += bucket.statusDistribution['4xx'];\n\t\t\t\t\tstatusDistribution['5xx'] += bucket.statusDistribution['5xx'];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttimeSeries.sort((a, b) => a.timestamp - b.timestamp);\n\t\t}\n\n\t\treturn {\n\t\t\tmethod: endpoint.method,\n\t\t\tpath: endpoint.path,\n\t\t\tcount: endpoint.count,\n\t\t\tavgDuration,\n\t\t\tp50Duration: p50,\n\t\t\tp95Duration: p95,\n\t\t\tp99Duration: p99,\n\t\t\terrorRate,\n\t\t\tsuccessRate: 100 - errorRate,\n\t\t\tlastSeen: endpoint.lastSeen,\n\t\t\tstatusDistribution,\n\t\t\ttimeSeries,\n\t\t};\n\t}\n\n\t/**\n\t * Reset all metrics\n\t */\n\treset(): void {\n\t\tthis.buckets.clear();\n\t\tthis.endpoints.clear();\n\t\tthis.endpointTimeBuckets.clear();\n\t}\n\n\t// ============================================\n\t// Private Methods\n\t// ============================================\n\n\tprivate getBucketTimestamp(timestamp: number): number {\n\t\treturn (\n\t\t\tMath.floor(timestamp / this.options.bucketSize) * this.options.bucketSize\n\t\t);\n\t}\n\n\tprivate updateBucket(bucketTs: number, entry: RequestEntry): void {\n\t\tlet bucket = this.buckets.get(bucketTs);\n\n\t\tif (!bucket) {\n\t\t\tbucket = this.createEmptyBucket(bucketTs);\n\t\t\tthis.buckets.set(bucketTs, bucket);\n\t\t}\n\n\t\tbucket.count++;\n\t\tbucket.durationSum += entry.duration;\n\t\tbucket.durationMin = Math.min(bucket.durationMin, entry.duration);\n\t\tbucket.durationMax = Math.max(bucket.durationMax, entry.duration);\n\n\t\t// Keep samples for percentile calculations (with reservoir sampling if needed)\n\t\tif (bucket.durationSamples.length < this.options.maxSamplesPerBucket) {\n\t\t\tbucket.durationSamples.push(entry.duration);\n\t\t} else {\n\t\t\t// Reservoir sampling: replace random element\n\t\t\tconst idx = Math.floor(Math.random() * bucket.count);\n\t\t\tif (idx < this.options.maxSamplesPerBucket) {\n\t\t\t\tbucket.durationSamples[idx] = entry.duration;\n\t\t\t}\n\t\t}\n\n\t\t// Update status distribution\n\t\tconst isError = entry.status >= 400;\n\t\tif (isError) bucket.errorCount++;\n\n\t\tif (entry.status >= 200 && entry.status < 300) {\n\t\t\tbucket.statusDistribution['2xx']++;\n\t\t} else if (entry.status >= 300 && entry.status < 400) {\n\t\t\tbucket.statusDistribution['3xx']++;\n\t\t} else if (entry.status >= 400 && entry.status < 500) {\n\t\t\tbucket.statusDistribution['4xx']++;\n\t\t} else if (entry.status >= 500) {\n\t\t\tbucket.statusDistribution['5xx']++;\n\t\t}\n\t}\n\n\tprivate updateEndpoint(entry: RequestEntry): void {\n\t\tconst key = `${entry.method}:${entry.path}`;\n\t\tlet endpoint = this.endpoints.get(key);\n\n\t\tif (!endpoint) {\n\t\t\tendpoint = {\n\t\t\t\tmethod: entry.method,\n\t\t\t\tpath: entry.path,\n\t\t\t\tcount: 0,\n\t\t\t\tdurationSum: 0,\n\t\t\t\tdurationSamples: [],\n\t\t\t\terrorCount: 0,\n\t\t\t\tlastSeen: 0,\n\t\t\t};\n\t\t\tthis.endpoints.set(key, endpoint);\n\t\t}\n\n\t\tendpoint.count++;\n\t\tendpoint.durationSum += entry.duration;\n\t\tendpoint.lastSeen = entry.timestamp.getTime();\n\n\t\tif (entry.status >= 400) {\n\t\t\tendpoint.errorCount++;\n\t\t}\n\n\t\t// Keep samples for percentiles\n\t\tif (endpoint.durationSamples.length < this.options.maxSamplesPerBucket) {\n\t\t\tendpoint.durationSamples.push(entry.duration);\n\t\t} else {\n\t\t\tconst idx = Math.floor(Math.random() * endpoint.count);\n\t\t\tif (idx < this.options.maxSamplesPerBucket) {\n\t\t\t\tendpoint.durationSamples[idx] = entry.duration;\n\t\t\t}\n\t\t}\n\n\t\t// Update endpoint time bucket\n\t\tthis.updateEndpointTimeBucket(key, entry);\n\t}\n\n\tprivate updateEndpointTimeBucket(key: string, entry: RequestEntry): void {\n\t\tconst timestamp = entry.timestamp.getTime();\n\t\tconst bucketTs = this.getBucketTimestamp(timestamp);\n\n\t\tlet endpointBuckets = this.endpointTimeBuckets.get(key);\n\t\tif (!endpointBuckets) {\n\t\t\tendpointBuckets = new Map();\n\t\t\tthis.endpointTimeBuckets.set(key, endpointBuckets);\n\t\t}\n\n\t\tlet bucket = endpointBuckets.get(bucketTs);\n\t\tif (!bucket) {\n\t\t\tbucket = {\n\t\t\t\ttimestamp: bucketTs,\n\t\t\t\tcount: 0,\n\t\t\t\tdurationSum: 0,\n\t\t\t\terrorCount: 0,\n\t\t\t\tstatusDistribution: { '2xx': 0, '3xx': 0, '4xx': 0, '5xx': 0 },\n\t\t\t};\n\t\t\tendpointBuckets.set(bucketTs, bucket);\n\t\t}\n\n\t\tbucket.count++;\n\t\tbucket.durationSum += entry.duration;\n\n\t\tif (entry.status >= 400) {\n\t\t\tbucket.errorCount++;\n\t\t}\n\n\t\tif (entry.status >= 200 && entry.status < 300) {\n\t\t\tbucket.statusDistribution['2xx']++;\n\t\t} else if (entry.status >= 300 && entry.status < 400) {\n\t\t\tbucket.statusDistribution['3xx']++;\n\t\t} else if (entry.status >= 400 && entry.status < 500) {\n\t\t\tbucket.statusDistribution['4xx']++;\n\t\t} else if (entry.status >= 500) {\n\t\t\tbucket.statusDistribution['5xx']++;\n\t\t}\n\n\t\t// Prune old endpoint buckets (keep max buckets per endpoint)\n\t\tif (endpointBuckets.size > this.options.maxBuckets) {\n\t\t\tconst timestamps = Array.from(endpointBuckets.keys()).sort(\n\t\t\t\t(a, b) => a - b,\n\t\t\t);\n\t\t\tconst toRemove = timestamps.slice(\n\t\t\t\t0,\n\t\t\t\ttimestamps.length - this.options.maxBuckets,\n\t\t\t);\n\t\t\tfor (const ts of toRemove) {\n\t\t\t\tendpointBuckets.delete(ts);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate createEmptyBucket(timestamp: number): MetricsBucket {\n\t\treturn {\n\t\t\ttimestamp,\n\t\t\tbucketSize: this.options.bucketSize,\n\t\t\tcount: 0,\n\t\t\tdurationSum: 0,\n\t\t\tdurationMin: Infinity,\n\t\t\tdurationMax: 0,\n\t\t\tdurationSamples: [],\n\t\t\terrorCount: 0,\n\t\t\tstatusDistribution: {\n\t\t\t\t'2xx': 0,\n\t\t\t\t'3xx': 0,\n\t\t\t\t'4xx': 0,\n\t\t\t\t'5xx': 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate pruneBuckets(): void {\n\t\tif (this.buckets.size <= this.options.maxBuckets) return;\n\n\t\t// Get sorted timestamps\n\t\tconst timestamps = Array.from(this.buckets.keys()).sort((a, b) => a - b);\n\n\t\t// Remove oldest buckets\n\t\tconst toRemove = timestamps.slice(\n\t\t\t0,\n\t\t\ttimestamps.length - this.options.maxBuckets,\n\t\t);\n\t\tfor (const ts of toRemove) {\n\t\t\tthis.buckets.delete(ts);\n\t\t}\n\t}\n\n\tprivate getDefaultRange(): TimeRange {\n\t\tconst now = new Date();\n\t\tconst oneHourAgo = new Date(now.getTime() - 60 * 60 * 1000);\n\t\treturn { start: oneHourAgo, end: now };\n\t}\n\n\tprivate getBucketsInRange(range: TimeRange): MetricsBucket[] {\n\t\tconst startTs = range.start.getTime();\n\t\tconst endTs = range.end.getTime();\n\n\t\tconst results: MetricsBucket[] = [];\n\t\tfor (const [ts, bucket] of this.buckets) {\n\t\t\tif (ts >= startTs && ts <= endTs) {\n\t\t\t\tresults.push(bucket);\n\t\t\t}\n\t\t}\n\n\t\treturn results.sort((a, b) => a.timestamp - b.timestamp);\n\t}\n\n\tprivate buildTimeSeries(\n\t\tbuckets: MetricsBucket[],\n\t\t_range: TimeRange,\n\t\ttargetBucketSize: number,\n\t): TimeSeriesPoint[] {\n\t\tif (buckets.length === 0) return [];\n\n\t\t// If target bucket size matches, just convert\n\t\tif (targetBucketSize === this.options.bucketSize) {\n\t\t\treturn buckets.map((b) => ({\n\t\t\t\ttimestamp: b.timestamp,\n\t\t\t\tcount: b.count,\n\t\t\t\tavgDuration: b.count > 0 ? b.durationSum / b.count : 0,\n\t\t\t\terrorCount: b.errorCount,\n\t\t\t}));\n\t\t}\n\n\t\t// Re-bucket into target size\n\t\tconst points: Map<number, TimeSeriesPoint> = new Map();\n\n\t\tfor (const bucket of buckets) {\n\t\t\tconst targetTs =\n\t\t\t\tMath.floor(bucket.timestamp / targetBucketSize) * targetBucketSize;\n\t\t\tlet point = points.get(targetTs);\n\n\t\t\tif (!point) {\n\t\t\t\tpoint = {\n\t\t\t\t\ttimestamp: targetTs,\n\t\t\t\t\tcount: 0,\n\t\t\t\t\tavgDuration: 0,\n\t\t\t\t\terrorCount: 0,\n\t\t\t\t};\n\t\t\t\tpoints.set(targetTs, point);\n\t\t\t}\n\n\t\t\t// Weighted average for duration\n\t\t\tconst totalCount = point.count + bucket.count;\n\t\t\tif (totalCount > 0) {\n\t\t\t\tpoint.avgDuration =\n\t\t\t\t\t(point.avgDuration * point.count +\n\t\t\t\t\t\t(bucket.count > 0 ? bucket.durationSum / bucket.count : 0) *\n\t\t\t\t\t\t\tbucket.count) /\n\t\t\t\t\ttotalCount;\n\t\t\t}\n\t\t\tpoint.count = totalCount;\n\t\t\tpoint.errorCount += bucket.errorCount;\n\t\t}\n\n\t\treturn Array.from(points.values()).sort(\n\t\t\t(a, b) => a.timestamp - b.timestamp,\n\t\t);\n\t}\n\n\tprivate percentile(sortedValues: number[], p: number): number {\n\t\tif (sortedValues.length === 0) return 0;\n\t\tif (sortedValues.length === 1) return sortedValues[0]!;\n\n\t\tconst index = (p / 100) * (sortedValues.length - 1);\n\t\tconst lower = Math.floor(index);\n\t\tconst upper = Math.ceil(index);\n\n\t\tif (lower === upper) return sortedValues[lower]!;\n\n\t\t// Linear interpolation\n\t\tconst weight = index - lower;\n\t\tconst lowerVal = sortedValues[lower]!;\n\t\tconst upperVal = sortedValues[upper]!;\n\t\treturn lowerVal * (1 - weight) + upperVal * weight;\n\t}\n\n\tprivate emptyMetrics(): RequestMetrics {\n\t\treturn {\n\t\t\ttotalRequests: 0,\n\t\t\tavgDuration: 0,\n\t\t\tp50Duration: 0,\n\t\t\tp95Duration: 0,\n\t\t\tp99Duration: 0,\n\t\t\terrorRate: 0,\n\t\t\tsuccessRate: 100,\n\t\t\trequestsPerSecond: 0,\n\t\t\ttimeSeries: [],\n\t\t};\n\t}\n}\n"],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import { MetricBucket, MetricPoint, MetricQuery, MetricResult, MetricsStorageConfig, PartitionInfo, RollupOptions } from "./types-BS3Rx8Sk.cjs";
2
-
3
- //#region src/metrics/storage/MetricsStorage.d.ts
4
-
5
- /**
6
- * Interface for metrics storage backends.
7
- *
8
- * Implementations can use different storage technologies:
9
- * - In-memory (development/testing)
10
- * - PostgreSQL with TimescaleDB
11
- * - ClickHouse
12
- * - InfluxDB
13
- */
14
- interface MetricsStorage {
15
- /**
16
- * Write raw metric points to storage.
17
- * Points are typically buffered and flushed in batches.
18
- */
19
- write(points: MetricPoint[]): Promise<void>;
20
- /**
21
- * Query metrics with aggregation.
22
- * Returns time series data with statistics.
23
- */
24
- query(query: MetricQuery): Promise<MetricResult[]>;
25
- /**
26
- * Get a single aggregated bucket for a specific time range.
27
- * Useful for dashboards showing current values.
28
- */
29
- getBucket(projectId: string, name: string, bucket: Date): Promise<MetricBucket | null>;
30
- /**
31
- * Roll up data from one tier to another.
32
- * Aggregates fine-grained data into coarser buckets.
33
- */
34
- rollup(options: RollupOptions): Promise<number>;
35
- /**
36
- * Prune old data based on retention policies.
37
- * Returns the number of records deleted.
38
- */
39
- prune(): Promise<number>;
40
- /**
41
- * List partitions for management and monitoring.
42
- */
43
- listPartitions(tier?: string): Promise<PartitionInfo[]>;
44
- /**
45
- * Get storage configuration.
46
- */
47
- getConfig(): MetricsStorageConfig;
48
- /**
49
- * Flush any buffered data to storage.
50
- */
51
- flush(): Promise<void>;
52
- /**
53
- * Close the storage connection and clean up resources.
54
- */
55
- close(): Promise<void>;
56
- }
57
- //# sourceMappingURL=MetricsStorage.d.ts.map
58
- //#endregion
59
- export { MetricsStorage };
60
- //# sourceMappingURL=MetricsStorage-B86e4131.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetricsStorage-B86e4131.d.cts","names":[],"sources":["../src/metrics/storage/MetricsStorage.ts"],"sourcesContent":[],"mappings":";;;;;;AAmBA;;;;;;;AAoBU,UApBO,cAAA,CAoBP;EAAI;;;;EAO0B,KAM9B,CAAA,MAAA,EA5BK,WA4BL,EAAA,CAAA,EA5BqB,OA4BrB,CAAA,IAAA,CAAA;EAAO;;;;EAeA,KAKP,CAAA,KAAA,EA1CI,WA0CJ,CAAA,EA1CkB,OA0ClB,CA1C0B,YA0C1B,EAAA,CAAA;EAAO;;;;qDAjCP,OACN,QAAQ;;;;;kBAMK,gBAAgB;;;;;WAMvB;;;;iCAKsB,QAAQ;;;;eAK1B;;;;WAKJ;;;;WAKA"}
@@ -1,60 +0,0 @@
1
- import { MetricBucket, MetricPoint, MetricQuery, MetricResult, MetricsStorageConfig, PartitionInfo, RollupOptions } from "./types-CbNGXnJE.mjs";
2
-
3
- //#region src/metrics/storage/MetricsStorage.d.ts
4
-
5
- /**
6
- * Interface for metrics storage backends.
7
- *
8
- * Implementations can use different storage technologies:
9
- * - In-memory (development/testing)
10
- * - PostgreSQL with TimescaleDB
11
- * - ClickHouse
12
- * - InfluxDB
13
- */
14
- interface MetricsStorage {
15
- /**
16
- * Write raw metric points to storage.
17
- * Points are typically buffered and flushed in batches.
18
- */
19
- write(points: MetricPoint[]): Promise<void>;
20
- /**
21
- * Query metrics with aggregation.
22
- * Returns time series data with statistics.
23
- */
24
- query(query: MetricQuery): Promise<MetricResult[]>;
25
- /**
26
- * Get a single aggregated bucket for a specific time range.
27
- * Useful for dashboards showing current values.
28
- */
29
- getBucket(projectId: string, name: string, bucket: Date): Promise<MetricBucket | null>;
30
- /**
31
- * Roll up data from one tier to another.
32
- * Aggregates fine-grained data into coarser buckets.
33
- */
34
- rollup(options: RollupOptions): Promise<number>;
35
- /**
36
- * Prune old data based on retention policies.
37
- * Returns the number of records deleted.
38
- */
39
- prune(): Promise<number>;
40
- /**
41
- * List partitions for management and monitoring.
42
- */
43
- listPartitions(tier?: string): Promise<PartitionInfo[]>;
44
- /**
45
- * Get storage configuration.
46
- */
47
- getConfig(): MetricsStorageConfig;
48
- /**
49
- * Flush any buffered data to storage.
50
- */
51
- flush(): Promise<void>;
52
- /**
53
- * Close the storage connection and clean up resources.
54
- */
55
- close(): Promise<void>;
56
- }
57
- //# sourceMappingURL=MetricsStorage.d.ts.map
58
- //#endregion
59
- export { MetricsStorage };
60
- //# sourceMappingURL=MetricsStorage-BWyP2_12.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetricsStorage-BWyP2_12.d.mts","names":[],"sources":["../src/metrics/storage/MetricsStorage.ts"],"sourcesContent":[],"mappings":";;;;;;AAmBA;;;;;;;AAoBU,UApBO,cAAA,CAoBP;EAAI;;;;EAO0B,KAM9B,CAAA,MAAA,EA5BK,WA4BL,EAAA,CAAA,EA5BqB,OA4BrB,CAAA,IAAA,CAAA;EAAO;;;;EAeA,KAKP,CAAA,KAAA,EA1CI,WA0CJ,CAAA,EA1CkB,OA0ClB,CA1C0B,YA0C1B,EAAA,CAAA;EAAO;;;;qDAjCP,OACN,QAAQ;;;;;kBAMK,gBAAgB;;;;;WAMvB;;;;iCAKsB,QAAQ;;;;eAK1B;;;;WAKJ;;;;WAKA"}
File without changes
File without changes