@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,247 +0,0 @@
1
- const require_core = require('./core-CtVHRJGv.cjs');
2
-
3
- //#region src/adapters/middy.ts
4
- let processHooksRegistered = false;
5
- /**
6
- * Register process-level hooks for telemetry flush.
7
- * Called once per Lambda cold start.
8
- */
9
- function registerProcessHooks() {
10
- if (processHooksRegistered) return;
11
- processHooksRegistered = true;
12
- process.on("SIGTERM", async () => {
13
- await require_core.flushTelemetry(5e3).catch(() => {});
14
- });
15
- }
16
- /**
17
- * Extract request data from API Gateway event (v1 or v2)
18
- */
19
- function extractRequestData(event) {
20
- const headers = {};
21
- if (event.headers) {
22
- for (const [key, value] of Object.entries(event.headers)) if (value) headers[key.toLowerCase()] = value;
23
- }
24
- const contentLength = headers["content-length"];
25
- const requestSize = contentLength ? parseInt(contentLength, 10) : void 0;
26
- if ("rawPath" in event && event.requestContext?.http) {
27
- const v2Event = event;
28
- const query = {};
29
- if (v2Event.queryStringParameters) {
30
- for (const [key, value] of Object.entries(v2Event.queryStringParameters)) if (value !== void 0) query[key] = value;
31
- }
32
- return {
33
- method: v2Event.requestContext.http.method,
34
- path: v2Event.rawPath,
35
- url: v2Event.rawPath + (v2Event.rawQueryString ? `?${v2Event.rawQueryString}` : ""),
36
- headers,
37
- query,
38
- body: parseBody(v2Event.body, v2Event.isBase64Encoded),
39
- ip: v2Event.requestContext.http.sourceIp,
40
- requestId: v2Event.requestContext.requestId,
41
- requestSize
42
- };
43
- }
44
- const v1Event = event;
45
- const queryString = v1Event.queryStringParameters ? new URLSearchParams(v1Event.queryStringParameters).toString() : "";
46
- return {
47
- method: v1Event.httpMethod,
48
- path: v1Event.path,
49
- url: v1Event.path + (queryString ? `?${queryString}` : ""),
50
- headers,
51
- query: v1Event.queryStringParameters || {},
52
- body: parseBody(v1Event.body, v1Event.isBase64Encoded),
53
- ip: v1Event.requestContext?.identity?.sourceIp,
54
- requestId: v1Event.requestContext?.requestId,
55
- requestSize
56
- };
57
- }
58
- /**
59
- * Parse request body
60
- */
61
- function parseBody(body, isBase64Encoded) {
62
- if (!body) return void 0;
63
- try {
64
- const decoded = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
65
- return JSON.parse(decoded);
66
- } catch {
67
- return body;
68
- }
69
- }
70
- /**
71
- * Extract response data from Lambda response
72
- */
73
- function extractResponseData(response) {
74
- if (response && typeof response === "object" && "statusCode" in response) {
75
- const res = response;
76
- const headers = res.headers || {};
77
- const contentLengthKey = Object.keys(headers).find((k) => k.toLowerCase() === "content-length");
78
- const contentLengthValue = contentLengthKey ? headers[contentLengthKey] : void 0;
79
- const responseSize = contentLengthValue ? parseInt(contentLengthValue, 10) : res.body ? Buffer.byteLength(res.body, "utf8") : void 0;
80
- return {
81
- status: res.statusCode || 200,
82
- headers,
83
- body: res.body ? tryParseJson(res.body) : void 0,
84
- responseSize
85
- };
86
- }
87
- return {
88
- status: 200,
89
- headers: {},
90
- body: response
91
- };
92
- }
93
- function tryParseJson(str) {
94
- try {
95
- return JSON.parse(str);
96
- } catch {
97
- return str;
98
- }
99
- }
100
- /**
101
- * Middy middleware that integrates Telescope with Lambda handlers.
102
- *
103
- * Features:
104
- * - Records all requests and responses to Telescope
105
- * - Captures exceptions automatically
106
- * - Flushes telemetry before Lambda freezes
107
- * - Uses Lambda context for smart flush timing
108
- *
109
- * @example
110
- * ```typescript
111
- * import middy from '@middy/core';
112
- * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';
113
- *
114
- * const handler = middy(baseHandler)
115
- * .use(telescopeMiddleware(telescope));
116
- * ```
117
- */
118
- function telescopeMiddleware(telescope, options = {}) {
119
- const { flushThresholdMs = 1e3, recordBody = true, flushTimeoutMs = 5e3 } = options;
120
- registerProcessHooks();
121
- return {
122
- before: async (request) => {
123
- request.__telescopeStartTime = Date.now();
124
- request.context.callbackWaitsForEmptyEventLoop = false;
125
- },
126
- after: async (request) => {
127
- const startTime = request.__telescopeStartTime || Date.now();
128
- const duration = Date.now() - startTime;
129
- try {
130
- const reqData = extractRequestData(request.event);
131
- const resData = extractResponseData(request.response);
132
- await telescope.recordRequest({
133
- method: reqData.method,
134
- path: reqData.path,
135
- url: reqData.url,
136
- headers: reqData.headers,
137
- query: reqData.query,
138
- body: recordBody ? reqData.body : void 0,
139
- ip: reqData.ip,
140
- status: resData.status,
141
- responseHeaders: resData.headers,
142
- responseBody: recordBody ? resData.body : void 0,
143
- duration,
144
- requestSize: reqData.requestSize,
145
- responseSize: resData.responseSize
146
- });
147
- } catch {}
148
- await smartFlush(request.context, flushThresholdMs, flushTimeoutMs);
149
- },
150
- onError: async (request) => {
151
- const startTime = request.__telescopeStartTime || Date.now();
152
- const duration = Date.now() - startTime;
153
- try {
154
- if (request.error) await telescope.exception(request.error);
155
- const reqData = extractRequestData(request.event);
156
- await telescope.recordRequest({
157
- method: reqData.method,
158
- path: reqData.path,
159
- url: reqData.url,
160
- headers: reqData.headers,
161
- query: reqData.query,
162
- body: recordBody ? reqData.body : void 0,
163
- ip: reqData.ip,
164
- status: 500,
165
- responseHeaders: {},
166
- responseBody: { error: request.error?.message },
167
- duration,
168
- requestSize: reqData.requestSize
169
- });
170
- } catch {}
171
- await smartFlush(request.context, flushThresholdMs, flushTimeoutMs);
172
- }
173
- };
174
- }
175
- /**
176
- * Smart flush that respects Lambda's remaining execution time
177
- */
178
- async function smartFlush(context, thresholdMs, timeoutMs) {
179
- const remaining = context.getRemainingTimeInMillis();
180
- const effectiveTimeout = Math.min(timeoutMs, Math.max(remaining - thresholdMs, 100));
181
- if (effectiveTimeout > 0) await require_core.flushTelemetry(effectiveTimeout).catch(() => {});
182
- }
183
- /**
184
- * Create a wrapped Lambda handler with Telescope integration.
185
- * Alternative to using Middy middleware directly.
186
- *
187
- * @example
188
- * ```typescript
189
- * import { createTelescopeHandler } from '@geekmidas/telescope/lambda';
190
- *
191
- * export const handler = createTelescopeHandler(telescope, async (event, context) => {
192
- * return { statusCode: 200, body: 'OK' };
193
- * });
194
- * ```
195
- */
196
- function createTelescopeHandler(telescope, handler, options = {}) {
197
- const { flushThresholdMs = 1e3, recordBody = true, flushTimeoutMs = 5e3 } = options;
198
- registerProcessHooks();
199
- return async (event, context) => {
200
- const startTime = Date.now();
201
- context.callbackWaitsForEmptyEventLoop = false;
202
- try {
203
- const result = await handler(event, context);
204
- const duration = Date.now() - startTime;
205
- try {
206
- const reqData = extractRequestData(event);
207
- const resData = extractResponseData(result);
208
- await telescope.recordRequest({
209
- method: reqData.method,
210
- path: reqData.path,
211
- url: reqData.url,
212
- headers: reqData.headers,
213
- query: reqData.query,
214
- body: recordBody ? reqData.body : void 0,
215
- ip: reqData.ip,
216
- status: resData.status,
217
- responseHeaders: resData.headers,
218
- responseBody: recordBody ? resData.body : void 0,
219
- duration,
220
- requestSize: reqData.requestSize,
221
- responseSize: resData.responseSize
222
- });
223
- } catch {}
224
- await smartFlush(context, flushThresholdMs, flushTimeoutMs);
225
- return result;
226
- } catch (error) {
227
- if (error instanceof Error) await telescope.exception(error).catch(() => {});
228
- await smartFlush(context, flushThresholdMs, flushTimeoutMs);
229
- throw error;
230
- }
231
- };
232
- }
233
-
234
- //#endregion
235
- Object.defineProperty(exports, 'createTelescopeHandler', {
236
- enumerable: true,
237
- get: function () {
238
- return createTelescopeHandler;
239
- }
240
- });
241
- Object.defineProperty(exports, 'telescopeMiddleware', {
242
- enumerable: true,
243
- get: function () {
244
- return telescopeMiddleware;
245
- }
246
- });
247
- //# sourceMappingURL=middy-DlWnZilH.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middy-DlWnZilH.cjs","names":["event: APIGatewayProxyEvent | APIGatewayProxyEventV2","headers: Record<string, string>","query: Record<string, string>","body: string | null | undefined","isBase64Encoded?: boolean","response: unknown","str: string","telescope: Telescope","options: TelescopeMiddlewareOptions","context: Context","thresholdMs: number","timeoutMs: number","handler: (event: TEvent, context: Context) => Promise<TResult>","event: TEvent"],"sources":["../src/adapters/middy.ts"],"sourcesContent":["import type { MiddlewareObj } from '@middy/core';\nimport type {\n\tAPIGatewayProxyEvent,\n\tAPIGatewayProxyEventV2,\n\tContext,\n} from 'aws-lambda';\nimport { flushTelemetry } from '../instrumentation/core';\nimport type { Telescope } from '../Telescope';\n\n/**\n * Options for the Telescope Middy middleware\n */\nexport interface TelescopeMiddlewareOptions {\n\t/**\n\t * Minimum remaining time (ms) before forcing a flush.\n\t * If remaining time drops below this, flush immediately.\n\t * @default 1000 (1 second)\n\t */\n\tflushThresholdMs?: number;\n\n\t/**\n\t * Whether to record request/response bodies\n\t * @default true\n\t */\n\trecordBody?: boolean;\n\n\t/**\n\t * Timeout for flush operation in ms\n\t * @default 5000\n\t */\n\tflushTimeoutMs?: number;\n}\n\n// Track if we've registered the process hooks\nlet processHooksRegistered = false;\n\n/**\n * Register process-level hooks for telemetry flush.\n * Called once per Lambda cold start.\n */\nfunction registerProcessHooks(): void {\n\tif (processHooksRegistered) return;\n\tprocessHooksRegistered = true;\n\n\t// Flush on SIGTERM (Lambda shutdown)\n\tprocess.on('SIGTERM', async () => {\n\t\tawait flushTelemetry(5000).catch(() => {});\n\t});\n\n\t// Note: beforeExit doesn't work reliably in Lambda\n\t// because Lambda freezes rather than exits\n}\n\n/**\n * Extract request data from API Gateway event (v1 or v2)\n */\nfunction extractRequestData(\n\tevent: APIGatewayProxyEvent | APIGatewayProxyEventV2,\n): {\n\tmethod: string;\n\tpath: string;\n\turl: string;\n\theaders: Record<string, string>;\n\tquery: Record<string, string>;\n\tbody: unknown;\n\tip?: string;\n\trequestId?: string;\n\trequestSize?: number;\n} {\n\tconst headers: Record<string, string> = {};\n\tif (event.headers) {\n\t\tfor (const [key, value] of Object.entries(event.headers)) {\n\t\t\tif (value) headers[key.toLowerCase()] = value;\n\t\t}\n\t}\n\n\t// Get request size from Content-Length header\n\tconst contentLength = headers['content-length'];\n\tconst requestSize = contentLength ? parseInt(contentLength, 10) : undefined;\n\n\t// API Gateway v2 (HTTP API)\n\tif ('rawPath' in event && event.requestContext?.http) {\n\t\tconst v2Event = event as APIGatewayProxyEventV2;\n\t\t// Filter out undefined values from query parameters\n\t\tconst query: Record<string, string> = {};\n\t\tif (v2Event.queryStringParameters) {\n\t\t\tfor (const [key, value] of Object.entries(\n\t\t\t\tv2Event.queryStringParameters,\n\t\t\t)) {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\tquery[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tmethod: v2Event.requestContext.http.method,\n\t\t\tpath: v2Event.rawPath,\n\t\t\turl:\n\t\t\t\tv2Event.rawPath +\n\t\t\t\t(v2Event.rawQueryString ? `?${v2Event.rawQueryString}` : ''),\n\t\t\theaders,\n\t\t\tquery,\n\t\t\tbody: parseBody(v2Event.body, v2Event.isBase64Encoded),\n\t\t\tip: v2Event.requestContext.http.sourceIp,\n\t\t\trequestId: v2Event.requestContext.requestId,\n\t\t\trequestSize,\n\t\t};\n\t}\n\n\t// API Gateway v1 (REST API)\n\tconst v1Event = event as APIGatewayProxyEvent;\n\tconst queryString = v1Event.queryStringParameters\n\t\t? new URLSearchParams(\n\t\t\t\tv1Event.queryStringParameters as Record<string, string>,\n\t\t\t).toString()\n\t\t: '';\n\n\treturn {\n\t\tmethod: v1Event.httpMethod,\n\t\tpath: v1Event.path,\n\t\turl: v1Event.path + (queryString ? `?${queryString}` : ''),\n\t\theaders,\n\t\tquery: (v1Event.queryStringParameters as Record<string, string>) || {},\n\t\tbody: parseBody(v1Event.body, v1Event.isBase64Encoded),\n\t\tip: v1Event.requestContext?.identity?.sourceIp,\n\t\trequestId: v1Event.requestContext?.requestId,\n\t\trequestSize,\n\t};\n}\n\n/**\n * Parse request body\n */\nfunction parseBody(\n\tbody: string | null | undefined,\n\tisBase64Encoded?: boolean,\n): unknown {\n\tif (!body) return undefined;\n\n\ttry {\n\t\tconst decoded = isBase64Encoded\n\t\t\t? Buffer.from(body, 'base64').toString('utf-8')\n\t\t\t: body;\n\t\treturn JSON.parse(decoded);\n\t} catch {\n\t\treturn body;\n\t}\n}\n\n/**\n * Extract response data from Lambda response\n */\nfunction extractResponseData(response: unknown): {\n\tstatus: number;\n\theaders: Record<string, string>;\n\tbody: unknown;\n\tresponseSize?: number;\n} {\n\tif (response && typeof response === 'object' && 'statusCode' in response) {\n\t\tconst res = response as {\n\t\t\tstatusCode?: number;\n\t\t\theaders?: Record<string, string>;\n\t\t\tbody?: string;\n\t\t};\n\t\tconst headers = res.headers || {};\n\t\t// Get response size from Content-Length header (case-insensitive)\n\t\tconst contentLengthKey = Object.keys(headers).find(\n\t\t\t(k) => k.toLowerCase() === 'content-length',\n\t\t);\n\t\tconst contentLengthValue = contentLengthKey\n\t\t\t? headers[contentLengthKey]\n\t\t\t: undefined;\n\t\t// Prefer Content-Length header, fallback to body size\n\t\tconst responseSize = contentLengthValue\n\t\t\t? parseInt(contentLengthValue, 10)\n\t\t\t: res.body\n\t\t\t\t? Buffer.byteLength(res.body, 'utf8')\n\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tstatus: res.statusCode || 200,\n\t\t\theaders,\n\t\t\tbody: res.body ? tryParseJson(res.body) : undefined,\n\t\t\tresponseSize,\n\t\t};\n\t}\n\n\treturn { status: 200, headers: {}, body: response };\n}\n\nfunction tryParseJson(str: string): unknown {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch {\n\t\treturn str;\n\t}\n}\n\n/**\n * Middy middleware that integrates Telescope with Lambda handlers.\n *\n * Features:\n * - Records all requests and responses to Telescope\n * - Captures exceptions automatically\n * - Flushes telemetry before Lambda freezes\n * - Uses Lambda context for smart flush timing\n *\n * @example\n * ```typescript\n * import middy from '@middy/core';\n * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';\n *\n * const handler = middy(baseHandler)\n * .use(telescopeMiddleware(telescope));\n * ```\n */\nexport function telescopeMiddleware(\n\ttelescope: Telescope,\n\toptions: TelescopeMiddlewareOptions = {},\n): MiddlewareObj<\n\tAPIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tany,\n\tError,\n\tContext\n> {\n\tconst {\n\t\tflushThresholdMs = 1000,\n\t\trecordBody = true,\n\t\tflushTimeoutMs = 5000,\n\t} = options;\n\n\t// Register process hooks on first use\n\tregisterProcessHooks();\n\n\treturn {\n\t\tbefore: async (request) => {\n\t\t\t// Store start time for duration calculation\n\t\t\t(request as any).__telescopeStartTime = Date.now();\n\n\t\t\t// Don't wait for empty event loop - we'll flush manually\n\t\t\trequest.context.callbackWaitsForEmptyEventLoop = false;\n\t\t},\n\n\t\tafter: async (request) => {\n\t\t\tconst startTime = (request as any).__telescopeStartTime || Date.now();\n\t\t\tconst duration = Date.now() - startTime;\n\n\t\t\ttry {\n\t\t\t\tconst reqData = extractRequestData(request.event);\n\t\t\t\tconst resData = extractResponseData(request.response);\n\n\t\t\t\tawait telescope.recordRequest({\n\t\t\t\t\tmethod: reqData.method,\n\t\t\t\t\tpath: reqData.path,\n\t\t\t\t\turl: reqData.url,\n\t\t\t\t\theaders: reqData.headers,\n\t\t\t\t\tquery: reqData.query,\n\t\t\t\t\tbody: recordBody ? reqData.body : undefined,\n\t\t\t\t\tip: reqData.ip,\n\t\t\t\t\tstatus: resData.status,\n\t\t\t\t\tresponseHeaders: resData.headers,\n\t\t\t\t\tresponseBody: recordBody ? resData.body : undefined,\n\t\t\t\t\tduration,\n\t\t\t\t\trequestSize: reqData.requestSize,\n\t\t\t\t\tresponseSize: resData.responseSize,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Don't let telescope errors break the response\n\t\t\t}\n\n\t\t\t// Smart flush: check remaining time\n\t\t\tawait smartFlush(request.context, flushThresholdMs, flushTimeoutMs);\n\t\t},\n\n\t\tonError: async (request) => {\n\t\t\tconst startTime = (request as any).__telescopeStartTime || Date.now();\n\t\t\tconst duration = Date.now() - startTime;\n\n\t\t\ttry {\n\t\t\t\t// Record the exception\n\t\t\t\tif (request.error) {\n\t\t\t\t\tawait telescope.exception(request.error);\n\t\t\t\t}\n\n\t\t\t\t// Also record the failed request\n\t\t\t\tconst reqData = extractRequestData(request.event);\n\t\t\t\tawait telescope.recordRequest({\n\t\t\t\t\tmethod: reqData.method,\n\t\t\t\t\tpath: reqData.path,\n\t\t\t\t\turl: reqData.url,\n\t\t\t\t\theaders: reqData.headers,\n\t\t\t\t\tquery: reqData.query,\n\t\t\t\t\tbody: recordBody ? reqData.body : undefined,\n\t\t\t\t\tip: reqData.ip,\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\tresponseHeaders: {},\n\t\t\t\t\tresponseBody: { error: request.error?.message },\n\t\t\t\t\tduration,\n\t\t\t\t\trequestSize: reqData.requestSize,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Don't let telescope errors mask the original error\n\t\t\t}\n\n\t\t\t// Always flush on error\n\t\t\tawait smartFlush(request.context, flushThresholdMs, flushTimeoutMs);\n\t\t},\n\t};\n}\n\n/**\n * Smart flush that respects Lambda's remaining execution time\n */\nasync function smartFlush(\n\tcontext: Context,\n\tthresholdMs: number,\n\ttimeoutMs: number,\n): Promise<void> {\n\tconst remaining = context.getRemainingTimeInMillis();\n\n\t// If we have plenty of time, use normal timeout\n\t// If time is running low, use a shorter timeout\n\tconst effectiveTimeout = Math.min(\n\t\ttimeoutMs,\n\t\tMath.max(remaining - thresholdMs, 100), // Leave at least threshold ms for response\n\t);\n\n\tif (effectiveTimeout > 0) {\n\t\tawait flushTelemetry(effectiveTimeout).catch(() => {});\n\t}\n}\n\n/**\n * Create a wrapped Lambda handler with Telescope integration.\n * Alternative to using Middy middleware directly.\n *\n * @example\n * ```typescript\n * import { createTelescopeHandler } from '@geekmidas/telescope/lambda';\n *\n * export const handler = createTelescopeHandler(telescope, async (event, context) => {\n * return { statusCode: 200, body: 'OK' };\n * });\n * ```\n */\nexport function createTelescopeHandler<TEvent, TResult>(\n\ttelescope: Telescope,\n\thandler: (event: TEvent, context: Context) => Promise<TResult>,\n\toptions: TelescopeMiddlewareOptions = {},\n): (event: TEvent, context: Context) => Promise<TResult> {\n\tconst {\n\t\tflushThresholdMs = 1000,\n\t\trecordBody = true,\n\t\tflushTimeoutMs = 5000,\n\t} = options;\n\n\tregisterProcessHooks();\n\n\treturn async (event: TEvent, context: Context): Promise<TResult> => {\n\t\tconst startTime = Date.now();\n\t\tcontext.callbackWaitsForEmptyEventLoop = false;\n\n\t\ttry {\n\t\t\tconst result = await handler(event, context);\n\t\t\tconst duration = Date.now() - startTime;\n\n\t\t\t// Record successful request\n\t\t\ttry {\n\t\t\t\tconst reqData = extractRequestData(event as any);\n\t\t\t\tconst resData = extractResponseData(result);\n\n\t\t\t\tawait telescope.recordRequest({\n\t\t\t\t\tmethod: reqData.method,\n\t\t\t\t\tpath: reqData.path,\n\t\t\t\t\turl: reqData.url,\n\t\t\t\t\theaders: reqData.headers,\n\t\t\t\t\tquery: reqData.query,\n\t\t\t\t\tbody: recordBody ? reqData.body : undefined,\n\t\t\t\t\tip: reqData.ip,\n\t\t\t\t\tstatus: resData.status,\n\t\t\t\t\tresponseHeaders: resData.headers,\n\t\t\t\t\tresponseBody: recordBody ? resData.body : undefined,\n\t\t\t\t\tduration,\n\t\t\t\t\trequestSize: reqData.requestSize,\n\t\t\t\t\tresponseSize: resData.responseSize,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\t// Ignore telescope errors\n\t\t\t}\n\n\t\t\tawait smartFlush(context, flushThresholdMs, flushTimeoutMs);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\t// Record exception\n\t\t\tif (error instanceof Error) {\n\t\t\t\tawait telescope.exception(error).catch(() => {});\n\t\t\t}\n\n\t\t\tawait smartFlush(context, flushThresholdMs, flushTimeoutMs);\n\t\t\tthrow error;\n\t\t}\n\t};\n}\n"],"mappings":";;;AAkCA,IAAI,yBAAyB;;;;;AAM7B,SAAS,uBAA6B;AACrC,KAAI,uBAAwB;AAC5B,0BAAyB;AAGzB,SAAQ,GAAG,WAAW,YAAY;AACjC,QAAM,4BAAe,IAAK,CAAC,MAAM,MAAM,CAAE,EAAC;CAC1C,EAAC;AAIF;;;;AAKD,SAAS,mBACRA,OAWC;CACD,MAAMC,UAAkC,CAAE;AAC1C,KAAI,MAAM,SACT;OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,MAAM,QAAQ,CACvD,KAAI,MAAO,SAAQ,IAAI,aAAa,IAAI;CACxC;CAIF,MAAM,gBAAgB,QAAQ;CAC9B,MAAM,cAAc,gBAAgB,SAAS,eAAe,GAAG;AAG/D,KAAI,aAAa,SAAS,MAAM,gBAAgB,MAAM;EACrD,MAAM,UAAU;EAEhB,MAAMC,QAAgC,CAAE;AACxC,MAAI,QAAQ,uBACX;QAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QACjC,QAAQ,sBACR,CACA,KAAI,iBACH,OAAM,OAAO;EAEd;AAEF,SAAO;GACN,QAAQ,QAAQ,eAAe,KAAK;GACpC,MAAM,QAAQ;GACd,KACC,QAAQ,WACP,QAAQ,kBAAkB,GAAG,QAAQ,eAAe,IAAI;GAC1D;GACA;GACA,MAAM,UAAU,QAAQ,MAAM,QAAQ,gBAAgB;GACtD,IAAI,QAAQ,eAAe,KAAK;GAChC,WAAW,QAAQ,eAAe;GAClC;EACA;CACD;CAGD,MAAM,UAAU;CAChB,MAAM,cAAc,QAAQ,wBACzB,IAAI,gBACJ,QAAQ,uBACP,UAAU,GACX;AAEH,QAAO;EACN,QAAQ,QAAQ;EAChB,MAAM,QAAQ;EACd,KAAK,QAAQ,QAAQ,eAAe,GAAG,YAAY,IAAI;EACvD;EACA,OAAQ,QAAQ,yBAAoD,CAAE;EACtE,MAAM,UAAU,QAAQ,MAAM,QAAQ,gBAAgB;EACtD,IAAI,QAAQ,gBAAgB,UAAU;EACtC,WAAW,QAAQ,gBAAgB;EACnC;CACA;AACD;;;;AAKD,SAAS,UACRC,MACAC,iBACU;AACV,MAAK,KAAM;AAEX,KAAI;EACH,MAAM,UAAU,kBACb,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,QAAQ,GAC7C;AACH,SAAO,KAAK,MAAM,QAAQ;CAC1B,QAAO;AACP,SAAO;CACP;AACD;;;;AAKD,SAAS,oBAAoBC,UAK3B;AACD,KAAI,mBAAmB,aAAa,YAAY,gBAAgB,UAAU;EACzE,MAAM,MAAM;EAKZ,MAAM,UAAU,IAAI,WAAW,CAAE;EAEjC,MAAM,mBAAmB,OAAO,KAAK,QAAQ,CAAC,KAC7C,CAAC,MAAM,EAAE,aAAa,KAAK,iBAC3B;EACD,MAAM,qBAAqB,mBACxB,QAAQ;EAGX,MAAM,eAAe,qBAClB,SAAS,oBAAoB,GAAG,GAChC,IAAI,OACH,OAAO,WAAW,IAAI,MAAM,OAAO;AAEvC,SAAO;GACN,QAAQ,IAAI,cAAc;GAC1B;GACA,MAAM,IAAI,OAAO,aAAa,IAAI,KAAK;GACvC;EACA;CACD;AAED,QAAO;EAAE,QAAQ;EAAK,SAAS,CAAE;EAAE,MAAM;CAAU;AACnD;AAED,SAAS,aAAaC,KAAsB;AAC3C,KAAI;AACH,SAAO,KAAK,MAAM,IAAI;CACtB,QAAO;AACP,SAAO;CACP;AACD;;;;;;;;;;;;;;;;;;;AAoBD,SAAgB,oBACfC,WACAC,UAAsC,CAAE,GAMvC;CACD,MAAM,EACL,mBAAmB,KACnB,aAAa,MACb,iBAAiB,KACjB,GAAG;AAGJ,uBAAsB;AAEtB,QAAO;EACN,QAAQ,OAAO,YAAY;AAE1B,GAAC,QAAgB,uBAAuB,KAAK,KAAK;AAGlD,WAAQ,QAAQ,iCAAiC;EACjD;EAED,OAAO,OAAO,YAAY;GACzB,MAAM,YAAa,QAAgB,wBAAwB,KAAK,KAAK;GACrE,MAAM,WAAW,KAAK,KAAK,GAAG;AAE9B,OAAI;IACH,MAAM,UAAU,mBAAmB,QAAQ,MAAM;IACjD,MAAM,UAAU,oBAAoB,QAAQ,SAAS;AAErD,UAAM,UAAU,cAAc;KAC7B,QAAQ,QAAQ;KAChB,MAAM,QAAQ;KACd,KAAK,QAAQ;KACb,SAAS,QAAQ;KACjB,OAAO,QAAQ;KACf,MAAM,aAAa,QAAQ;KAC3B,IAAI,QAAQ;KACZ,QAAQ,QAAQ;KAChB,iBAAiB,QAAQ;KACzB,cAAc,aAAa,QAAQ;KACnC;KACA,aAAa,QAAQ;KACrB,cAAc,QAAQ;IACtB,EAAC;GACF,QAAO,CAEP;AAGD,SAAM,WAAW,QAAQ,SAAS,kBAAkB,eAAe;EACnE;EAED,SAAS,OAAO,YAAY;GAC3B,MAAM,YAAa,QAAgB,wBAAwB,KAAK,KAAK;GACrE,MAAM,WAAW,KAAK,KAAK,GAAG;AAE9B,OAAI;AAEH,QAAI,QAAQ,MACX,OAAM,UAAU,UAAU,QAAQ,MAAM;IAIzC,MAAM,UAAU,mBAAmB,QAAQ,MAAM;AACjD,UAAM,UAAU,cAAc;KAC7B,QAAQ,QAAQ;KAChB,MAAM,QAAQ;KACd,KAAK,QAAQ;KACb,SAAS,QAAQ;KACjB,OAAO,QAAQ;KACf,MAAM,aAAa,QAAQ;KAC3B,IAAI,QAAQ;KACZ,QAAQ;KACR,iBAAiB,CAAE;KACnB,cAAc,EAAE,OAAO,QAAQ,OAAO,QAAS;KAC/C;KACA,aAAa,QAAQ;IACrB,EAAC;GACF,QAAO,CAEP;AAGD,SAAM,WAAW,QAAQ,SAAS,kBAAkB,eAAe;EACnE;CACD;AACD;;;;AAKD,eAAe,WACdC,SACAC,aACAC,WACgB;CAChB,MAAM,YAAY,QAAQ,0BAA0B;CAIpD,MAAM,mBAAmB,KAAK,IAC7B,WACA,KAAK,IAAI,YAAY,aAAa,IAAI,CACtC;AAED,KAAI,mBAAmB,EACtB,OAAM,4BAAe,iBAAiB,CAAC,MAAM,MAAM,CAAE,EAAC;AAEvD;;;;;;;;;;;;;;AAeD,SAAgB,uBACfJ,WACAK,SACAJ,UAAsC,CAAE,GACgB;CACxD,MAAM,EACL,mBAAmB,KACnB,aAAa,MACb,iBAAiB,KACjB,GAAG;AAEJ,uBAAsB;AAEtB,QAAO,OAAOK,OAAeJ,YAAuC;EACnE,MAAM,YAAY,KAAK,KAAK;AAC5B,UAAQ,iCAAiC;AAEzC,MAAI;GACH,MAAM,SAAS,MAAM,QAAQ,OAAO,QAAQ;GAC5C,MAAM,WAAW,KAAK,KAAK,GAAG;AAG9B,OAAI;IACH,MAAM,UAAU,mBAAmB,MAAa;IAChD,MAAM,UAAU,oBAAoB,OAAO;AAE3C,UAAM,UAAU,cAAc;KAC7B,QAAQ,QAAQ;KAChB,MAAM,QAAQ;KACd,KAAK,QAAQ;KACb,SAAS,QAAQ;KACjB,OAAO,QAAQ;KACf,MAAM,aAAa,QAAQ;KAC3B,IAAI,QAAQ;KACZ,QAAQ,QAAQ;KAChB,iBAAiB,QAAQ;KACzB,cAAc,aAAa,QAAQ;KACnC;KACA,aAAa,QAAQ;KACrB,cAAc,QAAQ;IACtB,EAAC;GACF,QAAO,CAEP;AAED,SAAM,WAAW,SAAS,kBAAkB,eAAe;AAC3D,UAAO;EACP,SAAQ,OAAO;AAEf,OAAI,iBAAiB,MACpB,OAAM,UAAU,UAAU,MAAM,CAAC,MAAM,MAAM,CAAE,EAAC;AAGjD,SAAM,WAAW,SAAS,kBAAkB,eAAe;AAC3D,SAAM;EACN;CACD;AACD"}
@@ -1,130 +0,0 @@
1
- import { createHttpServerSpan, endHttpSpan, extractTraceContext } from "./http-BIvr0YdI.mjs";
2
- import { trace } from "@opentelemetry/api";
3
-
4
- //#region src/instrumentation/otel.ts
5
- /**
6
- * OpenTelemetry implementation of the Telemetry interface
7
- *
8
- * @example
9
- * ```typescript
10
- * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';
11
- *
12
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
13
- * telemetry: new OTelTelemetry(),
14
- * });
15
- * ```
16
- *
17
- * @example With options
18
- * ```typescript
19
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
20
- * telemetry: new OTelTelemetry({
21
- * recordBody: true,
22
- * getUserId: (event) => event.requestContext?.authorizer?.userId,
23
- * }),
24
- * });
25
- * ```
26
- */
27
- var OTelTelemetry = class {
28
- constructor(options = {}) {
29
- this.options = options;
30
- }
31
- onRequestStart(request) {
32
- const { event, context: lambdaContext } = request;
33
- const headers = normalizeHeaders(event.headers || {});
34
- const parentContext = extractTraceContext(headers);
35
- const attrs = this.buildSpanAttributes(event, lambdaContext);
36
- const span = createHttpServerSpan(attrs, parentContext);
37
- const otelContext = trace.setSpan(parentContext, span);
38
- span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
39
- span.setAttribute("faas.name", lambdaContext.functionName);
40
- if (this.options.recordBody && event.body) {
41
- const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
42
- span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
43
- }
44
- return {
45
- span,
46
- otelContext
47
- };
48
- }
49
- onRequestEnd(ctx, response) {
50
- const { span } = ctx;
51
- if (this.options.recordResponseBody && response.body) span.setAttribute("http.response.body", response.body.length > 4096 ? `${response.body.slice(0, 4096)}...` : response.body);
52
- endHttpSpan(span, { statusCode: response.statusCode });
53
- }
54
- onRequestError(ctx, error) {
55
- const { span } = ctx;
56
- endHttpSpan(span, { statusCode: 500 }, error);
57
- }
58
- /**
59
- * Build span attributes from Lambda event
60
- */
61
- buildSpanAttributes(event, lambdaContext) {
62
- const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
63
- const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
64
- let method = "INVOKE";
65
- let path = "/";
66
- let route;
67
- let host;
68
- let scheme;
69
- let userAgent;
70
- let clientIp;
71
- let requestId;
72
- if (isV2) {
73
- const http = event.requestContext.http;
74
- method = http.method;
75
- path = event.rawPath || http.path;
76
- route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
77
- host = event.headers?.host;
78
- scheme = "https";
79
- userAgent = http.userAgent;
80
- clientIp = http.sourceIp;
81
- requestId = event.requestContext.requestId;
82
- } else if (isV1) {
83
- method = event.httpMethod;
84
- path = event.path;
85
- route = event.resource;
86
- host = event.headers?.Host || event.headers?.host;
87
- scheme = "https";
88
- userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
89
- clientIp = event.requestContext?.identity?.sourceIp;
90
- requestId = event.requestContext?.requestId;
91
- } else if ("httpMethod" in event) {
92
- method = event.httpMethod;
93
- path = event.path;
94
- host = event.headers?.host;
95
- userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
96
- clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
97
- }
98
- const attrs = {
99
- method,
100
- path,
101
- route,
102
- host,
103
- scheme,
104
- userAgent,
105
- clientIp,
106
- requestId: requestId || lambdaContext.awsRequestId
107
- };
108
- if (this.options.getEndpointName || this.options.getOperationId) attrs.endpoint = {
109
- name: this.options.getEndpointName?.(event),
110
- operationId: this.options.getOperationId?.(event)
111
- };
112
- if (this.options.getUserId) {
113
- const userId = this.options.getUserId(event);
114
- if (userId) attrs.user = { userId };
115
- }
116
- return attrs;
117
- }
118
- };
119
- /**
120
- * Normalize headers to lowercase keys
121
- */
122
- function normalizeHeaders(headers) {
123
- const normalized = {};
124
- for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
125
- return normalized;
126
- }
127
-
128
- //#endregion
129
- export { OTelTelemetry };
130
- //# sourceMappingURL=otel-B9bNoeZ2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel-B9bNoeZ2.mjs","names":["options: OTelTelemetryOptions","request: TelemetryRequest","ctx: TelemetryContext","response: TelemetryResponse","error: Error","event: any","lambdaContext: any","route: string | undefined","host: string | undefined","scheme: 'http' | 'https' | undefined","userAgent: string | undefined","clientIp: string | undefined","requestId: string | undefined","attrs: HttpSpanAttributes","headers: Record<string, string | string[] | undefined>","normalized: Record<string, string | string[] | undefined>"],"sources":["../src/instrumentation/otel.ts"],"sourcesContent":["/**\n * OpenTelemetry implementation of the Telemetry interface\n *\n * This provides automatic span creation for Lambda handlers using\n * OpenTelemetry. Works with any OTel-compatible backend (Jaeger, Zipkin,\n * Datadog, Honeycomb, etc.)\n */\nimport { type Span, trace } from '@opentelemetry/api';\nimport type { Context as LambdaContext } from 'aws-lambda';\n\n/**\n * Context object returned by onRequestStart, passed to subsequent hooks.\n * This matches the Telemetry interface from @geekmidas/constructs.\n */\nexport interface TelemetryContext {\n\t[key: string]: unknown;\n}\n\n/**\n * Request information passed to telemetry hooks.\n * This matches the Telemetry interface from @geekmidas/constructs.\n */\nexport interface TelemetryRequest {\n\tevent: any;\n\tcontext: LambdaContext;\n}\n\n/**\n * Response information passed to onRequestEnd.\n * This matches the Telemetry interface from @geekmidas/constructs.\n */\nexport interface TelemetryResponse {\n\tstatusCode: number;\n\tbody?: string;\n\theaders?: Record<string, string>;\n}\n\n/**\n * Telemetry interface for instrumenting endpoint requests.\n * This matches the Telemetry interface from @geekmidas/constructs.\n */\nexport interface Telemetry {\n\tonRequestStart(request: TelemetryRequest): TelemetryContext;\n\tonRequestEnd(ctx: TelemetryContext, response: TelemetryResponse): void;\n\tonRequestError(ctx: TelemetryContext, error: Error): void;\n}\n\nimport {\n\tcreateHttpServerSpan,\n\tendHttpSpan,\n\textractTraceContext,\n\ttype HttpSpanAttributes,\n} from './http';\n\n/**\n * Options for OTelTelemetry\n */\nexport interface OTelTelemetryOptions {\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 user ID from event\n\t */\n\tgetUserId?: (event: any) => string | undefined;\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\n/**\n * Telemetry context with span reference\n */\ninterface OTelContext extends TelemetryContext {\n\tspan: Span;\n\totelContext: any;\n}\n\n/**\n * OpenTelemetry implementation of the Telemetry interface\n *\n * @example\n * ```typescript\n * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';\n *\n * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {\n * telemetry: new OTelTelemetry(),\n * });\n * ```\n *\n * @example With options\n * ```typescript\n * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {\n * telemetry: new OTelTelemetry({\n * recordBody: true,\n * getUserId: (event) => event.requestContext?.authorizer?.userId,\n * }),\n * });\n * ```\n */\nexport class OTelTelemetry implements Telemetry {\n\tconstructor(private options: OTelTelemetryOptions = {}) {}\n\n\tonRequestStart(request: TelemetryRequest): TelemetryContext {\n\t\tconst { event, context: lambdaContext } = request;\n\n\t\t// Extract trace context from headers\n\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\tconst parentContext = extractTraceContext(headers);\n\n\t\t// Build span attributes from event\n\t\tconst attrs = this.buildSpanAttributes(event, lambdaContext);\n\n\t\t// Create the span\n\t\tconst span = createHttpServerSpan(attrs, parentContext);\n\t\tconst otelContext = trace.setSpan(parentContext, span);\n\n\t\t// Add Lambda-specific attributes\n\t\tspan.setAttribute('faas.invocation_id', lambdaContext.awsRequestId);\n\t\tspan.setAttribute('faas.name', lambdaContext.functionName);\n\n\t\t// Record body if requested\n\t\tif (this.options.recordBody && event.body) {\n\t\t\tconst bodyStr =\n\t\t\t\ttypeof event.body === 'string'\n\t\t\t\t\t? event.body\n\t\t\t\t\t: JSON.stringify(event.body);\n\t\t\tspan.setAttribute(\n\t\t\t\t'http.request.body',\n\t\t\t\tbodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr,\n\t\t\t);\n\t\t}\n\n\t\treturn { span, otelContext } as OTelContext;\n\t}\n\n\tonRequestEnd(ctx: TelemetryContext, response: TelemetryResponse): void {\n\t\tconst { span } = ctx as OTelContext;\n\n\t\tif (this.options.recordResponseBody && response.body) {\n\t\t\tspan.setAttribute(\n\t\t\t\t'http.response.body',\n\t\t\t\tresponse.body.length > 4096\n\t\t\t\t\t? `${response.body.slice(0, 4096)}...`\n\t\t\t\t\t: response.body,\n\t\t\t);\n\t\t}\n\n\t\tendHttpSpan(span, { statusCode: response.statusCode });\n\t}\n\n\tonRequestError(ctx: TelemetryContext, error: Error): void {\n\t\tconst { span } = ctx as OTelContext;\n\t\tendHttpSpan(span, { statusCode: 500 }, error);\n\t}\n\n\t/**\n\t * Build span attributes from Lambda event\n\t */\n\tprivate buildSpanAttributes(\n\t\tevent: any,\n\t\tlambdaContext: any,\n\t): HttpSpanAttributes {\n\t\t// Detect event type (API Gateway v1, v2, ALB, or direct invoke)\n\t\tconst isV2 =\n\t\t\t'requestContext' in event && 'http' in (event.requestContext || {});\n\t\tconst isV1 =\n\t\t\t'requestContext' in event &&\n\t\t\t'httpMethod' in event &&\n\t\t\t!('http' in (event.requestContext || {}));\n\n\t\tlet method = 'INVOKE';\n\t\tlet path = '/';\n\t\tlet route: string | undefined;\n\t\tlet host: string | undefined;\n\t\tlet scheme: 'http' | 'https' | undefined;\n\t\tlet userAgent: string | undefined;\n\t\tlet clientIp: string | undefined;\n\t\tlet requestId: string | undefined;\n\n\t\tif (isV2) {\n\t\t\t// API Gateway v2 (HTTP API)\n\t\t\tconst http = event.requestContext.http;\n\t\t\tmethod = http.method;\n\t\t\tpath = event.rawPath || http.path;\n\t\t\troute = event.routeKey?.replace(/^[A-Z]+\\s+/, ''); // Remove HTTP method prefix\n\t\t\thost = event.headers?.host;\n\t\t\tscheme = 'https';\n\t\t\tuserAgent = http.userAgent;\n\t\t\tclientIp = http.sourceIp;\n\t\t\trequestId = event.requestContext.requestId;\n\t\t} else if (isV1) {\n\t\t\t// API Gateway v1 (REST API)\n\t\t\tmethod = event.httpMethod;\n\t\t\tpath = event.path;\n\t\t\troute = event.resource;\n\t\t\thost = event.headers?.Host || event.headers?.host;\n\t\t\tscheme = 'https';\n\t\t\tuserAgent =\n\t\t\t\tevent.headers?.['User-Agent'] || event.headers?.['user-agent'];\n\t\t\tclientIp = event.requestContext?.identity?.sourceIp;\n\t\t\trequestId = event.requestContext?.requestId;\n\t\t} else if ('httpMethod' in event) {\n\t\t\t// ALB event\n\t\t\tmethod = event.httpMethod;\n\t\t\tpath = event.path;\n\t\t\thost = event.headers?.host;\n\t\t\tuserAgent =\n\t\t\t\tevent.headers?.['user-agent'] || event.headers?.['User-Agent'];\n\t\t\tclientIp = event.headers?.['x-forwarded-for']?.split(',')[0]?.trim();\n\t\t}\n\n\t\tconst attrs: HttpSpanAttributes = {\n\t\t\tmethod,\n\t\t\tpath,\n\t\t\troute,\n\t\t\thost,\n\t\t\tscheme,\n\t\t\tuserAgent,\n\t\t\tclientIp,\n\t\t\trequestId: requestId || lambdaContext.awsRequestId,\n\t\t};\n\n\t\t// Add endpoint metadata if extractors provided\n\t\tif (this.options.getEndpointName || this.options.getOperationId) {\n\t\t\tattrs.endpoint = {\n\t\t\t\tname: this.options.getEndpointName?.(event),\n\t\t\t\toperationId: this.options.getOperationId?.(event),\n\t\t\t};\n\t\t}\n\n\t\t// Add user metadata if extractor provided\n\t\tif (this.options.getUserId) {\n\t\t\tconst userId = this.options.getUserId(event);\n\t\t\tif (userId) {\n\t\t\t\tattrs.user = { userId };\n\t\t\t}\n\t\t}\n\n\t\treturn attrs;\n\t}\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"],"mappings":"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"}
@@ -1,101 +0,0 @@
1
- import { Context } from "aws-lambda";
2
-
3
- //#region src/instrumentation/otel.d.ts
4
-
5
- /**
6
- * Context object returned by onRequestStart, passed to subsequent hooks.
7
- * This matches the Telemetry interface from @geekmidas/constructs.
8
- */
9
- interface TelemetryContext {
10
- [key: string]: unknown;
11
- }
12
- /**
13
- * Request information passed to telemetry hooks.
14
- * This matches the Telemetry interface from @geekmidas/constructs.
15
- */
16
- interface TelemetryRequest {
17
- event: any;
18
- context: Context;
19
- }
20
- /**
21
- * Response information passed to onRequestEnd.
22
- * This matches the Telemetry interface from @geekmidas/constructs.
23
- */
24
- interface TelemetryResponse {
25
- statusCode: number;
26
- body?: string;
27
- headers?: Record<string, string>;
28
- }
29
- /**
30
- * Telemetry interface for instrumenting endpoint requests.
31
- * This matches the Telemetry interface from @geekmidas/constructs.
32
- */
33
- interface Telemetry {
34
- onRequestStart(request: TelemetryRequest): TelemetryContext;
35
- onRequestEnd(ctx: TelemetryContext, response: TelemetryResponse): void;
36
- onRequestError(ctx: TelemetryContext, error: Error): void;
37
- }
38
- /**
39
- * Options for OTelTelemetry
40
- */
41
- interface OTelTelemetryOptions {
42
- /**
43
- * Whether to record request body as span attribute
44
- * @default false
45
- */
46
- recordBody?: boolean;
47
- /**
48
- * Whether to record response body as span attribute
49
- * @default false
50
- */
51
- recordResponseBody?: boolean;
52
- /**
53
- * Custom function to extract user ID from event
54
- */
55
- getUserId?: (event: any) => string | undefined;
56
- /**
57
- * Custom function to extract endpoint name from event
58
- */
59
- getEndpointName?: (event: any) => string | undefined;
60
- /**
61
- * Custom function to extract operation ID from event
62
- */
63
- getOperationId?: (event: any) => string | undefined;
64
- }
65
- /**
66
- * OpenTelemetry implementation of the Telemetry interface
67
- *
68
- * @example
69
- * ```typescript
70
- * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';
71
- *
72
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
73
- * telemetry: new OTelTelemetry(),
74
- * });
75
- * ```
76
- *
77
- * @example With options
78
- * ```typescript
79
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
80
- * telemetry: new OTelTelemetry({
81
- * recordBody: true,
82
- * getUserId: (event) => event.requestContext?.authorizer?.userId,
83
- * }),
84
- * });
85
- * ```
86
- */
87
- declare class OTelTelemetry implements Telemetry {
88
- private options;
89
- constructor(options?: OTelTelemetryOptions);
90
- onRequestStart(request: TelemetryRequest): TelemetryContext;
91
- onRequestEnd(ctx: TelemetryContext, response: TelemetryResponse): void;
92
- onRequestError(ctx: TelemetryContext, error: Error): void;
93
- /**
94
- * Build span attributes from Lambda event
95
- */
96
- private buildSpanAttributes;
97
- }
98
- //# sourceMappingURL=otel.d.ts.map
99
- //#endregion
100
- export { OTelTelemetry, OTelTelemetryOptions, Telemetry, TelemetryContext, TelemetryRequest, TelemetryResponse };
101
- //# sourceMappingURL=otel-Bk89b1lX.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel-Bk89b1lX.d.cts","names":[],"sources":["../src/instrumentation/otel.ts"],"sourcesContent":[],"mappings":";;;;;;AAcA;AAQA;AASiB,UAjBA,gBAAA,CAiBiB;EAUjB,CAAA,GAAA,EAAA,MAAS,CAAA,EAAA,OAAA;;;;;;AAGL,UAtBJ,gBAAA,CAsBI;EAAgB,KAAS,EAAA,GAAA;EAAK,OAAA,EApBzC,OAoByC;AAanD;AA2DA;;;;AAG4C,UAxF3B,iBAAA,CAwF2B;EAAgB,UAiCzC,EAAA,MAAA;EAAgB,IAAY,CAAA,EAAA,MAAA;EAAiB,OAe3C,CAAA,EArIV,MAqIU,CAAA,MAAA,EAAA,MAAA,CAAA;;;AAnD0B;;;UA3E9B,SAAA;0BACQ,mBAAmB;oBACzB,4BAA4B;sBAC1B,yBAAyB;;;;;UAa7B,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2DJ,aAAA,YAAyB;;wBACR;0BAEL,mBAAmB;oBAiCzB,4BAA4B;sBAe1B,yBAAyB"}
@@ -1,136 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_http = require('./http-BsqmhurZ.cjs');
3
- const __opentelemetry_api = require_chunk.__toESM(require("@opentelemetry/api"));
4
-
5
- //#region src/instrumentation/otel.ts
6
- /**
7
- * OpenTelemetry implementation of the Telemetry interface
8
- *
9
- * @example
10
- * ```typescript
11
- * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';
12
- *
13
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
14
- * telemetry: new OTelTelemetry(),
15
- * });
16
- * ```
17
- *
18
- * @example With options
19
- * ```typescript
20
- * const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
21
- * telemetry: new OTelTelemetry({
22
- * recordBody: true,
23
- * getUserId: (event) => event.requestContext?.authorizer?.userId,
24
- * }),
25
- * });
26
- * ```
27
- */
28
- var OTelTelemetry = class {
29
- constructor(options = {}) {
30
- this.options = options;
31
- }
32
- onRequestStart(request) {
33
- const { event, context: lambdaContext } = request;
34
- const headers = normalizeHeaders(event.headers || {});
35
- const parentContext = require_http.extractTraceContext(headers);
36
- const attrs = this.buildSpanAttributes(event, lambdaContext);
37
- const span = require_http.createHttpServerSpan(attrs, parentContext);
38
- const otelContext = __opentelemetry_api.trace.setSpan(parentContext, span);
39
- span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
40
- span.setAttribute("faas.name", lambdaContext.functionName);
41
- if (this.options.recordBody && event.body) {
42
- const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
43
- span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
44
- }
45
- return {
46
- span,
47
- otelContext
48
- };
49
- }
50
- onRequestEnd(ctx, response) {
51
- const { span } = ctx;
52
- if (this.options.recordResponseBody && response.body) span.setAttribute("http.response.body", response.body.length > 4096 ? `${response.body.slice(0, 4096)}...` : response.body);
53
- require_http.endHttpSpan(span, { statusCode: response.statusCode });
54
- }
55
- onRequestError(ctx, error) {
56
- const { span } = ctx;
57
- require_http.endHttpSpan(span, { statusCode: 500 }, error);
58
- }
59
- /**
60
- * Build span attributes from Lambda event
61
- */
62
- buildSpanAttributes(event, lambdaContext) {
63
- const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
64
- const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
65
- let method = "INVOKE";
66
- let path = "/";
67
- let route;
68
- let host;
69
- let scheme;
70
- let userAgent;
71
- let clientIp;
72
- let requestId;
73
- if (isV2) {
74
- const http = event.requestContext.http;
75
- method = http.method;
76
- path = event.rawPath || http.path;
77
- route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
78
- host = event.headers?.host;
79
- scheme = "https";
80
- userAgent = http.userAgent;
81
- clientIp = http.sourceIp;
82
- requestId = event.requestContext.requestId;
83
- } else if (isV1) {
84
- method = event.httpMethod;
85
- path = event.path;
86
- route = event.resource;
87
- host = event.headers?.Host || event.headers?.host;
88
- scheme = "https";
89
- userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
90
- clientIp = event.requestContext?.identity?.sourceIp;
91
- requestId = event.requestContext?.requestId;
92
- } else if ("httpMethod" in event) {
93
- method = event.httpMethod;
94
- path = event.path;
95
- host = event.headers?.host;
96
- userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
97
- clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
98
- }
99
- const attrs = {
100
- method,
101
- path,
102
- route,
103
- host,
104
- scheme,
105
- userAgent,
106
- clientIp,
107
- requestId: requestId || lambdaContext.awsRequestId
108
- };
109
- if (this.options.getEndpointName || this.options.getOperationId) attrs.endpoint = {
110
- name: this.options.getEndpointName?.(event),
111
- operationId: this.options.getOperationId?.(event)
112
- };
113
- if (this.options.getUserId) {
114
- const userId = this.options.getUserId(event);
115
- if (userId) attrs.user = { userId };
116
- }
117
- return attrs;
118
- }
119
- };
120
- /**
121
- * Normalize headers to lowercase keys
122
- */
123
- function normalizeHeaders(headers) {
124
- const normalized = {};
125
- for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
126
- return normalized;
127
- }
128
-
129
- //#endregion
130
- Object.defineProperty(exports, 'OTelTelemetry', {
131
- enumerable: true,
132
- get: function () {
133
- return OTelTelemetry;
134
- }
135
- });
136
- //# sourceMappingURL=otel-BzjOtVxZ.cjs.map