@geekmidas/telescope 10.0.0-alpha.99 → 10.0.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 (480) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +18 -28
  3. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +47 -0
  4. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +1 -0
  5. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +247 -0
  6. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +1 -0
  7. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +252 -0
  8. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +1 -0
  9. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +47 -0
  10. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +1 -0
  11. package/dist/{MetricsAggregator-BJdIvfEv.d.mts → MetricsAggregator-4SqelGcG.d.cts} +6 -3
  12. package/dist/MetricsAggregator-4SqelGcG.d.cts.map +1 -0
  13. package/dist/MetricsAggregator-B7lUICdH.cjs +363 -0
  14. package/dist/MetricsAggregator-B7lUICdH.cjs.map +1 -0
  15. package/dist/{MetricsAggregator-CnC3oT5q.d.cts → MetricsAggregator-DZrW8ls6.d.mts} +6 -3
  16. package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +1 -0
  17. package/dist/MetricsAggregator-S3DQWNas.mjs +357 -0
  18. package/dist/MetricsAggregator-S3DQWNas.mjs.map +1 -0
  19. package/dist/MetricsStorage-B86e4131.d.cts +60 -0
  20. package/dist/MetricsStorage-B86e4131.d.cts.map +1 -0
  21. package/dist/MetricsStorage-BWyP2_12.d.mts +60 -0
  22. package/dist/MetricsStorage-BWyP2_12.d.mts.map +1 -0
  23. package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
  24. package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
  25. package/dist/Telescope-Cs3fv8jt.cjs +395 -0
  26. package/dist/Telescope-Cs3fv8jt.cjs.map +1 -0
  27. package/dist/{Telescope-BVfDvVvY.d.mts → Telescope-D4nmwDRA.d.cts} +7 -4
  28. package/dist/Telescope-D4nmwDRA.d.cts.map +1 -0
  29. package/dist/Telescope-Dh5av3FC.mjs +389 -0
  30. package/dist/Telescope-Dh5av3FC.mjs.map +1 -0
  31. package/dist/{Telescope-DeqSHfuB.d.cts → Telescope-Dl6VSfxd.d.mts} +7 -4
  32. package/dist/Telescope-Dl6VSfxd.d.mts.map +1 -0
  33. package/dist/Telescope.cjs +4 -385
  34. package/dist/Telescope.d.cts +3 -1
  35. package/dist/Telescope.d.mts +3 -1
  36. package/dist/Telescope.mjs +4 -384
  37. package/dist/adapters/index.d.cts +2 -2
  38. package/dist/adapters/index.d.mts +2 -2
  39. package/dist/adapters/index.mjs +0 -1
  40. package/dist/adapters/lambda.cjs +10 -9
  41. package/dist/adapters/lambda.cjs.map +1 -1
  42. package/dist/adapters/lambda.d.cts +13 -9
  43. package/dist/adapters/lambda.d.cts.map +1 -1
  44. package/dist/adapters/lambda.d.mts +13 -9
  45. package/dist/adapters/lambda.d.mts.map +1 -1
  46. package/dist/adapters/lambda.mjs +4 -3
  47. package/dist/adapters/lambda.mjs.map +1 -1
  48. package/dist/adapters/middy.cjs +4 -236
  49. package/dist/adapters/middy.d.cts +5 -60
  50. package/dist/adapters/middy.d.mts +5 -60
  51. package/dist/adapters/middy.mjs +3 -234
  52. package/dist/adapters/types.d.cts +2 -162
  53. package/dist/adapters/types.d.mts +2 -162
  54. package/dist/adapters/types.mjs +0 -1
  55. package/dist/{rolldown-runtime-VH7oDXx4.cjs → chunk-CUT6urMc.cjs} +10 -8
  56. package/dist/core--quSp5Qr.d.mts +78 -0
  57. package/dist/core--quSp5Qr.d.mts.map +1 -0
  58. package/dist/core-B4Jpia5H.d.cts +78 -0
  59. package/dist/core-B4Jpia5H.d.cts.map +1 -0
  60. package/dist/core-CtVHRJGv.cjs +199 -0
  61. package/dist/core-CtVHRJGv.cjs.map +1 -0
  62. package/dist/core-D6hJ6exL.mjs +139 -0
  63. package/dist/core-D6hJ6exL.mjs.map +1 -0
  64. package/dist/core.cjs +22 -22
  65. package/dist/core.d.cts +4 -4
  66. package/dist/core.d.mts +4 -4
  67. package/dist/core.mjs +4 -3
  68. package/dist/hono--uKQ7Jgi.d.mts +71 -0
  69. package/dist/hono--uKQ7Jgi.d.mts.map +1 -0
  70. package/dist/hono-C4EgpbKQ.cjs +160 -0
  71. package/dist/hono-C4EgpbKQ.cjs.map +1 -0
  72. package/dist/hono-CemCKU87.d.cts +71 -0
  73. package/dist/hono-CemCKU87.d.cts.map +1 -0
  74. package/dist/hono-DxhvnVbF.mjs +136 -0
  75. package/dist/hono-DxhvnVbF.mjs.map +1 -0
  76. package/dist/http-BiNtg85L.d.mts +107 -0
  77. package/dist/http-BiNtg85L.d.mts.map +1 -0
  78. package/dist/http-DQzgLczm.mjs +159 -0
  79. package/dist/http-DQzgLczm.mjs.map +1 -0
  80. package/dist/http-D_Z8sYXZ.cjs +219 -0
  81. package/dist/http-D_Z8sYXZ.cjs.map +1 -0
  82. package/dist/http-Dvca6fC3.d.cts +107 -0
  83. package/dist/http-Dvca6fC3.d.cts.map +1 -0
  84. package/dist/index-BL32-cvv.d.cts +1 -0
  85. package/dist/index-CsuikFeJ.d.mts +1 -0
  86. package/dist/index.cjs +9 -8
  87. package/dist/index.d.cts +6 -5
  88. package/dist/index.d.mts +6 -5
  89. package/dist/index.mjs +7 -5
  90. package/dist/instrumentation/core.cjs +11 -147
  91. package/dist/instrumentation/core.d.cts +3 -74
  92. package/dist/instrumentation/core.d.mts +3 -74
  93. package/dist/instrumentation/core.mjs +2 -137
  94. package/dist/instrumentation/hono.cjs +6 -174
  95. package/dist/instrumentation/hono.d.cts +2 -86
  96. package/dist/instrumentation/hono.d.mts +2 -86
  97. package/dist/instrumentation/hono.mjs +3 -170
  98. package/dist/instrumentation/http.cjs +11 -189
  99. package/dist/instrumentation/http.d.cts +2 -119
  100. package/dist/instrumentation/http.d.mts +2 -119
  101. package/dist/instrumentation/http.mjs +2 -178
  102. package/dist/instrumentation/index.cjs +47 -56
  103. package/dist/instrumentation/index.d.cts +9 -11
  104. package/dist/instrumentation/index.d.mts +9 -11
  105. package/dist/instrumentation/index.mjs +9 -10
  106. package/dist/instrumentation/middleware.cjs +6 -164
  107. package/dist/instrumentation/middleware.d.cts +2 -83
  108. package/dist/instrumentation/middleware.d.mts +2 -83
  109. package/dist/instrumentation/middleware.mjs +3 -160
  110. package/dist/instrumentation/otel.cjs +3 -137
  111. package/dist/instrumentation/otel.d.cts +2 -97
  112. package/dist/instrumentation/otel.d.mts +2 -97
  113. package/dist/instrumentation/otel.mjs +3 -136
  114. package/dist/instrumentation/setup.cjs +4 -142
  115. package/dist/instrumentation/setup.d.cts +3 -139
  116. package/dist/instrumentation/setup.d.mts +3 -139
  117. package/dist/instrumentation/setup.mjs +3 -139
  118. package/dist/instrumentation/tracing.cjs +10 -114
  119. package/dist/instrumentation/tracing.d.cts +2 -49
  120. package/dist/instrumentation/tracing.d.mts +2 -49
  121. package/dist/instrumentation/tracing.mjs +2 -105
  122. package/dist/logger/console.cjs +12 -18
  123. package/dist/logger/console.cjs.map +1 -1
  124. package/dist/logger/console.d.cts +10 -7
  125. package/dist/logger/console.d.cts.map +1 -1
  126. package/dist/logger/console.d.mts +10 -7
  127. package/dist/logger/console.d.mts.map +1 -1
  128. package/dist/logger/console.mjs +11 -17
  129. package/dist/logger/console.mjs.map +1 -1
  130. package/dist/logger/pino.cjs +5 -6
  131. package/dist/logger/pino.cjs.map +1 -1
  132. package/dist/logger/pino.d.cts +10 -6
  133. package/dist/logger/pino.d.cts.map +1 -1
  134. package/dist/logger/pino.d.mts +10 -6
  135. package/dist/logger/pino.d.mts.map +1 -1
  136. package/dist/logger/pino.mjs +3 -2
  137. package/dist/logger/pino.mjs.map +1 -1
  138. package/dist/memory--BK4iWiv.d.cts +40 -0
  139. package/dist/memory--BK4iWiv.d.cts.map +1 -0
  140. package/dist/memory-6S9H-IF5.mjs +123 -0
  141. package/dist/memory-6S9H-IF5.mjs.map +1 -0
  142. package/dist/memory-B0d_n1g5.cjs +129 -0
  143. package/dist/memory-B0d_n1g5.cjs.map +1 -0
  144. package/dist/memory-DCirEVFW.d.mts +40 -0
  145. package/dist/memory-DCirEVFW.d.mts.map +1 -0
  146. package/dist/metrics/MetricsAggregator.cjs +2 -354
  147. package/dist/metrics/MetricsAggregator.d.cts +2 -1
  148. package/dist/metrics/MetricsAggregator.d.mts +2 -1
  149. package/dist/metrics/MetricsAggregator.mjs +2 -353
  150. package/dist/metrics/index.cjs +4 -3
  151. package/dist/metrics/index.d.cts +4 -2
  152. package/dist/metrics/index.d.mts +4 -2
  153. package/dist/metrics/index.mjs +4 -2
  154. package/dist/metrics/storage/InMemoryMetricsStorage.cjs +3 -240
  155. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +4 -43
  156. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +4 -43
  157. package/dist/metrics/storage/InMemoryMetricsStorage.mjs +3 -239
  158. package/dist/metrics/storage/MetricsStorage.cjs +1 -0
  159. package/dist/metrics/storage/MetricsStorage.d.cts +3 -56
  160. package/dist/metrics/storage/MetricsStorage.d.mts +3 -56
  161. package/dist/metrics/storage/MetricsStorage.mjs +1 -1
  162. package/dist/metrics/storage/index.cjs +6 -6
  163. package/dist/metrics/storage/index.d.cts +3 -3
  164. package/dist/metrics/storage/index.d.mts +3 -3
  165. package/dist/metrics/storage/index.mjs +5 -4
  166. package/dist/metrics/storage/types.cjs +2 -34
  167. package/dist/metrics/storage/types.d.cts +2 -207
  168. package/dist/metrics/storage/types.d.mts +2 -207
  169. package/dist/metrics/storage/types.mjs +2 -33
  170. package/dist/metrics-D5YT-Rnq.mjs +0 -0
  171. package/dist/metrics-fhD3l3C3.cjs +0 -0
  172. package/dist/middleware-B2jFUukM.cjs +184 -0
  173. package/dist/middleware-B2jFUukM.cjs.map +1 -0
  174. package/dist/middleware-BTDncHwm.mjs +160 -0
  175. package/dist/middleware-BTDncHwm.mjs.map +1 -0
  176. package/dist/middleware-CA84nsNN.d.cts +74 -0
  177. package/dist/middleware-CA84nsNN.d.cts.map +1 -0
  178. package/dist/middleware-DAceVpfw.d.mts +74 -0
  179. package/dist/middleware-DAceVpfw.d.mts.map +1 -0
  180. package/dist/middy-B6Btl8XE.d.mts +64 -0
  181. package/dist/middy-B6Btl8XE.d.mts.map +1 -0
  182. package/dist/middy-BTR3cyvk.mjs +236 -0
  183. package/dist/middy-BTR3cyvk.mjs.map +1 -0
  184. package/dist/middy-Bq0defVg.d.cts +64 -0
  185. package/dist/middy-Bq0defVg.d.cts.map +1 -0
  186. package/dist/middy-y5Zp27eG.cjs +247 -0
  187. package/dist/middy-y5Zp27eG.cjs.map +1 -0
  188. package/dist/otel-1bJPb2Z7.d.mts +101 -0
  189. package/dist/otel-1bJPb2Z7.d.mts.map +1 -0
  190. package/dist/otel-C1HqHA2O.cjs +136 -0
  191. package/dist/otel-C1HqHA2O.cjs.map +1 -0
  192. package/dist/otel-SBVoVEHr.d.cts +101 -0
  193. package/dist/otel-SBVoVEHr.d.cts.map +1 -0
  194. package/dist/otel-wulj5B-X.mjs +130 -0
  195. package/dist/otel-wulj5B-X.mjs.map +1 -0
  196. package/dist/otlp/hono.cjs +15 -9
  197. package/dist/otlp/hono.cjs.map +1 -1
  198. package/dist/otlp/hono.d.cts +13 -3
  199. package/dist/otlp/hono.d.cts.map +1 -1
  200. package/dist/otlp/hono.d.mts +13 -3
  201. package/dist/otlp/hono.d.mts.map +1 -1
  202. package/dist/otlp/hono.mjs +11 -5
  203. package/dist/otlp/hono.mjs.map +1 -1
  204. package/dist/otlp/index.cjs +11 -11
  205. package/dist/otlp/index.d.cts +7 -4
  206. package/dist/otlp/index.d.mts +7 -4
  207. package/dist/otlp/index.mjs +5 -4
  208. package/dist/otlp/receiver.cjs +4 -88
  209. package/dist/otlp/receiver.d.cts +7 -59
  210. package/dist/otlp/receiver.d.mts +7 -59
  211. package/dist/otlp/receiver.mjs +4 -87
  212. package/dist/otlp/transformer.cjs +5 -214
  213. package/dist/otlp/transformer.d.cts +3 -1
  214. package/dist/otlp/transformer.d.mts +3 -1
  215. package/dist/otlp/transformer.mjs +3 -211
  216. package/dist/otlp/types.cjs +5 -57
  217. package/dist/otlp/types.d.cts +1 -1
  218. package/dist/otlp/types.d.mts +1 -1
  219. package/dist/otlp/types.mjs +2 -53
  220. package/dist/receiver-Cj1lbAOO.cjs +94 -0
  221. package/dist/receiver-Cj1lbAOO.cjs.map +1 -0
  222. package/dist/receiver-CxVd_9CB.mjs +89 -0
  223. package/dist/receiver-CxVd_9CB.mjs.map +1 -0
  224. package/dist/receiver-DLICx5uU.d.cts +63 -0
  225. package/dist/receiver-DLICx5uU.d.cts.map +1 -0
  226. package/dist/receiver-UeZT-H8u.d.mts +63 -0
  227. package/dist/receiver-UeZT-H8u.d.mts.map +1 -0
  228. package/dist/redact-BzkITCNW.mjs +83 -0
  229. package/dist/redact-BzkITCNW.mjs.map +1 -0
  230. package/dist/redact-DVaSSPZT.cjs +95 -0
  231. package/dist/redact-DVaSSPZT.cjs.map +1 -0
  232. package/dist/redact.cjs +3 -84
  233. package/dist/redact.d.cts +8 -4
  234. package/dist/redact.d.cts.map +1 -1
  235. package/dist/redact.d.mts +8 -4
  236. package/dist/redact.d.mts.map +1 -1
  237. package/dist/redact.mjs +2 -80
  238. package/dist/server/hono.cjs +54 -33
  239. package/dist/server/hono.cjs.map +1 -1
  240. package/dist/server/hono.d.cts +14 -19
  241. package/dist/server/hono.d.cts.map +1 -1
  242. package/dist/server/hono.d.mts +14 -19
  243. package/dist/server/hono.d.mts.map +1 -1
  244. package/dist/server/hono.mjs +52 -31
  245. package/dist/server/hono.mjs.map +1 -1
  246. package/dist/setup-B9jM77Qk.mjs +98 -0
  247. package/dist/setup-B9jM77Qk.mjs.map +1 -0
  248. package/dist/setup-Bkxm4g6b.d.mts +87 -0
  249. package/dist/setup-Bkxm4g6b.d.mts.map +1 -0
  250. package/dist/setup-CYpff5B9.cjs +110 -0
  251. package/dist/setup-CYpff5B9.cjs.map +1 -0
  252. package/dist/setup-D58N1f9O.d.cts +87 -0
  253. package/dist/setup-D58N1f9O.d.cts.map +1 -0
  254. package/dist/storage/kysely.cjs +70 -82
  255. package/dist/storage/kysely.cjs.map +1 -1
  256. package/dist/storage/kysely.d.cts +20 -36
  257. package/dist/storage/kysely.d.cts.map +1 -1
  258. package/dist/storage/kysely.d.mts +20 -36
  259. package/dist/storage/kysely.d.mts.map +1 -1
  260. package/dist/storage/kysely.mjs +69 -81
  261. package/dist/storage/kysely.mjs.map +1 -1
  262. package/dist/storage/memory.cjs +2 -122
  263. package/dist/storage/memory.d.cts +3 -36
  264. package/dist/storage/memory.d.mts +3 -36
  265. package/dist/storage/memory.mjs +2 -121
  266. package/dist/tracing-BX8uY2nR.d.cts +53 -0
  267. package/dist/tracing-BX8uY2nR.d.cts.map +1 -0
  268. package/dist/tracing-Bt1zWRlb.cjs +167 -0
  269. package/dist/tracing-Bt1zWRlb.cjs.map +1 -0
  270. package/dist/tracing-Cijm_5NI.mjs +113 -0
  271. package/dist/tracing-Cijm_5NI.mjs.map +1 -0
  272. package/dist/tracing-PnECEbEu.d.mts +53 -0
  273. package/dist/tracing-PnECEbEu.d.mts.map +1 -0
  274. package/dist/transformer-BXQPhzql.mjs +215 -0
  275. package/dist/transformer-BXQPhzql.mjs.map +1 -0
  276. package/dist/transformer-CLGZ0EQc.cjs +232 -0
  277. package/dist/transformer-CLGZ0EQc.cjs.map +1 -0
  278. package/dist/{transformer-BtqjAs0b.d.cts → transformer-CTGsaVfV.d.mts} +8 -4
  279. package/dist/transformer-CTGsaVfV.d.mts.map +1 -0
  280. package/dist/{transformer-DI6t8-YA.d.mts → transformer-ICEbxpFf.d.cts} +8 -4
  281. package/dist/transformer-ICEbxpFf.d.cts.map +1 -0
  282. package/dist/{types-BVujq4zd.d.mts → types-B1EIa_cQ.d.mts} +4 -3
  283. package/dist/types-B1EIa_cQ.d.mts.map +1 -0
  284. package/dist/types-BRzW1NM8.d.cts +166 -0
  285. package/dist/types-BRzW1NM8.d.cts.map +1 -0
  286. package/dist/types-BS3Rx8Sk.d.cts +209 -0
  287. package/dist/types-BS3Rx8Sk.d.cts.map +1 -0
  288. package/dist/types-Bwm_jNU7.mjs +54 -0
  289. package/dist/types-Bwm_jNU7.mjs.map +1 -0
  290. package/dist/types-BzQ78Efw.d.mts +166 -0
  291. package/dist/types-BzQ78Efw.d.mts.map +1 -0
  292. package/dist/types-CbNGXnJE.d.mts +209 -0
  293. package/dist/types-CbNGXnJE.d.mts.map +1 -0
  294. package/dist/{types-DVETVdpa.d.cts → types-CmOB7CLO.d.cts} +7 -6
  295. package/dist/types-CmOB7CLO.d.cts.map +1 -0
  296. package/dist/{types-DVETVdpa.d.mts → types-DBc0q5KD.d.mts} +7 -6
  297. package/dist/types-DBc0q5KD.d.mts.map +1 -0
  298. package/dist/types-Dsh-DIO_.cjs +78 -0
  299. package/dist/types-Dsh-DIO_.cjs.map +1 -0
  300. package/dist/types-ZW-nfWf6.cjs +40 -0
  301. package/dist/types-ZW-nfWf6.cjs.map +1 -0
  302. package/dist/{types-BVujq4zd.d.cts → types-l7Rlb5Mg.d.cts} +4 -3
  303. package/dist/types-l7Rlb5Mg.d.cts.map +1 -0
  304. package/dist/types-ojhnLdwz.mjs +34 -0
  305. package/dist/types-ojhnLdwz.mjs.map +1 -0
  306. package/dist/types.d.cts +1 -1
  307. package/dist/types.d.mts +1 -1
  308. package/dist/types.mjs +0 -1
  309. package/dist/ui-assets-BEXqOQLe.cjs +48 -0
  310. package/dist/ui-assets-BEXqOQLe.cjs.map +1 -0
  311. package/dist/ui-assets-BhTDUsrM.mjs +30 -0
  312. package/dist/ui-assets-BhTDUsrM.mjs.map +1 -0
  313. package/dist/ui-assets.cjs +5 -0
  314. package/dist/ui-assets.d.cts +13 -0
  315. package/dist/ui-assets.d.cts.map +1 -0
  316. package/dist/ui-assets.d.mts +13 -0
  317. package/dist/ui-assets.d.mts.map +1 -0
  318. package/dist/ui-assets.mjs +3 -0
  319. package/package.json +46 -46
  320. package/src/Telescope.ts +561 -0
  321. package/src/__tests__/Telescope.spec.ts +438 -0
  322. package/src/__tests__/pino-transport.spec.ts +115 -0
  323. package/src/__tests__/redact.spec.ts +336 -0
  324. package/src/adapters/__tests__/lambda.spec.ts +318 -0
  325. package/src/adapters/__tests__/middy.spec.ts +741 -0
  326. package/src/adapters/index.ts +22 -0
  327. package/src/adapters/lambda.ts +432 -0
  328. package/src/adapters/middy.ts +402 -0
  329. package/src/adapters/types.ts +181 -0
  330. package/src/core.ts +51 -0
  331. package/src/index.ts +34 -0
  332. package/src/instrumentation/__tests__/core.spec.ts +248 -0
  333. package/src/instrumentation/__tests__/hono.spec.ts +348 -0
  334. package/src/instrumentation/__tests__/middleware.spec.ts +528 -0
  335. package/src/instrumentation/__tests__/otel.spec.ts +291 -0
  336. package/src/instrumentation/__tests__/tracing.spec.ts +208 -0
  337. package/src/instrumentation/core.ts +228 -0
  338. package/src/instrumentation/hono.ts +270 -0
  339. package/src/instrumentation/http.ts +306 -0
  340. package/src/instrumentation/index.ts +90 -0
  341. package/src/instrumentation/middleware.ts +297 -0
  342. package/src/instrumentation/otel.ts +271 -0
  343. package/src/instrumentation/setup.ts +246 -0
  344. package/src/instrumentation/tracing.ts +145 -0
  345. package/src/logger/__tests__/console.spec.ts +366 -0
  346. package/src/logger/__tests__/pino.spec.ts +217 -0
  347. package/src/logger/console.ts +230 -0
  348. package/src/logger/pino.ts +201 -0
  349. package/src/metrics/MetricsAggregator.ts +555 -0
  350. package/src/metrics/__tests__/MetricsAggregator.spec.ts +298 -0
  351. package/src/metrics/index.ts +2 -0
  352. package/src/metrics/storage/InMemoryMetricsStorage.ts +380 -0
  353. package/src/metrics/storage/MetricsStorage.ts +74 -0
  354. package/src/metrics/storage/index.ts +3 -0
  355. package/src/metrics/storage/types.ts +243 -0
  356. package/src/otlp/__tests__/receiver.spec.ts +367 -0
  357. package/src/otlp/__tests__/transformer.spec.ts +455 -0
  358. package/src/otlp/hono.ts +120 -0
  359. package/src/otlp/index.ts +22 -0
  360. package/src/otlp/receiver.ts +162 -0
  361. package/src/otlp/transformer.ts +367 -0
  362. package/src/otlp/types.ts +364 -0
  363. package/src/redact.ts +116 -0
  364. package/src/server/__tests__/hono.spec.ts +814 -0
  365. package/src/server/hono.ts +442 -0
  366. package/src/storage/__tests__/kysely.spec.ts +715 -0
  367. package/src/storage/__tests__/memory.spec.ts +694 -0
  368. package/src/storage/kysely.ts +599 -0
  369. package/src/storage/memory.ts +204 -0
  370. package/src/types.ts +447 -0
  371. package/src/ui-assets.ts +40 -0
  372. package/tsconfig.json +9 -0
  373. package/ui/CHANGELOG.md +7 -0
  374. package/ui/index.html +12 -0
  375. package/ui/node_modules/.bin/tsc +21 -0
  376. package/ui/node_modules/.bin/tsserver +21 -0
  377. package/ui/node_modules/.bin/vite +21 -0
  378. package/ui/package.json +24 -0
  379. package/ui/src/App.tsx +595 -0
  380. package/ui/src/api.ts +88 -0
  381. package/ui/src/components/ExceptionDetail.tsx +100 -0
  382. package/ui/src/components/FilterBar.tsx +162 -0
  383. package/ui/src/components/LogDetail.tsx +91 -0
  384. package/ui/src/components/RequestDetail.tsx +143 -0
  385. package/ui/src/main.tsx +10 -0
  386. package/ui/src/styles.css +11 -0
  387. package/ui/src/types.ts +63 -0
  388. package/ui/src/vite-env.d.ts +1 -0
  389. package/ui/src/vite-plugin-gkm-config.ts +54 -0
  390. package/ui/tsconfig.json +20 -0
  391. package/ui/tsconfig.tsbuildinfo +1 -0
  392. package/ui/vite.config.ts +13 -0
  393. package/dist/MetricsAggregator-BJdIvfEv.d.mts.map +0 -1
  394. package/dist/MetricsAggregator-CnC3oT5q.d.cts.map +0 -1
  395. package/dist/Telescope-BVfDvVvY.d.mts.map +0 -1
  396. package/dist/Telescope-DeqSHfuB.d.cts.map +0 -1
  397. package/dist/Telescope.cjs.map +0 -1
  398. package/dist/Telescope.mjs.map +0 -1
  399. package/dist/adapters/middy.cjs.map +0 -1
  400. package/dist/adapters/middy.d.cts.map +0 -1
  401. package/dist/adapters/middy.d.mts.map +0 -1
  402. package/dist/adapters/middy.mjs.map +0 -1
  403. package/dist/adapters/types.d.cts.map +0 -1
  404. package/dist/adapters/types.d.mts.map +0 -1
  405. package/dist/instrumentation/core.cjs.map +0 -1
  406. package/dist/instrumentation/core.d.cts.map +0 -1
  407. package/dist/instrumentation/core.d.mts.map +0 -1
  408. package/dist/instrumentation/core.mjs.map +0 -1
  409. package/dist/instrumentation/hono.cjs.map +0 -1
  410. package/dist/instrumentation/hono.d.cts.map +0 -1
  411. package/dist/instrumentation/hono.d.mts.map +0 -1
  412. package/dist/instrumentation/hono.mjs.map +0 -1
  413. package/dist/instrumentation/http.cjs.map +0 -1
  414. package/dist/instrumentation/http.d.cts.map +0 -1
  415. package/dist/instrumentation/http.d.mts.map +0 -1
  416. package/dist/instrumentation/http.mjs.map +0 -1
  417. package/dist/instrumentation/middleware.cjs.map +0 -1
  418. package/dist/instrumentation/middleware.d.cts.map +0 -1
  419. package/dist/instrumentation/middleware.d.mts.map +0 -1
  420. package/dist/instrumentation/middleware.mjs.map +0 -1
  421. package/dist/instrumentation/otel.cjs.map +0 -1
  422. package/dist/instrumentation/otel.d.cts.map +0 -1
  423. package/dist/instrumentation/otel.d.mts.map +0 -1
  424. package/dist/instrumentation/otel.mjs.map +0 -1
  425. package/dist/instrumentation/sampler.cjs +0 -54
  426. package/dist/instrumentation/sampler.cjs.map +0 -1
  427. package/dist/instrumentation/sampler.d.cts +0 -38
  428. package/dist/instrumentation/sampler.d.cts.map +0 -1
  429. package/dist/instrumentation/sampler.d.mts +0 -38
  430. package/dist/instrumentation/sampler.d.mts.map +0 -1
  431. package/dist/instrumentation/sampler.mjs +0 -52
  432. package/dist/instrumentation/sampler.mjs.map +0 -1
  433. package/dist/instrumentation/setup.cjs.map +0 -1
  434. package/dist/instrumentation/setup.d.cts.map +0 -1
  435. package/dist/instrumentation/setup.d.mts.map +0 -1
  436. package/dist/instrumentation/setup.mjs.map +0 -1
  437. package/dist/instrumentation/tracing.cjs.map +0 -1
  438. package/dist/instrumentation/tracing.d.cts.map +0 -1
  439. package/dist/instrumentation/tracing.d.mts.map +0 -1
  440. package/dist/instrumentation/tracing.mjs.map +0 -1
  441. package/dist/instrumentation/trust.cjs +0 -107
  442. package/dist/instrumentation/trust.cjs.map +0 -1
  443. package/dist/instrumentation/trust.d.cts +0 -57
  444. package/dist/instrumentation/trust.d.cts.map +0 -1
  445. package/dist/instrumentation/trust.d.mts +0 -57
  446. package/dist/instrumentation/trust.d.mts.map +0 -1
  447. package/dist/instrumentation/trust.mjs +0 -104
  448. package/dist/instrumentation/trust.mjs.map +0 -1
  449. package/dist/metrics/MetricsAggregator.cjs.map +0 -1
  450. package/dist/metrics/MetricsAggregator.mjs.map +0 -1
  451. package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +0 -1
  452. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +0 -1
  453. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +0 -1
  454. package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +0 -1
  455. package/dist/metrics/storage/MetricsStorage.d.cts.map +0 -1
  456. package/dist/metrics/storage/MetricsStorage.d.mts.map +0 -1
  457. package/dist/metrics/storage/types.cjs.map +0 -1
  458. package/dist/metrics/storage/types.d.cts.map +0 -1
  459. package/dist/metrics/storage/types.d.mts.map +0 -1
  460. package/dist/metrics/storage/types.mjs.map +0 -1
  461. package/dist/otlp/receiver.cjs.map +0 -1
  462. package/dist/otlp/receiver.d.cts.map +0 -1
  463. package/dist/otlp/receiver.d.mts.map +0 -1
  464. package/dist/otlp/receiver.mjs.map +0 -1
  465. package/dist/otlp/transformer.cjs.map +0 -1
  466. package/dist/otlp/transformer.mjs.map +0 -1
  467. package/dist/otlp/types.cjs.map +0 -1
  468. package/dist/otlp/types.mjs.map +0 -1
  469. package/dist/redact.cjs.map +0 -1
  470. package/dist/redact.mjs.map +0 -1
  471. package/dist/storage/memory.cjs.map +0 -1
  472. package/dist/storage/memory.d.cts.map +0 -1
  473. package/dist/storage/memory.d.mts.map +0 -1
  474. package/dist/storage/memory.mjs.map +0 -1
  475. package/dist/transformer-BtqjAs0b.d.cts.map +0 -1
  476. package/dist/transformer-DI6t8-YA.d.mts.map +0 -1
  477. package/dist/types-BVujq4zd.d.cts.map +0 -1
  478. package/dist/types-BVujq4zd.d.mts.map +0 -1
  479. package/dist/types-DVETVdpa.d.cts.map +0 -1
  480. package/dist/types-DVETVdpa.d.mts.map +0 -1
@@ -0,0 +1,215 @@
1
+ import { SeverityNumber, SpanKind, SpanStatusCode } from "./types-Bwm_jNU7.mjs";
2
+
3
+ //#region src/otlp/transformer.ts
4
+ /**
5
+ * Extract a primitive value from an AnyValue
6
+ */
7
+ function extractValue(value) {
8
+ if (!value) return void 0;
9
+ if (value.stringValue !== void 0) return value.stringValue;
10
+ if (value.boolValue !== void 0) return value.boolValue;
11
+ if (value.intValue !== void 0) return parseInt(value.intValue, 10);
12
+ if (value.doubleValue !== void 0) return value.doubleValue;
13
+ if (value.bytesValue !== void 0) return value.bytesValue;
14
+ if (value.arrayValue) return value.arrayValue.values.map(extractValue);
15
+ if (value.kvlistValue) return attributesToObject(value.kvlistValue.values);
16
+ return void 0;
17
+ }
18
+ /**
19
+ * Convert KeyValue array to a plain object
20
+ */
21
+ function attributesToObject(attrs) {
22
+ if (!attrs) return {};
23
+ const result = {};
24
+ for (const attr of attrs) result[attr.key] = extractValue(attr.value);
25
+ return result;
26
+ }
27
+ /**
28
+ * Convert nanoseconds string to Date
29
+ */
30
+ function nanoToDate(nanoStr) {
31
+ const nano = BigInt(nanoStr);
32
+ const ms = Number(nano / BigInt(1e6));
33
+ return new Date(ms);
34
+ }
35
+ /**
36
+ * Convert nanoseconds string to milliseconds number
37
+ */
38
+ function nanoToMs(nanoStr) {
39
+ const nano = BigInt(nanoStr);
40
+ return Number(nano / BigInt(1e6));
41
+ }
42
+ /**
43
+ * Map OTLP severity number to Telescope log level
44
+ */
45
+ function mapSeverity(severity) {
46
+ if (severity === void 0) return "info";
47
+ if (severity <= SeverityNumber.SEVERITY_NUMBER_DEBUG4) return "debug";
48
+ if (severity <= SeverityNumber.SEVERITY_NUMBER_INFO4) return "info";
49
+ if (severity <= SeverityNumber.SEVERITY_NUMBER_WARN4) return "warn";
50
+ return "error";
51
+ }
52
+ /**
53
+ * Determine HTTP status from span attributes and status
54
+ */
55
+ function getHttpStatus(span) {
56
+ const attrs = attributesToObject(span.attributes);
57
+ const statusCode = attrs["http.status_code"] ?? attrs["http.response.status_code"] ?? attrs["http.response_status_code"];
58
+ if (typeof statusCode === "number") return statusCode;
59
+ if (typeof statusCode === "string") return parseInt(statusCode, 10) || 200;
60
+ if (span.status?.code === SpanStatusCode.STATUS_CODE_ERROR) return 500;
61
+ if (span.status?.code === SpanStatusCode.STATUS_CODE_OK) return 200;
62
+ return 200;
63
+ }
64
+ /**
65
+ * Check if a span represents an HTTP server request
66
+ */
67
+ function isHttpServerSpan(span) {
68
+ if (span.kind !== SpanKind.SPAN_KIND_SERVER) return false;
69
+ const attrs = attributesToObject(span.attributes);
70
+ return !!(attrs["http.method"] || attrs["http.request.method"] || attrs["http.url"] || attrs["http.target"] || attrs["url.path"]);
71
+ }
72
+ /**
73
+ * Transform HTTP-related span attributes to RequestEntry format
74
+ */
75
+ function transformHttpSpan(span, resourceAttrs) {
76
+ const attrs = attributesToObject(span.attributes);
77
+ const method = String(attrs["http.method"] ?? attrs["http.request.method"] ?? "GET").toUpperCase();
78
+ const path = String(attrs["http.target"] ?? attrs["url.path"] ?? attrs["http.route"] ?? "/");
79
+ const url = String(attrs["http.url"] ?? attrs["url.full"] ?? `http://localhost${path}`);
80
+ const headers = {};
81
+ const userAgent = attrs["http.user_agent"] ?? attrs["user_agent.original"];
82
+ if (userAgent) headers["user-agent"] = String(userAgent);
83
+ const contentType = attrs["http.request.header.content_type"];
84
+ if (contentType) headers["content-type"] = String(contentType);
85
+ const startTime = nanoToMs(span.startTimeUnixNano);
86
+ const endTime = nanoToMs(span.endTimeUnixNano);
87
+ const duration = endTime - startTime;
88
+ const status = getHttpStatus(span);
89
+ const ip = attrs["net.peer.ip"] ?? attrs["client.address"] ?? attrs["http.client_ip"];
90
+ return {
91
+ method,
92
+ path,
93
+ url,
94
+ headers,
95
+ query: {},
96
+ status,
97
+ responseHeaders: {},
98
+ duration,
99
+ ip: ip ? String(ip) : void 0,
100
+ tags: [
101
+ `trace:${span.traceId}`,
102
+ `span:${span.spanId}`,
103
+ ...resourceAttrs["service.name"] ? [`service:${resourceAttrs["service.name"]}`] : []
104
+ ]
105
+ };
106
+ }
107
+ /**
108
+ * Transform OTLP traces to Telescope RequestEntries
109
+ * Only transforms HTTP server spans to request entries
110
+ */
111
+ function transformTraces(request) {
112
+ const entries = [];
113
+ for (const resourceSpans of request.resourceSpans ?? []) {
114
+ const resourceAttrs = attributesToObject(resourceSpans.resource?.attributes);
115
+ for (const scopeSpans of resourceSpans.scopeSpans ?? []) for (const span of scopeSpans.spans ?? []) if (isHttpServerSpan(span)) entries.push(transformHttpSpan(span, resourceAttrs));
116
+ }
117
+ return entries;
118
+ }
119
+ /**
120
+ * Transform a single OTLP log record to Telescope LogEntry
121
+ */
122
+ function transformLogRecord(record, resourceAttrs, scopeName) {
123
+ const attrs = attributesToObject(record.attributes);
124
+ let message = "";
125
+ if (record.body) {
126
+ const bodyValue = extractValue(record.body);
127
+ message = typeof bodyValue === "string" ? bodyValue : JSON.stringify(bodyValue);
128
+ }
129
+ const context = {
130
+ ...attrs,
131
+ ...resourceAttrs
132
+ };
133
+ if (scopeName) context["instrumentation.scope"] = scopeName;
134
+ if (record.severityText) context["severity.text"] = record.severityText;
135
+ return {
136
+ level: mapSeverity(record.severityNumber),
137
+ message,
138
+ context: Object.keys(context).length > 0 ? context : void 0,
139
+ requestId: record.spanId ? `span:${record.spanId}` : void 0
140
+ };
141
+ }
142
+ /**
143
+ * Transform OTLP logs to Telescope LogEntries
144
+ */
145
+ function transformLogs(request) {
146
+ const entries = [];
147
+ for (const resourceLogs of request.resourceLogs ?? []) {
148
+ const resourceAttrs = attributesToObject(resourceLogs.resource?.attributes);
149
+ for (const scopeLogs of resourceLogs.scopeLogs ?? []) {
150
+ const scopeName = scopeLogs.scope?.name;
151
+ for (const record of scopeLogs.logRecords ?? []) entries.push(transformLogRecord(record, resourceAttrs, scopeName));
152
+ }
153
+ }
154
+ return entries;
155
+ }
156
+ /**
157
+ * Transform OTLP metrics to normalized data points
158
+ * These can be used for custom metrics processing or forwarding
159
+ */
160
+ function transformMetrics(request) {
161
+ const points = [];
162
+ for (const resourceMetrics of request.resourceMetrics ?? []) {
163
+ const resourceAttrs = attributesToObject(resourceMetrics.resource?.attributes);
164
+ for (const scopeMetrics of resourceMetrics.scopeMetrics ?? []) for (const metric of scopeMetrics.metrics ?? []) {
165
+ const baseMeta = {
166
+ name: metric.name,
167
+ description: metric.description,
168
+ unit: metric.unit,
169
+ resourceAttributes: resourceAttrs
170
+ };
171
+ if (metric.gauge) for (const dp of metric.gauge.dataPoints) points.push({
172
+ ...baseMeta,
173
+ value: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),
174
+ timestamp: nanoToDate(dp.timeUnixNano),
175
+ attributes: attributesToObject(dp.attributes),
176
+ type: "gauge"
177
+ });
178
+ if (metric.sum) for (const dp of metric.sum.dataPoints) points.push({
179
+ ...baseMeta,
180
+ value: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),
181
+ timestamp: nanoToDate(dp.timeUnixNano),
182
+ attributes: attributesToObject(dp.attributes),
183
+ type: "sum"
184
+ });
185
+ if (metric.histogram) for (const dp of metric.histogram.dataPoints) points.push({
186
+ ...baseMeta,
187
+ value: dp.sum ?? 0,
188
+ timestamp: nanoToDate(dp.timeUnixNano),
189
+ attributes: {
190
+ ...attributesToObject(dp.attributes),
191
+ count: parseInt(dp.count, 10),
192
+ min: dp.min,
193
+ max: dp.max
194
+ },
195
+ type: "histogram"
196
+ });
197
+ if (metric.summary) for (const dp of metric.summary.dataPoints) points.push({
198
+ ...baseMeta,
199
+ value: dp.sum ?? 0,
200
+ timestamp: nanoToDate(dp.timeUnixNano),
201
+ attributes: {
202
+ ...attributesToObject(dp.attributes),
203
+ count: parseInt(dp.count, 10),
204
+ quantiles: dp.quantileValues
205
+ },
206
+ type: "summary"
207
+ });
208
+ }
209
+ }
210
+ return points;
211
+ }
212
+
213
+ //#endregion
214
+ export { transformLogs, transformMetrics, transformTraces };
215
+ //# sourceMappingURL=transformer-BXQPhzql.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer-BXQPhzql.mjs","names":["value?: AnyValue","attrs?: KeyValue[]","result: Record<string, unknown>","nanoStr: string","severity?: SeverityNumber","span: Span","resourceAttrs: Record<string, unknown>","headers: Record<string, string>","request: ExportTraceServiceRequest","entries: Array<Omit<RequestEntry, 'id' | 'timestamp'>>","record: LogRecord","scopeName?: string","context: Record<string, unknown>","request: ExportLogsServiceRequest","entries: Array<Omit<LogEntry, 'id' | 'timestamp'>>","request: ExportMetricsServiceRequest","points: MetricDataPoint[]"],"sources":["../src/otlp/transformer.ts"],"sourcesContent":["import type { LogEntry, RequestEntry } from '../types';\nimport {\n\ttype AnyValue,\n\ttype ExportLogsServiceRequest,\n\ttype ExportMetricsServiceRequest,\n\ttype ExportTraceServiceRequest,\n\ttype KeyValue,\n\ttype LogRecord,\n\tSeverityNumber,\n\ttype Span,\n\tSpanKind,\n\tSpanStatusCode,\n} from './types';\n\n/**\n * Extract a primitive value from an AnyValue\n */\nfunction extractValue(value?: AnyValue): unknown {\n\tif (!value) return undefined;\n\tif (value.stringValue !== undefined) return value.stringValue;\n\tif (value.boolValue !== undefined) return value.boolValue;\n\tif (value.intValue !== undefined) return parseInt(value.intValue, 10);\n\tif (value.doubleValue !== undefined) return value.doubleValue;\n\tif (value.bytesValue !== undefined) return value.bytesValue;\n\tif (value.arrayValue) return value.arrayValue.values.map(extractValue);\n\tif (value.kvlistValue) return attributesToObject(value.kvlistValue.values);\n\treturn undefined;\n}\n\n/**\n * Convert KeyValue array to a plain object\n */\nfunction attributesToObject(attrs?: KeyValue[]): Record<string, unknown> {\n\tif (!attrs) return {};\n\tconst result: Record<string, unknown> = {};\n\tfor (const attr of attrs) {\n\t\tresult[attr.key] = extractValue(attr.value);\n\t}\n\treturn result;\n}\n\n/**\n * Convert nanoseconds string to Date\n */\nfunction nanoToDate(nanoStr: string): Date {\n\tconst nano = BigInt(nanoStr);\n\tconst ms = Number(nano / BigInt(1_000_000));\n\treturn new Date(ms);\n}\n\n/**\n * Convert nanoseconds string to milliseconds number\n */\nfunction nanoToMs(nanoStr: string): number {\n\tconst nano = BigInt(nanoStr);\n\treturn Number(nano / BigInt(1_000_000));\n}\n\n/**\n * Map OTLP severity number to Telescope log level\n */\nfunction mapSeverity(\n\tseverity?: SeverityNumber,\n): 'debug' | 'info' | 'warn' | 'error' {\n\tif (severity === undefined) return 'info';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_DEBUG4) return 'debug';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_INFO4) return 'info';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_WARN4) return 'warn';\n\treturn 'error';\n}\n\n/**\n * Determine HTTP status from span attributes and status\n */\nfunction getHttpStatus(span: Span): number {\n\tconst attrs = attributesToObject(span.attributes);\n\n\t// Look for HTTP status code in various attribute names\n\tconst statusCode =\n\t\tattrs['http.status_code'] ??\n\t\tattrs['http.response.status_code'] ??\n\t\tattrs['http.response_status_code'];\n\n\tif (typeof statusCode === 'number') return statusCode;\n\tif (typeof statusCode === 'string') return parseInt(statusCode, 10) || 200;\n\n\t// Fall back to span status\n\tif (span.status?.code === SpanStatusCode.STATUS_CODE_ERROR) return 500;\n\tif (span.status?.code === SpanStatusCode.STATUS_CODE_OK) return 200;\n\n\treturn 200;\n}\n\n/**\n * Check if a span represents an HTTP server request\n */\nfunction isHttpServerSpan(span: Span): boolean {\n\tif (span.kind !== SpanKind.SPAN_KIND_SERVER) return false;\n\n\tconst attrs = attributesToObject(span.attributes);\n\treturn !!(\n\t\tattrs['http.method'] ||\n\t\tattrs['http.request.method'] ||\n\t\tattrs['http.url'] ||\n\t\tattrs['http.target'] ||\n\t\tattrs['url.path']\n\t);\n}\n\n/**\n * Transform HTTP-related span attributes to RequestEntry format\n */\nfunction transformHttpSpan(\n\tspan: Span,\n\tresourceAttrs: Record<string, unknown>,\n): Omit<RequestEntry, 'id' | 'timestamp'> {\n\tconst attrs = attributesToObject(span.attributes);\n\n\t// Extract HTTP method\n\tconst method = String(\n\t\tattrs['http.method'] ?? attrs['http.request.method'] ?? 'GET',\n\t).toUpperCase();\n\n\t// Extract path\n\tconst path = String(\n\t\tattrs['http.target'] ?? attrs['url.path'] ?? attrs['http.route'] ?? '/',\n\t);\n\n\t// Extract full URL\n\tconst url = String(\n\t\tattrs['http.url'] ?? attrs['url.full'] ?? `http://localhost${path}`,\n\t);\n\n\t// Extract headers (if available)\n\tconst headers: Record<string, string> = {};\n\tconst userAgent = attrs['http.user_agent'] ?? attrs['user_agent.original'];\n\tif (userAgent) headers['user-agent'] = String(userAgent);\n\n\tconst contentType = attrs['http.request.header.content_type'];\n\tif (contentType) headers['content-type'] = String(contentType);\n\n\t// Calculate duration\n\tconst startTime = nanoToMs(span.startTimeUnixNano);\n\tconst endTime = nanoToMs(span.endTimeUnixNano);\n\tconst duration = endTime - startTime;\n\n\t// Get status code\n\tconst status = getHttpStatus(span);\n\n\t// Extract client IP\n\tconst ip =\n\t\tattrs['net.peer.ip'] ?? attrs['client.address'] ?? attrs['http.client_ip'];\n\n\treturn {\n\t\tmethod,\n\t\tpath,\n\t\turl,\n\t\theaders,\n\t\tquery: {},\n\t\tstatus,\n\t\tresponseHeaders: {},\n\t\tduration,\n\t\tip: ip ? String(ip) : undefined,\n\t\ttags: [\n\t\t\t`trace:${span.traceId}`,\n\t\t\t`span:${span.spanId}`,\n\t\t\t...(resourceAttrs['service.name']\n\t\t\t\t? [`service:${resourceAttrs['service.name']}`]\n\t\t\t\t: []),\n\t\t],\n\t};\n}\n\n/**\n * Transform OTLP traces to Telescope RequestEntries\n * Only transforms HTTP server spans to request entries\n */\nexport function transformTraces(\n\trequest: ExportTraceServiceRequest,\n): Array<Omit<RequestEntry, 'id' | 'timestamp'>> {\n\tconst entries: Array<Omit<RequestEntry, 'id' | 'timestamp'>> = [];\n\n\tfor (const resourceSpans of request.resourceSpans ?? []) {\n\t\tconst resourceAttrs = attributesToObject(\n\t\t\tresourceSpans.resource?.attributes,\n\t\t);\n\n\t\tfor (const scopeSpans of resourceSpans.scopeSpans ?? []) {\n\t\t\tfor (const span of scopeSpans.spans ?? []) {\n\t\t\t\t// Only transform HTTP server spans\n\t\t\t\tif (isHttpServerSpan(span)) {\n\t\t\t\t\tentries.push(transformHttpSpan(span, resourceAttrs));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Transform a single OTLP log record to Telescope LogEntry\n */\nfunction transformLogRecord(\n\trecord: LogRecord,\n\tresourceAttrs: Record<string, unknown>,\n\tscopeName?: string,\n): Omit<LogEntry, 'id' | 'timestamp'> {\n\tconst attrs = attributesToObject(record.attributes);\n\n\t// Extract message from body\n\tlet message = '';\n\tif (record.body) {\n\t\tconst bodyValue = extractValue(record.body);\n\t\tmessage =\n\t\t\ttypeof bodyValue === 'string' ? bodyValue : JSON.stringify(bodyValue);\n\t}\n\n\t// Build context from attributes\n\tconst context: Record<string, unknown> = {\n\t\t...attrs,\n\t\t...resourceAttrs,\n\t};\n\n\tif (scopeName) {\n\t\tcontext['instrumentation.scope'] = scopeName;\n\t}\n\n\t// Add severity text if present\n\tif (record.severityText) {\n\t\tcontext['severity.text'] = record.severityText;\n\t}\n\n\treturn {\n\t\tlevel: mapSeverity(record.severityNumber),\n\t\tmessage,\n\t\tcontext: Object.keys(context).length > 0 ? context : undefined,\n\t\trequestId: record.spanId ? `span:${record.spanId}` : undefined,\n\t};\n}\n\n/**\n * Transform OTLP logs to Telescope LogEntries\n */\nexport function transformLogs(\n\trequest: ExportLogsServiceRequest,\n): Array<Omit<LogEntry, 'id' | 'timestamp'>> {\n\tconst entries: Array<Omit<LogEntry, 'id' | 'timestamp'>> = [];\n\n\tfor (const resourceLogs of request.resourceLogs ?? []) {\n\t\tconst resourceAttrs = attributesToObject(resourceLogs.resource?.attributes);\n\n\t\tfor (const scopeLogs of resourceLogs.scopeLogs ?? []) {\n\t\t\tconst scopeName = scopeLogs.scope?.name;\n\n\t\t\tfor (const record of scopeLogs.logRecords ?? []) {\n\t\t\t\tentries.push(transformLogRecord(record, resourceAttrs, scopeName));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Extracted metric data point for recording\n */\nexport interface MetricDataPoint {\n\tname: string;\n\tdescription?: string;\n\tunit?: string;\n\tvalue: number;\n\ttimestamp: Date;\n\tattributes: Record<string, unknown>;\n\tresourceAttributes: Record<string, unknown>;\n\ttype: 'gauge' | 'sum' | 'histogram' | 'summary';\n}\n\n/**\n * Transform OTLP metrics to normalized data points\n * These can be used for custom metrics processing or forwarding\n */\nexport function transformMetrics(\n\trequest: ExportMetricsServiceRequest,\n): MetricDataPoint[] {\n\tconst points: MetricDataPoint[] = [];\n\n\tfor (const resourceMetrics of request.resourceMetrics ?? []) {\n\t\tconst resourceAttrs = attributesToObject(\n\t\t\tresourceMetrics.resource?.attributes,\n\t\t);\n\n\t\tfor (const scopeMetrics of resourceMetrics.scopeMetrics ?? []) {\n\t\t\tfor (const metric of scopeMetrics.metrics ?? []) {\n\t\t\t\tconst baseMeta = {\n\t\t\t\t\tname: metric.name,\n\t\t\t\t\tdescription: metric.description,\n\t\t\t\t\tunit: metric.unit,\n\t\t\t\t\tresourceAttributes: resourceAttrs,\n\t\t\t\t};\n\n\t\t\t\t// Handle gauge\n\t\t\t\tif (metric.gauge) {\n\t\t\t\t\tfor (const dp of metric.gauge.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: attributesToObject(dp.attributes),\n\t\t\t\t\t\t\ttype: 'gauge',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle sum (counter)\n\t\t\t\tif (metric.sum) {\n\t\t\t\t\tfor (const dp of metric.sum.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: attributesToObject(dp.attributes),\n\t\t\t\t\t\t\ttype: 'sum',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle histogram (extract sum as the value)\n\t\t\t\tif (metric.histogram) {\n\t\t\t\t\tfor (const dp of metric.histogram.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.sum ?? 0,\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...attributesToObject(dp.attributes),\n\t\t\t\t\t\t\t\tcount: parseInt(dp.count, 10),\n\t\t\t\t\t\t\t\tmin: dp.min,\n\t\t\t\t\t\t\t\tmax: dp.max,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: 'histogram',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle summary\n\t\t\t\tif (metric.summary) {\n\t\t\t\t\tfor (const dp of metric.summary.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.sum ?? 0,\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...attributesToObject(dp.attributes),\n\t\t\t\t\t\t\t\tcount: parseInt(dp.count, 10),\n\t\t\t\t\t\t\t\tquantiles: dp.quantileValues,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: 'summary',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn points;\n}\n"],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ const require_types = require('./types-Dsh-DIO_.cjs');
2
+
3
+ //#region src/otlp/transformer.ts
4
+ /**
5
+ * Extract a primitive value from an AnyValue
6
+ */
7
+ function extractValue(value) {
8
+ if (!value) return void 0;
9
+ if (value.stringValue !== void 0) return value.stringValue;
10
+ if (value.boolValue !== void 0) return value.boolValue;
11
+ if (value.intValue !== void 0) return parseInt(value.intValue, 10);
12
+ if (value.doubleValue !== void 0) return value.doubleValue;
13
+ if (value.bytesValue !== void 0) return value.bytesValue;
14
+ if (value.arrayValue) return value.arrayValue.values.map(extractValue);
15
+ if (value.kvlistValue) return attributesToObject(value.kvlistValue.values);
16
+ return void 0;
17
+ }
18
+ /**
19
+ * Convert KeyValue array to a plain object
20
+ */
21
+ function attributesToObject(attrs) {
22
+ if (!attrs) return {};
23
+ const result = {};
24
+ for (const attr of attrs) result[attr.key] = extractValue(attr.value);
25
+ return result;
26
+ }
27
+ /**
28
+ * Convert nanoseconds string to Date
29
+ */
30
+ function nanoToDate(nanoStr) {
31
+ const nano = BigInt(nanoStr);
32
+ const ms = Number(nano / BigInt(1e6));
33
+ return new Date(ms);
34
+ }
35
+ /**
36
+ * Convert nanoseconds string to milliseconds number
37
+ */
38
+ function nanoToMs(nanoStr) {
39
+ const nano = BigInt(nanoStr);
40
+ return Number(nano / BigInt(1e6));
41
+ }
42
+ /**
43
+ * Map OTLP severity number to Telescope log level
44
+ */
45
+ function mapSeverity(severity) {
46
+ if (severity === void 0) return "info";
47
+ if (severity <= require_types.SeverityNumber.SEVERITY_NUMBER_DEBUG4) return "debug";
48
+ if (severity <= require_types.SeverityNumber.SEVERITY_NUMBER_INFO4) return "info";
49
+ if (severity <= require_types.SeverityNumber.SEVERITY_NUMBER_WARN4) return "warn";
50
+ return "error";
51
+ }
52
+ /**
53
+ * Determine HTTP status from span attributes and status
54
+ */
55
+ function getHttpStatus(span) {
56
+ const attrs = attributesToObject(span.attributes);
57
+ const statusCode = attrs["http.status_code"] ?? attrs["http.response.status_code"] ?? attrs["http.response_status_code"];
58
+ if (typeof statusCode === "number") return statusCode;
59
+ if (typeof statusCode === "string") return parseInt(statusCode, 10) || 200;
60
+ if (span.status?.code === require_types.SpanStatusCode.STATUS_CODE_ERROR) return 500;
61
+ if (span.status?.code === require_types.SpanStatusCode.STATUS_CODE_OK) return 200;
62
+ return 200;
63
+ }
64
+ /**
65
+ * Check if a span represents an HTTP server request
66
+ */
67
+ function isHttpServerSpan(span) {
68
+ if (span.kind !== require_types.SpanKind.SPAN_KIND_SERVER) return false;
69
+ const attrs = attributesToObject(span.attributes);
70
+ return !!(attrs["http.method"] || attrs["http.request.method"] || attrs["http.url"] || attrs["http.target"] || attrs["url.path"]);
71
+ }
72
+ /**
73
+ * Transform HTTP-related span attributes to RequestEntry format
74
+ */
75
+ function transformHttpSpan(span, resourceAttrs) {
76
+ const attrs = attributesToObject(span.attributes);
77
+ const method = String(attrs["http.method"] ?? attrs["http.request.method"] ?? "GET").toUpperCase();
78
+ const path = String(attrs["http.target"] ?? attrs["url.path"] ?? attrs["http.route"] ?? "/");
79
+ const url = String(attrs["http.url"] ?? attrs["url.full"] ?? `http://localhost${path}`);
80
+ const headers = {};
81
+ const userAgent = attrs["http.user_agent"] ?? attrs["user_agent.original"];
82
+ if (userAgent) headers["user-agent"] = String(userAgent);
83
+ const contentType = attrs["http.request.header.content_type"];
84
+ if (contentType) headers["content-type"] = String(contentType);
85
+ const startTime = nanoToMs(span.startTimeUnixNano);
86
+ const endTime = nanoToMs(span.endTimeUnixNano);
87
+ const duration = endTime - startTime;
88
+ const status = getHttpStatus(span);
89
+ const ip = attrs["net.peer.ip"] ?? attrs["client.address"] ?? attrs["http.client_ip"];
90
+ return {
91
+ method,
92
+ path,
93
+ url,
94
+ headers,
95
+ query: {},
96
+ status,
97
+ responseHeaders: {},
98
+ duration,
99
+ ip: ip ? String(ip) : void 0,
100
+ tags: [
101
+ `trace:${span.traceId}`,
102
+ `span:${span.spanId}`,
103
+ ...resourceAttrs["service.name"] ? [`service:${resourceAttrs["service.name"]}`] : []
104
+ ]
105
+ };
106
+ }
107
+ /**
108
+ * Transform OTLP traces to Telescope RequestEntries
109
+ * Only transforms HTTP server spans to request entries
110
+ */
111
+ function transformTraces(request) {
112
+ const entries = [];
113
+ for (const resourceSpans of request.resourceSpans ?? []) {
114
+ const resourceAttrs = attributesToObject(resourceSpans.resource?.attributes);
115
+ for (const scopeSpans of resourceSpans.scopeSpans ?? []) for (const span of scopeSpans.spans ?? []) if (isHttpServerSpan(span)) entries.push(transformHttpSpan(span, resourceAttrs));
116
+ }
117
+ return entries;
118
+ }
119
+ /**
120
+ * Transform a single OTLP log record to Telescope LogEntry
121
+ */
122
+ function transformLogRecord(record, resourceAttrs, scopeName) {
123
+ const attrs = attributesToObject(record.attributes);
124
+ let message = "";
125
+ if (record.body) {
126
+ const bodyValue = extractValue(record.body);
127
+ message = typeof bodyValue === "string" ? bodyValue : JSON.stringify(bodyValue);
128
+ }
129
+ const context = {
130
+ ...attrs,
131
+ ...resourceAttrs
132
+ };
133
+ if (scopeName) context["instrumentation.scope"] = scopeName;
134
+ if (record.severityText) context["severity.text"] = record.severityText;
135
+ return {
136
+ level: mapSeverity(record.severityNumber),
137
+ message,
138
+ context: Object.keys(context).length > 0 ? context : void 0,
139
+ requestId: record.spanId ? `span:${record.spanId}` : void 0
140
+ };
141
+ }
142
+ /**
143
+ * Transform OTLP logs to Telescope LogEntries
144
+ */
145
+ function transformLogs(request) {
146
+ const entries = [];
147
+ for (const resourceLogs of request.resourceLogs ?? []) {
148
+ const resourceAttrs = attributesToObject(resourceLogs.resource?.attributes);
149
+ for (const scopeLogs of resourceLogs.scopeLogs ?? []) {
150
+ const scopeName = scopeLogs.scope?.name;
151
+ for (const record of scopeLogs.logRecords ?? []) entries.push(transformLogRecord(record, resourceAttrs, scopeName));
152
+ }
153
+ }
154
+ return entries;
155
+ }
156
+ /**
157
+ * Transform OTLP metrics to normalized data points
158
+ * These can be used for custom metrics processing or forwarding
159
+ */
160
+ function transformMetrics(request) {
161
+ const points = [];
162
+ for (const resourceMetrics of request.resourceMetrics ?? []) {
163
+ const resourceAttrs = attributesToObject(resourceMetrics.resource?.attributes);
164
+ for (const scopeMetrics of resourceMetrics.scopeMetrics ?? []) for (const metric of scopeMetrics.metrics ?? []) {
165
+ const baseMeta = {
166
+ name: metric.name,
167
+ description: metric.description,
168
+ unit: metric.unit,
169
+ resourceAttributes: resourceAttrs
170
+ };
171
+ if (metric.gauge) for (const dp of metric.gauge.dataPoints) points.push({
172
+ ...baseMeta,
173
+ value: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),
174
+ timestamp: nanoToDate(dp.timeUnixNano),
175
+ attributes: attributesToObject(dp.attributes),
176
+ type: "gauge"
177
+ });
178
+ if (metric.sum) for (const dp of metric.sum.dataPoints) points.push({
179
+ ...baseMeta,
180
+ value: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),
181
+ timestamp: nanoToDate(dp.timeUnixNano),
182
+ attributes: attributesToObject(dp.attributes),
183
+ type: "sum"
184
+ });
185
+ if (metric.histogram) for (const dp of metric.histogram.dataPoints) points.push({
186
+ ...baseMeta,
187
+ value: dp.sum ?? 0,
188
+ timestamp: nanoToDate(dp.timeUnixNano),
189
+ attributes: {
190
+ ...attributesToObject(dp.attributes),
191
+ count: parseInt(dp.count, 10),
192
+ min: dp.min,
193
+ max: dp.max
194
+ },
195
+ type: "histogram"
196
+ });
197
+ if (metric.summary) for (const dp of metric.summary.dataPoints) points.push({
198
+ ...baseMeta,
199
+ value: dp.sum ?? 0,
200
+ timestamp: nanoToDate(dp.timeUnixNano),
201
+ attributes: {
202
+ ...attributesToObject(dp.attributes),
203
+ count: parseInt(dp.count, 10),
204
+ quantiles: dp.quantileValues
205
+ },
206
+ type: "summary"
207
+ });
208
+ }
209
+ }
210
+ return points;
211
+ }
212
+
213
+ //#endregion
214
+ Object.defineProperty(exports, 'transformLogs', {
215
+ enumerable: true,
216
+ get: function () {
217
+ return transformLogs;
218
+ }
219
+ });
220
+ Object.defineProperty(exports, 'transformMetrics', {
221
+ enumerable: true,
222
+ get: function () {
223
+ return transformMetrics;
224
+ }
225
+ });
226
+ Object.defineProperty(exports, 'transformTraces', {
227
+ enumerable: true,
228
+ get: function () {
229
+ return transformTraces;
230
+ }
231
+ });
232
+ //# sourceMappingURL=transformer-CLGZ0EQc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer-CLGZ0EQc.cjs","names":["value?: AnyValue","attrs?: KeyValue[]","result: Record<string, unknown>","nanoStr: string","severity?: SeverityNumber","SeverityNumber","span: Span","SpanStatusCode","SpanKind","resourceAttrs: Record<string, unknown>","headers: Record<string, string>","request: ExportTraceServiceRequest","entries: Array<Omit<RequestEntry, 'id' | 'timestamp'>>","record: LogRecord","scopeName?: string","context: Record<string, unknown>","request: ExportLogsServiceRequest","entries: Array<Omit<LogEntry, 'id' | 'timestamp'>>","request: ExportMetricsServiceRequest","points: MetricDataPoint[]"],"sources":["../src/otlp/transformer.ts"],"sourcesContent":["import type { LogEntry, RequestEntry } from '../types';\nimport {\n\ttype AnyValue,\n\ttype ExportLogsServiceRequest,\n\ttype ExportMetricsServiceRequest,\n\ttype ExportTraceServiceRequest,\n\ttype KeyValue,\n\ttype LogRecord,\n\tSeverityNumber,\n\ttype Span,\n\tSpanKind,\n\tSpanStatusCode,\n} from './types';\n\n/**\n * Extract a primitive value from an AnyValue\n */\nfunction extractValue(value?: AnyValue): unknown {\n\tif (!value) return undefined;\n\tif (value.stringValue !== undefined) return value.stringValue;\n\tif (value.boolValue !== undefined) return value.boolValue;\n\tif (value.intValue !== undefined) return parseInt(value.intValue, 10);\n\tif (value.doubleValue !== undefined) return value.doubleValue;\n\tif (value.bytesValue !== undefined) return value.bytesValue;\n\tif (value.arrayValue) return value.arrayValue.values.map(extractValue);\n\tif (value.kvlistValue) return attributesToObject(value.kvlistValue.values);\n\treturn undefined;\n}\n\n/**\n * Convert KeyValue array to a plain object\n */\nfunction attributesToObject(attrs?: KeyValue[]): Record<string, unknown> {\n\tif (!attrs) return {};\n\tconst result: Record<string, unknown> = {};\n\tfor (const attr of attrs) {\n\t\tresult[attr.key] = extractValue(attr.value);\n\t}\n\treturn result;\n}\n\n/**\n * Convert nanoseconds string to Date\n */\nfunction nanoToDate(nanoStr: string): Date {\n\tconst nano = BigInt(nanoStr);\n\tconst ms = Number(nano / BigInt(1_000_000));\n\treturn new Date(ms);\n}\n\n/**\n * Convert nanoseconds string to milliseconds number\n */\nfunction nanoToMs(nanoStr: string): number {\n\tconst nano = BigInt(nanoStr);\n\treturn Number(nano / BigInt(1_000_000));\n}\n\n/**\n * Map OTLP severity number to Telescope log level\n */\nfunction mapSeverity(\n\tseverity?: SeverityNumber,\n): 'debug' | 'info' | 'warn' | 'error' {\n\tif (severity === undefined) return 'info';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_DEBUG4) return 'debug';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_INFO4) return 'info';\n\tif (severity <= SeverityNumber.SEVERITY_NUMBER_WARN4) return 'warn';\n\treturn 'error';\n}\n\n/**\n * Determine HTTP status from span attributes and status\n */\nfunction getHttpStatus(span: Span): number {\n\tconst attrs = attributesToObject(span.attributes);\n\n\t// Look for HTTP status code in various attribute names\n\tconst statusCode =\n\t\tattrs['http.status_code'] ??\n\t\tattrs['http.response.status_code'] ??\n\t\tattrs['http.response_status_code'];\n\n\tif (typeof statusCode === 'number') return statusCode;\n\tif (typeof statusCode === 'string') return parseInt(statusCode, 10) || 200;\n\n\t// Fall back to span status\n\tif (span.status?.code === SpanStatusCode.STATUS_CODE_ERROR) return 500;\n\tif (span.status?.code === SpanStatusCode.STATUS_CODE_OK) return 200;\n\n\treturn 200;\n}\n\n/**\n * Check if a span represents an HTTP server request\n */\nfunction isHttpServerSpan(span: Span): boolean {\n\tif (span.kind !== SpanKind.SPAN_KIND_SERVER) return false;\n\n\tconst attrs = attributesToObject(span.attributes);\n\treturn !!(\n\t\tattrs['http.method'] ||\n\t\tattrs['http.request.method'] ||\n\t\tattrs['http.url'] ||\n\t\tattrs['http.target'] ||\n\t\tattrs['url.path']\n\t);\n}\n\n/**\n * Transform HTTP-related span attributes to RequestEntry format\n */\nfunction transformHttpSpan(\n\tspan: Span,\n\tresourceAttrs: Record<string, unknown>,\n): Omit<RequestEntry, 'id' | 'timestamp'> {\n\tconst attrs = attributesToObject(span.attributes);\n\n\t// Extract HTTP method\n\tconst method = String(\n\t\tattrs['http.method'] ?? attrs['http.request.method'] ?? 'GET',\n\t).toUpperCase();\n\n\t// Extract path\n\tconst path = String(\n\t\tattrs['http.target'] ?? attrs['url.path'] ?? attrs['http.route'] ?? '/',\n\t);\n\n\t// Extract full URL\n\tconst url = String(\n\t\tattrs['http.url'] ?? attrs['url.full'] ?? `http://localhost${path}`,\n\t);\n\n\t// Extract headers (if available)\n\tconst headers: Record<string, string> = {};\n\tconst userAgent = attrs['http.user_agent'] ?? attrs['user_agent.original'];\n\tif (userAgent) headers['user-agent'] = String(userAgent);\n\n\tconst contentType = attrs['http.request.header.content_type'];\n\tif (contentType) headers['content-type'] = String(contentType);\n\n\t// Calculate duration\n\tconst startTime = nanoToMs(span.startTimeUnixNano);\n\tconst endTime = nanoToMs(span.endTimeUnixNano);\n\tconst duration = endTime - startTime;\n\n\t// Get status code\n\tconst status = getHttpStatus(span);\n\n\t// Extract client IP\n\tconst ip =\n\t\tattrs['net.peer.ip'] ?? attrs['client.address'] ?? attrs['http.client_ip'];\n\n\treturn {\n\t\tmethod,\n\t\tpath,\n\t\turl,\n\t\theaders,\n\t\tquery: {},\n\t\tstatus,\n\t\tresponseHeaders: {},\n\t\tduration,\n\t\tip: ip ? String(ip) : undefined,\n\t\ttags: [\n\t\t\t`trace:${span.traceId}`,\n\t\t\t`span:${span.spanId}`,\n\t\t\t...(resourceAttrs['service.name']\n\t\t\t\t? [`service:${resourceAttrs['service.name']}`]\n\t\t\t\t: []),\n\t\t],\n\t};\n}\n\n/**\n * Transform OTLP traces to Telescope RequestEntries\n * Only transforms HTTP server spans to request entries\n */\nexport function transformTraces(\n\trequest: ExportTraceServiceRequest,\n): Array<Omit<RequestEntry, 'id' | 'timestamp'>> {\n\tconst entries: Array<Omit<RequestEntry, 'id' | 'timestamp'>> = [];\n\n\tfor (const resourceSpans of request.resourceSpans ?? []) {\n\t\tconst resourceAttrs = attributesToObject(\n\t\t\tresourceSpans.resource?.attributes,\n\t\t);\n\n\t\tfor (const scopeSpans of resourceSpans.scopeSpans ?? []) {\n\t\t\tfor (const span of scopeSpans.spans ?? []) {\n\t\t\t\t// Only transform HTTP server spans\n\t\t\t\tif (isHttpServerSpan(span)) {\n\t\t\t\t\tentries.push(transformHttpSpan(span, resourceAttrs));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Transform a single OTLP log record to Telescope LogEntry\n */\nfunction transformLogRecord(\n\trecord: LogRecord,\n\tresourceAttrs: Record<string, unknown>,\n\tscopeName?: string,\n): Omit<LogEntry, 'id' | 'timestamp'> {\n\tconst attrs = attributesToObject(record.attributes);\n\n\t// Extract message from body\n\tlet message = '';\n\tif (record.body) {\n\t\tconst bodyValue = extractValue(record.body);\n\t\tmessage =\n\t\t\ttypeof bodyValue === 'string' ? bodyValue : JSON.stringify(bodyValue);\n\t}\n\n\t// Build context from attributes\n\tconst context: Record<string, unknown> = {\n\t\t...attrs,\n\t\t...resourceAttrs,\n\t};\n\n\tif (scopeName) {\n\t\tcontext['instrumentation.scope'] = scopeName;\n\t}\n\n\t// Add severity text if present\n\tif (record.severityText) {\n\t\tcontext['severity.text'] = record.severityText;\n\t}\n\n\treturn {\n\t\tlevel: mapSeverity(record.severityNumber),\n\t\tmessage,\n\t\tcontext: Object.keys(context).length > 0 ? context : undefined,\n\t\trequestId: record.spanId ? `span:${record.spanId}` : undefined,\n\t};\n}\n\n/**\n * Transform OTLP logs to Telescope LogEntries\n */\nexport function transformLogs(\n\trequest: ExportLogsServiceRequest,\n): Array<Omit<LogEntry, 'id' | 'timestamp'>> {\n\tconst entries: Array<Omit<LogEntry, 'id' | 'timestamp'>> = [];\n\n\tfor (const resourceLogs of request.resourceLogs ?? []) {\n\t\tconst resourceAttrs = attributesToObject(resourceLogs.resource?.attributes);\n\n\t\tfor (const scopeLogs of resourceLogs.scopeLogs ?? []) {\n\t\t\tconst scopeName = scopeLogs.scope?.name;\n\n\t\t\tfor (const record of scopeLogs.logRecords ?? []) {\n\t\t\t\tentries.push(transformLogRecord(record, resourceAttrs, scopeName));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn entries;\n}\n\n/**\n * Extracted metric data point for recording\n */\nexport interface MetricDataPoint {\n\tname: string;\n\tdescription?: string;\n\tunit?: string;\n\tvalue: number;\n\ttimestamp: Date;\n\tattributes: Record<string, unknown>;\n\tresourceAttributes: Record<string, unknown>;\n\ttype: 'gauge' | 'sum' | 'histogram' | 'summary';\n}\n\n/**\n * Transform OTLP metrics to normalized data points\n * These can be used for custom metrics processing or forwarding\n */\nexport function transformMetrics(\n\trequest: ExportMetricsServiceRequest,\n): MetricDataPoint[] {\n\tconst points: MetricDataPoint[] = [];\n\n\tfor (const resourceMetrics of request.resourceMetrics ?? []) {\n\t\tconst resourceAttrs = attributesToObject(\n\t\t\tresourceMetrics.resource?.attributes,\n\t\t);\n\n\t\tfor (const scopeMetrics of resourceMetrics.scopeMetrics ?? []) {\n\t\t\tfor (const metric of scopeMetrics.metrics ?? []) {\n\t\t\t\tconst baseMeta = {\n\t\t\t\t\tname: metric.name,\n\t\t\t\t\tdescription: metric.description,\n\t\t\t\t\tunit: metric.unit,\n\t\t\t\t\tresourceAttributes: resourceAttrs,\n\t\t\t\t};\n\n\t\t\t\t// Handle gauge\n\t\t\t\tif (metric.gauge) {\n\t\t\t\t\tfor (const dp of metric.gauge.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: attributesToObject(dp.attributes),\n\t\t\t\t\t\t\ttype: 'gauge',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle sum (counter)\n\t\t\t\tif (metric.sum) {\n\t\t\t\t\tfor (const dp of metric.sum.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.asDouble ?? (dp.asInt ? parseInt(dp.asInt, 10) : 0),\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: attributesToObject(dp.attributes),\n\t\t\t\t\t\t\ttype: 'sum',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle histogram (extract sum as the value)\n\t\t\t\tif (metric.histogram) {\n\t\t\t\t\tfor (const dp of metric.histogram.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.sum ?? 0,\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...attributesToObject(dp.attributes),\n\t\t\t\t\t\t\t\tcount: parseInt(dp.count, 10),\n\t\t\t\t\t\t\t\tmin: dp.min,\n\t\t\t\t\t\t\t\tmax: dp.max,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: 'histogram',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle summary\n\t\t\t\tif (metric.summary) {\n\t\t\t\t\tfor (const dp of metric.summary.dataPoints) {\n\t\t\t\t\t\tpoints.push({\n\t\t\t\t\t\t\t...baseMeta,\n\t\t\t\t\t\t\tvalue: dp.sum ?? 0,\n\t\t\t\t\t\t\ttimestamp: nanoToDate(dp.timeUnixNano),\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t...attributesToObject(dp.attributes),\n\t\t\t\t\t\t\t\tcount: parseInt(dp.count, 10),\n\t\t\t\t\t\t\t\tquantiles: dp.quantileValues,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: 'summary',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn points;\n}\n"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import { a as LogEntry, f as RequestEntry } from "./types-BVujq4zd.cjs";
2
- import { f as ExportMetricsServiceRequest, h as ExportTraceServiceRequest, l as ExportLogsServiceRequest } from "./types-DVETVdpa.cjs";
1
+ import { LogEntry, RequestEntry } from "./types-B1EIa_cQ.mjs";
2
+ import { ExportLogsServiceRequest, ExportMetricsServiceRequest, ExportTraceServiceRequest } from "./types-DBc0q5KD.mjs";
3
+
3
4
  //#region src/otlp/transformer.d.ts
5
+
4
6
  /**
5
7
  * Transform OTLP traces to Telescope RequestEntries
6
8
  * Only transforms HTTP server spans to request entries
@@ -28,6 +30,8 @@ interface MetricDataPoint {
28
30
  * These can be used for custom metrics processing or forwarding
29
31
  */
30
32
  declare function transformMetrics(request: ExportMetricsServiceRequest): MetricDataPoint[];
33
+ //# sourceMappingURL=transformer.d.ts.map
34
+
31
35
  //#endregion
32
- export { transformTraces as i, transformLogs as n, transformMetrics as r, MetricDataPoint as t };
33
- //# sourceMappingURL=transformer-BtqjAs0b.d.cts.map
36
+ export { MetricDataPoint, transformLogs, transformMetrics, transformTraces };
37
+ //# sourceMappingURL=transformer-CTGsaVfV.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer-CTGsaVfV.d.mts","names":[],"sources":["../src/otlp/transformer.ts"],"sourcesContent":[],"mappings":";;;;;;;AAiLA;;AACU,iBADM,eAAA,CACN,OAAA,EAAA,yBAAA,CAAA,EACP,KADO,CACD,IADC,CACI,YADJ,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA;;;;AACF,iBAiEQ,aAAA,CAjER,OAAA,EAkEE,wBAlEF,CAAA,EAmEL,KAnEK,CAmEC,IAnED,CAmEM,QAnEN,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA;AAiER;;;AAEc,UAqBG,eAAA,CArBH;EAAQ,IAAb,EAAA,MAAA;EAAI,WAAV,CAAA,EAAA,MAAA;EAAK,IAAA,CAAA,EAAA,MAAA;EAqBS,KAAA,EAAA,MAAA;EAAe,SAAA,EAKpB,IALoB;EAAA,UAKpB,EACC,MADD,CAAA,MAAA,EAAA,OAAA,CAAA;EAAI,kBACH,EACQ,MADR,CAAA,MAAA,EAAA,OAAA,CAAA;EAAM,IACE,EAAA,OAAA,GAAA,KAAA,GAAA,WAAA,GAAA,SAAA;AAAM;AAQ3B;;;;AAEkB,iBAFF,gBAAA,CAEE,OAAA,EADR,2BACQ,CAAA,EAAf,eAAe,EAAA"}
@@ -1,6 +1,8 @@
1
- import { a as LogEntry, f as RequestEntry } from "./types-BVujq4zd.mjs";
2
- import { f as ExportMetricsServiceRequest, h as ExportTraceServiceRequest, l as ExportLogsServiceRequest } from "./types-DVETVdpa.mjs";
1
+ import { LogEntry, RequestEntry } from "./types-l7Rlb5Mg.cjs";
2
+ import { ExportLogsServiceRequest, ExportMetricsServiceRequest, ExportTraceServiceRequest } from "./types-CmOB7CLO.cjs";
3
+
3
4
  //#region src/otlp/transformer.d.ts
5
+
4
6
  /**
5
7
  * Transform OTLP traces to Telescope RequestEntries
6
8
  * Only transforms HTTP server spans to request entries
@@ -28,6 +30,8 @@ interface MetricDataPoint {
28
30
  * These can be used for custom metrics processing or forwarding
29
31
  */
30
32
  declare function transformMetrics(request: ExportMetricsServiceRequest): MetricDataPoint[];
33
+ //# sourceMappingURL=transformer.d.ts.map
34
+
31
35
  //#endregion
32
- export { transformTraces as i, transformLogs as n, transformMetrics as r, MetricDataPoint as t };
33
- //# sourceMappingURL=transformer-DI6t8-YA.d.mts.map
36
+ export { MetricDataPoint, transformLogs, transformMetrics, transformTraces };
37
+ //# sourceMappingURL=transformer-ICEbxpFf.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer-ICEbxpFf.d.cts","names":[],"sources":["../src/otlp/transformer.ts"],"sourcesContent":[],"mappings":";;;;;;;AAiLA;;AACU,iBADM,eAAA,CACN,OAAA,EAAA,yBAAA,CAAA,EACP,KADO,CACD,IADC,CACI,YADJ,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA;;;;AACF,iBAiEQ,aAAA,CAjER,OAAA,EAkEE,wBAlEF,CAAA,EAmEL,KAnEK,CAmEC,IAnED,CAmEM,QAnEN,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA;AAiER;;;AAEc,UAqBG,eAAA,CArBH;EAAQ,IAAb,EAAA,MAAA;EAAI,WAAV,CAAA,EAAA,MAAA;EAAK,IAAA,CAAA,EAAA,MAAA;EAqBS,KAAA,EAAA,MAAA;EAAe,SAAA,EAKpB,IALoB;EAAA,UAKpB,EACC,MADD,CAAA,MAAA,EAAA,OAAA,CAAA;EAAI,kBACH,EACQ,MADR,CAAA,MAAA,EAAA,OAAA,CAAA;EAAM,IACE,EAAA,OAAA,GAAA,KAAA,GAAA,WAAA,GAAA,SAAA;AAAM;AAQ3B;;;;AAEkB,iBAFF,gBAAA,CAEE,OAAA,EADR,2BACQ,CAAA,EAAf,eAAe,EAAA"}
@@ -136,7 +136,7 @@ interface TelescopeOptions {
136
136
  storage: TelescopeStorage;
137
137
  /** Whether telescope is enabled (default: true) */
138
138
  enabled?: boolean;
139
- /** Where the JSON API is mounted (default: '/__telescope') */
139
+ /** Dashboard path (default: '/__telescope') */
140
140
  path?: string;
141
141
  /** Whether to record request/response bodies (default: true) */
142
142
  recordBody?: boolean;
@@ -405,6 +405,7 @@ interface EndpointDetails {
405
405
  /** Time series data for this endpoint */
406
406
  timeSeries: TimeSeriesPoint[];
407
407
  }
408
+ //# sourceMappingURL=types.d.ts.map
408
409
  //#endregion
409
- export { TimeRange as C, TelescopeStorage as S, TelescopeEvent as _, LogEntry as a, TelescopeRedactOptions as b, MetricsSnapshot as c, RequestContext as d, RequestEntry as f, StatusDistribution as g, StackFrame as h, ExceptionEntry as i, NormalizedTelescopeOptions as l, SourceContext as m, EndpointDetails as n, MetricsBucket as o, RequestMetrics as p, EndpointMetrics as r, MetricsQueryOptions as s, EndpointBucket as t, QueryOptions as u, TelescopeEventType as v, TimeSeriesPoint as w, TelescopeStats as x, TelescopeOptions as y };
410
- //# sourceMappingURL=types-BVujq4zd.d.mts.map
410
+ export { EndpointBucket, EndpointDetails, EndpointMetrics, ExceptionEntry, LogEntry, MetricsBucket, MetricsQueryOptions, MetricsSnapshot, NormalizedTelescopeOptions, QueryOptions, RequestContext, RequestEntry, RequestMetrics, SourceContext, StackFrame, StatusDistribution, TelescopeEvent, TelescopeEventType, TelescopeOptions, TelescopeRedactOptions, TelescopeStats, TelescopeStorage, TimeRange, TimeSeriesPoint };
411
+ //# sourceMappingURL=types-B1EIa_cQ.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-B1EIa_cQ.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}