@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,159 @@
1
+ import { SpanKind, SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
2
+
3
+ //#region src/instrumentation/http.ts
4
+ const TRACER_NAME = "@geekmidas/constructs";
5
+ /**
6
+ * Get or create a tracer for constructs instrumentation
7
+ */
8
+ function getConstructsTracer() {
9
+ return trace.getTracer(TRACER_NAME);
10
+ }
11
+ /**
12
+ * Convert HTTP attributes to OpenTelemetry semantic conventions
13
+ */
14
+ function toOtelAttributes(attrs) {
15
+ const otelAttrs = {};
16
+ if (attrs.method) otelAttrs["http.request.method"] = attrs.method;
17
+ if (attrs.url) otelAttrs["url.full"] = attrs.url;
18
+ if (attrs.path) otelAttrs["url.path"] = attrs.path;
19
+ if (attrs.route) otelAttrs["http.route"] = attrs.route;
20
+ if (attrs.host) otelAttrs["server.address"] = attrs.host;
21
+ if (attrs.scheme) otelAttrs["url.scheme"] = attrs.scheme;
22
+ if (attrs.userAgent) otelAttrs["user_agent.original"] = attrs.userAgent;
23
+ if (attrs.clientIp) otelAttrs["client.address"] = attrs.clientIp;
24
+ if (attrs.requestId) otelAttrs["http.request.id"] = attrs.requestId;
25
+ if (attrs.response?.statusCode) otelAttrs["http.response.status_code"] = attrs.response.statusCode;
26
+ if (attrs.response?.responseSize) otelAttrs["http.response.body.size"] = attrs.response.responseSize;
27
+ if (attrs.endpoint?.name) otelAttrs["endpoint.name"] = attrs.endpoint.name;
28
+ if (attrs.endpoint?.operationId) otelAttrs["endpoint.operation_id"] = attrs.endpoint.operationId;
29
+ if (attrs.endpoint?.tags?.length) otelAttrs["endpoint.tags"] = attrs.endpoint.tags;
30
+ if (attrs.user?.userId) otelAttrs["enduser.id"] = attrs.user.userId;
31
+ if (attrs.user?.sessionId) otelAttrs["session.id"] = attrs.user.sessionId;
32
+ if (attrs.user?.roles?.length) otelAttrs["enduser.role"] = attrs.user.roles.join(",");
33
+ if (attrs.custom) Object.assign(otelAttrs, attrs.custom);
34
+ return otelAttrs;
35
+ }
36
+ /**
37
+ * Extract trace context from HTTP headers
38
+ */
39
+ function extractTraceContext(headers) {
40
+ const normalizedHeaders = {};
41
+ for (const [key, value] of Object.entries(headers)) if (value) {
42
+ const stringValue = Array.isArray(value) ? value[0] : value;
43
+ if (stringValue) normalizedHeaders[key.toLowerCase()] = stringValue;
44
+ }
45
+ return propagation.extract(context.active(), normalizedHeaders);
46
+ }
47
+ /**
48
+ * Inject trace context into HTTP headers
49
+ */
50
+ function injectTraceContext(headers, ctx) {
51
+ const result = { ...headers };
52
+ propagation.inject(ctx ?? context.active(), result);
53
+ return result;
54
+ }
55
+ /**
56
+ * Create an HTTP server span for an incoming request
57
+ */
58
+ function createHttpServerSpan(attrs, parentContext) {
59
+ const tracer = getConstructsTracer();
60
+ const spanName = attrs.route ? `${attrs.method} ${attrs.route}` : `${attrs.method} ${attrs.path || "/"}`;
61
+ const ctx = parentContext ?? context.active();
62
+ return tracer.startSpan(spanName, {
63
+ kind: SpanKind.SERVER,
64
+ attributes: toOtelAttributes(attrs)
65
+ }, ctx);
66
+ }
67
+ /**
68
+ * End an HTTP span with response data
69
+ */
70
+ function endHttpSpan(span, response, error) {
71
+ span.setAttribute("http.response.status_code", response.statusCode);
72
+ if (response.responseSize) span.setAttribute("http.response.body.size", response.responseSize);
73
+ if (error) {
74
+ span.recordException(error);
75
+ span.setStatus({
76
+ code: SpanStatusCode.ERROR,
77
+ message: error.message
78
+ });
79
+ } else if (response.statusCode >= 400) span.setStatus({
80
+ code: SpanStatusCode.ERROR,
81
+ message: `HTTP ${response.statusCode}`
82
+ });
83
+ else span.setStatus({ code: SpanStatusCode.OK });
84
+ span.end();
85
+ }
86
+ /**
87
+ * Execute a function within an HTTP server span context
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const result = await withHttpSpan(
92
+ * { method: 'GET', path: '/users', route: '/users' },
93
+ * async (span) => {
94
+ * const users = await getUsers();
95
+ * return { statusCode: 200, body: users };
96
+ * }
97
+ * );
98
+ * ```
99
+ */
100
+ async function withHttpSpan(attrs, fn, parentContext) {
101
+ const span = createHttpServerSpan(attrs, parentContext);
102
+ try {
103
+ const result = await context.with(trace.setSpan(parentContext ?? context.active(), span), () => fn(span));
104
+ const statusCode = result.statusCode ?? 200;
105
+ endHttpSpan(span, { statusCode });
106
+ return result;
107
+ } catch (error) {
108
+ endHttpSpan(span, { statusCode: 500 }, error instanceof Error ? error : new Error(String(error)));
109
+ throw error;
110
+ }
111
+ }
112
+ /**
113
+ * Create a child span for internal operations (middleware, handlers, etc.)
114
+ */
115
+ function createChildSpan(name, attributes) {
116
+ const tracer = getConstructsTracer();
117
+ return tracer.startSpan(name, {
118
+ kind: SpanKind.INTERNAL,
119
+ attributes
120
+ });
121
+ }
122
+ /**
123
+ * Execute a function within a child span
124
+ */
125
+ async function withChildSpan(name, fn, attributes) {
126
+ const span = createChildSpan(name, attributes);
127
+ try {
128
+ const result = await context.with(trace.setSpan(context.active(), span), () => fn(span));
129
+ span.setStatus({ code: SpanStatusCode.OK });
130
+ return result;
131
+ } catch (error) {
132
+ span.setStatus({
133
+ code: SpanStatusCode.ERROR,
134
+ message: error instanceof Error ? error.message : "Unknown error"
135
+ });
136
+ span.recordException(error instanceof Error ? error : new Error(String(error)));
137
+ throw error;
138
+ } finally {
139
+ span.end();
140
+ }
141
+ }
142
+ /**
143
+ * Check if tracing is enabled (OpenTelemetry API is available and configured)
144
+ */
145
+ function isTracingEnabled() {
146
+ try {
147
+ const tracer = trace.getTracer(TRACER_NAME);
148
+ const span = tracer.startSpan("test");
149
+ const isReal = span.spanContext().traceId !== "00000000000000000000000000000000";
150
+ span.end();
151
+ return isReal;
152
+ } catch {
153
+ return false;
154
+ }
155
+ }
156
+
157
+ //#endregion
158
+ export { createChildSpan, createHttpServerSpan, endHttpSpan, extractTraceContext, getConstructsTracer, injectTraceContext, isTracingEnabled, toOtelAttributes, withChildSpan, withHttpSpan };
159
+ //# sourceMappingURL=http-DQzgLczm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-DQzgLczm.mjs","names":["attrs: HttpSpanAttributes","otelAttrs: Attributes","headers: Record<string, string | string[] | undefined>","normalizedHeaders: Record<string, string>","headers: Record<string, string>","ctx?: Context","parentContext?: Context","span: Span","response: HttpResponseAttributes","error?: Error","fn: (span: Span) => Promise<T & { statusCode?: number }>","name: string","attributes?: Attributes","fn: (span: Span) => Promise<T>"],"sources":["../src/instrumentation/http.ts"],"sourcesContent":["import {\n\ttype Attributes,\n\ttype Context,\n\tcontext,\n\tpropagation,\n\ttype Span,\n\tSpanKind,\n\tSpanStatusCode,\n\ttrace,\n} from '@opentelemetry/api';\n\n/**\n * HTTP request attributes following OpenTelemetry semantic conventions\n */\nexport interface HttpRequestAttributes {\n\tmethod: string;\n\turl?: string;\n\tpath?: string;\n\troute?: string;\n\thost?: string;\n\tscheme?: 'http' | 'https';\n\tuserAgent?: string;\n\tclientIp?: string;\n\trequestId?: string;\n}\n\n/**\n * HTTP response attributes\n */\nexport interface HttpResponseAttributes {\n\tstatusCode: number;\n\tresponseSize?: number;\n}\n\n/**\n * Endpoint-specific attributes\n */\nexport interface EndpointAttributes {\n\tname?: string;\n\toperationId?: string;\n\ttags?: string[];\n}\n\n/**\n * User/session attributes\n */\nexport interface UserAttributes {\n\tuserId?: string;\n\tsessionId?: string;\n\troles?: string[];\n}\n\n/**\n * Full span attributes for HTTP requests\n */\nexport interface HttpSpanAttributes extends HttpRequestAttributes {\n\tresponse?: HttpResponseAttributes;\n\tendpoint?: EndpointAttributes;\n\tuser?: UserAttributes;\n\tcustom?: Attributes;\n}\n\nconst TRACER_NAME = '@geekmidas/constructs';\n\n/**\n * Get or create a tracer for constructs instrumentation\n */\nexport function getConstructsTracer() {\n\treturn trace.getTracer(TRACER_NAME);\n}\n\n/**\n * Convert HTTP attributes to OpenTelemetry semantic conventions\n */\nexport function toOtelAttributes(attrs: HttpSpanAttributes): Attributes {\n\tconst otelAttrs: Attributes = {};\n\n\t// HTTP request attributes (OpenTelemetry semantic conventions)\n\tif (attrs.method) otelAttrs['http.request.method'] = attrs.method;\n\tif (attrs.url) otelAttrs['url.full'] = attrs.url;\n\tif (attrs.path) otelAttrs['url.path'] = attrs.path;\n\tif (attrs.route) otelAttrs['http.route'] = attrs.route;\n\tif (attrs.host) otelAttrs['server.address'] = attrs.host;\n\tif (attrs.scheme) otelAttrs['url.scheme'] = attrs.scheme;\n\tif (attrs.userAgent) otelAttrs['user_agent.original'] = attrs.userAgent;\n\tif (attrs.clientIp) otelAttrs['client.address'] = attrs.clientIp;\n\tif (attrs.requestId) otelAttrs['http.request.id'] = attrs.requestId;\n\n\t// HTTP response attributes\n\tif (attrs.response?.statusCode) {\n\t\totelAttrs['http.response.status_code'] = attrs.response.statusCode;\n\t}\n\tif (attrs.response?.responseSize) {\n\t\totelAttrs['http.response.body.size'] = attrs.response.responseSize;\n\t}\n\n\t// Endpoint attributes\n\tif (attrs.endpoint?.name) otelAttrs['endpoint.name'] = attrs.endpoint.name;\n\tif (attrs.endpoint?.operationId) {\n\t\totelAttrs['endpoint.operation_id'] = attrs.endpoint.operationId;\n\t}\n\tif (attrs.endpoint?.tags?.length) {\n\t\totelAttrs['endpoint.tags'] = attrs.endpoint.tags;\n\t}\n\n\t// User attributes\n\tif (attrs.user?.userId) otelAttrs['enduser.id'] = attrs.user.userId;\n\tif (attrs.user?.sessionId) otelAttrs['session.id'] = attrs.user.sessionId;\n\tif (attrs.user?.roles?.length)\n\t\totelAttrs['enduser.role'] = attrs.user.roles.join(',');\n\n\t// Custom attributes\n\tif (attrs.custom) {\n\t\tObject.assign(otelAttrs, attrs.custom);\n\t}\n\n\treturn otelAttrs;\n}\n\n/**\n * Extract trace context from HTTP headers\n */\nexport function extractTraceContext(\n\theaders: Record<string, string | string[] | undefined>,\n): Context {\n\t// Normalize headers to Record<string, string>\n\tconst normalizedHeaders: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (value) {\n\t\t\tconst stringValue = Array.isArray(value) ? value[0] : value;\n\t\t\tif (stringValue) {\n\t\t\t\tnormalizedHeaders[key.toLowerCase()] = stringValue;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn propagation.extract(context.active(), normalizedHeaders);\n}\n\n/**\n * Inject trace context into HTTP headers\n */\nexport function injectTraceContext(\n\theaders: Record<string, string>,\n\tctx?: Context,\n): Record<string, string> {\n\tconst result = { ...headers };\n\tpropagation.inject(ctx ?? context.active(), result);\n\treturn result;\n}\n\n/**\n * Create an HTTP server span for an incoming request\n */\nexport function createHttpServerSpan(\n\tattrs: HttpSpanAttributes,\n\tparentContext?: Context,\n): Span {\n\tconst tracer = getConstructsTracer();\n\tconst spanName = attrs.route\n\t\t? `${attrs.method} ${attrs.route}`\n\t\t: `${attrs.method} ${attrs.path || '/'}`;\n\n\tconst ctx = parentContext ?? context.active();\n\n\treturn tracer.startSpan(\n\t\tspanName,\n\t\t{\n\t\t\tkind: SpanKind.SERVER,\n\t\t\tattributes: toOtelAttributes(attrs),\n\t\t},\n\t\tctx,\n\t);\n}\n\n/**\n * End an HTTP span with response data\n */\nexport function endHttpSpan(\n\tspan: Span,\n\tresponse: HttpResponseAttributes,\n\terror?: Error,\n): void {\n\tspan.setAttribute('http.response.status_code', response.statusCode);\n\n\tif (response.responseSize) {\n\t\tspan.setAttribute('http.response.body.size', response.responseSize);\n\t}\n\n\tif (error) {\n\t\tspan.recordException(error);\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: error.message,\n\t\t});\n\t} else if (response.statusCode >= 400) {\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: `HTTP ${response.statusCode}`,\n\t\t});\n\t} else {\n\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t}\n\n\tspan.end();\n}\n\n/**\n * Execute a function within an HTTP server span context\n *\n * @example\n * ```typescript\n * const result = await withHttpSpan(\n * { method: 'GET', path: '/users', route: '/users' },\n * async (span) => {\n * const users = await getUsers();\n * return { statusCode: 200, body: users };\n * }\n * );\n * ```\n */\nexport async function withHttpSpan<T>(\n\tattrs: HttpSpanAttributes,\n\tfn: (span: Span) => Promise<T & { statusCode?: number }>,\n\tparentContext?: Context,\n): Promise<T> {\n\tconst span = createHttpServerSpan(attrs, parentContext);\n\n\ttry {\n\t\tconst result = await context.with(\n\t\t\ttrace.setSpan(parentContext ?? context.active(), span),\n\t\t\t() => fn(span),\n\t\t);\n\n\t\tconst statusCode = (result as { statusCode?: number }).statusCode ?? 200;\n\t\tendHttpSpan(span, { statusCode });\n\n\t\treturn result;\n\t} catch (error) {\n\t\tendHttpSpan(\n\t\t\tspan,\n\t\t\t{ statusCode: 500 },\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Create a child span for internal operations (middleware, handlers, etc.)\n */\nexport function createChildSpan(name: string, attributes?: Attributes): Span {\n\tconst tracer = getConstructsTracer();\n\treturn tracer.startSpan(name, {\n\t\tkind: SpanKind.INTERNAL,\n\t\tattributes,\n\t});\n}\n\n/**\n * Execute a function within a child span\n */\nexport async function withChildSpan<T>(\n\tname: string,\n\tfn: (span: Span) => Promise<T>,\n\tattributes?: Attributes,\n): Promise<T> {\n\tconst span = createChildSpan(name, attributes);\n\n\ttry {\n\t\tconst result = await context.with(\n\t\t\ttrace.setSpan(context.active(), span),\n\t\t\t() => fn(span),\n\t\t);\n\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\treturn result;\n\t} catch (error) {\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: error instanceof Error ? error.message : 'Unknown error',\n\t\t});\n\t\tspan.recordException(\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\tthrow error;\n\t} finally {\n\t\tspan.end();\n\t}\n}\n\n/**\n * Check if tracing is enabled (OpenTelemetry API is available and configured)\n */\nexport function isTracingEnabled(): boolean {\n\ttry {\n\t\tconst tracer = trace.getTracer(TRACER_NAME);\n\t\t// Check if we have a real tracer (not a no-op)\n\t\tconst span = tracer.startSpan('test');\n\t\tconst isReal =\n\t\t\tspan.spanContext().traceId !== '00000000000000000000000000000000';\n\t\tspan.end();\n\t\treturn isReal;\n\t} catch {\n\t\treturn false;\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
3
+
4
+ //#region src/instrumentation/http.ts
5
+ const TRACER_NAME = "@geekmidas/constructs";
6
+ /**
7
+ * Get or create a tracer for constructs instrumentation
8
+ */
9
+ function getConstructsTracer() {
10
+ return __opentelemetry_api.trace.getTracer(TRACER_NAME);
11
+ }
12
+ /**
13
+ * Convert HTTP attributes to OpenTelemetry semantic conventions
14
+ */
15
+ function toOtelAttributes(attrs) {
16
+ const otelAttrs = {};
17
+ if (attrs.method) otelAttrs["http.request.method"] = attrs.method;
18
+ if (attrs.url) otelAttrs["url.full"] = attrs.url;
19
+ if (attrs.path) otelAttrs["url.path"] = attrs.path;
20
+ if (attrs.route) otelAttrs["http.route"] = attrs.route;
21
+ if (attrs.host) otelAttrs["server.address"] = attrs.host;
22
+ if (attrs.scheme) otelAttrs["url.scheme"] = attrs.scheme;
23
+ if (attrs.userAgent) otelAttrs["user_agent.original"] = attrs.userAgent;
24
+ if (attrs.clientIp) otelAttrs["client.address"] = attrs.clientIp;
25
+ if (attrs.requestId) otelAttrs["http.request.id"] = attrs.requestId;
26
+ if (attrs.response?.statusCode) otelAttrs["http.response.status_code"] = attrs.response.statusCode;
27
+ if (attrs.response?.responseSize) otelAttrs["http.response.body.size"] = attrs.response.responseSize;
28
+ if (attrs.endpoint?.name) otelAttrs["endpoint.name"] = attrs.endpoint.name;
29
+ if (attrs.endpoint?.operationId) otelAttrs["endpoint.operation_id"] = attrs.endpoint.operationId;
30
+ if (attrs.endpoint?.tags?.length) otelAttrs["endpoint.tags"] = attrs.endpoint.tags;
31
+ if (attrs.user?.userId) otelAttrs["enduser.id"] = attrs.user.userId;
32
+ if (attrs.user?.sessionId) otelAttrs["session.id"] = attrs.user.sessionId;
33
+ if (attrs.user?.roles?.length) otelAttrs["enduser.role"] = attrs.user.roles.join(",");
34
+ if (attrs.custom) Object.assign(otelAttrs, attrs.custom);
35
+ return otelAttrs;
36
+ }
37
+ /**
38
+ * Extract trace context from HTTP headers
39
+ */
40
+ function extractTraceContext(headers) {
41
+ const normalizedHeaders = {};
42
+ for (const [key, value] of Object.entries(headers)) if (value) {
43
+ const stringValue = Array.isArray(value) ? value[0] : value;
44
+ if (stringValue) normalizedHeaders[key.toLowerCase()] = stringValue;
45
+ }
46
+ return __opentelemetry_api.propagation.extract(__opentelemetry_api.context.active(), normalizedHeaders);
47
+ }
48
+ /**
49
+ * Inject trace context into HTTP headers
50
+ */
51
+ function injectTraceContext(headers, ctx) {
52
+ const result = { ...headers };
53
+ __opentelemetry_api.propagation.inject(ctx ?? __opentelemetry_api.context.active(), result);
54
+ return result;
55
+ }
56
+ /**
57
+ * Create an HTTP server span for an incoming request
58
+ */
59
+ function createHttpServerSpan(attrs, parentContext) {
60
+ const tracer = getConstructsTracer();
61
+ const spanName = attrs.route ? `${attrs.method} ${attrs.route}` : `${attrs.method} ${attrs.path || "/"}`;
62
+ const ctx = parentContext ?? __opentelemetry_api.context.active();
63
+ return tracer.startSpan(spanName, {
64
+ kind: __opentelemetry_api.SpanKind.SERVER,
65
+ attributes: toOtelAttributes(attrs)
66
+ }, ctx);
67
+ }
68
+ /**
69
+ * End an HTTP span with response data
70
+ */
71
+ function endHttpSpan(span, response, error) {
72
+ span.setAttribute("http.response.status_code", response.statusCode);
73
+ if (response.responseSize) span.setAttribute("http.response.body.size", response.responseSize);
74
+ if (error) {
75
+ span.recordException(error);
76
+ span.setStatus({
77
+ code: __opentelemetry_api.SpanStatusCode.ERROR,
78
+ message: error.message
79
+ });
80
+ } else if (response.statusCode >= 400) span.setStatus({
81
+ code: __opentelemetry_api.SpanStatusCode.ERROR,
82
+ message: `HTTP ${response.statusCode}`
83
+ });
84
+ else span.setStatus({ code: __opentelemetry_api.SpanStatusCode.OK });
85
+ span.end();
86
+ }
87
+ /**
88
+ * Execute a function within an HTTP server span context
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const result = await withHttpSpan(
93
+ * { method: 'GET', path: '/users', route: '/users' },
94
+ * async (span) => {
95
+ * const users = await getUsers();
96
+ * return { statusCode: 200, body: users };
97
+ * }
98
+ * );
99
+ * ```
100
+ */
101
+ async function withHttpSpan(attrs, fn, parentContext) {
102
+ const span = createHttpServerSpan(attrs, parentContext);
103
+ try {
104
+ const result = await __opentelemetry_api.context.with(__opentelemetry_api.trace.setSpan(parentContext ?? __opentelemetry_api.context.active(), span), () => fn(span));
105
+ const statusCode = result.statusCode ?? 200;
106
+ endHttpSpan(span, { statusCode });
107
+ return result;
108
+ } catch (error) {
109
+ endHttpSpan(span, { statusCode: 500 }, error instanceof Error ? error : new Error(String(error)));
110
+ throw error;
111
+ }
112
+ }
113
+ /**
114
+ * Create a child span for internal operations (middleware, handlers, etc.)
115
+ */
116
+ function createChildSpan(name, attributes) {
117
+ const tracer = getConstructsTracer();
118
+ return tracer.startSpan(name, {
119
+ kind: __opentelemetry_api.SpanKind.INTERNAL,
120
+ attributes
121
+ });
122
+ }
123
+ /**
124
+ * Execute a function within a child span
125
+ */
126
+ async function withChildSpan(name, fn, attributes) {
127
+ const span = createChildSpan(name, attributes);
128
+ try {
129
+ const result = await __opentelemetry_api.context.with(__opentelemetry_api.trace.setSpan(__opentelemetry_api.context.active(), span), () => fn(span));
130
+ span.setStatus({ code: __opentelemetry_api.SpanStatusCode.OK });
131
+ return result;
132
+ } catch (error) {
133
+ span.setStatus({
134
+ code: __opentelemetry_api.SpanStatusCode.ERROR,
135
+ message: error instanceof Error ? error.message : "Unknown error"
136
+ });
137
+ span.recordException(error instanceof Error ? error : new Error(String(error)));
138
+ throw error;
139
+ } finally {
140
+ span.end();
141
+ }
142
+ }
143
+ /**
144
+ * Check if tracing is enabled (OpenTelemetry API is available and configured)
145
+ */
146
+ function isTracingEnabled() {
147
+ try {
148
+ const tracer = __opentelemetry_api.trace.getTracer(TRACER_NAME);
149
+ const span = tracer.startSpan("test");
150
+ const isReal = span.spanContext().traceId !== "00000000000000000000000000000000";
151
+ span.end();
152
+ return isReal;
153
+ } catch {
154
+ return false;
155
+ }
156
+ }
157
+
158
+ //#endregion
159
+ Object.defineProperty(exports, 'createChildSpan', {
160
+ enumerable: true,
161
+ get: function () {
162
+ return createChildSpan;
163
+ }
164
+ });
165
+ Object.defineProperty(exports, 'createHttpServerSpan', {
166
+ enumerable: true,
167
+ get: function () {
168
+ return createHttpServerSpan;
169
+ }
170
+ });
171
+ Object.defineProperty(exports, 'endHttpSpan', {
172
+ enumerable: true,
173
+ get: function () {
174
+ return endHttpSpan;
175
+ }
176
+ });
177
+ Object.defineProperty(exports, 'extractTraceContext', {
178
+ enumerable: true,
179
+ get: function () {
180
+ return extractTraceContext;
181
+ }
182
+ });
183
+ Object.defineProperty(exports, 'getConstructsTracer', {
184
+ enumerable: true,
185
+ get: function () {
186
+ return getConstructsTracer;
187
+ }
188
+ });
189
+ Object.defineProperty(exports, 'injectTraceContext', {
190
+ enumerable: true,
191
+ get: function () {
192
+ return injectTraceContext;
193
+ }
194
+ });
195
+ Object.defineProperty(exports, 'isTracingEnabled', {
196
+ enumerable: true,
197
+ get: function () {
198
+ return isTracingEnabled;
199
+ }
200
+ });
201
+ Object.defineProperty(exports, 'toOtelAttributes', {
202
+ enumerable: true,
203
+ get: function () {
204
+ return toOtelAttributes;
205
+ }
206
+ });
207
+ Object.defineProperty(exports, 'withChildSpan', {
208
+ enumerable: true,
209
+ get: function () {
210
+ return withChildSpan;
211
+ }
212
+ });
213
+ Object.defineProperty(exports, 'withHttpSpan', {
214
+ enumerable: true,
215
+ get: function () {
216
+ return withHttpSpan;
217
+ }
218
+ });
219
+ //# sourceMappingURL=http-D_Z8sYXZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-D_Z8sYXZ.cjs","names":["attrs: HttpSpanAttributes","otelAttrs: Attributes","headers: Record<string, string | string[] | undefined>","normalizedHeaders: Record<string, string>","headers: Record<string, string>","ctx?: Context","parentContext?: Context","SpanKind","span: Span","response: HttpResponseAttributes","error?: Error","SpanStatusCode","fn: (span: Span) => Promise<T & { statusCode?: number }>","name: string","attributes?: Attributes","fn: (span: Span) => Promise<T>"],"sources":["../src/instrumentation/http.ts"],"sourcesContent":["import {\n\ttype Attributes,\n\ttype Context,\n\tcontext,\n\tpropagation,\n\ttype Span,\n\tSpanKind,\n\tSpanStatusCode,\n\ttrace,\n} from '@opentelemetry/api';\n\n/**\n * HTTP request attributes following OpenTelemetry semantic conventions\n */\nexport interface HttpRequestAttributes {\n\tmethod: string;\n\turl?: string;\n\tpath?: string;\n\troute?: string;\n\thost?: string;\n\tscheme?: 'http' | 'https';\n\tuserAgent?: string;\n\tclientIp?: string;\n\trequestId?: string;\n}\n\n/**\n * HTTP response attributes\n */\nexport interface HttpResponseAttributes {\n\tstatusCode: number;\n\tresponseSize?: number;\n}\n\n/**\n * Endpoint-specific attributes\n */\nexport interface EndpointAttributes {\n\tname?: string;\n\toperationId?: string;\n\ttags?: string[];\n}\n\n/**\n * User/session attributes\n */\nexport interface UserAttributes {\n\tuserId?: string;\n\tsessionId?: string;\n\troles?: string[];\n}\n\n/**\n * Full span attributes for HTTP requests\n */\nexport interface HttpSpanAttributes extends HttpRequestAttributes {\n\tresponse?: HttpResponseAttributes;\n\tendpoint?: EndpointAttributes;\n\tuser?: UserAttributes;\n\tcustom?: Attributes;\n}\n\nconst TRACER_NAME = '@geekmidas/constructs';\n\n/**\n * Get or create a tracer for constructs instrumentation\n */\nexport function getConstructsTracer() {\n\treturn trace.getTracer(TRACER_NAME);\n}\n\n/**\n * Convert HTTP attributes to OpenTelemetry semantic conventions\n */\nexport function toOtelAttributes(attrs: HttpSpanAttributes): Attributes {\n\tconst otelAttrs: Attributes = {};\n\n\t// HTTP request attributes (OpenTelemetry semantic conventions)\n\tif (attrs.method) otelAttrs['http.request.method'] = attrs.method;\n\tif (attrs.url) otelAttrs['url.full'] = attrs.url;\n\tif (attrs.path) otelAttrs['url.path'] = attrs.path;\n\tif (attrs.route) otelAttrs['http.route'] = attrs.route;\n\tif (attrs.host) otelAttrs['server.address'] = attrs.host;\n\tif (attrs.scheme) otelAttrs['url.scheme'] = attrs.scheme;\n\tif (attrs.userAgent) otelAttrs['user_agent.original'] = attrs.userAgent;\n\tif (attrs.clientIp) otelAttrs['client.address'] = attrs.clientIp;\n\tif (attrs.requestId) otelAttrs['http.request.id'] = attrs.requestId;\n\n\t// HTTP response attributes\n\tif (attrs.response?.statusCode) {\n\t\totelAttrs['http.response.status_code'] = attrs.response.statusCode;\n\t}\n\tif (attrs.response?.responseSize) {\n\t\totelAttrs['http.response.body.size'] = attrs.response.responseSize;\n\t}\n\n\t// Endpoint attributes\n\tif (attrs.endpoint?.name) otelAttrs['endpoint.name'] = attrs.endpoint.name;\n\tif (attrs.endpoint?.operationId) {\n\t\totelAttrs['endpoint.operation_id'] = attrs.endpoint.operationId;\n\t}\n\tif (attrs.endpoint?.tags?.length) {\n\t\totelAttrs['endpoint.tags'] = attrs.endpoint.tags;\n\t}\n\n\t// User attributes\n\tif (attrs.user?.userId) otelAttrs['enduser.id'] = attrs.user.userId;\n\tif (attrs.user?.sessionId) otelAttrs['session.id'] = attrs.user.sessionId;\n\tif (attrs.user?.roles?.length)\n\t\totelAttrs['enduser.role'] = attrs.user.roles.join(',');\n\n\t// Custom attributes\n\tif (attrs.custom) {\n\t\tObject.assign(otelAttrs, attrs.custom);\n\t}\n\n\treturn otelAttrs;\n}\n\n/**\n * Extract trace context from HTTP headers\n */\nexport function extractTraceContext(\n\theaders: Record<string, string | string[] | undefined>,\n): Context {\n\t// Normalize headers to Record<string, string>\n\tconst normalizedHeaders: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (value) {\n\t\t\tconst stringValue = Array.isArray(value) ? value[0] : value;\n\t\t\tif (stringValue) {\n\t\t\t\tnormalizedHeaders[key.toLowerCase()] = stringValue;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn propagation.extract(context.active(), normalizedHeaders);\n}\n\n/**\n * Inject trace context into HTTP headers\n */\nexport function injectTraceContext(\n\theaders: Record<string, string>,\n\tctx?: Context,\n): Record<string, string> {\n\tconst result = { ...headers };\n\tpropagation.inject(ctx ?? context.active(), result);\n\treturn result;\n}\n\n/**\n * Create an HTTP server span for an incoming request\n */\nexport function createHttpServerSpan(\n\tattrs: HttpSpanAttributes,\n\tparentContext?: Context,\n): Span {\n\tconst tracer = getConstructsTracer();\n\tconst spanName = attrs.route\n\t\t? `${attrs.method} ${attrs.route}`\n\t\t: `${attrs.method} ${attrs.path || '/'}`;\n\n\tconst ctx = parentContext ?? context.active();\n\n\treturn tracer.startSpan(\n\t\tspanName,\n\t\t{\n\t\t\tkind: SpanKind.SERVER,\n\t\t\tattributes: toOtelAttributes(attrs),\n\t\t},\n\t\tctx,\n\t);\n}\n\n/**\n * End an HTTP span with response data\n */\nexport function endHttpSpan(\n\tspan: Span,\n\tresponse: HttpResponseAttributes,\n\terror?: Error,\n): void {\n\tspan.setAttribute('http.response.status_code', response.statusCode);\n\n\tif (response.responseSize) {\n\t\tspan.setAttribute('http.response.body.size', response.responseSize);\n\t}\n\n\tif (error) {\n\t\tspan.recordException(error);\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: error.message,\n\t\t});\n\t} else if (response.statusCode >= 400) {\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: `HTTP ${response.statusCode}`,\n\t\t});\n\t} else {\n\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t}\n\n\tspan.end();\n}\n\n/**\n * Execute a function within an HTTP server span context\n *\n * @example\n * ```typescript\n * const result = await withHttpSpan(\n * { method: 'GET', path: '/users', route: '/users' },\n * async (span) => {\n * const users = await getUsers();\n * return { statusCode: 200, body: users };\n * }\n * );\n * ```\n */\nexport async function withHttpSpan<T>(\n\tattrs: HttpSpanAttributes,\n\tfn: (span: Span) => Promise<T & { statusCode?: number }>,\n\tparentContext?: Context,\n): Promise<T> {\n\tconst span = createHttpServerSpan(attrs, parentContext);\n\n\ttry {\n\t\tconst result = await context.with(\n\t\t\ttrace.setSpan(parentContext ?? context.active(), span),\n\t\t\t() => fn(span),\n\t\t);\n\n\t\tconst statusCode = (result as { statusCode?: number }).statusCode ?? 200;\n\t\tendHttpSpan(span, { statusCode });\n\n\t\treturn result;\n\t} catch (error) {\n\t\tendHttpSpan(\n\t\t\tspan,\n\t\t\t{ statusCode: 500 },\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Create a child span for internal operations (middleware, handlers, etc.)\n */\nexport function createChildSpan(name: string, attributes?: Attributes): Span {\n\tconst tracer = getConstructsTracer();\n\treturn tracer.startSpan(name, {\n\t\tkind: SpanKind.INTERNAL,\n\t\tattributes,\n\t});\n}\n\n/**\n * Execute a function within a child span\n */\nexport async function withChildSpan<T>(\n\tname: string,\n\tfn: (span: Span) => Promise<T>,\n\tattributes?: Attributes,\n): Promise<T> {\n\tconst span = createChildSpan(name, attributes);\n\n\ttry {\n\t\tconst result = await context.with(\n\t\t\ttrace.setSpan(context.active(), span),\n\t\t\t() => fn(span),\n\t\t);\n\t\tspan.setStatus({ code: SpanStatusCode.OK });\n\t\treturn result;\n\t} catch (error) {\n\t\tspan.setStatus({\n\t\t\tcode: SpanStatusCode.ERROR,\n\t\t\tmessage: error instanceof Error ? error.message : 'Unknown error',\n\t\t});\n\t\tspan.recordException(\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\tthrow error;\n\t} finally {\n\t\tspan.end();\n\t}\n}\n\n/**\n * Check if tracing is enabled (OpenTelemetry API is available and configured)\n */\nexport function isTracingEnabled(): boolean {\n\ttry {\n\t\tconst tracer = trace.getTracer(TRACER_NAME);\n\t\t// Check if we have a real tracer (not a no-op)\n\t\tconst span = tracer.startSpan('test');\n\t\tconst isReal =\n\t\t\tspan.spanContext().traceId !== '00000000000000000000000000000000';\n\t\tspan.end();\n\t\treturn isReal;\n\t} catch {\n\t\treturn false;\n\t}\n}\n"],"mappings":";;;;AA8DA,MAAM,cAAc;;;;AAKpB,SAAgB,sBAAsB;AACrC,QAAO,0BAAM,UAAU,YAAY;AACnC;;;;AAKD,SAAgB,iBAAiBA,OAAuC;CACvE,MAAMC,YAAwB,CAAE;AAGhC,KAAI,MAAM,OAAQ,WAAU,yBAAyB,MAAM;AAC3D,KAAI,MAAM,IAAK,WAAU,cAAc,MAAM;AAC7C,KAAI,MAAM,KAAM,WAAU,cAAc,MAAM;AAC9C,KAAI,MAAM,MAAO,WAAU,gBAAgB,MAAM;AACjD,KAAI,MAAM,KAAM,WAAU,oBAAoB,MAAM;AACpD,KAAI,MAAM,OAAQ,WAAU,gBAAgB,MAAM;AAClD,KAAI,MAAM,UAAW,WAAU,yBAAyB,MAAM;AAC9D,KAAI,MAAM,SAAU,WAAU,oBAAoB,MAAM;AACxD,KAAI,MAAM,UAAW,WAAU,qBAAqB,MAAM;AAG1D,KAAI,MAAM,UAAU,WACnB,WAAU,+BAA+B,MAAM,SAAS;AAEzD,KAAI,MAAM,UAAU,aACnB,WAAU,6BAA6B,MAAM,SAAS;AAIvD,KAAI,MAAM,UAAU,KAAM,WAAU,mBAAmB,MAAM,SAAS;AACtE,KAAI,MAAM,UAAU,YACnB,WAAU,2BAA2B,MAAM,SAAS;AAErD,KAAI,MAAM,UAAU,MAAM,OACzB,WAAU,mBAAmB,MAAM,SAAS;AAI7C,KAAI,MAAM,MAAM,OAAQ,WAAU,gBAAgB,MAAM,KAAK;AAC7D,KAAI,MAAM,MAAM,UAAW,WAAU,gBAAgB,MAAM,KAAK;AAChE,KAAI,MAAM,MAAM,OAAO,OACtB,WAAU,kBAAkB,MAAM,KAAK,MAAM,KAAK,IAAI;AAGvD,KAAI,MAAM,OACT,QAAO,OAAO,WAAW,MAAM,OAAO;AAGvC,QAAO;AACP;;;;AAKD,SAAgB,oBACfC,SACU;CAEV,MAAMC,oBAA4C,CAAE;AACpD,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,QAAQ,CACjD,KAAI,OAAO;EACV,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK;AACtD,MAAI,YACH,mBAAkB,IAAI,aAAa,IAAI;CAExC;AAGF,QAAO,gCAAY,QAAQ,4BAAQ,QAAQ,EAAE,kBAAkB;AAC/D;;;;AAKD,SAAgB,mBACfC,SACAC,KACyB;CACzB,MAAM,SAAS,EAAE,GAAG,QAAS;AAC7B,iCAAY,OAAO,OAAO,4BAAQ,QAAQ,EAAE,OAAO;AACnD,QAAO;AACP;;;;AAKD,SAAgB,qBACfL,OACAM,eACO;CACP,MAAM,SAAS,qBAAqB;CACpC,MAAM,WAAW,MAAM,SACnB,EAAE,MAAM,OAAO,GAAG,MAAM,MAAM,KAC9B,EAAE,MAAM,OAAO,GAAG,MAAM,QAAQ,IAAI;CAExC,MAAM,MAAM,iBAAiB,4BAAQ,QAAQ;AAE7C,QAAO,OAAO,UACb,UACA;EACC,MAAMC,6BAAS;EACf,YAAY,iBAAiB,MAAM;CACnC,GACD,IACA;AACD;;;;AAKD,SAAgB,YACfC,MACAC,UACAC,OACO;AACP,MAAK,aAAa,6BAA6B,SAAS,WAAW;AAEnE,KAAI,SAAS,aACZ,MAAK,aAAa,2BAA2B,SAAS,aAAa;AAGpE,KAAI,OAAO;AACV,OAAK,gBAAgB,MAAM;AAC3B,OAAK,UAAU;GACd,MAAMC,mCAAe;GACrB,SAAS,MAAM;EACf,EAAC;CACF,WAAU,SAAS,cAAc,IACjC,MAAK,UAAU;EACd,MAAMA,mCAAe;EACrB,UAAU,OAAO,SAAS,WAAW;CACrC,EAAC;KAEF,MAAK,UAAU,EAAE,MAAMA,mCAAe,GAAI,EAAC;AAG5C,MAAK,KAAK;AACV;;;;;;;;;;;;;;;AAgBD,eAAsB,aACrBX,OACAY,IACAN,eACa;CACb,MAAM,OAAO,qBAAqB,OAAO,cAAc;AAEvD,KAAI;EACH,MAAM,SAAS,MAAM,4BAAQ,KAC5B,0BAAM,QAAQ,iBAAiB,4BAAQ,QAAQ,EAAE,KAAK,EACtD,MAAM,GAAG,KAAK,CACd;EAED,MAAM,aAAc,OAAmC,cAAc;AACrE,cAAY,MAAM,EAAE,WAAY,EAAC;AAEjC,SAAO;CACP,SAAQ,OAAO;AACf,cACC,MACA,EAAE,YAAY,IAAK,GACnB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,EACxD;AACD,QAAM;CACN;AACD;;;;AAKD,SAAgB,gBAAgBO,MAAcC,YAA+B;CAC5E,MAAM,SAAS,qBAAqB;AACpC,QAAO,OAAO,UAAU,MAAM;EAC7B,MAAMP,6BAAS;EACf;CACA,EAAC;AACF;;;;AAKD,eAAsB,cACrBM,MACAE,IACAD,YACa;CACb,MAAM,OAAO,gBAAgB,MAAM,WAAW;AAE9C,KAAI;EACH,MAAM,SAAS,MAAM,4BAAQ,KAC5B,0BAAM,QAAQ,4BAAQ,QAAQ,EAAE,KAAK,EACrC,MAAM,GAAG,KAAK,CACd;AACD,OAAK,UAAU,EAAE,MAAMH,mCAAe,GAAI,EAAC;AAC3C,SAAO;CACP,SAAQ,OAAO;AACf,OAAK,UAAU;GACd,MAAMA,mCAAe;GACrB,SAAS,iBAAiB,QAAQ,MAAM,UAAU;EAClD,EAAC;AACF,OAAK,gBACJ,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,EACxD;AACD,QAAM;CACN,UAAS;AACT,OAAK,KAAK;CACV;AACD;;;;AAKD,SAAgB,mBAA4B;AAC3C,KAAI;EACH,MAAM,SAAS,0BAAM,UAAU,YAAY;EAE3C,MAAM,OAAO,OAAO,UAAU,OAAO;EACrC,MAAM,SACL,KAAK,aAAa,CAAC,YAAY;AAChC,OAAK,KAAK;AACV,SAAO;CACP,QAAO;AACP,SAAO;CACP;AACD"}
@@ -0,0 +1,107 @@
1
+ import * as _opentelemetry_api2 from "@opentelemetry/api";
2
+ import { Attributes, Context, Span } from "@opentelemetry/api";
3
+
4
+ //#region src/instrumentation/http.d.ts
5
+ /**
6
+ * HTTP request attributes following OpenTelemetry semantic conventions
7
+ */
8
+ interface HttpRequestAttributes {
9
+ method: string;
10
+ url?: string;
11
+ path?: string;
12
+ route?: string;
13
+ host?: string;
14
+ scheme?: 'http' | 'https';
15
+ userAgent?: string;
16
+ clientIp?: string;
17
+ requestId?: string;
18
+ }
19
+ /**
20
+ * HTTP response attributes
21
+ */
22
+ interface HttpResponseAttributes {
23
+ statusCode: number;
24
+ responseSize?: number;
25
+ }
26
+ /**
27
+ * Endpoint-specific attributes
28
+ */
29
+ interface EndpointAttributes {
30
+ name?: string;
31
+ operationId?: string;
32
+ tags?: string[];
33
+ }
34
+ /**
35
+ * User/session attributes
36
+ */
37
+ interface UserAttributes {
38
+ userId?: string;
39
+ sessionId?: string;
40
+ roles?: string[];
41
+ }
42
+ /**
43
+ * Full span attributes for HTTP requests
44
+ */
45
+ interface HttpSpanAttributes extends HttpRequestAttributes {
46
+ response?: HttpResponseAttributes;
47
+ endpoint?: EndpointAttributes;
48
+ user?: UserAttributes;
49
+ custom?: Attributes;
50
+ }
51
+ /**
52
+ * Get or create a tracer for constructs instrumentation
53
+ */
54
+ declare function getConstructsTracer(): _opentelemetry_api2.Tracer;
55
+ /**
56
+ * Convert HTTP attributes to OpenTelemetry semantic conventions
57
+ */
58
+ declare function toOtelAttributes(attrs: HttpSpanAttributes): Attributes;
59
+ /**
60
+ * Extract trace context from HTTP headers
61
+ */
62
+ declare function extractTraceContext(headers: Record<string, string | string[] | undefined>): Context;
63
+ /**
64
+ * Inject trace context into HTTP headers
65
+ */
66
+ declare function injectTraceContext(headers: Record<string, string>, ctx?: Context): Record<string, string>;
67
+ /**
68
+ * Create an HTTP server span for an incoming request
69
+ */
70
+ declare function createHttpServerSpan(attrs: HttpSpanAttributes, parentContext?: Context): Span;
71
+ /**
72
+ * End an HTTP span with response data
73
+ */
74
+ declare function endHttpSpan(span: Span, response: HttpResponseAttributes, error?: Error): void;
75
+ /**
76
+ * Execute a function within an HTTP server span context
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const result = await withHttpSpan(
81
+ * { method: 'GET', path: '/users', route: '/users' },
82
+ * async (span) => {
83
+ * const users = await getUsers();
84
+ * return { statusCode: 200, body: users };
85
+ * }
86
+ * );
87
+ * ```
88
+ */
89
+ declare function withHttpSpan<T>(attrs: HttpSpanAttributes, fn: (span: Span) => Promise<T & {
90
+ statusCode?: number;
91
+ }>, parentContext?: Context): Promise<T>;
92
+ /**
93
+ * Create a child span for internal operations (middleware, handlers, etc.)
94
+ */
95
+ declare function createChildSpan(name: string, attributes?: Attributes): Span;
96
+ /**
97
+ * Execute a function within a child span
98
+ */
99
+ declare function withChildSpan<T>(name: string, fn: (span: Span) => Promise<T>, attributes?: Attributes): Promise<T>;
100
+ /**
101
+ * Check if tracing is enabled (OpenTelemetry API is available and configured)
102
+ */
103
+ declare function isTracingEnabled(): boolean;
104
+ //# sourceMappingURL=http.d.ts.map
105
+ //#endregion
106
+ export { EndpointAttributes, HttpRequestAttributes, HttpResponseAttributes, HttpSpanAttributes, UserAttributes, createChildSpan, createHttpServerSpan, endHttpSpan, extractTraceContext, getConstructsTracer, injectTraceContext, isTracingEnabled, toOtelAttributes, withChildSpan, withHttpSpan };
107
+ //# sourceMappingURL=http-Dvca6fC3.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-Dvca6fC3.d.cts","names":[],"sources":["../src/instrumentation/http.ts"],"sourcesContent":[],"mappings":";;;;;;;AAciB,UAAA,qBAAA,CAAqB;EAerB,MAAA,EAAA,MAAA;EAQA,GAAA,CAAA,EAAA,MAAA;EASA,IAAA,CAAA,EAAA,MAAA;EASA,KAAA,CAAA,EAAA,MAAA;EAAmB,IAAA,CAAA,EAAA,MAAA;EAAA,MACxB,CAAA,EAAA,MAAA,GAAA,OAAA;EAAsB,SACtB,CAAA,EAAA,MAAA;EAAkB,QACtB,CAAA,EAAA,MAAA;EAAc,SACZ,CAAA,EAAA,MAAA;;AAJuD;AAYjE;AAOA;AAAgC,UA7Cf,sBAAA,CA6Ce;EAAA,UAAQ,EAAA,MAAA;EAAkB,YAAG,CAAA,EAAA,MAAA;AAAU;AAgDvE;;;AAEG,UAvFc,kBAAA,CAuFd;EAAO,IAAA,CAAA,EAAA,MAAA;EAkBM,WAAA,CAAA,EAAA,MAAA;EAAkB,IAAA,CAAA,EAAA,MAAA,EAAA;;;;AAGzB;AASO,UA5GC,cAAA,CA4GmB;EAAA,MAAA,CAAA,EAAA,MAAA;EAAA,SAC5B,CAAA,EAAA,MAAA;EAAkB,KACT,CAAA,EAAA,MAAA,EAAA;;AACV;AAqBP;;AACO,UA5HU,kBAAA,SAA2B,qBA4HrC,CAAA;EAAI,QACA,CAAA,EA5HC,sBA4HD;EAAsB,QACxB,CAAA,EA5HG,kBA4HH;EAAK,IAAA,CAAA,EA3HN,cA2HM;EAwCQ,MAAA,CAAA,EAlKZ,UAkKwB;;;;;AAEb,iBA5JL,mBAAA,CAAA,CA4JK,EA5Jc,mBAAA,CAAA,MA4Jd;;;;AAEX,iBAvJM,gBAAA,CAuJN,KAAA,EAvJ8B,kBAuJ9B,CAAA,EAvJmD,UAuJnD;AA0BV;;;AAAwE,iBAjIxD,mBAAA,CAiIwD,OAAA,EAhI9D,MAgI8D,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,EA/HrE,OA+HqE;AAAI;AAW5E;;AAEY,iBA1HI,kBAAA,CA0HJ,OAAA,EAzHF,MAyHE,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,GAAA,CAAA,EAxHL,OAwHK,CAAA,EAvHT,MAuHS,CAAA,MAAA,EAAA,MAAA,CAAA;;;;AAED,iBAhHK,oBAAA,CAgHL,KAAA,EA/GH,kBA+GG,EAAA,aAAA,CAAA,EA9GM,OA8GN,CAAA,EA7GR,IA6GQ;;AAAD;AA2BV;iBAnHgB,WAAA,OACT,gBACI,gCACF;;;;;;;;;;;;;;;iBAwCa,uBACd,+BACI,SAAS,QAAQ;;oBACZ,UACd,QAAQ;;;;iBA0BK,eAAA,4BAA2C,aAAa;;;;iBAWlD,0CAEV,SAAS,QAAQ,iBACf,aACX,QAAQ;;;;iBA2BK,gBAAA,CAAA"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
package/dist/index.cjs CHANGED
@@ -1,8 +1,9 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_metrics_MetricsAggregator = require("./metrics/MetricsAggregator.cjs");
3
- const require_Telescope = require("./Telescope.cjs");
4
- require("./metrics/index.cjs");
5
- const require_storage_memory = require("./storage/memory.cjs");
6
- exports.InMemoryStorage = require_storage_memory.InMemoryStorage;
7
- exports.MetricsAggregator = require_metrics_MetricsAggregator.MetricsAggregator;
8
- exports.Telescope = require_Telescope.Telescope;
1
+ const require_MetricsAggregator = require('./MetricsAggregator-B7lUICdH.cjs');
2
+ require('./redact-DVaSSPZT.cjs');
3
+ const require_Telescope = require('./Telescope-Cs3fv8jt.cjs');
4
+ require('./metrics-fhD3l3C3.cjs');
5
+ const require_memory = require('./memory-B0d_n1g5.cjs');
6
+
7
+ exports.InMemoryStorage = require_memory.InMemoryStorage;
8
+ exports.MetricsAggregator = require_MetricsAggregator.MetricsAggregator;
9
+ exports.Telescope = require_Telescope.Telescope;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
- import { C as TimeRange, S as TelescopeStorage, _ as TelescopeEvent, a as LogEntry, d as RequestContext, f as RequestEntry, g as StatusDistribution, h as StackFrame, i as ExceptionEntry, l as NormalizedTelescopeOptions, m as SourceContext, o as MetricsBucket, p as RequestMetrics, r as EndpointMetrics, s as MetricsQueryOptions, t as EndpointBucket, u as QueryOptions, v as TelescopeEventType, w as TimeSeriesPoint, x as TelescopeStats, y as TelescopeOptions } from "./types-BVujq4zd.cjs";
2
- import { n as MetricsAggregatorOptions, t as MetricsAggregator } from "./MetricsAggregator-CnC3oT5q.cjs";
3
- import { t as Telescope } from "./Telescope-DeqSHfuB.cjs";
4
- import { InMemoryStorage, InMemoryStorageOptions } from "./storage/memory.cjs";
5
- export { type EndpointBucket, type EndpointMetrics, type ExceptionEntry, InMemoryStorage, type InMemoryStorageOptions, type LogEntry, MetricsAggregator, type MetricsAggregatorOptions, type MetricsBucket, type MetricsQueryOptions, type NormalizedTelescopeOptions, type QueryOptions, type RequestContext, type RequestEntry, type RequestMetrics, type SourceContext, type StackFrame, type StatusDistribution, Telescope, type TelescopeEvent, type TelescopeEventType, type TelescopeOptions, type TelescopeStats, type TelescopeStorage, type TimeRange, type TimeSeriesPoint };
1
+ import { EndpointBucket, EndpointMetrics, ExceptionEntry, LogEntry, MetricsBucket, MetricsQueryOptions, NormalizedTelescopeOptions, QueryOptions, RequestContext, RequestEntry, RequestMetrics, SourceContext, StackFrame, StatusDistribution, TelescopeEvent, TelescopeEventType, TelescopeOptions, TelescopeStats, TelescopeStorage, TimeRange, TimeSeriesPoint } from "./types-l7Rlb5Mg.cjs";
2
+ import { MetricsAggregator, MetricsAggregatorOptions } from "./MetricsAggregator-4SqelGcG.cjs";
3
+ import { Telescope } from "./Telescope-D4nmwDRA.cjs";
4
+ import "./index-BL32-cvv.cjs";
5
+ import { InMemoryStorage, InMemoryStorageOptions } from "./memory--BK4iWiv.cjs";
6
+ export { EndpointBucket, EndpointMetrics, ExceptionEntry, InMemoryStorage, InMemoryStorageOptions, LogEntry, MetricsAggregator, MetricsAggregatorOptions, MetricsBucket, MetricsQueryOptions, NormalizedTelescopeOptions, QueryOptions, RequestContext, RequestEntry, RequestMetrics, SourceContext, StackFrame, StatusDistribution, Telescope, TelescopeEvent, TelescopeEventType, TelescopeOptions, TelescopeStats, TelescopeStorage, TimeRange, TimeSeriesPoint };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
- import { C as TimeRange, S as TelescopeStorage, _ as TelescopeEvent, a as LogEntry, d as RequestContext, f as RequestEntry, g as StatusDistribution, h as StackFrame, i as ExceptionEntry, l as NormalizedTelescopeOptions, m as SourceContext, o as MetricsBucket, p as RequestMetrics, r as EndpointMetrics, s as MetricsQueryOptions, t as EndpointBucket, u as QueryOptions, v as TelescopeEventType, w as TimeSeriesPoint, x as TelescopeStats, y as TelescopeOptions } from "./types-BVujq4zd.mjs";
2
- import { n as MetricsAggregatorOptions, t as MetricsAggregator } from "./MetricsAggregator-BJdIvfEv.mjs";
3
- import { t as Telescope } from "./Telescope-BVfDvVvY.mjs";
4
- import { InMemoryStorage, InMemoryStorageOptions } from "./storage/memory.mjs";
5
- export { type EndpointBucket, type EndpointMetrics, type ExceptionEntry, InMemoryStorage, type InMemoryStorageOptions, type LogEntry, MetricsAggregator, type MetricsAggregatorOptions, type MetricsBucket, type MetricsQueryOptions, type NormalizedTelescopeOptions, type QueryOptions, type RequestContext, type RequestEntry, type RequestMetrics, type SourceContext, type StackFrame, type StatusDistribution, Telescope, type TelescopeEvent, type TelescopeEventType, type TelescopeOptions, type TelescopeStats, type TelescopeStorage, type TimeRange, type TimeSeriesPoint };
1
+ import { EndpointBucket, EndpointMetrics, ExceptionEntry, LogEntry, MetricsBucket, MetricsQueryOptions, NormalizedTelescopeOptions, QueryOptions, RequestContext, RequestEntry, RequestMetrics, SourceContext, StackFrame, StatusDistribution, TelescopeEvent, TelescopeEventType, TelescopeOptions, TelescopeStats, TelescopeStorage, TimeRange, TimeSeriesPoint } from "./types-B1EIa_cQ.mjs";
2
+ import { MetricsAggregator, MetricsAggregatorOptions } from "./MetricsAggregator-DZrW8ls6.mjs";
3
+ import { Telescope } from "./Telescope-Dl6VSfxd.mjs";
4
+ import "./index-CsuikFeJ.mjs";
5
+ import { InMemoryStorage, InMemoryStorageOptions } from "./memory-DCirEVFW.mjs";
6
+ export { EndpointBucket, EndpointMetrics, ExceptionEntry, InMemoryStorage, InMemoryStorageOptions, LogEntry, MetricsAggregator, MetricsAggregatorOptions, MetricsBucket, MetricsQueryOptions, NormalizedTelescopeOptions, QueryOptions, RequestContext, RequestEntry, RequestMetrics, SourceContext, StackFrame, StatusDistribution, Telescope, TelescopeEvent, TelescopeEventType, TelescopeOptions, TelescopeStats, TelescopeStorage, TimeRange, TimeSeriesPoint };
package/dist/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
- import { MetricsAggregator } from "./metrics/MetricsAggregator.mjs";
2
- import { Telescope } from "./Telescope.mjs";
3
- import "./metrics/index.mjs";
4
- import { InMemoryStorage } from "./storage/memory.mjs";
5
- export { InMemoryStorage, MetricsAggregator, Telescope };
1
+ import { MetricsAggregator } from "./MetricsAggregator-S3DQWNas.mjs";
2
+ import "./redact-BzkITCNW.mjs";
3
+ import { Telescope } from "./Telescope-Dh5av3FC.mjs";
4
+ import "./metrics-D5YT-Rnq.mjs";
5
+ import { InMemoryStorage } from "./memory-6S9H-IF5.mjs";
6
+
7
+ export { InMemoryStorage, MetricsAggregator, Telescope };