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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/{MetricsAggregator-4SqelGcG.d.cts → MetricsAggregator-BxBLQUPj.d.cts} +3 -6
  2. package/dist/MetricsAggregator-BxBLQUPj.d.cts.map +1 -0
  3. package/dist/{MetricsAggregator-DZrW8ls6.d.mts → MetricsAggregator-j9wmZ0K_.d.mts} +3 -6
  4. package/dist/MetricsAggregator-j9wmZ0K_.d.mts.map +1 -0
  5. package/dist/{Telescope-D4nmwDRA.d.cts → Telescope-BcrWTaar.d.mts} +4 -7
  6. package/dist/Telescope-BcrWTaar.d.mts.map +1 -0
  7. package/dist/{Telescope-Dl6VSfxd.d.mts → Telescope-DnCMZT7V.d.cts} +4 -7
  8. package/dist/Telescope-DnCMZT7V.d.cts.map +1 -0
  9. package/dist/Telescope.cjs +385 -4
  10. package/dist/Telescope.cjs.map +1 -0
  11. package/dist/Telescope.d.cts +1 -3
  12. package/dist/Telescope.d.mts +1 -3
  13. package/dist/Telescope.mjs +384 -4
  14. package/dist/Telescope.mjs.map +1 -0
  15. package/dist/adapters/index.d.cts +2 -2
  16. package/dist/adapters/index.d.mts +2 -2
  17. package/dist/adapters/index.mjs +1 -0
  18. package/dist/adapters/lambda.cjs +9 -10
  19. package/dist/adapters/lambda.cjs.map +1 -1
  20. package/dist/adapters/lambda.d.cts +9 -13
  21. package/dist/adapters/lambda.d.cts.map +1 -1
  22. package/dist/adapters/lambda.d.mts +9 -13
  23. package/dist/adapters/lambda.d.mts.map +1 -1
  24. package/dist/adapters/lambda.mjs +3 -4
  25. package/dist/adapters/lambda.mjs.map +1 -1
  26. package/dist/adapters/middy.cjs +236 -4
  27. package/dist/adapters/middy.cjs.map +1 -0
  28. package/dist/adapters/middy.d.cts +60 -5
  29. package/dist/adapters/middy.d.cts.map +1 -0
  30. package/dist/adapters/middy.d.mts +60 -5
  31. package/dist/adapters/middy.d.mts.map +1 -0
  32. package/dist/adapters/middy.mjs +234 -3
  33. package/dist/adapters/middy.mjs.map +1 -0
  34. package/dist/adapters/types.d.cts +162 -2
  35. package/dist/adapters/types.d.cts.map +1 -0
  36. package/dist/adapters/types.d.mts +162 -2
  37. package/dist/adapters/types.d.mts.map +1 -0
  38. package/dist/adapters/types.mjs +1 -0
  39. package/dist/core.cjs +22 -22
  40. package/dist/core.d.cts +4 -4
  41. package/dist/core.d.mts +4 -4
  42. package/dist/core.mjs +3 -4
  43. package/dist/index.cjs +8 -9
  44. package/dist/index.d.cts +5 -6
  45. package/dist/index.d.mts +5 -6
  46. package/dist/index.mjs +5 -7
  47. package/dist/instrumentation/core.cjs +147 -11
  48. package/dist/instrumentation/core.cjs.map +1 -0
  49. package/dist/instrumentation/core.d.cts +74 -3
  50. package/dist/instrumentation/core.d.cts.map +1 -0
  51. package/dist/instrumentation/core.d.mts +74 -3
  52. package/dist/instrumentation/core.d.mts.map +1 -0
  53. package/dist/instrumentation/core.mjs +137 -2
  54. package/dist/instrumentation/core.mjs.map +1 -0
  55. package/dist/instrumentation/hono.cjs +134 -6
  56. package/dist/instrumentation/hono.cjs.map +1 -0
  57. package/dist/instrumentation/hono.d.cts +67 -2
  58. package/dist/instrumentation/hono.d.cts.map +1 -0
  59. package/dist/instrumentation/hono.d.mts +67 -2
  60. package/dist/instrumentation/hono.d.mts.map +1 -0
  61. package/dist/instrumentation/hono.mjs +130 -3
  62. package/dist/instrumentation/hono.mjs.map +1 -0
  63. package/dist/instrumentation/http.cjs +164 -11
  64. package/dist/instrumentation/http.cjs.map +1 -0
  65. package/dist/instrumentation/http.d.cts +103 -2
  66. package/dist/instrumentation/http.d.cts.map +1 -0
  67. package/dist/instrumentation/http.d.mts +103 -2
  68. package/dist/instrumentation/http.d.mts.map +1 -0
  69. package/dist/instrumentation/http.mjs +154 -2
  70. package/dist/instrumentation/http.mjs.map +1 -0
  71. package/dist/instrumentation/index.cjs +47 -47
  72. package/dist/instrumentation/index.d.cts +9 -9
  73. package/dist/instrumentation/index.d.mts +9 -9
  74. package/dist/instrumentation/index.mjs +8 -9
  75. package/dist/instrumentation/middleware.cjs +162 -6
  76. package/dist/instrumentation/middleware.cjs.map +1 -0
  77. package/dist/instrumentation/middleware.d.cts +70 -2
  78. package/dist/instrumentation/middleware.d.cts.map +1 -0
  79. package/dist/instrumentation/middleware.d.mts +70 -2
  80. package/dist/instrumentation/middleware.d.mts.map +1 -0
  81. package/dist/instrumentation/middleware.mjs +158 -3
  82. package/dist/instrumentation/middleware.mjs.map +1 -0
  83. package/dist/instrumentation/otel.cjs +137 -3
  84. package/dist/instrumentation/otel.cjs.map +1 -0
  85. package/dist/instrumentation/otel.d.cts +97 -2
  86. package/dist/instrumentation/otel.d.cts.map +1 -0
  87. package/dist/instrumentation/otel.d.mts +97 -2
  88. package/dist/instrumentation/otel.d.mts.map +1 -0
  89. package/dist/instrumentation/otel.mjs +136 -3
  90. package/dist/instrumentation/otel.mjs.map +1 -0
  91. package/dist/instrumentation/setup.cjs +100 -4
  92. package/dist/instrumentation/setup.cjs.map +1 -0
  93. package/dist/instrumentation/setup.d.cts +83 -3
  94. package/dist/instrumentation/setup.d.cts.map +1 -0
  95. package/dist/instrumentation/setup.d.mts +83 -3
  96. package/dist/instrumentation/setup.d.mts.map +1 -0
  97. package/dist/instrumentation/setup.mjs +98 -3
  98. package/dist/instrumentation/setup.mjs.map +1 -0
  99. package/dist/instrumentation/tracing.cjs +114 -10
  100. package/dist/instrumentation/tracing.cjs.map +1 -0
  101. package/dist/instrumentation/tracing.d.cts +49 -2
  102. package/dist/instrumentation/tracing.d.cts.map +1 -0
  103. package/dist/instrumentation/tracing.d.mts +49 -2
  104. package/dist/instrumentation/tracing.d.mts.map +1 -0
  105. package/dist/instrumentation/tracing.mjs +105 -2
  106. package/dist/instrumentation/tracing.mjs.map +1 -0
  107. package/dist/logger/console.cjs +18 -12
  108. package/dist/logger/console.cjs.map +1 -1
  109. package/dist/logger/console.d.cts +7 -10
  110. package/dist/logger/console.d.cts.map +1 -1
  111. package/dist/logger/console.d.mts +7 -10
  112. package/dist/logger/console.d.mts.map +1 -1
  113. package/dist/logger/console.mjs +17 -11
  114. package/dist/logger/console.mjs.map +1 -1
  115. package/dist/logger/pino.cjs +6 -5
  116. package/dist/logger/pino.cjs.map +1 -1
  117. package/dist/logger/pino.d.cts +6 -10
  118. package/dist/logger/pino.d.cts.map +1 -1
  119. package/dist/logger/pino.d.mts +6 -10
  120. package/dist/logger/pino.d.mts.map +1 -1
  121. package/dist/logger/pino.mjs +2 -3
  122. package/dist/logger/pino.mjs.map +1 -1
  123. package/dist/metrics/MetricsAggregator.cjs +354 -2
  124. package/dist/metrics/MetricsAggregator.cjs.map +1 -0
  125. package/dist/metrics/MetricsAggregator.d.cts +1 -2
  126. package/dist/metrics/MetricsAggregator.d.mts +1 -2
  127. package/dist/metrics/MetricsAggregator.mjs +353 -2
  128. package/dist/metrics/MetricsAggregator.mjs.map +1 -0
  129. package/dist/metrics/index.cjs +3 -4
  130. package/dist/metrics/index.d.cts +2 -4
  131. package/dist/metrics/index.d.mts +2 -4
  132. package/dist/metrics/index.mjs +2 -4
  133. package/dist/metrics/storage/InMemoryMetricsStorage.cjs +240 -3
  134. package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +1 -0
  135. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +43 -4
  136. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +1 -0
  137. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +43 -4
  138. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +1 -0
  139. package/dist/metrics/storage/InMemoryMetricsStorage.mjs +239 -3
  140. package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +1 -0
  141. package/dist/metrics/storage/MetricsStorage.cjs +0 -1
  142. package/dist/metrics/storage/MetricsStorage.d.cts +56 -3
  143. package/dist/metrics/storage/MetricsStorage.d.cts.map +1 -0
  144. package/dist/metrics/storage/MetricsStorage.d.mts +56 -3
  145. package/dist/metrics/storage/MetricsStorage.d.mts.map +1 -0
  146. package/dist/metrics/storage/MetricsStorage.mjs +1 -1
  147. package/dist/metrics/storage/index.cjs +6 -6
  148. package/dist/metrics/storage/index.d.cts +3 -3
  149. package/dist/metrics/storage/index.d.mts +3 -3
  150. package/dist/metrics/storage/index.mjs +4 -5
  151. package/dist/metrics/storage/types.cjs +34 -2
  152. package/dist/metrics/storage/types.cjs.map +1 -0
  153. package/dist/metrics/storage/types.d.cts +207 -2
  154. package/dist/metrics/storage/types.d.cts.map +1 -0
  155. package/dist/metrics/storage/types.d.mts +207 -2
  156. package/dist/metrics/storage/types.d.mts.map +1 -0
  157. package/dist/metrics/storage/types.mjs +33 -2
  158. package/dist/metrics/storage/types.mjs.map +1 -0
  159. package/dist/otlp/hono.cjs +9 -15
  160. package/dist/otlp/hono.cjs.map +1 -1
  161. package/dist/otlp/hono.d.cts +3 -13
  162. package/dist/otlp/hono.d.cts.map +1 -1
  163. package/dist/otlp/hono.d.mts +3 -13
  164. package/dist/otlp/hono.d.mts.map +1 -1
  165. package/dist/otlp/hono.mjs +5 -11
  166. package/dist/otlp/hono.mjs.map +1 -1
  167. package/dist/otlp/index.cjs +11 -11
  168. package/dist/otlp/index.d.cts +4 -7
  169. package/dist/otlp/index.d.mts +4 -7
  170. package/dist/otlp/index.mjs +4 -5
  171. package/dist/otlp/receiver.cjs +88 -4
  172. package/dist/otlp/receiver.cjs.map +1 -0
  173. package/dist/otlp/receiver.d.cts +59 -7
  174. package/dist/otlp/receiver.d.cts.map +1 -0
  175. package/dist/otlp/receiver.d.mts +59 -7
  176. package/dist/otlp/receiver.d.mts.map +1 -0
  177. package/dist/otlp/receiver.mjs +87 -4
  178. package/dist/otlp/receiver.mjs.map +1 -0
  179. package/dist/otlp/transformer.cjs +214 -5
  180. package/dist/otlp/transformer.cjs.map +1 -0
  181. package/dist/otlp/transformer.d.cts +1 -3
  182. package/dist/otlp/transformer.d.mts +1 -3
  183. package/dist/otlp/transformer.mjs +211 -3
  184. package/dist/otlp/transformer.mjs.map +1 -0
  185. package/dist/otlp/types.cjs +57 -5
  186. package/dist/otlp/types.cjs.map +1 -0
  187. package/dist/otlp/types.d.cts +1 -1
  188. package/dist/otlp/types.d.mts +1 -1
  189. package/dist/otlp/types.mjs +53 -2
  190. package/dist/otlp/types.mjs.map +1 -0
  191. package/dist/redact.cjs +84 -3
  192. package/dist/redact.cjs.map +1 -0
  193. package/dist/redact.d.cts +4 -8
  194. package/dist/redact.d.cts.map +1 -1
  195. package/dist/redact.d.mts +4 -8
  196. package/dist/redact.d.mts.map +1 -1
  197. package/dist/redact.mjs +80 -2
  198. package/dist/redact.mjs.map +1 -0
  199. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
  200. package/dist/server/hono.cjs +24 -33
  201. package/dist/server/hono.cjs.map +1 -1
  202. package/dist/server/hono.d.cts +10 -13
  203. package/dist/server/hono.d.cts.map +1 -1
  204. package/dist/server/hono.d.mts +10 -13
  205. package/dist/server/hono.d.mts.map +1 -1
  206. package/dist/server/hono.mjs +22 -31
  207. package/dist/server/hono.mjs.map +1 -1
  208. package/dist/storage/kysely.cjs +34 -32
  209. package/dist/storage/kysely.cjs.map +1 -1
  210. package/dist/storage/kysely.d.cts +8 -12
  211. package/dist/storage/kysely.d.cts.map +1 -1
  212. package/dist/storage/kysely.d.mts +8 -12
  213. package/dist/storage/kysely.d.mts.map +1 -1
  214. package/dist/storage/kysely.mjs +33 -31
  215. package/dist/storage/kysely.mjs.map +1 -1
  216. package/dist/storage/memory.cjs +122 -2
  217. package/dist/storage/memory.cjs.map +1 -0
  218. package/dist/storage/memory.d.cts +36 -3
  219. package/dist/storage/memory.d.cts.map +1 -0
  220. package/dist/storage/memory.d.mts +36 -3
  221. package/dist/storage/memory.d.mts.map +1 -0
  222. package/dist/storage/memory.mjs +121 -2
  223. package/dist/storage/memory.mjs.map +1 -0
  224. package/dist/{transformer-CTGsaVfV.d.mts → transformer-BBBXCjHP.d.mts} +4 -8
  225. package/dist/transformer-BBBXCjHP.d.mts.map +1 -0
  226. package/dist/{transformer-ICEbxpFf.d.cts → transformer-DlESim6Q.d.cts} +4 -8
  227. package/dist/transformer-DlESim6Q.d.cts.map +1 -0
  228. package/dist/{types-CmOB7CLO.d.cts → types-DVETVdpa.d.cts} +6 -7
  229. package/dist/types-DVETVdpa.d.cts.map +1 -0
  230. package/dist/{types-DBc0q5KD.d.mts → types-DVETVdpa.d.mts} +6 -7
  231. package/dist/types-DVETVdpa.d.mts.map +1 -0
  232. package/dist/{types-B1EIa_cQ.d.mts → types-a9Vistj1.d.cts} +2 -3
  233. package/dist/types-a9Vistj1.d.cts.map +1 -0
  234. package/dist/{types-l7Rlb5Mg.d.cts → types-a9Vistj1.d.mts} +2 -3
  235. package/dist/types-a9Vistj1.d.mts.map +1 -0
  236. package/dist/types.d.cts +1 -1
  237. package/dist/types.d.mts +1 -1
  238. package/dist/types.mjs +1 -0
  239. package/dist/ui-assets.cjs +31 -4
  240. package/dist/ui-assets.cjs.map +1 -0
  241. package/dist/ui-assets.d.cts +4 -6
  242. package/dist/ui-assets.d.cts.map +1 -1
  243. package/dist/ui-assets.d.mts +4 -6
  244. package/dist/ui-assets.d.mts.map +1 -1
  245. package/dist/ui-assets.mjs +28 -2
  246. package/dist/ui-assets.mjs.map +1 -0
  247. package/package.json +39 -37
  248. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +0 -47
  249. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +0 -1
  250. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +0 -247
  251. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +0 -1
  252. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +0 -252
  253. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +0 -1
  254. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +0 -47
  255. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +0 -1
  256. package/dist/MetricsAggregator-4SqelGcG.d.cts.map +0 -1
  257. package/dist/MetricsAggregator-B7lUICdH.cjs +0 -363
  258. package/dist/MetricsAggregator-B7lUICdH.cjs.map +0 -1
  259. package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +0 -1
  260. package/dist/MetricsAggregator-S3DQWNas.mjs +0 -357
  261. package/dist/MetricsAggregator-S3DQWNas.mjs.map +0 -1
  262. package/dist/MetricsStorage-B86e4131.d.cts +0 -60
  263. package/dist/MetricsStorage-B86e4131.d.cts.map +0 -1
  264. package/dist/MetricsStorage-BWyP2_12.d.mts +0 -60
  265. package/dist/MetricsStorage-BWyP2_12.d.mts.map +0 -1
  266. package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
  267. package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
  268. package/dist/Telescope-Cs3fv8jt.cjs +0 -395
  269. package/dist/Telescope-Cs3fv8jt.cjs.map +0 -1
  270. package/dist/Telescope-D4nmwDRA.d.cts.map +0 -1
  271. package/dist/Telescope-Dh5av3FC.mjs +0 -389
  272. package/dist/Telescope-Dh5av3FC.mjs.map +0 -1
  273. package/dist/Telescope-Dl6VSfxd.d.mts.map +0 -1
  274. package/dist/core--quSp5Qr.d.mts +0 -78
  275. package/dist/core--quSp5Qr.d.mts.map +0 -1
  276. package/dist/core-B4Jpia5H.d.cts +0 -78
  277. package/dist/core-B4Jpia5H.d.cts.map +0 -1
  278. package/dist/core-CtVHRJGv.cjs +0 -199
  279. package/dist/core-CtVHRJGv.cjs.map +0 -1
  280. package/dist/core-D6hJ6exL.mjs +0 -139
  281. package/dist/core-D6hJ6exL.mjs.map +0 -1
  282. package/dist/hono--uKQ7Jgi.d.mts +0 -71
  283. package/dist/hono--uKQ7Jgi.d.mts.map +0 -1
  284. package/dist/hono-Bw-ey6CT.mjs +0 -136
  285. package/dist/hono-Bw-ey6CT.mjs.map +0 -1
  286. package/dist/hono-CPHX7FAm.cjs +0 -160
  287. package/dist/hono-CPHX7FAm.cjs.map +0 -1
  288. package/dist/hono-CemCKU87.d.cts +0 -71
  289. package/dist/hono-CemCKU87.d.cts.map +0 -1
  290. package/dist/http-BIvr0YdI.mjs +0 -159
  291. package/dist/http-BIvr0YdI.mjs.map +0 -1
  292. package/dist/http-BiNtg85L.d.mts +0 -107
  293. package/dist/http-BiNtg85L.d.mts.map +0 -1
  294. package/dist/http-BsqmhurZ.cjs +0 -219
  295. package/dist/http-BsqmhurZ.cjs.map +0 -1
  296. package/dist/http-D1oTbfap.d.cts +0 -107
  297. package/dist/http-D1oTbfap.d.cts.map +0 -1
  298. package/dist/index-BL32-cvv.d.cts +0 -1
  299. package/dist/index-CsuikFeJ.d.mts +0 -1
  300. package/dist/memory--BK4iWiv.d.cts +0 -40
  301. package/dist/memory--BK4iWiv.d.cts.map +0 -1
  302. package/dist/memory-6S9H-IF5.mjs +0 -123
  303. package/dist/memory-6S9H-IF5.mjs.map +0 -1
  304. package/dist/memory-B0d_n1g5.cjs +0 -129
  305. package/dist/memory-B0d_n1g5.cjs.map +0 -1
  306. package/dist/memory-DCirEVFW.d.mts +0 -40
  307. package/dist/memory-DCirEVFW.d.mts.map +0 -1
  308. package/dist/metrics-D5YT-Rnq.mjs +0 -0
  309. package/dist/metrics-fhD3l3C3.cjs +0 -0
  310. package/dist/middleware-Bcq6XXGG.cjs +0 -184
  311. package/dist/middleware-Bcq6XXGG.cjs.map +0 -1
  312. package/dist/middleware-D1XEHvyy.mjs +0 -160
  313. package/dist/middleware-D1XEHvyy.mjs.map +0 -1
  314. package/dist/middleware-PeyS-9Ny.d.cts +0 -74
  315. package/dist/middleware-PeyS-9Ny.d.cts.map +0 -1
  316. package/dist/middleware-oHvo_ZgU.d.mts +0 -74
  317. package/dist/middleware-oHvo_ZgU.d.mts.map +0 -1
  318. package/dist/middy-B6Btl8XE.d.mts +0 -64
  319. package/dist/middy-B6Btl8XE.d.mts.map +0 -1
  320. package/dist/middy-Bq0defVg.d.cts +0 -64
  321. package/dist/middy-Bq0defVg.d.cts.map +0 -1
  322. package/dist/middy-DHWLmUAD.mjs +0 -236
  323. package/dist/middy-DHWLmUAD.mjs.map +0 -1
  324. package/dist/middy-DlWnZilH.cjs +0 -247
  325. package/dist/middy-DlWnZilH.cjs.map +0 -1
  326. package/dist/otel-B9bNoeZ2.mjs +0 -130
  327. package/dist/otel-B9bNoeZ2.mjs.map +0 -1
  328. package/dist/otel-Bk89b1lX.d.cts +0 -101
  329. package/dist/otel-Bk89b1lX.d.cts.map +0 -1
  330. package/dist/otel-BzjOtVxZ.cjs +0 -136
  331. package/dist/otel-BzjOtVxZ.cjs.map +0 -1
  332. package/dist/otel-lPMsM26e.d.mts +0 -101
  333. package/dist/otel-lPMsM26e.d.mts.map +0 -1
  334. package/dist/receiver-D46dfkYI.mjs +0 -89
  335. package/dist/receiver-D46dfkYI.mjs.map +0 -1
  336. package/dist/receiver-DLICx5uU.d.cts +0 -63
  337. package/dist/receiver-DLICx5uU.d.cts.map +0 -1
  338. package/dist/receiver-UeZT-H8u.d.mts +0 -63
  339. package/dist/receiver-UeZT-H8u.d.mts.map +0 -1
  340. package/dist/receiver-slCoAFat.cjs +0 -94
  341. package/dist/receiver-slCoAFat.cjs.map +0 -1
  342. package/dist/redact-BzkITCNW.mjs +0 -83
  343. package/dist/redact-BzkITCNW.mjs.map +0 -1
  344. package/dist/redact-DVaSSPZT.cjs +0 -95
  345. package/dist/redact-DVaSSPZT.cjs.map +0 -1
  346. package/dist/setup-Bkxm4g6b.d.mts +0 -87
  347. package/dist/setup-Bkxm4g6b.d.mts.map +0 -1
  348. package/dist/setup-D58N1f9O.d.cts +0 -87
  349. package/dist/setup-D58N1f9O.d.cts.map +0 -1
  350. package/dist/setup-DC9JMEYZ.mjs +0 -98
  351. package/dist/setup-DC9JMEYZ.mjs.map +0 -1
  352. package/dist/setup-DufxQpi9.cjs +0 -110
  353. package/dist/setup-DufxQpi9.cjs.map +0 -1
  354. package/dist/tracing-BX8uY2nR.d.cts +0 -53
  355. package/dist/tracing-BX8uY2nR.d.cts.map +0 -1
  356. package/dist/tracing-Bt1zWRlb.cjs +0 -167
  357. package/dist/tracing-Bt1zWRlb.cjs.map +0 -1
  358. package/dist/tracing-Cijm_5NI.mjs +0 -113
  359. package/dist/tracing-Cijm_5NI.mjs.map +0 -1
  360. package/dist/tracing-PnECEbEu.d.mts +0 -53
  361. package/dist/tracing-PnECEbEu.d.mts.map +0 -1
  362. package/dist/transformer-CFQ4WFk6.mjs +0 -215
  363. package/dist/transformer-CFQ4WFk6.mjs.map +0 -1
  364. package/dist/transformer-CTGsaVfV.d.mts.map +0 -1
  365. package/dist/transformer-Csl6fbgv.cjs +0 -232
  366. package/dist/transformer-Csl6fbgv.cjs.map +0 -1
  367. package/dist/transformer-ICEbxpFf.d.cts.map +0 -1
  368. package/dist/types-B1EIa_cQ.d.mts.map +0 -1
  369. package/dist/types-BMiHgsi4.cjs +0 -78
  370. package/dist/types-BMiHgsi4.cjs.map +0 -1
  371. package/dist/types-BRzW1NM8.d.cts +0 -166
  372. package/dist/types-BRzW1NM8.d.cts.map +0 -1
  373. package/dist/types-BS3Rx8Sk.d.cts +0 -209
  374. package/dist/types-BS3Rx8Sk.d.cts.map +0 -1
  375. package/dist/types-BzQ78Efw.d.mts +0 -166
  376. package/dist/types-BzQ78Efw.d.mts.map +0 -1
  377. package/dist/types-CbNGXnJE.d.mts +0 -209
  378. package/dist/types-CbNGXnJE.d.mts.map +0 -1
  379. package/dist/types-Cj59nqy7.mjs +0 -54
  380. package/dist/types-Cj59nqy7.mjs.map +0 -1
  381. package/dist/types-CmOB7CLO.d.cts.map +0 -1
  382. package/dist/types-DBc0q5KD.d.mts.map +0 -1
  383. package/dist/types-ZW-nfWf6.cjs +0 -40
  384. package/dist/types-ZW-nfWf6.cjs.map +0 -1
  385. package/dist/types-l7Rlb5Mg.d.cts.map +0 -1
  386. package/dist/types-ojhnLdwz.mjs +0 -34
  387. package/dist/types-ojhnLdwz.mjs.map +0 -1
  388. package/dist/ui-assets-BEXqOQLe.cjs +0 -48
  389. package/dist/ui-assets-BEXqOQLe.cjs.map +0 -1
  390. package/dist/ui-assets-BhTDUsrM.mjs +0 -30
  391. package/dist/ui-assets-BhTDUsrM.mjs.map +0 -1
@@ -1,7 +1,163 @@
1
- require('../http-BsqmhurZ.cjs');
2
- const require_middleware = require('../middleware-Bcq6XXGG.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_instrumentation_http = require("./http.cjs");
3
+ let _opentelemetry_api = require("@opentelemetry/api");
4
+ //#region src/instrumentation/middleware.ts
5
+ const SPAN_SYMBOL = Symbol("telemetry.span");
6
+ const CONTEXT_SYMBOL = Symbol("telemetry.context");
7
+ /**
8
+ * Get the current span from the Lambda event
9
+ */
10
+ function getSpanFromEvent(event) {
11
+ return event?.[SPAN_SYMBOL];
12
+ }
13
+ /**
14
+ * Get the current trace context from the Lambda event
15
+ */
16
+ function getContextFromEvent(event) {
17
+ return event?.[CONTEXT_SYMBOL];
18
+ }
19
+ /**
20
+ * Create a telemetry middleware for Lambda handlers
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
25
+ *
26
+ * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
27
+ * telemetry: { middleware: telemetryMiddleware() },
28
+ * });
29
+ * ```
30
+ */
31
+ function telemetryMiddleware(options = {}) {
32
+ return {
33
+ before: async (request) => {
34
+ if (options.shouldSkip?.(request.event)) return;
35
+ const event = request.event;
36
+ const lambdaContext = request.context;
37
+ const headers = normalizeHeaders(event.headers || {});
38
+ const parentContext = require_instrumentation_http.extractTraceContext(headers);
39
+ const attrs = buildSpanAttributes(event, lambdaContext, options);
40
+ const span = require_instrumentation_http.createHttpServerSpan(attrs, parentContext);
41
+ event[SPAN_SYMBOL] = span;
42
+ event[CONTEXT_SYMBOL] = _opentelemetry_api.trace.setSpan(parentContext, span);
43
+ span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
44
+ span.setAttribute("faas.name", lambdaContext.functionName);
45
+ if (options.recordBody && event.body) {
46
+ const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
47
+ span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
48
+ }
49
+ },
50
+ after: async (request) => {
51
+ const span = getSpanFromEvent(request.event);
52
+ if (!span) return;
53
+ const response = request.response;
54
+ const statusCode = typeof response?.statusCode === "number" ? response.statusCode : 200;
55
+ if (options.recordResponseBody && response?.body) {
56
+ const bodyStr = typeof response.body === "string" ? response.body : JSON.stringify(response.body);
57
+ span.setAttribute("http.response.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
58
+ }
59
+ require_instrumentation_http.endHttpSpan(span, { statusCode });
60
+ },
61
+ onError: async (request) => {
62
+ const span = getSpanFromEvent(request.event);
63
+ if (!span) return;
64
+ const error = request.error;
65
+ const response = request.response;
66
+ let statusCode = 500;
67
+ if (response?.statusCode) statusCode = response.statusCode;
68
+ else if (error && "statusCode" in error) statusCode = error.statusCode;
69
+ require_instrumentation_http.endHttpSpan(span, { statusCode }, error instanceof Error ? error : new Error(String(error)));
70
+ }
71
+ };
72
+ }
73
+ /**
74
+ * Build span attributes from Lambda event
75
+ */
76
+ function buildSpanAttributes(event, lambdaContext, options) {
77
+ const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
78
+ const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
79
+ let method = "INVOKE";
80
+ let path = "/";
81
+ let route;
82
+ let host;
83
+ let scheme;
84
+ let userAgent;
85
+ let clientIp;
86
+ let requestId;
87
+ if (isV2) {
88
+ const http = event.requestContext.http;
89
+ method = http.method;
90
+ path = event.rawPath || http.path;
91
+ route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
92
+ host = event.headers?.host;
93
+ scheme = "https";
94
+ userAgent = http.userAgent;
95
+ clientIp = http.sourceIp;
96
+ requestId = event.requestContext.requestId;
97
+ } else if (isV1) {
98
+ method = event.httpMethod;
99
+ path = event.path;
100
+ route = event.resource;
101
+ host = event.headers?.Host || event.headers?.host;
102
+ scheme = "https";
103
+ userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
104
+ clientIp = event.requestContext?.identity?.sourceIp;
105
+ requestId = event.requestContext?.requestId;
106
+ } else if ("httpMethod" in event) {
107
+ method = event.httpMethod;
108
+ path = event.path;
109
+ host = event.headers?.host;
110
+ userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
111
+ clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
112
+ }
113
+ const attrs = {
114
+ method,
115
+ path,
116
+ route,
117
+ host,
118
+ scheme,
119
+ userAgent,
120
+ clientIp,
121
+ requestId: requestId || lambdaContext.awsRequestId
122
+ };
123
+ if (options.getEndpointName || options.getOperationId) attrs.endpoint = {
124
+ name: options.getEndpointName?.(event),
125
+ operationId: options.getOperationId?.(event)
126
+ };
127
+ if (options.getUserId) {
128
+ const userId = options.getUserId(event);
129
+ if (userId) attrs.user = { userId };
130
+ }
131
+ return attrs;
132
+ }
133
+ /**
134
+ * Normalize headers to lowercase keys
135
+ */
136
+ function normalizeHeaders(headers) {
137
+ const normalized = {};
138
+ for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
139
+ return normalized;
140
+ }
141
+ /**
142
+ * Run a function within the span context from a Lambda event
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * await withEventContext(event, async () => {
147
+ * // Any spans created here will be children of the request span
148
+ * await doSomething();
149
+ * });
150
+ * ```
151
+ */
152
+ async function withEventContext(event, fn) {
153
+ const ctx = getContextFromEvent(event);
154
+ if (!ctx) return fn();
155
+ return _opentelemetry_api.context.with(ctx, fn);
156
+ }
157
+ //#endregion
158
+ exports.getContextFromEvent = getContextFromEvent;
159
+ exports.getSpanFromEvent = getSpanFromEvent;
160
+ exports.telemetryMiddleware = telemetryMiddleware;
161
+ exports.withEventContext = withEventContext;
3
162
 
4
- exports.getContextFromEvent = require_middleware.getContextFromEvent;
5
- exports.getSpanFromEvent = require_middleware.getSpanFromEvent;
6
- exports.telemetryMiddleware = require_middleware.telemetryMiddleware;
7
- exports.withEventContext = require_middleware.withEventContext;
163
+ //# sourceMappingURL=middleware.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.cjs","names":["extractTraceContext","createHttpServerSpan","trace","context"],"sources":["../../src/instrumentation/middleware.ts"],"sourcesContent":["/**\n * OpenTelemetry instrumentation middleware for @geekmidas/constructs\n *\n * This middleware automatically creates spans for HTTP requests,\n * extracts trace context from incoming headers, and records\n * request/response metadata as span attributes.\n */\nimport type { MiddlewareObj } from '@middy/core';\nimport { context, type Span, trace } from '@opentelemetry/api';\nimport type { Context as LambdaContext } from 'aws-lambda';\nimport {\n\tcreateHttpServerSpan,\n\tendHttpSpan,\n\textractTraceContext,\n\ttype HttpSpanAttributes,\n} from './http';\n\n/**\n * Options for the telemetry middleware\n */\nexport interface TelemetryMiddlewareOptions {\n\t/**\n\t * Whether to record request body as span attribute\n\t * @default false\n\t */\n\trecordBody?: boolean;\n\n\t/**\n\t * Whether to record response body as span attribute\n\t * @default false\n\t */\n\trecordResponseBody?: boolean;\n\n\t/**\n\t * Custom function to extract endpoint name from event\n\t */\n\tgetEndpointName?: (event: any) => string | undefined;\n\n\t/**\n\t * Custom function to extract operation ID from event\n\t */\n\tgetOperationId?: (event: any) => string | undefined;\n\n\t/**\n\t * Custom function to extract user ID from event\n\t */\n\tgetUserId?: (event: any) => string | undefined;\n\n\t/**\n\t * Whether to skip tracing for this request\n\t */\n\tshouldSkip?: (event: any) => boolean;\n}\n\n// Symbol for storing span on event\nconst SPAN_SYMBOL = Symbol('telemetry.span');\nconst CONTEXT_SYMBOL = Symbol('telemetry.context');\n\n/**\n * Get the current span from the Lambda event\n */\nexport function getSpanFromEvent(event: any): Span | undefined {\n\treturn event?.[SPAN_SYMBOL];\n}\n\n/**\n * Get the current trace context from the Lambda event\n */\nexport function getContextFromEvent(event: any): any {\n\treturn event?.[CONTEXT_SYMBOL];\n}\n\n/**\n * Create a telemetry middleware for Lambda handlers\n *\n * @example\n * ```typescript\n * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';\n *\n * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {\n * telemetry: { middleware: telemetryMiddleware() },\n * });\n * ```\n */\nexport function telemetryMiddleware(\n\toptions: TelemetryMiddlewareOptions = {},\n): MiddlewareObj<any, any, Error, LambdaContext> {\n\treturn {\n\t\tbefore: async (request) => {\n\t\t\t// Skip if custom skip function returns true\n\t\t\tif (options.shouldSkip?.(request.event)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = request.event;\n\t\t\tconst lambdaContext = request.context;\n\n\t\t\t// Extract trace context from headers\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst parentContext = extractTraceContext(headers);\n\n\t\t\t// Build span attributes from event\n\t\t\tconst attrs = buildSpanAttributes(event, lambdaContext, options);\n\n\t\t\t// Create the span\n\t\t\tconst span = createHttpServerSpan(attrs, parentContext);\n\n\t\t\t// Store span and context on event for access in handler\n\t\t\tevent[SPAN_SYMBOL] = span;\n\t\t\tevent[CONTEXT_SYMBOL] = trace.setSpan(parentContext, span);\n\n\t\t\t// Add Lambda-specific attributes\n\t\t\tspan.setAttribute('faas.invocation_id', lambdaContext.awsRequestId);\n\t\t\tspan.setAttribute('faas.name', lambdaContext.functionName);\n\n\t\t\tif (options.recordBody && event.body) {\n\t\t\t\tconst bodyStr =\n\t\t\t\t\ttypeof event.body === 'string'\n\t\t\t\t\t\t? event.body\n\t\t\t\t\t\t: JSON.stringify(event.body);\n\t\t\t\t// Truncate large bodies\n\t\t\t\tspan.setAttribute(\n\t\t\t\t\t'http.request.body',\n\t\t\t\t\tbodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\tafter: async (request) => {\n\t\t\tconst span = getSpanFromEvent(request.event);\n\t\t\tif (!span) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = request.response;\n\t\t\tconst statusCode =\n\t\t\t\ttypeof response?.statusCode === 'number' ? response.statusCode : 200;\n\n\t\t\tif (options.recordResponseBody && response?.body) {\n\t\t\t\tconst bodyStr =\n\t\t\t\t\ttypeof response.body === 'string'\n\t\t\t\t\t\t? response.body\n\t\t\t\t\t\t: JSON.stringify(response.body);\n\t\t\t\tspan.setAttribute(\n\t\t\t\t\t'http.response.body',\n\t\t\t\t\tbodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tendHttpSpan(span, { statusCode });\n\t\t},\n\n\t\tonError: async (request) => {\n\t\t\tconst span = getSpanFromEvent(request.event);\n\t\t\tif (!span) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst error = request.error;\n\t\t\tconst response = request.response;\n\n\t\t\t// Determine status code from response or error\n\t\t\tlet statusCode = 500;\n\t\t\tif (response?.statusCode) {\n\t\t\t\tstatusCode = response.statusCode;\n\t\t\t} else if (error && 'statusCode' in error) {\n\t\t\t\tstatusCode = (error as any).statusCode;\n\t\t\t}\n\n\t\t\tendHttpSpan(\n\t\t\t\tspan,\n\t\t\t\t{ statusCode },\n\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * Build span attributes from Lambda event\n */\nfunction buildSpanAttributes(\n\tevent: any,\n\tlambdaContext: LambdaContext,\n\toptions: TelemetryMiddlewareOptions,\n): HttpSpanAttributes {\n\t// Detect event type (API Gateway v1, v2, ALB, or direct invoke)\n\tconst isV2 =\n\t\t'requestContext' in event && 'http' in (event.requestContext || {});\n\tconst isV1 =\n\t\t'requestContext' in event &&\n\t\t'httpMethod' in event &&\n\t\t!('http' in (event.requestContext || {}));\n\n\tlet method = 'INVOKE';\n\tlet path = '/';\n\tlet route: string | undefined;\n\tlet host: string | undefined;\n\tlet scheme: 'http' | 'https' | undefined;\n\tlet userAgent: string | undefined;\n\tlet clientIp: string | undefined;\n\tlet requestId: string | undefined;\n\n\tif (isV2) {\n\t\t// API Gateway v2 (HTTP API)\n\t\tconst http = event.requestContext.http;\n\t\tmethod = http.method;\n\t\tpath = event.rawPath || http.path;\n\t\troute = event.routeKey?.replace(/^[A-Z]+\\s+/, ''); // Remove HTTP method prefix\n\t\thost = event.headers?.host;\n\t\tscheme = 'https';\n\t\tuserAgent = http.userAgent;\n\t\tclientIp = http.sourceIp;\n\t\trequestId = event.requestContext.requestId;\n\t} else if (isV1) {\n\t\t// API Gateway v1 (REST API)\n\t\tmethod = event.httpMethod;\n\t\tpath = event.path;\n\t\troute = event.resource;\n\t\thost = event.headers?.Host || event.headers?.host;\n\t\tscheme = 'https';\n\t\tuserAgent = event.headers?.['User-Agent'] || event.headers?.['user-agent'];\n\t\tclientIp = event.requestContext?.identity?.sourceIp;\n\t\trequestId = event.requestContext?.requestId;\n\t} else if ('httpMethod' in event) {\n\t\t// ALB event\n\t\tmethod = event.httpMethod;\n\t\tpath = event.path;\n\t\thost = event.headers?.host;\n\t\tuserAgent = event.headers?.['user-agent'] || event.headers?.['User-Agent'];\n\t\tclientIp = event.headers?.['x-forwarded-for']?.split(',')[0]?.trim();\n\t}\n\n\tconst attrs: HttpSpanAttributes = {\n\t\tmethod,\n\t\tpath,\n\t\troute,\n\t\thost,\n\t\tscheme,\n\t\tuserAgent,\n\t\tclientIp,\n\t\trequestId: requestId || lambdaContext.awsRequestId,\n\t};\n\n\t// Add endpoint metadata if extractors provided\n\tif (options.getEndpointName || options.getOperationId) {\n\t\tattrs.endpoint = {\n\t\t\tname: options.getEndpointName?.(event),\n\t\t\toperationId: options.getOperationId?.(event),\n\t\t};\n\t}\n\n\t// Add user metadata if extractor provided\n\tif (options.getUserId) {\n\t\tconst userId = options.getUserId(event);\n\t\tif (userId) {\n\t\t\tattrs.user = { userId };\n\t\t}\n\t}\n\n\treturn attrs;\n}\n\n/**\n * Normalize headers to lowercase keys\n */\nfunction normalizeHeaders(\n\theaders: Record<string, string | string[] | undefined>,\n): Record<string, string | string[] | undefined> {\n\tconst normalized: Record<string, string | string[] | undefined> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tnormalized[key.toLowerCase()] = value;\n\t}\n\treturn normalized;\n}\n\n/**\n * Run a function within the span context from a Lambda event\n *\n * @example\n * ```typescript\n * await withEventContext(event, async () => {\n * // Any spans created here will be children of the request span\n * await doSomething();\n * });\n * ```\n */\nexport async function withEventContext<T>(\n\tevent: any,\n\tfn: () => Promise<T>,\n): Promise<T> {\n\tconst ctx = getContextFromEvent(event);\n\tif (!ctx) {\n\t\treturn fn();\n\t}\n\treturn context.with(ctx, fn);\n}\n"],"mappings":"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"}
@@ -1,2 +1,70 @@
1
- import { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-PeyS-9Ny.cjs";
2
- export { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
1
+ import { Context } from "aws-lambda";
2
+ import { MiddlewareObj } from "@middy/core";
3
+ import { Span } from "@opentelemetry/api";
4
+ //#region src/instrumentation/middleware.d.ts
5
+ /**
6
+ * Options for the telemetry middleware
7
+ */
8
+ export interface TelemetryMiddlewareOptions {
9
+ /**
10
+ * Whether to record request body as span attribute
11
+ * @default false
12
+ */
13
+ recordBody?: boolean;
14
+ /**
15
+ * Whether to record response body as span attribute
16
+ * @default false
17
+ */
18
+ recordResponseBody?: boolean;
19
+ /**
20
+ * Custom function to extract endpoint name from event
21
+ */
22
+ getEndpointName?: (event: any) => string | undefined;
23
+ /**
24
+ * Custom function to extract operation ID from event
25
+ */
26
+ getOperationId?: (event: any) => string | undefined;
27
+ /**
28
+ * Custom function to extract user ID from event
29
+ */
30
+ getUserId?: (event: any) => string | undefined;
31
+ /**
32
+ * Whether to skip tracing for this request
33
+ */
34
+ shouldSkip?: (event: any) => boolean;
35
+ }
36
+ /**
37
+ * Get the current span from the Lambda event
38
+ */
39
+ export declare function getSpanFromEvent(event: any): Span | undefined;
40
+ /**
41
+ * Get the current trace context from the Lambda event
42
+ */
43
+ export declare function getContextFromEvent(event: any): any;
44
+ /**
45
+ * Create a telemetry middleware for Lambda handlers
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
50
+ *
51
+ * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
52
+ * telemetry: { middleware: telemetryMiddleware() },
53
+ * });
54
+ * ```
55
+ */
56
+ export declare function telemetryMiddleware(options?: TelemetryMiddlewareOptions): MiddlewareObj<any, any, Error, Context>;
57
+ /**
58
+ * Run a function within the span context from a Lambda event
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * await withEventContext(event, async () => {
63
+ * // Any spans created here will be children of the request span
64
+ * await doSomething();
65
+ * });
66
+ * ```
67
+ */
68
+ export declare function withEventContext<T>(event: any, fn: () => Promise<T>): Promise<T>;
69
+ //#endregion
70
+ //# sourceMappingURL=middleware.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.cts","names":["LambdaContext"],"sources":["../../src/instrumentation/middleware.ts"],"mappings":";;;;;;;iBAoBiB;;;;;EAKhB;;;;;EAMA;;;;EAKA,mBAAmB;;;;EAKnB,kBAAkB;;;;EAKlB,aAAa;;;;EAKb,cAAc;;;;;wBAUC,iBAAiB,aAAa;;;;wBAO9B,oBAAoB;;;;;;;;;;;;;wBAgBpB,oBACf,UAAS,6BACP,wBAAwB,OAAOA;;;;;;;;;;;;wBAyMZ,iBAAiB,GACtC,YACA,UAAU,QAAQ,KAChB,QAAQ"}
@@ -1,2 +1,70 @@
1
- import { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-oHvo_ZgU.mjs";
2
- export { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
1
+ import { Span } from "@opentelemetry/api";
2
+ import { Context as Context$1 } from "aws-lambda";
3
+ import { MiddlewareObj } from "@middy/core";
4
+ //#region src/instrumentation/middleware.d.ts
5
+ /**
6
+ * Options for the telemetry middleware
7
+ */
8
+ export interface TelemetryMiddlewareOptions {
9
+ /**
10
+ * Whether to record request body as span attribute
11
+ * @default false
12
+ */
13
+ recordBody?: boolean;
14
+ /**
15
+ * Whether to record response body as span attribute
16
+ * @default false
17
+ */
18
+ recordResponseBody?: boolean;
19
+ /**
20
+ * Custom function to extract endpoint name from event
21
+ */
22
+ getEndpointName?: (event: any) => string | undefined;
23
+ /**
24
+ * Custom function to extract operation ID from event
25
+ */
26
+ getOperationId?: (event: any) => string | undefined;
27
+ /**
28
+ * Custom function to extract user ID from event
29
+ */
30
+ getUserId?: (event: any) => string | undefined;
31
+ /**
32
+ * Whether to skip tracing for this request
33
+ */
34
+ shouldSkip?: (event: any) => boolean;
35
+ }
36
+ /**
37
+ * Get the current span from the Lambda event
38
+ */
39
+ export declare function getSpanFromEvent(event: any): Span | undefined;
40
+ /**
41
+ * Get the current trace context from the Lambda event
42
+ */
43
+ export declare function getContextFromEvent(event: any): any;
44
+ /**
45
+ * Create a telemetry middleware for Lambda handlers
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
50
+ *
51
+ * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
52
+ * telemetry: { middleware: telemetryMiddleware() },
53
+ * });
54
+ * ```
55
+ */
56
+ export declare function telemetryMiddleware(options?: TelemetryMiddlewareOptions): MiddlewareObj<any, any, Error, Context$1>;
57
+ /**
58
+ * Run a function within the span context from a Lambda event
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * await withEventContext(event, async () => {
63
+ * // Any spans created here will be children of the request span
64
+ * await doSomething();
65
+ * });
66
+ * ```
67
+ */
68
+ export declare function withEventContext<T>(event: any, fn: () => Promise<T>): Promise<T>;
69
+ //#endregion
70
+ //# sourceMappingURL=middleware.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.mts","names":["LambdaContext"],"sources":["../../src/instrumentation/middleware.ts"],"mappings":";;;;;;;iBAoBiB;;;;;EAKhB;;;;;EAMA;;;;EAKA,mBAAmB;;;;EAKnB,kBAAkB;;;;EAKlB,aAAa;;;;EAKb,cAAc;;;;;wBAUC,iBAAiB,aAAa;;;;wBAO9B,oBAAoB;;;;;;;;;;;;;wBAgBpB,oBACf,UAAS,6BACP,wBAAwB,OAAOA;;;;;;;;;;;;wBAyMZ,iBAAiB,GACtC,YACA,UAAU,QAAQ,KAChB,QAAQ"}
@@ -1,4 +1,159 @@
1
- import "../http-BIvr0YdI.mjs";
2
- import { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-D1XEHvyy.mjs";
1
+ import { createHttpServerSpan, endHttpSpan, extractTraceContext } from "./http.mjs";
2
+ import { context, trace } from "@opentelemetry/api";
3
+ //#region src/instrumentation/middleware.ts
4
+ const SPAN_SYMBOL = Symbol("telemetry.span");
5
+ const CONTEXT_SYMBOL = Symbol("telemetry.context");
6
+ /**
7
+ * Get the current span from the Lambda event
8
+ */
9
+ function getSpanFromEvent(event) {
10
+ return event?.[SPAN_SYMBOL];
11
+ }
12
+ /**
13
+ * Get the current trace context from the Lambda event
14
+ */
15
+ function getContextFromEvent(event) {
16
+ return event?.[CONTEXT_SYMBOL];
17
+ }
18
+ /**
19
+ * Create a telemetry middleware for Lambda handlers
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
24
+ *
25
+ * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
26
+ * telemetry: { middleware: telemetryMiddleware() },
27
+ * });
28
+ * ```
29
+ */
30
+ function telemetryMiddleware(options = {}) {
31
+ return {
32
+ before: async (request) => {
33
+ if (options.shouldSkip?.(request.event)) return;
34
+ const event = request.event;
35
+ const lambdaContext = request.context;
36
+ const headers = normalizeHeaders(event.headers || {});
37
+ const parentContext = extractTraceContext(headers);
38
+ const attrs = buildSpanAttributes(event, lambdaContext, options);
39
+ const span = createHttpServerSpan(attrs, parentContext);
40
+ event[SPAN_SYMBOL] = span;
41
+ event[CONTEXT_SYMBOL] = trace.setSpan(parentContext, span);
42
+ span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
43
+ span.setAttribute("faas.name", lambdaContext.functionName);
44
+ if (options.recordBody && event.body) {
45
+ const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
46
+ span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
47
+ }
48
+ },
49
+ after: async (request) => {
50
+ const span = getSpanFromEvent(request.event);
51
+ if (!span) return;
52
+ const response = request.response;
53
+ const statusCode = typeof response?.statusCode === "number" ? response.statusCode : 200;
54
+ if (options.recordResponseBody && response?.body) {
55
+ const bodyStr = typeof response.body === "string" ? response.body : JSON.stringify(response.body);
56
+ span.setAttribute("http.response.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
57
+ }
58
+ endHttpSpan(span, { statusCode });
59
+ },
60
+ onError: async (request) => {
61
+ const span = getSpanFromEvent(request.event);
62
+ if (!span) return;
63
+ const error = request.error;
64
+ const response = request.response;
65
+ let statusCode = 500;
66
+ if (response?.statusCode) statusCode = response.statusCode;
67
+ else if (error && "statusCode" in error) statusCode = error.statusCode;
68
+ endHttpSpan(span, { statusCode }, error instanceof Error ? error : new Error(String(error)));
69
+ }
70
+ };
71
+ }
72
+ /**
73
+ * Build span attributes from Lambda event
74
+ */
75
+ function buildSpanAttributes(event, lambdaContext, options) {
76
+ const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
77
+ const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
78
+ let method = "INVOKE";
79
+ let path = "/";
80
+ let route;
81
+ let host;
82
+ let scheme;
83
+ let userAgent;
84
+ let clientIp;
85
+ let requestId;
86
+ if (isV2) {
87
+ const http = event.requestContext.http;
88
+ method = http.method;
89
+ path = event.rawPath || http.path;
90
+ route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
91
+ host = event.headers?.host;
92
+ scheme = "https";
93
+ userAgent = http.userAgent;
94
+ clientIp = http.sourceIp;
95
+ requestId = event.requestContext.requestId;
96
+ } else if (isV1) {
97
+ method = event.httpMethod;
98
+ path = event.path;
99
+ route = event.resource;
100
+ host = event.headers?.Host || event.headers?.host;
101
+ scheme = "https";
102
+ userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
103
+ clientIp = event.requestContext?.identity?.sourceIp;
104
+ requestId = event.requestContext?.requestId;
105
+ } else if ("httpMethod" in event) {
106
+ method = event.httpMethod;
107
+ path = event.path;
108
+ host = event.headers?.host;
109
+ userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
110
+ clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
111
+ }
112
+ const attrs = {
113
+ method,
114
+ path,
115
+ route,
116
+ host,
117
+ scheme,
118
+ userAgent,
119
+ clientIp,
120
+ requestId: requestId || lambdaContext.awsRequestId
121
+ };
122
+ if (options.getEndpointName || options.getOperationId) attrs.endpoint = {
123
+ name: options.getEndpointName?.(event),
124
+ operationId: options.getOperationId?.(event)
125
+ };
126
+ if (options.getUserId) {
127
+ const userId = options.getUserId(event);
128
+ if (userId) attrs.user = { userId };
129
+ }
130
+ return attrs;
131
+ }
132
+ /**
133
+ * Normalize headers to lowercase keys
134
+ */
135
+ function normalizeHeaders(headers) {
136
+ const normalized = {};
137
+ for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
138
+ return normalized;
139
+ }
140
+ /**
141
+ * Run a function within the span context from a Lambda event
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * await withEventContext(event, async () => {
146
+ * // Any spans created here will be children of the request span
147
+ * await doSomething();
148
+ * });
149
+ * ```
150
+ */
151
+ async function withEventContext(event, fn) {
152
+ const ctx = getContextFromEvent(event);
153
+ if (!ctx) return fn();
154
+ return context.with(ctx, fn);
155
+ }
156
+ //#endregion
157
+ export { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
3
158
 
4
- export { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
159
+ //# sourceMappingURL=middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.mjs","names":[],"sources":["../../src/instrumentation/middleware.ts"],"sourcesContent":["/**\n * OpenTelemetry instrumentation middleware for @geekmidas/constructs\n *\n * This middleware automatically creates spans for HTTP requests,\n * extracts trace context from incoming headers, and records\n * request/response metadata as span attributes.\n */\nimport type { MiddlewareObj } from '@middy/core';\nimport { context, type Span, trace } from '@opentelemetry/api';\nimport type { Context as LambdaContext } from 'aws-lambda';\nimport {\n\tcreateHttpServerSpan,\n\tendHttpSpan,\n\textractTraceContext,\n\ttype HttpSpanAttributes,\n} from './http';\n\n/**\n * Options for the telemetry middleware\n */\nexport interface TelemetryMiddlewareOptions {\n\t/**\n\t * Whether to record request body as span attribute\n\t * @default false\n\t */\n\trecordBody?: boolean;\n\n\t/**\n\t * Whether to record response body as span attribute\n\t * @default false\n\t */\n\trecordResponseBody?: boolean;\n\n\t/**\n\t * Custom function to extract endpoint name from event\n\t */\n\tgetEndpointName?: (event: any) => string | undefined;\n\n\t/**\n\t * Custom function to extract operation ID from event\n\t */\n\tgetOperationId?: (event: any) => string | undefined;\n\n\t/**\n\t * Custom function to extract user ID from event\n\t */\n\tgetUserId?: (event: any) => string | undefined;\n\n\t/**\n\t * Whether to skip tracing for this request\n\t */\n\tshouldSkip?: (event: any) => boolean;\n}\n\n// Symbol for storing span on event\nconst SPAN_SYMBOL = Symbol('telemetry.span');\nconst CONTEXT_SYMBOL = Symbol('telemetry.context');\n\n/**\n * Get the current span from the Lambda event\n */\nexport function getSpanFromEvent(event: any): Span | undefined {\n\treturn event?.[SPAN_SYMBOL];\n}\n\n/**\n * Get the current trace context from the Lambda event\n */\nexport function getContextFromEvent(event: any): any {\n\treturn event?.[CONTEXT_SYMBOL];\n}\n\n/**\n * Create a telemetry middleware for Lambda handlers\n *\n * @example\n * ```typescript\n * import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';\n *\n * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {\n * telemetry: { middleware: telemetryMiddleware() },\n * });\n * ```\n */\nexport function telemetryMiddleware(\n\toptions: TelemetryMiddlewareOptions = {},\n): MiddlewareObj<any, any, Error, LambdaContext> {\n\treturn {\n\t\tbefore: async (request) => {\n\t\t\t// Skip if custom skip function returns true\n\t\t\tif (options.shouldSkip?.(request.event)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = request.event;\n\t\t\tconst lambdaContext = request.context;\n\n\t\t\t// Extract trace context from headers\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst parentContext = extractTraceContext(headers);\n\n\t\t\t// Build span attributes from event\n\t\t\tconst attrs = buildSpanAttributes(event, lambdaContext, options);\n\n\t\t\t// Create the span\n\t\t\tconst span = createHttpServerSpan(attrs, parentContext);\n\n\t\t\t// Store span and context on event for access in handler\n\t\t\tevent[SPAN_SYMBOL] = span;\n\t\t\tevent[CONTEXT_SYMBOL] = trace.setSpan(parentContext, span);\n\n\t\t\t// Add Lambda-specific attributes\n\t\t\tspan.setAttribute('faas.invocation_id', lambdaContext.awsRequestId);\n\t\t\tspan.setAttribute('faas.name', lambdaContext.functionName);\n\n\t\t\tif (options.recordBody && event.body) {\n\t\t\t\tconst bodyStr =\n\t\t\t\t\ttypeof event.body === 'string'\n\t\t\t\t\t\t? event.body\n\t\t\t\t\t\t: JSON.stringify(event.body);\n\t\t\t\t// Truncate large bodies\n\t\t\t\tspan.setAttribute(\n\t\t\t\t\t'http.request.body',\n\t\t\t\t\tbodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\tafter: async (request) => {\n\t\t\tconst span = getSpanFromEvent(request.event);\n\t\t\tif (!span) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = request.response;\n\t\t\tconst statusCode =\n\t\t\t\ttypeof response?.statusCode === 'number' ? response.statusCode : 200;\n\n\t\t\tif (options.recordResponseBody && response?.body) {\n\t\t\t\tconst bodyStr =\n\t\t\t\t\ttypeof response.body === 'string'\n\t\t\t\t\t\t? response.body\n\t\t\t\t\t\t: JSON.stringify(response.body);\n\t\t\t\tspan.setAttribute(\n\t\t\t\t\t'http.response.body',\n\t\t\t\t\tbodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tendHttpSpan(span, { statusCode });\n\t\t},\n\n\t\tonError: async (request) => {\n\t\t\tconst span = getSpanFromEvent(request.event);\n\t\t\tif (!span) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst error = request.error;\n\t\t\tconst response = request.response;\n\n\t\t\t// Determine status code from response or error\n\t\t\tlet statusCode = 500;\n\t\t\tif (response?.statusCode) {\n\t\t\t\tstatusCode = response.statusCode;\n\t\t\t} else if (error && 'statusCode' in error) {\n\t\t\t\tstatusCode = (error as any).statusCode;\n\t\t\t}\n\n\t\t\tendHttpSpan(\n\t\t\t\tspan,\n\t\t\t\t{ statusCode },\n\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t);\n\t\t},\n\t};\n}\n\n/**\n * Build span attributes from Lambda event\n */\nfunction buildSpanAttributes(\n\tevent: any,\n\tlambdaContext: LambdaContext,\n\toptions: TelemetryMiddlewareOptions,\n): HttpSpanAttributes {\n\t// Detect event type (API Gateway v1, v2, ALB, or direct invoke)\n\tconst isV2 =\n\t\t'requestContext' in event && 'http' in (event.requestContext || {});\n\tconst isV1 =\n\t\t'requestContext' in event &&\n\t\t'httpMethod' in event &&\n\t\t!('http' in (event.requestContext || {}));\n\n\tlet method = 'INVOKE';\n\tlet path = '/';\n\tlet route: string | undefined;\n\tlet host: string | undefined;\n\tlet scheme: 'http' | 'https' | undefined;\n\tlet userAgent: string | undefined;\n\tlet clientIp: string | undefined;\n\tlet requestId: string | undefined;\n\n\tif (isV2) {\n\t\t// API Gateway v2 (HTTP API)\n\t\tconst http = event.requestContext.http;\n\t\tmethod = http.method;\n\t\tpath = event.rawPath || http.path;\n\t\troute = event.routeKey?.replace(/^[A-Z]+\\s+/, ''); // Remove HTTP method prefix\n\t\thost = event.headers?.host;\n\t\tscheme = 'https';\n\t\tuserAgent = http.userAgent;\n\t\tclientIp = http.sourceIp;\n\t\trequestId = event.requestContext.requestId;\n\t} else if (isV1) {\n\t\t// API Gateway v1 (REST API)\n\t\tmethod = event.httpMethod;\n\t\tpath = event.path;\n\t\troute = event.resource;\n\t\thost = event.headers?.Host || event.headers?.host;\n\t\tscheme = 'https';\n\t\tuserAgent = event.headers?.['User-Agent'] || event.headers?.['user-agent'];\n\t\tclientIp = event.requestContext?.identity?.sourceIp;\n\t\trequestId = event.requestContext?.requestId;\n\t} else if ('httpMethod' in event) {\n\t\t// ALB event\n\t\tmethod = event.httpMethod;\n\t\tpath = event.path;\n\t\thost = event.headers?.host;\n\t\tuserAgent = event.headers?.['user-agent'] || event.headers?.['User-Agent'];\n\t\tclientIp = event.headers?.['x-forwarded-for']?.split(',')[0]?.trim();\n\t}\n\n\tconst attrs: HttpSpanAttributes = {\n\t\tmethod,\n\t\tpath,\n\t\troute,\n\t\thost,\n\t\tscheme,\n\t\tuserAgent,\n\t\tclientIp,\n\t\trequestId: requestId || lambdaContext.awsRequestId,\n\t};\n\n\t// Add endpoint metadata if extractors provided\n\tif (options.getEndpointName || options.getOperationId) {\n\t\tattrs.endpoint = {\n\t\t\tname: options.getEndpointName?.(event),\n\t\t\toperationId: options.getOperationId?.(event),\n\t\t};\n\t}\n\n\t// Add user metadata if extractor provided\n\tif (options.getUserId) {\n\t\tconst userId = options.getUserId(event);\n\t\tif (userId) {\n\t\t\tattrs.user = { userId };\n\t\t}\n\t}\n\n\treturn attrs;\n}\n\n/**\n * Normalize headers to lowercase keys\n */\nfunction normalizeHeaders(\n\theaders: Record<string, string | string[] | undefined>,\n): Record<string, string | string[] | undefined> {\n\tconst normalized: Record<string, string | string[] | undefined> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tnormalized[key.toLowerCase()] = value;\n\t}\n\treturn normalized;\n}\n\n/**\n * Run a function within the span context from a Lambda event\n *\n * @example\n * ```typescript\n * await withEventContext(event, async () => {\n * // Any spans created here will be children of the request span\n * await doSomething();\n * });\n * ```\n */\nexport async function withEventContext<T>(\n\tevent: any,\n\tfn: () => Promise<T>,\n): Promise<T> {\n\tconst ctx = getContextFromEvent(event);\n\tif (!ctx) {\n\t\treturn fn();\n\t}\n\treturn context.with(ctx, fn);\n}\n"],"mappings":"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"}