@geekmidas/telescope 10.0.0-alpha.98 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +18 -28
  3. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +47 -0
  4. package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +1 -0
  5. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +247 -0
  6. package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +1 -0
  7. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +252 -0
  8. package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +1 -0
  9. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +47 -0
  10. package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +1 -0
  11. package/dist/{MetricsAggregator-BJdIvfEv.d.mts → MetricsAggregator-4SqelGcG.d.cts} +6 -3
  12. package/dist/MetricsAggregator-4SqelGcG.d.cts.map +1 -0
  13. package/dist/MetricsAggregator-B7lUICdH.cjs +363 -0
  14. package/dist/MetricsAggregator-B7lUICdH.cjs.map +1 -0
  15. package/dist/{MetricsAggregator-CnC3oT5q.d.cts → MetricsAggregator-DZrW8ls6.d.mts} +6 -3
  16. package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +1 -0
  17. package/dist/MetricsAggregator-S3DQWNas.mjs +357 -0
  18. package/dist/MetricsAggregator-S3DQWNas.mjs.map +1 -0
  19. package/dist/MetricsStorage-B86e4131.d.cts +60 -0
  20. package/dist/MetricsStorage-B86e4131.d.cts.map +1 -0
  21. package/dist/MetricsStorage-BWyP2_12.d.mts +60 -0
  22. package/dist/MetricsStorage-BWyP2_12.d.mts.map +1 -0
  23. package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
  24. package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
  25. package/dist/Telescope-Cs3fv8jt.cjs +395 -0
  26. package/dist/Telescope-Cs3fv8jt.cjs.map +1 -0
  27. package/dist/{Telescope-BVfDvVvY.d.mts → Telescope-D4nmwDRA.d.cts} +7 -4
  28. package/dist/Telescope-D4nmwDRA.d.cts.map +1 -0
  29. package/dist/Telescope-Dh5av3FC.mjs +389 -0
  30. package/dist/Telescope-Dh5av3FC.mjs.map +1 -0
  31. package/dist/{Telescope-DeqSHfuB.d.cts → Telescope-Dl6VSfxd.d.mts} +7 -4
  32. package/dist/Telescope-Dl6VSfxd.d.mts.map +1 -0
  33. package/dist/Telescope.cjs +4 -385
  34. package/dist/Telescope.d.cts +3 -1
  35. package/dist/Telescope.d.mts +3 -1
  36. package/dist/Telescope.mjs +4 -384
  37. package/dist/adapters/index.d.cts +2 -2
  38. package/dist/adapters/index.d.mts +2 -2
  39. package/dist/adapters/index.mjs +0 -1
  40. package/dist/adapters/lambda.cjs +10 -9
  41. package/dist/adapters/lambda.cjs.map +1 -1
  42. package/dist/adapters/lambda.d.cts +13 -9
  43. package/dist/adapters/lambda.d.cts.map +1 -1
  44. package/dist/adapters/lambda.d.mts +13 -9
  45. package/dist/adapters/lambda.d.mts.map +1 -1
  46. package/dist/adapters/lambda.mjs +4 -3
  47. package/dist/adapters/lambda.mjs.map +1 -1
  48. package/dist/adapters/middy.cjs +4 -236
  49. package/dist/adapters/middy.d.cts +5 -60
  50. package/dist/adapters/middy.d.mts +5 -60
  51. package/dist/adapters/middy.mjs +3 -234
  52. package/dist/adapters/types.d.cts +2 -162
  53. package/dist/adapters/types.d.mts +2 -162
  54. package/dist/adapters/types.mjs +0 -1
  55. package/dist/{rolldown-runtime-VH7oDXx4.cjs → chunk-CUT6urMc.cjs} +10 -8
  56. package/dist/core--quSp5Qr.d.mts +78 -0
  57. package/dist/core--quSp5Qr.d.mts.map +1 -0
  58. package/dist/core-B4Jpia5H.d.cts +78 -0
  59. package/dist/core-B4Jpia5H.d.cts.map +1 -0
  60. package/dist/core-CtVHRJGv.cjs +199 -0
  61. package/dist/core-CtVHRJGv.cjs.map +1 -0
  62. package/dist/core-D6hJ6exL.mjs +139 -0
  63. package/dist/core-D6hJ6exL.mjs.map +1 -0
  64. package/dist/core.cjs +22 -22
  65. package/dist/core.d.cts +4 -4
  66. package/dist/core.d.mts +4 -4
  67. package/dist/core.mjs +4 -3
  68. package/dist/hono--uKQ7Jgi.d.mts +71 -0
  69. package/dist/hono--uKQ7Jgi.d.mts.map +1 -0
  70. package/dist/hono-C4EgpbKQ.cjs +160 -0
  71. package/dist/hono-C4EgpbKQ.cjs.map +1 -0
  72. package/dist/hono-CemCKU87.d.cts +71 -0
  73. package/dist/hono-CemCKU87.d.cts.map +1 -0
  74. package/dist/hono-DxhvnVbF.mjs +136 -0
  75. package/dist/hono-DxhvnVbF.mjs.map +1 -0
  76. package/dist/http-BiNtg85L.d.mts +107 -0
  77. package/dist/http-BiNtg85L.d.mts.map +1 -0
  78. package/dist/http-DQzgLczm.mjs +159 -0
  79. package/dist/http-DQzgLczm.mjs.map +1 -0
  80. package/dist/http-D_Z8sYXZ.cjs +219 -0
  81. package/dist/http-D_Z8sYXZ.cjs.map +1 -0
  82. package/dist/http-Dvca6fC3.d.cts +107 -0
  83. package/dist/http-Dvca6fC3.d.cts.map +1 -0
  84. package/dist/index-BL32-cvv.d.cts +1 -0
  85. package/dist/index-CsuikFeJ.d.mts +1 -0
  86. package/dist/index.cjs +9 -8
  87. package/dist/index.d.cts +6 -5
  88. package/dist/index.d.mts +6 -5
  89. package/dist/index.mjs +7 -5
  90. package/dist/instrumentation/core.cjs +11 -147
  91. package/dist/instrumentation/core.d.cts +3 -74
  92. package/dist/instrumentation/core.d.mts +3 -74
  93. package/dist/instrumentation/core.mjs +2 -137
  94. package/dist/instrumentation/hono.cjs +6 -174
  95. package/dist/instrumentation/hono.d.cts +2 -86
  96. package/dist/instrumentation/hono.d.mts +2 -86
  97. package/dist/instrumentation/hono.mjs +3 -170
  98. package/dist/instrumentation/http.cjs +11 -189
  99. package/dist/instrumentation/http.d.cts +2 -119
  100. package/dist/instrumentation/http.d.mts +2 -119
  101. package/dist/instrumentation/http.mjs +2 -178
  102. package/dist/instrumentation/index.cjs +47 -56
  103. package/dist/instrumentation/index.d.cts +9 -11
  104. package/dist/instrumentation/index.d.mts +9 -11
  105. package/dist/instrumentation/index.mjs +9 -10
  106. package/dist/instrumentation/middleware.cjs +6 -164
  107. package/dist/instrumentation/middleware.d.cts +2 -83
  108. package/dist/instrumentation/middleware.d.mts +2 -83
  109. package/dist/instrumentation/middleware.mjs +3 -160
  110. package/dist/instrumentation/otel.cjs +3 -137
  111. package/dist/instrumentation/otel.d.cts +2 -97
  112. package/dist/instrumentation/otel.d.mts +2 -97
  113. package/dist/instrumentation/otel.mjs +3 -136
  114. package/dist/instrumentation/setup.cjs +4 -142
  115. package/dist/instrumentation/setup.d.cts +3 -139
  116. package/dist/instrumentation/setup.d.mts +3 -139
  117. package/dist/instrumentation/setup.mjs +3 -139
  118. package/dist/instrumentation/tracing.cjs +10 -114
  119. package/dist/instrumentation/tracing.d.cts +2 -49
  120. package/dist/instrumentation/tracing.d.mts +2 -49
  121. package/dist/instrumentation/tracing.mjs +2 -105
  122. package/dist/logger/console.cjs +12 -18
  123. package/dist/logger/console.cjs.map +1 -1
  124. package/dist/logger/console.d.cts +10 -7
  125. package/dist/logger/console.d.cts.map +1 -1
  126. package/dist/logger/console.d.mts +10 -7
  127. package/dist/logger/console.d.mts.map +1 -1
  128. package/dist/logger/console.mjs +11 -17
  129. package/dist/logger/console.mjs.map +1 -1
  130. package/dist/logger/pino.cjs +5 -6
  131. package/dist/logger/pino.cjs.map +1 -1
  132. package/dist/logger/pino.d.cts +10 -6
  133. package/dist/logger/pino.d.cts.map +1 -1
  134. package/dist/logger/pino.d.mts +10 -6
  135. package/dist/logger/pino.d.mts.map +1 -1
  136. package/dist/logger/pino.mjs +3 -2
  137. package/dist/logger/pino.mjs.map +1 -1
  138. package/dist/memory--BK4iWiv.d.cts +40 -0
  139. package/dist/memory--BK4iWiv.d.cts.map +1 -0
  140. package/dist/memory-6S9H-IF5.mjs +123 -0
  141. package/dist/memory-6S9H-IF5.mjs.map +1 -0
  142. package/dist/memory-B0d_n1g5.cjs +129 -0
  143. package/dist/memory-B0d_n1g5.cjs.map +1 -0
  144. package/dist/memory-DCirEVFW.d.mts +40 -0
  145. package/dist/memory-DCirEVFW.d.mts.map +1 -0
  146. package/dist/metrics/MetricsAggregator.cjs +2 -354
  147. package/dist/metrics/MetricsAggregator.d.cts +2 -1
  148. package/dist/metrics/MetricsAggregator.d.mts +2 -1
  149. package/dist/metrics/MetricsAggregator.mjs +2 -353
  150. package/dist/metrics/index.cjs +4 -3
  151. package/dist/metrics/index.d.cts +4 -2
  152. package/dist/metrics/index.d.mts +4 -2
  153. package/dist/metrics/index.mjs +4 -2
  154. package/dist/metrics/storage/InMemoryMetricsStorage.cjs +3 -240
  155. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +4 -43
  156. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +4 -43
  157. package/dist/metrics/storage/InMemoryMetricsStorage.mjs +3 -239
  158. package/dist/metrics/storage/MetricsStorage.cjs +1 -0
  159. package/dist/metrics/storage/MetricsStorage.d.cts +3 -56
  160. package/dist/metrics/storage/MetricsStorage.d.mts +3 -56
  161. package/dist/metrics/storage/MetricsStorage.mjs +1 -1
  162. package/dist/metrics/storage/index.cjs +6 -6
  163. package/dist/metrics/storage/index.d.cts +3 -3
  164. package/dist/metrics/storage/index.d.mts +3 -3
  165. package/dist/metrics/storage/index.mjs +5 -4
  166. package/dist/metrics/storage/types.cjs +2 -34
  167. package/dist/metrics/storage/types.d.cts +2 -207
  168. package/dist/metrics/storage/types.d.mts +2 -207
  169. package/dist/metrics/storage/types.mjs +2 -33
  170. package/dist/metrics-D5YT-Rnq.mjs +0 -0
  171. package/dist/metrics-fhD3l3C3.cjs +0 -0
  172. package/dist/middleware-B2jFUukM.cjs +184 -0
  173. package/dist/middleware-B2jFUukM.cjs.map +1 -0
  174. package/dist/middleware-BTDncHwm.mjs +160 -0
  175. package/dist/middleware-BTDncHwm.mjs.map +1 -0
  176. package/dist/middleware-CA84nsNN.d.cts +74 -0
  177. package/dist/middleware-CA84nsNN.d.cts.map +1 -0
  178. package/dist/middleware-DAceVpfw.d.mts +74 -0
  179. package/dist/middleware-DAceVpfw.d.mts.map +1 -0
  180. package/dist/middy-B6Btl8XE.d.mts +64 -0
  181. package/dist/middy-B6Btl8XE.d.mts.map +1 -0
  182. package/dist/middy-BTR3cyvk.mjs +236 -0
  183. package/dist/middy-BTR3cyvk.mjs.map +1 -0
  184. package/dist/middy-Bq0defVg.d.cts +64 -0
  185. package/dist/middy-Bq0defVg.d.cts.map +1 -0
  186. package/dist/middy-y5Zp27eG.cjs +247 -0
  187. package/dist/middy-y5Zp27eG.cjs.map +1 -0
  188. package/dist/otel-1bJPb2Z7.d.mts +101 -0
  189. package/dist/otel-1bJPb2Z7.d.mts.map +1 -0
  190. package/dist/otel-C1HqHA2O.cjs +136 -0
  191. package/dist/otel-C1HqHA2O.cjs.map +1 -0
  192. package/dist/otel-SBVoVEHr.d.cts +101 -0
  193. package/dist/otel-SBVoVEHr.d.cts.map +1 -0
  194. package/dist/otel-wulj5B-X.mjs +130 -0
  195. package/dist/otel-wulj5B-X.mjs.map +1 -0
  196. package/dist/otlp/hono.cjs +15 -9
  197. package/dist/otlp/hono.cjs.map +1 -1
  198. package/dist/otlp/hono.d.cts +13 -3
  199. package/dist/otlp/hono.d.cts.map +1 -1
  200. package/dist/otlp/hono.d.mts +13 -3
  201. package/dist/otlp/hono.d.mts.map +1 -1
  202. package/dist/otlp/hono.mjs +11 -5
  203. package/dist/otlp/hono.mjs.map +1 -1
  204. package/dist/otlp/index.cjs +11 -11
  205. package/dist/otlp/index.d.cts +7 -4
  206. package/dist/otlp/index.d.mts +7 -4
  207. package/dist/otlp/index.mjs +5 -4
  208. package/dist/otlp/receiver.cjs +4 -88
  209. package/dist/otlp/receiver.d.cts +7 -59
  210. package/dist/otlp/receiver.d.mts +7 -59
  211. package/dist/otlp/receiver.mjs +4 -87
  212. package/dist/otlp/transformer.cjs +5 -214
  213. package/dist/otlp/transformer.d.cts +3 -1
  214. package/dist/otlp/transformer.d.mts +3 -1
  215. package/dist/otlp/transformer.mjs +3 -211
  216. package/dist/otlp/types.cjs +5 -57
  217. package/dist/otlp/types.d.cts +1 -1
  218. package/dist/otlp/types.d.mts +1 -1
  219. package/dist/otlp/types.mjs +2 -53
  220. package/dist/receiver-Cj1lbAOO.cjs +94 -0
  221. package/dist/receiver-Cj1lbAOO.cjs.map +1 -0
  222. package/dist/receiver-CxVd_9CB.mjs +89 -0
  223. package/dist/receiver-CxVd_9CB.mjs.map +1 -0
  224. package/dist/receiver-DLICx5uU.d.cts +63 -0
  225. package/dist/receiver-DLICx5uU.d.cts.map +1 -0
  226. package/dist/receiver-UeZT-H8u.d.mts +63 -0
  227. package/dist/receiver-UeZT-H8u.d.mts.map +1 -0
  228. package/dist/redact-BzkITCNW.mjs +83 -0
  229. package/dist/redact-BzkITCNW.mjs.map +1 -0
  230. package/dist/redact-DVaSSPZT.cjs +95 -0
  231. package/dist/redact-DVaSSPZT.cjs.map +1 -0
  232. package/dist/redact.cjs +3 -84
  233. package/dist/redact.d.cts +8 -4
  234. package/dist/redact.d.cts.map +1 -1
  235. package/dist/redact.d.mts +8 -4
  236. package/dist/redact.d.mts.map +1 -1
  237. package/dist/redact.mjs +2 -80
  238. package/dist/server/hono.cjs +54 -33
  239. package/dist/server/hono.cjs.map +1 -1
  240. package/dist/server/hono.d.cts +14 -19
  241. package/dist/server/hono.d.cts.map +1 -1
  242. package/dist/server/hono.d.mts +14 -19
  243. package/dist/server/hono.d.mts.map +1 -1
  244. package/dist/server/hono.mjs +52 -31
  245. package/dist/server/hono.mjs.map +1 -1
  246. package/dist/setup-B9jM77Qk.mjs +98 -0
  247. package/dist/setup-B9jM77Qk.mjs.map +1 -0
  248. package/dist/setup-Bkxm4g6b.d.mts +87 -0
  249. package/dist/setup-Bkxm4g6b.d.mts.map +1 -0
  250. package/dist/setup-CYpff5B9.cjs +110 -0
  251. package/dist/setup-CYpff5B9.cjs.map +1 -0
  252. package/dist/setup-D58N1f9O.d.cts +87 -0
  253. package/dist/setup-D58N1f9O.d.cts.map +1 -0
  254. package/dist/storage/kysely.cjs +70 -82
  255. package/dist/storage/kysely.cjs.map +1 -1
  256. package/dist/storage/kysely.d.cts +20 -36
  257. package/dist/storage/kysely.d.cts.map +1 -1
  258. package/dist/storage/kysely.d.mts +20 -36
  259. package/dist/storage/kysely.d.mts.map +1 -1
  260. package/dist/storage/kysely.mjs +69 -81
  261. package/dist/storage/kysely.mjs.map +1 -1
  262. package/dist/storage/memory.cjs +2 -122
  263. package/dist/storage/memory.d.cts +3 -36
  264. package/dist/storage/memory.d.mts +3 -36
  265. package/dist/storage/memory.mjs +2 -121
  266. package/dist/tracing-BX8uY2nR.d.cts +53 -0
  267. package/dist/tracing-BX8uY2nR.d.cts.map +1 -0
  268. package/dist/tracing-Bt1zWRlb.cjs +167 -0
  269. package/dist/tracing-Bt1zWRlb.cjs.map +1 -0
  270. package/dist/tracing-Cijm_5NI.mjs +113 -0
  271. package/dist/tracing-Cijm_5NI.mjs.map +1 -0
  272. package/dist/tracing-PnECEbEu.d.mts +53 -0
  273. package/dist/tracing-PnECEbEu.d.mts.map +1 -0
  274. package/dist/transformer-BXQPhzql.mjs +215 -0
  275. package/dist/transformer-BXQPhzql.mjs.map +1 -0
  276. package/dist/transformer-CLGZ0EQc.cjs +232 -0
  277. package/dist/transformer-CLGZ0EQc.cjs.map +1 -0
  278. package/dist/{transformer-BtqjAs0b.d.cts → transformer-CTGsaVfV.d.mts} +8 -4
  279. package/dist/transformer-CTGsaVfV.d.mts.map +1 -0
  280. package/dist/{transformer-DI6t8-YA.d.mts → transformer-ICEbxpFf.d.cts} +8 -4
  281. package/dist/transformer-ICEbxpFf.d.cts.map +1 -0
  282. package/dist/{types-BVujq4zd.d.mts → types-B1EIa_cQ.d.mts} +4 -3
  283. package/dist/types-B1EIa_cQ.d.mts.map +1 -0
  284. package/dist/types-BRzW1NM8.d.cts +166 -0
  285. package/dist/types-BRzW1NM8.d.cts.map +1 -0
  286. package/dist/types-BS3Rx8Sk.d.cts +209 -0
  287. package/dist/types-BS3Rx8Sk.d.cts.map +1 -0
  288. package/dist/types-Bwm_jNU7.mjs +54 -0
  289. package/dist/types-Bwm_jNU7.mjs.map +1 -0
  290. package/dist/types-BzQ78Efw.d.mts +166 -0
  291. package/dist/types-BzQ78Efw.d.mts.map +1 -0
  292. package/dist/types-CbNGXnJE.d.mts +209 -0
  293. package/dist/types-CbNGXnJE.d.mts.map +1 -0
  294. package/dist/{types-DVETVdpa.d.cts → types-CmOB7CLO.d.cts} +7 -6
  295. package/dist/types-CmOB7CLO.d.cts.map +1 -0
  296. package/dist/{types-DVETVdpa.d.mts → types-DBc0q5KD.d.mts} +7 -6
  297. package/dist/types-DBc0q5KD.d.mts.map +1 -0
  298. package/dist/types-Dsh-DIO_.cjs +78 -0
  299. package/dist/types-Dsh-DIO_.cjs.map +1 -0
  300. package/dist/types-ZW-nfWf6.cjs +40 -0
  301. package/dist/types-ZW-nfWf6.cjs.map +1 -0
  302. package/dist/{types-BVujq4zd.d.cts → types-l7Rlb5Mg.d.cts} +4 -3
  303. package/dist/types-l7Rlb5Mg.d.cts.map +1 -0
  304. package/dist/types-ojhnLdwz.mjs +34 -0
  305. package/dist/types-ojhnLdwz.mjs.map +1 -0
  306. package/dist/types.d.cts +1 -1
  307. package/dist/types.d.mts +1 -1
  308. package/dist/types.mjs +0 -1
  309. package/dist/ui-assets-BEXqOQLe.cjs +48 -0
  310. package/dist/ui-assets-BEXqOQLe.cjs.map +1 -0
  311. package/dist/ui-assets-BhTDUsrM.mjs +30 -0
  312. package/dist/ui-assets-BhTDUsrM.mjs.map +1 -0
  313. package/dist/ui-assets.cjs +5 -0
  314. package/dist/ui-assets.d.cts +13 -0
  315. package/dist/ui-assets.d.cts.map +1 -0
  316. package/dist/ui-assets.d.mts +13 -0
  317. package/dist/ui-assets.d.mts.map +1 -0
  318. package/dist/ui-assets.mjs +3 -0
  319. package/package.json +46 -46
  320. package/src/Telescope.ts +561 -0
  321. package/src/__tests__/Telescope.spec.ts +438 -0
  322. package/src/__tests__/pino-transport.spec.ts +115 -0
  323. package/src/__tests__/redact.spec.ts +336 -0
  324. package/src/adapters/__tests__/lambda.spec.ts +318 -0
  325. package/src/adapters/__tests__/middy.spec.ts +741 -0
  326. package/src/adapters/index.ts +22 -0
  327. package/src/adapters/lambda.ts +432 -0
  328. package/src/adapters/middy.ts +402 -0
  329. package/src/adapters/types.ts +181 -0
  330. package/src/core.ts +51 -0
  331. package/src/index.ts +34 -0
  332. package/src/instrumentation/__tests__/core.spec.ts +248 -0
  333. package/src/instrumentation/__tests__/hono.spec.ts +348 -0
  334. package/src/instrumentation/__tests__/middleware.spec.ts +528 -0
  335. package/src/instrumentation/__tests__/otel.spec.ts +291 -0
  336. package/src/instrumentation/__tests__/tracing.spec.ts +208 -0
  337. package/src/instrumentation/core.ts +228 -0
  338. package/src/instrumentation/hono.ts +270 -0
  339. package/src/instrumentation/http.ts +306 -0
  340. package/src/instrumentation/index.ts +90 -0
  341. package/src/instrumentation/middleware.ts +297 -0
  342. package/src/instrumentation/otel.ts +271 -0
  343. package/src/instrumentation/setup.ts +246 -0
  344. package/src/instrumentation/tracing.ts +145 -0
  345. package/src/logger/__tests__/console.spec.ts +366 -0
  346. package/src/logger/__tests__/pino.spec.ts +217 -0
  347. package/src/logger/console.ts +230 -0
  348. package/src/logger/pino.ts +201 -0
  349. package/src/metrics/MetricsAggregator.ts +555 -0
  350. package/src/metrics/__tests__/MetricsAggregator.spec.ts +298 -0
  351. package/src/metrics/index.ts +2 -0
  352. package/src/metrics/storage/InMemoryMetricsStorage.ts +380 -0
  353. package/src/metrics/storage/MetricsStorage.ts +74 -0
  354. package/src/metrics/storage/index.ts +3 -0
  355. package/src/metrics/storage/types.ts +243 -0
  356. package/src/otlp/__tests__/receiver.spec.ts +367 -0
  357. package/src/otlp/__tests__/transformer.spec.ts +455 -0
  358. package/src/otlp/hono.ts +120 -0
  359. package/src/otlp/index.ts +22 -0
  360. package/src/otlp/receiver.ts +162 -0
  361. package/src/otlp/transformer.ts +367 -0
  362. package/src/otlp/types.ts +364 -0
  363. package/src/redact.ts +116 -0
  364. package/src/server/__tests__/hono.spec.ts +814 -0
  365. package/src/server/hono.ts +442 -0
  366. package/src/storage/__tests__/kysely.spec.ts +715 -0
  367. package/src/storage/__tests__/memory.spec.ts +694 -0
  368. package/src/storage/kysely.ts +599 -0
  369. package/src/storage/memory.ts +204 -0
  370. package/src/types.ts +447 -0
  371. package/src/ui-assets.ts +40 -0
  372. package/tsconfig.json +9 -0
  373. package/ui/CHANGELOG.md +7 -0
  374. package/ui/index.html +12 -0
  375. package/ui/node_modules/.bin/tsc +21 -0
  376. package/ui/node_modules/.bin/tsserver +21 -0
  377. package/ui/node_modules/.bin/vite +21 -0
  378. package/ui/package.json +24 -0
  379. package/ui/src/App.tsx +595 -0
  380. package/ui/src/api.ts +88 -0
  381. package/ui/src/components/ExceptionDetail.tsx +100 -0
  382. package/ui/src/components/FilterBar.tsx +162 -0
  383. package/ui/src/components/LogDetail.tsx +91 -0
  384. package/ui/src/components/RequestDetail.tsx +143 -0
  385. package/ui/src/main.tsx +10 -0
  386. package/ui/src/styles.css +11 -0
  387. package/ui/src/types.ts +63 -0
  388. package/ui/src/vite-env.d.ts +1 -0
  389. package/ui/src/vite-plugin-gkm-config.ts +54 -0
  390. package/ui/tsconfig.json +20 -0
  391. package/ui/tsconfig.tsbuildinfo +1 -0
  392. package/ui/vite.config.ts +13 -0
  393. package/dist/MetricsAggregator-BJdIvfEv.d.mts.map +0 -1
  394. package/dist/MetricsAggregator-CnC3oT5q.d.cts.map +0 -1
  395. package/dist/Telescope-BVfDvVvY.d.mts.map +0 -1
  396. package/dist/Telescope-DeqSHfuB.d.cts.map +0 -1
  397. package/dist/Telescope.cjs.map +0 -1
  398. package/dist/Telescope.mjs.map +0 -1
  399. package/dist/adapters/middy.cjs.map +0 -1
  400. package/dist/adapters/middy.d.cts.map +0 -1
  401. package/dist/adapters/middy.d.mts.map +0 -1
  402. package/dist/adapters/middy.mjs.map +0 -1
  403. package/dist/adapters/types.d.cts.map +0 -1
  404. package/dist/adapters/types.d.mts.map +0 -1
  405. package/dist/instrumentation/core.cjs.map +0 -1
  406. package/dist/instrumentation/core.d.cts.map +0 -1
  407. package/dist/instrumentation/core.d.mts.map +0 -1
  408. package/dist/instrumentation/core.mjs.map +0 -1
  409. package/dist/instrumentation/hono.cjs.map +0 -1
  410. package/dist/instrumentation/hono.d.cts.map +0 -1
  411. package/dist/instrumentation/hono.d.mts.map +0 -1
  412. package/dist/instrumentation/hono.mjs.map +0 -1
  413. package/dist/instrumentation/http.cjs.map +0 -1
  414. package/dist/instrumentation/http.d.cts.map +0 -1
  415. package/dist/instrumentation/http.d.mts.map +0 -1
  416. package/dist/instrumentation/http.mjs.map +0 -1
  417. package/dist/instrumentation/middleware.cjs.map +0 -1
  418. package/dist/instrumentation/middleware.d.cts.map +0 -1
  419. package/dist/instrumentation/middleware.d.mts.map +0 -1
  420. package/dist/instrumentation/middleware.mjs.map +0 -1
  421. package/dist/instrumentation/otel.cjs.map +0 -1
  422. package/dist/instrumentation/otel.d.cts.map +0 -1
  423. package/dist/instrumentation/otel.d.mts.map +0 -1
  424. package/dist/instrumentation/otel.mjs.map +0 -1
  425. package/dist/instrumentation/sampler.cjs +0 -54
  426. package/dist/instrumentation/sampler.cjs.map +0 -1
  427. package/dist/instrumentation/sampler.d.cts +0 -38
  428. package/dist/instrumentation/sampler.d.cts.map +0 -1
  429. package/dist/instrumentation/sampler.d.mts +0 -38
  430. package/dist/instrumentation/sampler.d.mts.map +0 -1
  431. package/dist/instrumentation/sampler.mjs +0 -52
  432. package/dist/instrumentation/sampler.mjs.map +0 -1
  433. package/dist/instrumentation/setup.cjs.map +0 -1
  434. package/dist/instrumentation/setup.d.cts.map +0 -1
  435. package/dist/instrumentation/setup.d.mts.map +0 -1
  436. package/dist/instrumentation/setup.mjs.map +0 -1
  437. package/dist/instrumentation/tracing.cjs.map +0 -1
  438. package/dist/instrumentation/tracing.d.cts.map +0 -1
  439. package/dist/instrumentation/tracing.d.mts.map +0 -1
  440. package/dist/instrumentation/tracing.mjs.map +0 -1
  441. package/dist/instrumentation/trust.cjs +0 -107
  442. package/dist/instrumentation/trust.cjs.map +0 -1
  443. package/dist/instrumentation/trust.d.cts +0 -57
  444. package/dist/instrumentation/trust.d.cts.map +0 -1
  445. package/dist/instrumentation/trust.d.mts +0 -57
  446. package/dist/instrumentation/trust.d.mts.map +0 -1
  447. package/dist/instrumentation/trust.mjs +0 -104
  448. package/dist/instrumentation/trust.mjs.map +0 -1
  449. package/dist/metrics/MetricsAggregator.cjs.map +0 -1
  450. package/dist/metrics/MetricsAggregator.mjs.map +0 -1
  451. package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +0 -1
  452. package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +0 -1
  453. package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +0 -1
  454. package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +0 -1
  455. package/dist/metrics/storage/MetricsStorage.d.cts.map +0 -1
  456. package/dist/metrics/storage/MetricsStorage.d.mts.map +0 -1
  457. package/dist/metrics/storage/types.cjs.map +0 -1
  458. package/dist/metrics/storage/types.d.cts.map +0 -1
  459. package/dist/metrics/storage/types.d.mts.map +0 -1
  460. package/dist/metrics/storage/types.mjs.map +0 -1
  461. package/dist/otlp/receiver.cjs.map +0 -1
  462. package/dist/otlp/receiver.d.cts.map +0 -1
  463. package/dist/otlp/receiver.d.mts.map +0 -1
  464. package/dist/otlp/receiver.mjs.map +0 -1
  465. package/dist/otlp/transformer.cjs.map +0 -1
  466. package/dist/otlp/transformer.mjs.map +0 -1
  467. package/dist/otlp/types.cjs.map +0 -1
  468. package/dist/otlp/types.mjs.map +0 -1
  469. package/dist/redact.cjs.map +0 -1
  470. package/dist/redact.mjs.map +0 -1
  471. package/dist/storage/memory.cjs.map +0 -1
  472. package/dist/storage/memory.d.cts.map +0 -1
  473. package/dist/storage/memory.d.mts.map +0 -1
  474. package/dist/storage/memory.mjs.map +0 -1
  475. package/dist/transformer-BtqjAs0b.d.cts.map +0 -1
  476. package/dist/transformer-DI6t8-YA.d.mts.map +0 -1
  477. package/dist/types-BVujq4zd.d.cts.map +0 -1
  478. package/dist/types-BVujq4zd.d.mts.map +0 -1
  479. package/dist/types-DVETVdpa.d.cts.map +0 -1
  480. package/dist/types-DVETVdpa.d.mts.map +0 -1
@@ -1,385 +1,5 @@
1
- import { MetricsAggregator } from "./metrics/MetricsAggregator.mjs";
2
- import { createRedactor } from "./redact.mjs";
3
- import { nanoid } from "nanoid";
4
- //#region src/Telescope.ts
5
- /**
6
- * Framework-agnostic Telescope class for debugging and monitoring applications.
7
- * Use framework-specific adapters (e.g., @geekmidas/telescope/hono) for integration.
8
- */
9
- var Telescope = class {
10
- storage;
11
- options;
12
- wsClients = /* @__PURE__ */ new Set();
13
- pruneInterval;
14
- metricsBroadcastInterval;
15
- redactor;
16
- metricsAggregator;
17
- constructor(options) {
18
- this.storage = options.storage;
19
- this.options = this.normalizeOptions(options);
20
- this.redactor = createRedactor(options.redact);
21
- this.metricsAggregator = new MetricsAggregator(options.metrics);
22
- if (this.options.pruneAfterHours) {
23
- const intervalMs = 36e5;
24
- this.pruneInterval = setInterval(() => {
25
- this.autoPrune().catch(console.error);
26
- }, intervalMs);
27
- }
28
- }
29
- /**
30
- * Record a request entry
31
- */
32
- async recordRequest(entry) {
33
- if (!this.options.enabled) return "";
34
- const id = this.options.getRequestId?.() ?? nanoid();
35
- let fullEntry = {
36
- ...entry,
37
- id,
38
- timestamp: /* @__PURE__ */ new Date()
39
- };
40
- if (this.redactor) fullEntry = this.redactor(fullEntry);
41
- this.metricsAggregator.record(fullEntry);
42
- await this.storage.saveRequest(fullEntry);
43
- this.broadcast({
44
- type: "request",
45
- payload: fullEntry,
46
- timestamp: Date.now()
47
- });
48
- return id;
49
- }
50
- /**
51
- * Log entry input for batch operations
52
- */
53
- async saveLogEntries(entries) {
54
- if (this.storage.saveLogs) await this.storage.saveLogs(entries);
55
- else await Promise.all(entries.map((entry) => this.storage.saveLog(entry)));
56
- for (const entry of entries) this.broadcast({
57
- type: "log",
58
- payload: entry,
59
- timestamp: Date.now()
60
- });
61
- }
62
- /**
63
- * Record log entries in batch.
64
- * More efficient than individual calls for database storage.
65
- *
66
- * @example
67
- * await telescope.log([
68
- * { level: 'info', message: 'Request started' },
69
- * { level: 'debug', message: 'Processing...', context: { step: 1 } },
70
- * ]);
71
- */
72
- async log(entries) {
73
- if (!this.options.enabled || entries.length === 0) return;
74
- const timestamp = /* @__PURE__ */ new Date();
75
- const logEntries = entries.map((e) => {
76
- const entry = {
77
- id: nanoid(),
78
- level: e.level,
79
- message: e.message,
80
- context: e.context,
81
- requestId: e.requestId,
82
- timestamp
83
- };
84
- return this.redactor ? this.redactor(entry) : entry;
85
- });
86
- await this.saveLogEntries(logEntries);
87
- }
88
- /**
89
- * Log a debug message
90
- */
91
- async debug(message, context, requestId) {
92
- return this.logSingle("debug", message, context, requestId);
93
- }
94
- /**
95
- * Log an info message
96
- */
97
- async info(message, context, requestId) {
98
- return this.logSingle("info", message, context, requestId);
99
- }
100
- /**
101
- * Log a warning message
102
- */
103
- async warn(message, context, requestId) {
104
- return this.logSingle("warn", message, context, requestId);
105
- }
106
- /**
107
- * Log an error message
108
- */
109
- async error(message, context, requestId) {
110
- return this.logSingle("error", message, context, requestId);
111
- }
112
- async logSingle(level, message, context, requestId) {
113
- if (!this.options.enabled) return;
114
- let entry = {
115
- id: nanoid(),
116
- level,
117
- message,
118
- context,
119
- requestId,
120
- timestamp: /* @__PURE__ */ new Date()
121
- };
122
- if (this.redactor) entry = this.redactor(entry);
123
- await this.storage.saveLog(entry);
124
- this.broadcast({
125
- type: "log",
126
- payload: entry,
127
- timestamp: Date.now()
128
- });
129
- }
130
- /**
131
- * Record an exception
132
- */
133
- async exception(error, requestId) {
134
- if (!this.options.enabled) return;
135
- const stack = this.parseStack(error.stack || "");
136
- const entry = {
137
- id: nanoid(),
138
- name: error.name,
139
- message: error.message,
140
- stack,
141
- requestId,
142
- timestamp: /* @__PURE__ */ new Date(),
143
- handled: false
144
- };
145
- await this.storage.saveException(entry);
146
- this.broadcast({
147
- type: "exception",
148
- payload: entry,
149
- timestamp: Date.now()
150
- });
151
- }
152
- /**
153
- * Get requests from storage
154
- */
155
- async getRequests(options) {
156
- return this.storage.getRequests(options);
157
- }
158
- /**
159
- * Get a single request by ID
160
- */
161
- async getRequest(id) {
162
- return this.storage.getRequest(id);
163
- }
164
- /**
165
- * Get exceptions from storage
166
- */
167
- async getExceptions(options) {
168
- return this.storage.getExceptions(options);
169
- }
170
- /**
171
- * Get a single exception by ID
172
- */
173
- async getException(id) {
174
- return this.storage.getException(id);
175
- }
176
- /**
177
- * Get logs from storage
178
- */
179
- async getLogs(options) {
180
- return this.storage.getLogs(options);
181
- }
182
- /**
183
- * Get storage statistics
184
- */
185
- async getStats() {
186
- return this.storage.getStats();
187
- }
188
- /**
189
- * Get aggregated request metrics
190
- */
191
- getMetrics(options) {
192
- return this.metricsAggregator.getMetrics(options);
193
- }
194
- /**
195
- * Get metrics for individual endpoints
196
- */
197
- getEndpointMetrics(options) {
198
- return this.metricsAggregator.getEndpointMetrics(options);
199
- }
200
- /**
201
- * Get detailed metrics for a specific endpoint
202
- */
203
- getEndpointDetails(method, path, options) {
204
- return this.metricsAggregator.getEndpointDetails(method, path, options);
205
- }
206
- /**
207
- * Get status code distribution
208
- */
209
- getStatusDistribution(options) {
210
- return this.metricsAggregator.getStatusDistribution(options);
211
- }
212
- /**
213
- * Reset metrics data
214
- */
215
- resetMetrics() {
216
- this.metricsAggregator.reset();
217
- }
218
- /**
219
- * Get a real-time metrics snapshot for broadcasting
220
- */
221
- getMetricsSnapshot() {
222
- const metrics = this.metricsAggregator.getMetrics();
223
- const statusDist = this.metricsAggregator.getStatusDistribution();
224
- return {
225
- timestamp: Date.now(),
226
- totalRequests: metrics.totalRequests,
227
- requestsPerSecond: metrics.requestsPerSecond,
228
- avgDuration: metrics.avgDuration,
229
- errorRate: metrics.errorRate,
230
- p50: metrics.p50Duration,
231
- p95: metrics.p95Duration,
232
- p99: metrics.p99Duration,
233
- statusDistribution: statusDist
234
- };
235
- }
236
- /**
237
- * Start broadcasting metrics to WebSocket clients at a given interval.
238
- * Call this after setting up WebSocket to enable real-time metrics updates.
239
- *
240
- * @param intervalMs - Broadcast interval in milliseconds (default: 5000)
241
- */
242
- startMetricsBroadcast(intervalMs = 5e3) {
243
- if (this.metricsBroadcastInterval) return;
244
- this.metricsBroadcastInterval = setInterval(() => {
245
- if (this.wsClients.size > 0) {
246
- const snapshot = this.getMetricsSnapshot();
247
- this.broadcast({
248
- type: "metrics",
249
- payload: snapshot,
250
- timestamp: Date.now()
251
- });
252
- }
253
- }, intervalMs);
254
- }
255
- /**
256
- * Stop broadcasting metrics to WebSocket clients
257
- */
258
- stopMetricsBroadcast() {
259
- if (this.metricsBroadcastInterval) {
260
- clearInterval(this.metricsBroadcastInterval);
261
- this.metricsBroadcastInterval = void 0;
262
- }
263
- }
264
- /**
265
- * Add a WebSocket client for real-time updates
266
- */
267
- addWsClient(ws) {
268
- this.wsClients.add(ws);
269
- this.broadcast({
270
- type: "connected",
271
- payload: { clientCount: this.wsClients.size },
272
- timestamp: Date.now()
273
- });
274
- }
275
- /**
276
- * Remove a WebSocket client
277
- */
278
- removeWsClient(ws) {
279
- this.wsClients.delete(ws);
280
- }
281
- /**
282
- * Broadcast an event to all connected WebSocket clients
283
- */
284
- broadcast(event) {
285
- const data = JSON.stringify(event);
286
- for (const client of this.wsClients) try {
287
- client.send(data);
288
- } catch {
289
- this.wsClients.delete(client);
290
- }
291
- }
292
- /**
293
- * Manually prune old entries
294
- */
295
- async prune(olderThan) {
296
- return this.storage.prune(olderThan);
297
- }
298
- /**
299
- * Clean up resources
300
- */
301
- destroy() {
302
- if (this.pruneInterval) clearInterval(this.pruneInterval);
303
- this.stopMetricsBroadcast();
304
- this.wsClients.clear();
305
- }
306
- /**
307
- * Get the telescope path
308
- */
309
- get path() {
310
- return this.options.path;
311
- }
312
- /**
313
- * Check if telescope is enabled
314
- */
315
- get enabled() {
316
- return this.options.enabled;
317
- }
318
- /**
319
- * Check if body recording is enabled
320
- */
321
- get recordBody() {
322
- return this.options.recordBody;
323
- }
324
- /**
325
- * Get max body size
326
- */
327
- get maxBodySize() {
328
- return this.options.maxBodySize;
329
- }
330
- /**
331
- * Check if a path should be ignored
332
- */
333
- shouldIgnore(path) {
334
- if (path.startsWith(this.options.path)) return true;
335
- return this.options.ignorePatterns.some((pattern) => {
336
- if (pattern.includes("*")) return new RegExp(`^${pattern.replace(/\*/g, ".*").replace(/\?/g, ".")}$`).test(path);
337
- return path.startsWith(pattern);
338
- });
339
- }
340
- normalizeOptions(options) {
341
- return {
342
- storage: options.storage,
343
- enabled: options.enabled ?? true,
344
- path: options.path ?? "/__telescope",
345
- recordBody: options.recordBody ?? true,
346
- maxBodySize: options.maxBodySize ?? 65536,
347
- ignorePatterns: options.ignorePatterns ?? [],
348
- pruneAfterHours: options.pruneAfterHours,
349
- getRequestId: options.getRequestId
350
- };
351
- }
352
- parseStack(stack) {
353
- const lines = stack.split("\n").slice(1);
354
- const frames = [];
355
- for (const line of lines) {
356
- const match = line.match(/at\s+(.+?)\s+\((.+):(\d+):(\d+)\)/) || line.match(/at\s+(.+):(\d+):(\d+)/);
357
- if (match) {
358
- if (match.length === 5 && match[1] && match[2] && match[3] && match[4]) frames.push({
359
- function: match[1],
360
- file: match[2],
361
- line: parseInt(match[3], 10),
362
- column: parseInt(match[4], 10),
363
- isApp: !match[2].includes("node_modules")
364
- });
365
- else if (match.length === 4 && match[1] && match[2] && match[3]) frames.push({
366
- function: "<anonymous>",
367
- file: match[1],
368
- line: parseInt(match[2], 10),
369
- column: parseInt(match[3], 10),
370
- isApp: !match[1].includes("node_modules")
371
- });
372
- }
373
- }
374
- return frames;
375
- }
376
- async autoPrune() {
377
- if (!this.options.pruneAfterHours) return;
378
- const olderThan = /* @__PURE__ */ new Date(Date.now() - this.options.pruneAfterHours * 60 * 60 * 1e3);
379
- await this.storage.prune(olderThan);
380
- }
381
- };
382
- //#endregion
383
- export { Telescope };
1
+ import "./MetricsAggregator-S3DQWNas.mjs";
2
+ import "./redact-BzkITCNW.mjs";
3
+ import { Telescope } from "./Telescope-Dh5av3FC.mjs";
384
4
 
385
- //# sourceMappingURL=Telescope.mjs.map
5
+ export { Telescope };
@@ -1,2 +1,2 @@
1
- import { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables } from "./types.cjs";
2
- export type { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables };
1
+ import { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables } from "../types-BRzW1NM8.cjs";
2
+ export { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables };
@@ -1,2 +1,2 @@
1
- import { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables } from "./types.mjs";
2
- export type { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables };
1
+ import { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables } from "../types-BzQ78Efw.mjs";
2
+ export { AdapterConfig, AdapterErrorContext, AdapterLifecycle, AdapterRequestContext, AdapterResponseContext, HonoAdapterConfig, HonoContextWithTelescope, LambdaAdapterConfig, SpanProcessorOptions, SpanProcessorStrategy, TelescopeAdapter, TelescopeEnvironment, TelescopeHonoContext, TelescopeHonoVariables };
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +1,8 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_instrumentation_core = require("../instrumentation/core.cjs");
3
- const require_adapters_middy = require("./middy.cjs");
4
- let nanoid = require("nanoid");
1
+ const require_chunk = require('../chunk-CUT6urMc.cjs');
2
+ const require_core = require('../core-CtVHRJGv.cjs');
3
+ const require_middy = require('../middy-y5Zp27eG.cjs');
4
+ const nanoid = require_chunk.__toESM(require("nanoid"));
5
+
5
6
  //#region src/adapters/lambda.ts
6
7
  /**
7
8
  * Detect Lambda resource attributes from environment
@@ -62,7 +63,7 @@ var LambdaAdapter = class {
62
63
  globalLambdaState.initialized = true;
63
64
  }
64
65
  async onDestroy() {
65
- await require_instrumentation_core.flushTelemetry();
66
+ await require_core.flushTelemetry();
66
67
  }
67
68
  /**
68
69
  * Extract request context from API Gateway event
@@ -154,7 +155,7 @@ var LambdaAdapter = class {
154
155
  * Flush telemetry data before Lambda context freezes
155
156
  */
156
157
  async flush() {
157
- await require_instrumentation_core.flushTelemetry();
158
+ await require_core.flushTelemetry();
158
159
  }
159
160
  /**
160
161
  * Get resource attributes for the Lambda function
@@ -235,12 +236,12 @@ function parseBody(body, isBase64Encoded) {
235
236
  return body;
236
237
  }
237
238
  }
239
+
238
240
  //#endregion
239
241
  exports.LambdaAdapter = LambdaAdapter;
240
- exports.createTelescopeHandler = require_adapters_middy.createTelescopeHandler;
242
+ exports.createTelescopeHandler = require_middy.createTelescopeHandler;
241
243
  exports.detectLambdaResources = detectLambdaResources;
242
244
  exports.extractLambdaInvocationContext = extractLambdaInvocationContext;
243
- exports.telescopeMiddleware = require_adapters_middy.telescopeMiddleware;
245
+ exports.telescopeMiddleware = require_middy.telescopeMiddleware;
244
246
  exports.wrapLambdaHandler = wrapLambdaHandler;
245
-
246
247
  //# sourceMappingURL=lambda.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lambda.cjs","names":["flushTelemetry"],"sources":["../../src/adapters/lambda.ts"],"sourcesContent":["import type { Context as LambdaContext } from 'aws-lambda';\nimport { nanoid } from 'nanoid';\nimport { flushTelemetry } from '../instrumentation/core';\nimport type { Telescope } from '../Telescope';\nimport type {\n\tAdapterRequestContext,\n\tAdapterResponseContext,\n\tLambdaAdapterConfig,\n\tTelescopeAdapter,\n} from './types';\n\n// Re-export Middy middleware for convenience\nexport {\n\tcreateTelescopeHandler,\n\ttype TelescopeMiddlewareOptions,\n\ttelescopeMiddleware,\n} from './middy';\n\n/**\n * Lambda resource attributes detected from environment\n */\nexport interface LambdaResourceAttributes {\n\t'cloud.provider': 'aws';\n\t'cloud.region': string;\n\t'faas.name': string;\n\t'faas.version': string;\n\t'faas.instance': string;\n\t'faas.max_memory': number;\n\t[key: string]: string | number;\n}\n\n/**\n * Detect Lambda resource attributes from environment\n */\nexport function detectLambdaResources(): LambdaResourceAttributes {\n\treturn {\n\t\t'cloud.provider': 'aws',\n\t\t'cloud.region': process.env.AWS_REGION || 'unknown',\n\t\t'faas.name': process.env.AWS_LAMBDA_FUNCTION_NAME || 'unknown',\n\t\t'faas.version': process.env.AWS_LAMBDA_FUNCTION_VERSION || 'unknown',\n\t\t'faas.instance': process.env.AWS_LAMBDA_LOG_STREAM_NAME || 'unknown',\n\t\t'faas.max_memory': parseInt(\n\t\t\tprocess.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '128',\n\t\t\t10,\n\t\t),\n\t};\n}\n\n/**\n * Extract invocation context from Lambda event\n */\nexport function extractLambdaInvocationContext(\n\t_event: unknown,\n\tcontext: LambdaContext,\n): {\n\trequestId: string;\n\tcoldStart: boolean;\n\tremainingTimeMs: number;\n\tmemoryLimitMB: number;\n\tfunctionName: string;\n\tfunctionVersion: string;\n} {\n\treturn {\n\t\trequestId: context.awsRequestId,\n\t\tcoldStart: !globalLambdaState.initialized,\n\t\tremainingTimeMs: context.getRemainingTimeInMillis(),\n\t\tmemoryLimitMB: parseInt(String(context.memoryLimitInMB), 10),\n\t\tfunctionName: context.functionName,\n\t\tfunctionVersion: context.functionVersion,\n\t};\n}\n\n/**\n * Global state to track Lambda cold starts\n */\nconst globalLambdaState = {\n\tinitialized: false,\n};\n\n/**\n * Default Lambda adapter configuration\n */\nconst DEFAULT_LAMBDA_CONFIG: LambdaAdapterConfig = {\n\tenvironment: 'lambda',\n\tspanProcessor: {\n\t\tstrategy: 'simple', // Always use simple for Lambda\n\t},\n\tautoFlush: true,\n\tdetectResource: true,\n};\n\n/**\n * Lambda adapter for Telescope.\n * Provides Lambda-specific request/response handling with auto-flush.\n */\nexport class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {\n\treadonly config: LambdaAdapterConfig;\n\treadonly telescope: Telescope;\n\tprivate resourceAttributes: LambdaResourceAttributes | null = null;\n\n\tconstructor(telescope: Telescope, config: Partial<LambdaAdapterConfig> = {}) {\n\t\tthis.telescope = telescope;\n\t\tthis.config = { ...DEFAULT_LAMBDA_CONFIG, ...config };\n\t}\n\n\tasync onSetup(): Promise<void> {\n\t\tif (this.config.detectResource) {\n\t\t\tthis.resourceAttributes = detectLambdaResources();\n\t\t}\n\t\tglobalLambdaState.initialized = true;\n\t}\n\n\tasync onDestroy(): Promise<void> {\n\t\tawait flushTelemetry();\n\t}\n\n\t/**\n\t * Extract request context from API Gateway event\n\t */\n\textractRequestContext(event: unknown): AdapterRequestContext {\n\t\t// Handle API Gateway v1 (REST API)\n\t\tif (isApiGatewayV1Event(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: event.requestContext?.requestId || nanoid(),\n\t\t\t\tmethod: event.httpMethod || 'UNKNOWN',\n\t\t\t\tpath: event.path || '/',\n\t\t\t\turl: event.path || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip:\n\t\t\t\t\tevent.requestContext?.identity?.sourceIp ||\n\t\t\t\t\tevent.headers?.['X-Forwarded-For']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Handle API Gateway v2 (HTTP API)\n\t\tif (isApiGatewayV2Event(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: event.requestContext?.requestId || nanoid(),\n\t\t\t\tmethod: event.requestContext?.http?.method || 'UNKNOWN',\n\t\t\t\tpath: event.rawPath || '/',\n\t\t\t\turl: event.rawPath || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip:\n\t\t\t\t\tevent.requestContext?.http?.sourceIp ||\n\t\t\t\t\tevent.headers?.['x-forwarded-for']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Handle ALB event\n\t\tif (isAlbEvent(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: nanoid(),\n\t\t\t\tmethod: event.httpMethod || 'UNKNOWN',\n\t\t\t\tpath: event.path || '/',\n\t\t\t\turl: event.path || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip: event.headers?.['x-forwarded-for']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Generic Lambda invocation (not HTTP)\n\t\treturn {\n\t\t\tid: nanoid(),\n\t\t\tmethod: 'INVOKE',\n\t\t\tpath: '/',\n\t\t\turl: '/',\n\t\t\theaders: {},\n\t\t\tquery: {},\n\t\t\tbody: event,\n\t\t\tstartTime: Date.now(),\n\t\t};\n\t}\n\n\t/**\n\t * Extract response context from Lambda response\n\t */\n\textractResponseContext(\n\t\tresponse: unknown,\n\t\tstartTime: number,\n\t): AdapterResponseContext {\n\t\tconst duration = Date.now() - startTime;\n\n\t\t// API Gateway response format\n\t\tif (isApiGatewayResponse(response)) {\n\t\t\tconst headers = normalizeHeaders(response.headers || {});\n\t\t\t// Prefer Content-Length header, fallback to body size\n\t\t\tconst responseSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: typeof response.body === 'string'\n\t\t\t\t\t? Buffer.byteLength(response.body, 'utf8')\n\t\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tstatus: response.statusCode || 200,\n\t\t\t\theaders,\n\t\t\t\tbody: response.body,\n\t\t\t\tduration,\n\t\t\t\tresponseSize,\n\t\t\t};\n\t\t}\n\n\t\t// Generic response\n\t\treturn {\n\t\t\tstatus: 200,\n\t\t\theaders: {},\n\t\t\tbody: response,\n\t\t\tduration,\n\t\t};\n\t}\n\n\t/**\n\t * Flush telemetry data before Lambda context freezes\n\t */\n\tasync flush(): Promise<void> {\n\t\tawait flushTelemetry();\n\t}\n\n\t/**\n\t * Get resource attributes for the Lambda function\n\t */\n\tgetResourceAttributes(): LambdaResourceAttributes | null {\n\t\treturn this.resourceAttributes;\n\t}\n}\n\n/**\n * Wrap a Lambda handler to automatically record requests and flush telemetry.\n *\n * @example\n * ```typescript\n * import { wrapLambdaHandler } from '@geekmidas/telescope/adapters/lambda';\n *\n * const telescope = new Telescope({ storage: new InMemoryStorage() });\n *\n * export const handler = wrapLambdaHandler(telescope, async (event, context) => {\n * // Your Lambda logic here\n * return { statusCode: 200, body: JSON.stringify({ success: true }) };\n * });\n * ```\n */\nexport function wrapLambdaHandler<TEvent, TResult>(\n\ttelescope: Telescope,\n\thandler: (event: TEvent, context: LambdaContext) => Promise<TResult>,\n\toptions: Partial<LambdaAdapterConfig> = {},\n): (event: TEvent, context: LambdaContext) => Promise<TResult> {\n\tconst adapter = new LambdaAdapter(telescope, options);\n\n\treturn async (event: TEvent, context: LambdaContext): Promise<TResult> => {\n\t\tconst requestContext = adapter.extractRequestContext(event);\n\n\t\ttry {\n\t\t\tconst result = await handler(event, context);\n\n\t\t\t// Record the request\n\t\t\tconst responseContext = adapter.extractResponseContext(\n\t\t\t\tresult,\n\t\t\t\trequestContext.startTime,\n\t\t\t);\n\n\t\t\tawait telescope.recordRequest({\n\t\t\t\tmethod: requestContext.method,\n\t\t\t\tpath: requestContext.path,\n\t\t\t\turl: requestContext.url,\n\t\t\t\theaders: requestContext.headers,\n\t\t\t\tquery: requestContext.query,\n\t\t\t\tbody: requestContext.body,\n\t\t\t\tip: requestContext.ip,\n\t\t\t\tstatus: responseContext.status,\n\t\t\t\tresponseHeaders: responseContext.headers,\n\t\t\t\tresponseBody: responseContext.body,\n\t\t\t\tduration: responseContext.duration,\n\t\t\t\trequestSize: requestContext.requestSize,\n\t\t\t\tresponseSize: responseContext.responseSize,\n\t\t\t});\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\t// Record the exception\n\t\t\tif (error instanceof Error) {\n\t\t\t\tawait telescope.exception(error, requestContext.id);\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\t// Always flush before Lambda freezes\n\t\t\tif (options.autoFlush !== false) {\n\t\t\t\tawait adapter.flush();\n\t\t\t}\n\t\t}\n\t};\n}\n\n// ============================================\n// Type Guards and Helpers\n// ============================================\n\ninterface ApiGatewayV1Event {\n\thttpMethod?: string;\n\tpath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n\trequestContext?: {\n\t\trequestId?: string;\n\t\tidentity?: {\n\t\t\tsourceIp?: string;\n\t\t};\n\t};\n}\n\ninterface ApiGatewayV2Event {\n\trawPath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n\trequestContext?: {\n\t\trequestId?: string;\n\t\thttp?: {\n\t\t\tmethod?: string;\n\t\t\tsourceIp?: string;\n\t\t};\n\t};\n}\n\ninterface AlbEvent {\n\thttpMethod?: string;\n\tpath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n}\n\ninterface ApiGatewayResponse {\n\tstatusCode?: number;\n\theaders?: Record<string, string | undefined>;\n\tbody?: unknown;\n}\n\nfunction isApiGatewayV1Event(event: unknown): event is ApiGatewayV1Event {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'httpMethod' in event &&\n\t\t'path' in event\n\t);\n}\n\nfunction isApiGatewayV2Event(event: unknown): event is ApiGatewayV2Event {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'rawPath' in event &&\n\t\t'requestContext' in event &&\n\t\ttypeof (event as ApiGatewayV2Event).requestContext === 'object' &&\n\t\t'http' in ((event as ApiGatewayV2Event).requestContext || {})\n\t);\n}\n\nfunction isAlbEvent(event: unknown): event is AlbEvent {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'httpMethod' in event &&\n\t\t!('requestContext' in event)\n\t);\n}\n\nfunction isApiGatewayResponse(\n\tresponse: unknown,\n): response is ApiGatewayResponse {\n\treturn (\n\t\ttypeof response === 'object' &&\n\t\tresponse !== null &&\n\t\t'statusCode' in response\n\t);\n}\n\nfunction normalizeHeaders(\n\theaders: Record<string, string | undefined>,\n): Record<string, string> {\n\tconst normalized: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (value !== undefined) {\n\t\t\tnormalized[key.toLowerCase()] = value;\n\t\t}\n\t}\n\treturn normalized;\n}\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\n\t\t// Try to parse as JSON\n\t\treturn JSON.parse(decoded);\n\t} catch {\n\t\t// Return raw string if not JSON\n\t\treturn body;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"lambda.cjs","names":["_event: unknown","context: LambdaContext","DEFAULT_LAMBDA_CONFIG: LambdaAdapterConfig","telescope: Telescope","config: Partial<LambdaAdapterConfig>","event: unknown","response: unknown","startTime: number","handler: (event: TEvent, context: LambdaContext) => Promise<TResult>","options: Partial<LambdaAdapterConfig>","event: TEvent","headers: Record<string, string | undefined>","normalized: Record<string, string>","body: string | null | undefined","isBase64Encoded?: boolean"],"sources":["../../src/adapters/lambda.ts"],"sourcesContent":["import type { Context as LambdaContext } from 'aws-lambda';\nimport { nanoid } from 'nanoid';\nimport { flushTelemetry } from '../instrumentation/core';\nimport type { Telescope } from '../Telescope';\nimport type {\n\tAdapterRequestContext,\n\tAdapterResponseContext,\n\tLambdaAdapterConfig,\n\tTelescopeAdapter,\n} from './types';\n\n// Re-export Middy middleware for convenience\nexport {\n\tcreateTelescopeHandler,\n\ttype TelescopeMiddlewareOptions,\n\ttelescopeMiddleware,\n} from './middy';\n\n/**\n * Lambda resource attributes detected from environment\n */\nexport interface LambdaResourceAttributes {\n\t'cloud.provider': 'aws';\n\t'cloud.region': string;\n\t'faas.name': string;\n\t'faas.version': string;\n\t'faas.instance': string;\n\t'faas.max_memory': number;\n\t[key: string]: string | number;\n}\n\n/**\n * Detect Lambda resource attributes from environment\n */\nexport function detectLambdaResources(): LambdaResourceAttributes {\n\treturn {\n\t\t'cloud.provider': 'aws',\n\t\t'cloud.region': process.env.AWS_REGION || 'unknown',\n\t\t'faas.name': process.env.AWS_LAMBDA_FUNCTION_NAME || 'unknown',\n\t\t'faas.version': process.env.AWS_LAMBDA_FUNCTION_VERSION || 'unknown',\n\t\t'faas.instance': process.env.AWS_LAMBDA_LOG_STREAM_NAME || 'unknown',\n\t\t'faas.max_memory': parseInt(\n\t\t\tprocess.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '128',\n\t\t\t10,\n\t\t),\n\t};\n}\n\n/**\n * Extract invocation context from Lambda event\n */\nexport function extractLambdaInvocationContext(\n\t_event: unknown,\n\tcontext: LambdaContext,\n): {\n\trequestId: string;\n\tcoldStart: boolean;\n\tremainingTimeMs: number;\n\tmemoryLimitMB: number;\n\tfunctionName: string;\n\tfunctionVersion: string;\n} {\n\treturn {\n\t\trequestId: context.awsRequestId,\n\t\tcoldStart: !globalLambdaState.initialized,\n\t\tremainingTimeMs: context.getRemainingTimeInMillis(),\n\t\tmemoryLimitMB: parseInt(String(context.memoryLimitInMB), 10),\n\t\tfunctionName: context.functionName,\n\t\tfunctionVersion: context.functionVersion,\n\t};\n}\n\n/**\n * Global state to track Lambda cold starts\n */\nconst globalLambdaState = {\n\tinitialized: false,\n};\n\n/**\n * Default Lambda adapter configuration\n */\nconst DEFAULT_LAMBDA_CONFIG: LambdaAdapterConfig = {\n\tenvironment: 'lambda',\n\tspanProcessor: {\n\t\tstrategy: 'simple', // Always use simple for Lambda\n\t},\n\tautoFlush: true,\n\tdetectResource: true,\n};\n\n/**\n * Lambda adapter for Telescope.\n * Provides Lambda-specific request/response handling with auto-flush.\n */\nexport class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {\n\treadonly config: LambdaAdapterConfig;\n\treadonly telescope: Telescope;\n\tprivate resourceAttributes: LambdaResourceAttributes | null = null;\n\n\tconstructor(telescope: Telescope, config: Partial<LambdaAdapterConfig> = {}) {\n\t\tthis.telescope = telescope;\n\t\tthis.config = { ...DEFAULT_LAMBDA_CONFIG, ...config };\n\t}\n\n\tasync onSetup(): Promise<void> {\n\t\tif (this.config.detectResource) {\n\t\t\tthis.resourceAttributes = detectLambdaResources();\n\t\t}\n\t\tglobalLambdaState.initialized = true;\n\t}\n\n\tasync onDestroy(): Promise<void> {\n\t\tawait flushTelemetry();\n\t}\n\n\t/**\n\t * Extract request context from API Gateway event\n\t */\n\textractRequestContext(event: unknown): AdapterRequestContext {\n\t\t// Handle API Gateway v1 (REST API)\n\t\tif (isApiGatewayV1Event(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: event.requestContext?.requestId || nanoid(),\n\t\t\t\tmethod: event.httpMethod || 'UNKNOWN',\n\t\t\t\tpath: event.path || '/',\n\t\t\t\turl: event.path || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip:\n\t\t\t\t\tevent.requestContext?.identity?.sourceIp ||\n\t\t\t\t\tevent.headers?.['X-Forwarded-For']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Handle API Gateway v2 (HTTP API)\n\t\tif (isApiGatewayV2Event(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: event.requestContext?.requestId || nanoid(),\n\t\t\t\tmethod: event.requestContext?.http?.method || 'UNKNOWN',\n\t\t\t\tpath: event.rawPath || '/',\n\t\t\t\turl: event.rawPath || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip:\n\t\t\t\t\tevent.requestContext?.http?.sourceIp ||\n\t\t\t\t\tevent.headers?.['x-forwarded-for']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Handle ALB event\n\t\tif (isAlbEvent(event)) {\n\t\t\tconst headers = normalizeHeaders(event.headers || {});\n\t\t\tconst requestSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tid: nanoid(),\n\t\t\t\tmethod: event.httpMethod || 'UNKNOWN',\n\t\t\t\tpath: event.path || '/',\n\t\t\t\turl: event.path || '/',\n\t\t\t\theaders,\n\t\t\t\tquery: event.queryStringParameters || {},\n\t\t\t\tbody: parseBody(event.body, event.isBase64Encoded),\n\t\t\t\tip: event.headers?.['x-forwarded-for']?.split(',')[0],\n\t\t\t\tstartTime: Date.now(),\n\t\t\t\trequestSize,\n\t\t\t};\n\t\t}\n\n\t\t// Generic Lambda invocation (not HTTP)\n\t\treturn {\n\t\t\tid: nanoid(),\n\t\t\tmethod: 'INVOKE',\n\t\t\tpath: '/',\n\t\t\turl: '/',\n\t\t\theaders: {},\n\t\t\tquery: {},\n\t\t\tbody: event,\n\t\t\tstartTime: Date.now(),\n\t\t};\n\t}\n\n\t/**\n\t * Extract response context from Lambda response\n\t */\n\textractResponseContext(\n\t\tresponse: unknown,\n\t\tstartTime: number,\n\t): AdapterResponseContext {\n\t\tconst duration = Date.now() - startTime;\n\n\t\t// API Gateway response format\n\t\tif (isApiGatewayResponse(response)) {\n\t\t\tconst headers = normalizeHeaders(response.headers || {});\n\t\t\t// Prefer Content-Length header, fallback to body size\n\t\t\tconst responseSize = headers['content-length']\n\t\t\t\t? parseInt(headers['content-length'], 10)\n\t\t\t\t: typeof response.body === 'string'\n\t\t\t\t\t? Buffer.byteLength(response.body, 'utf8')\n\t\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\tstatus: response.statusCode || 200,\n\t\t\t\theaders,\n\t\t\t\tbody: response.body,\n\t\t\t\tduration,\n\t\t\t\tresponseSize,\n\t\t\t};\n\t\t}\n\n\t\t// Generic response\n\t\treturn {\n\t\t\tstatus: 200,\n\t\t\theaders: {},\n\t\t\tbody: response,\n\t\t\tduration,\n\t\t};\n\t}\n\n\t/**\n\t * Flush telemetry data before Lambda context freezes\n\t */\n\tasync flush(): Promise<void> {\n\t\tawait flushTelemetry();\n\t}\n\n\t/**\n\t * Get resource attributes for the Lambda function\n\t */\n\tgetResourceAttributes(): LambdaResourceAttributes | null {\n\t\treturn this.resourceAttributes;\n\t}\n}\n\n/**\n * Wrap a Lambda handler to automatically record requests and flush telemetry.\n *\n * @example\n * ```typescript\n * import { wrapLambdaHandler } from '@geekmidas/telescope/adapters/lambda';\n *\n * const telescope = new Telescope({ storage: new InMemoryStorage() });\n *\n * export const handler = wrapLambdaHandler(telescope, async (event, context) => {\n * // Your Lambda logic here\n * return { statusCode: 200, body: JSON.stringify({ success: true }) };\n * });\n * ```\n */\nexport function wrapLambdaHandler<TEvent, TResult>(\n\ttelescope: Telescope,\n\thandler: (event: TEvent, context: LambdaContext) => Promise<TResult>,\n\toptions: Partial<LambdaAdapterConfig> = {},\n): (event: TEvent, context: LambdaContext) => Promise<TResult> {\n\tconst adapter = new LambdaAdapter(telescope, options);\n\n\treturn async (event: TEvent, context: LambdaContext): Promise<TResult> => {\n\t\tconst requestContext = adapter.extractRequestContext(event);\n\n\t\ttry {\n\t\t\tconst result = await handler(event, context);\n\n\t\t\t// Record the request\n\t\t\tconst responseContext = adapter.extractResponseContext(\n\t\t\t\tresult,\n\t\t\t\trequestContext.startTime,\n\t\t\t);\n\n\t\t\tawait telescope.recordRequest({\n\t\t\t\tmethod: requestContext.method,\n\t\t\t\tpath: requestContext.path,\n\t\t\t\turl: requestContext.url,\n\t\t\t\theaders: requestContext.headers,\n\t\t\t\tquery: requestContext.query,\n\t\t\t\tbody: requestContext.body,\n\t\t\t\tip: requestContext.ip,\n\t\t\t\tstatus: responseContext.status,\n\t\t\t\tresponseHeaders: responseContext.headers,\n\t\t\t\tresponseBody: responseContext.body,\n\t\t\t\tduration: responseContext.duration,\n\t\t\t\trequestSize: requestContext.requestSize,\n\t\t\t\tresponseSize: responseContext.responseSize,\n\t\t\t});\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\t// Record the exception\n\t\t\tif (error instanceof Error) {\n\t\t\t\tawait telescope.exception(error, requestContext.id);\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\t// Always flush before Lambda freezes\n\t\t\tif (options.autoFlush !== false) {\n\t\t\t\tawait adapter.flush();\n\t\t\t}\n\t\t}\n\t};\n}\n\n// ============================================\n// Type Guards and Helpers\n// ============================================\n\ninterface ApiGatewayV1Event {\n\thttpMethod?: string;\n\tpath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n\trequestContext?: {\n\t\trequestId?: string;\n\t\tidentity?: {\n\t\t\tsourceIp?: string;\n\t\t};\n\t};\n}\n\ninterface ApiGatewayV2Event {\n\trawPath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n\trequestContext?: {\n\t\trequestId?: string;\n\t\thttp?: {\n\t\t\tmethod?: string;\n\t\t\tsourceIp?: string;\n\t\t};\n\t};\n}\n\ninterface AlbEvent {\n\thttpMethod?: string;\n\tpath?: string;\n\theaders?: Record<string, string | undefined>;\n\tqueryStringParameters?: Record<string, string>;\n\tbody?: string | null;\n\tisBase64Encoded?: boolean;\n}\n\ninterface ApiGatewayResponse {\n\tstatusCode?: number;\n\theaders?: Record<string, string | undefined>;\n\tbody?: unknown;\n}\n\nfunction isApiGatewayV1Event(event: unknown): event is ApiGatewayV1Event {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'httpMethod' in event &&\n\t\t'path' in event\n\t);\n}\n\nfunction isApiGatewayV2Event(event: unknown): event is ApiGatewayV2Event {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'rawPath' in event &&\n\t\t'requestContext' in event &&\n\t\ttypeof (event as ApiGatewayV2Event).requestContext === 'object' &&\n\t\t'http' in ((event as ApiGatewayV2Event).requestContext || {})\n\t);\n}\n\nfunction isAlbEvent(event: unknown): event is AlbEvent {\n\treturn (\n\t\ttypeof event === 'object' &&\n\t\tevent !== null &&\n\t\t'httpMethod' in event &&\n\t\t!('requestContext' in event)\n\t);\n}\n\nfunction isApiGatewayResponse(\n\tresponse: unknown,\n): response is ApiGatewayResponse {\n\treturn (\n\t\ttypeof response === 'object' &&\n\t\tresponse !== null &&\n\t\t'statusCode' in response\n\t);\n}\n\nfunction normalizeHeaders(\n\theaders: Record<string, string | undefined>,\n): Record<string, string> {\n\tconst normalized: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tif (value !== undefined) {\n\t\t\tnormalized[key.toLowerCase()] = value;\n\t\t}\n\t}\n\treturn normalized;\n}\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\n\t\t// Try to parse as JSON\n\t\treturn JSON.parse(decoded);\n\t} catch {\n\t\t// Return raw string if not JSON\n\t\treturn body;\n\t}\n}\n"],"mappings":"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"}
@@ -1,12 +1,15 @@
1
- import { t as Telescope } from "../Telescope-DeqSHfuB.cjs";
2
- import { AdapterRequestContext, AdapterResponseContext, LambdaAdapterConfig, TelescopeAdapter } from "./types.cjs";
3
- import { TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware } from "./middy.cjs";
1
+ import "../types-l7Rlb5Mg.cjs";
2
+ import "../MetricsAggregator-4SqelGcG.cjs";
3
+ import { Telescope } from "../Telescope-D4nmwDRA.cjs";
4
+ import { AdapterRequestContext, AdapterResponseContext, LambdaAdapterConfig, TelescopeAdapter } from "../types-BRzW1NM8.cjs";
5
+ import { TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware } from "../middy-Bq0defVg.cjs";
4
6
  import { Context } from "aws-lambda";
7
+
5
8
  //#region src/adapters/lambda.d.ts
6
9
  /**
7
10
  * Lambda resource attributes detected from environment
8
11
  */
9
- export interface LambdaResourceAttributes {
12
+ interface LambdaResourceAttributes {
10
13
  'cloud.provider': 'aws';
11
14
  'cloud.region': string;
12
15
  'faas.name': string;
@@ -18,11 +21,11 @@ export interface LambdaResourceAttributes {
18
21
  /**
19
22
  * Detect Lambda resource attributes from environment
20
23
  */
21
- export declare function detectLambdaResources(): LambdaResourceAttributes;
24
+ declare function detectLambdaResources(): LambdaResourceAttributes;
22
25
  /**
23
26
  * Extract invocation context from Lambda event
24
27
  */
25
- export declare function extractLambdaInvocationContext(_event: unknown, context: Context): {
28
+ declare function extractLambdaInvocationContext(_event: unknown, context: Context): {
26
29
  requestId: string;
27
30
  coldStart: boolean;
28
31
  remainingTimeMs: number;
@@ -34,7 +37,7 @@ export declare function extractLambdaInvocationContext(_event: unknown, context:
34
37
  * Lambda adapter for Telescope.
35
38
  * Provides Lambda-specific request/response handling with auto-flush.
36
39
  */
37
- export declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {
40
+ declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {
38
41
  readonly config: LambdaAdapterConfig;
39
42
  readonly telescope: Telescope;
40
43
  private resourceAttributes;
@@ -73,7 +76,8 @@ export declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConf
73
76
  * });
74
77
  * ```
75
78
  */
76
- export declare function wrapLambdaHandler<TEvent, TResult>(telescope: Telescope, handler: (event: TEvent, context: Context) => Promise<TResult>, options?: Partial<LambdaAdapterConfig>): (event: TEvent, context: Context) => Promise<TResult>;
79
+ declare function wrapLambdaHandler<TEvent, TResult>(telescope: Telescope, handler: (event: TEvent, context: Context) => Promise<TResult>, options?: Partial<LambdaAdapterConfig>): (event: TEvent, context: Context) => Promise<TResult>;
80
+ //# sourceMappingURL=lambda.d.ts.map
77
81
  //#endregion
78
- export { type TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware };
82
+ export { LambdaAdapter, LambdaResourceAttributes, TelescopeMiddlewareOptions, createTelescopeHandler, detectLambdaResources, extractLambdaInvocationContext, telescopeMiddleware, wrapLambdaHandler };
79
83
  //# sourceMappingURL=lambda.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lambda.d.cts","names":["LambdaContext"],"sources":["../../src/adapters/lambda.ts"],"mappings":";;;;;;;;iBAqBiB;EAChB;EACA;EACA;EACA;EACA;EACA;GACC;;;;;wBAMc,yBAAyB;;;;wBAiBzB,+BACf,iBACA,SAASA;EAET;EACA;EACA;EACA;EACA;EACA;;;;;;qBAmCY,yBAAyB,iBAAiB;WAC7C,QAAQ;WACR,WAAW;UACZ;EAER,YAAY,WAAW,WAAW,SAAQ,QAAQ;EAK5C,WAAW;EAOX,aAAa;;;;EAOnB,sBAAsB,iBAAiB;;;;EAiFvC,uBACC,mBACA,oBACE;;;;EAiCG,SAAS;;;;EAOf,yBAAyB;;;;;;;;;;;;;;;;;wBAoBV,kBAAkB,QAAQ,SACzC,WAAW,WACX,UAAU,OAAO,QAAQ,SAASA,YAAkB,QAAQ,UAC5D,UAAS,QAAQ,wBACd,OAAO,QAAQ,SAASA,YAAkB,QAAQ"}
1
+ {"version":3,"file":"lambda.d.cts","names":[],"sources":["../../src/adapters/lambda.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;UAqBiB,wBAAA;EAAA,gBAAA,EAAA,KAAA;EAaD,cAAA,EAAA,MAAA;EAiBA,WAAA,EAAA,MAAA;EA4CH,cAAA,EAAc,MAAA;EAAA,eAAA,EAAA,MAAA;EAAA,iBAA4B,EAAA,MAAA;EAAmB,CAAA,GACxD,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;;;;;AASA,iBAvEF,qBAAA,CAAA,CAuEE,EAvEuB,wBAuEvB;;;;AAmIF,iBAzLA,8BAAA,CAyLA,MAAA,EAAA,OAAA,EAAA,OAAA,EAvLN,OAuLM,CAAA,EAAA;EAAO,SAOG,EAAA,MAAA;EAAwB,SApJZ,EAAA,OAAA;EAAgB,eAAA,EAAA,MAAA;EAwKtC,aAAA,EAAA,MAAiB;EAAA,YAAA,EAAA,MAAA;EAAA,eACrB,EAAA,MAAA;CAAS;;;;;AAEX,cA3KG,aAAA,YAAyB,gBA2K5B,CA3K6C,mBA2K7C,CAAA,CAAA;EAAO,SACN,MAAA,EA3KO,mBA2KP;EAAM,SAAW,SAAA,EA1KP,SA0KO;EAAa,QAAa,kBAAA;EAAO,WAAf,CAAA,SAAA,EAvKtB,SAuKsB,EAAA,MAAA,CAAA,EAvKH,OAuKG,CAvKK,mBAuKL,CAAA;EAAO,OAAA,CAAA,CAAA,EAlKnC,OAkKmC,CAAA,IAAA,CAAA;eA3JjC;;;;yCAOoB;;;;gEAoFpC;;;;WAiCY;;;;2BAOU;;;;;;;;;;;;;;;;;iBAoBV,8CACJ,4BACM,iBAAiB,YAAkB,QAAQ,oBACnD,QAAQ,+BACP,iBAAiB,YAAkB,QAAQ"}
@@ -1,12 +1,15 @@
1
- import { t as Telescope } from "../Telescope-BVfDvVvY.mjs";
2
- import { AdapterRequestContext, AdapterResponseContext, LambdaAdapterConfig, TelescopeAdapter } from "./types.mjs";
3
- import { TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware } from "./middy.mjs";
1
+ import "../types-B1EIa_cQ.mjs";
2
+ import "../MetricsAggregator-DZrW8ls6.mjs";
3
+ import { Telescope } from "../Telescope-Dl6VSfxd.mjs";
4
+ import { AdapterRequestContext, AdapterResponseContext, LambdaAdapterConfig, TelescopeAdapter } from "../types-BzQ78Efw.mjs";
5
+ import { TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware } from "../middy-B6Btl8XE.mjs";
4
6
  import { Context } from "aws-lambda";
7
+
5
8
  //#region src/adapters/lambda.d.ts
6
9
  /**
7
10
  * Lambda resource attributes detected from environment
8
11
  */
9
- export interface LambdaResourceAttributes {
12
+ interface LambdaResourceAttributes {
10
13
  'cloud.provider': 'aws';
11
14
  'cloud.region': string;
12
15
  'faas.name': string;
@@ -18,11 +21,11 @@ export interface LambdaResourceAttributes {
18
21
  /**
19
22
  * Detect Lambda resource attributes from environment
20
23
  */
21
- export declare function detectLambdaResources(): LambdaResourceAttributes;
24
+ declare function detectLambdaResources(): LambdaResourceAttributes;
22
25
  /**
23
26
  * Extract invocation context from Lambda event
24
27
  */
25
- export declare function extractLambdaInvocationContext(_event: unknown, context: Context): {
28
+ declare function extractLambdaInvocationContext(_event: unknown, context: Context): {
26
29
  requestId: string;
27
30
  coldStart: boolean;
28
31
  remainingTimeMs: number;
@@ -34,7 +37,7 @@ export declare function extractLambdaInvocationContext(_event: unknown, context:
34
37
  * Lambda adapter for Telescope.
35
38
  * Provides Lambda-specific request/response handling with auto-flush.
36
39
  */
37
- export declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {
40
+ declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConfig> {
38
41
  readonly config: LambdaAdapterConfig;
39
42
  readonly telescope: Telescope;
40
43
  private resourceAttributes;
@@ -73,7 +76,8 @@ export declare class LambdaAdapter implements TelescopeAdapter<LambdaAdapterConf
73
76
  * });
74
77
  * ```
75
78
  */
76
- export declare function wrapLambdaHandler<TEvent, TResult>(telescope: Telescope, handler: (event: TEvent, context: Context) => Promise<TResult>, options?: Partial<LambdaAdapterConfig>): (event: TEvent, context: Context) => Promise<TResult>;
79
+ declare function wrapLambdaHandler<TEvent, TResult>(telescope: Telescope, handler: (event: TEvent, context: Context) => Promise<TResult>, options?: Partial<LambdaAdapterConfig>): (event: TEvent, context: Context) => Promise<TResult>;
80
+ //# sourceMappingURL=lambda.d.ts.map
77
81
  //#endregion
78
- export { type TelescopeMiddlewareOptions, createTelescopeHandler, telescopeMiddleware };
82
+ export { LambdaAdapter, LambdaResourceAttributes, TelescopeMiddlewareOptions, createTelescopeHandler, detectLambdaResources, extractLambdaInvocationContext, telescopeMiddleware, wrapLambdaHandler };
79
83
  //# sourceMappingURL=lambda.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lambda.d.mts","names":["LambdaContext"],"sources":["../../src/adapters/lambda.ts"],"mappings":";;;;;;;;iBAqBiB;EAChB;EACA;EACA;EACA;EACA;EACA;GACC;;;;;wBAMc,yBAAyB;;;;wBAiBzB,+BACf,iBACA,SAASA;EAET;EACA;EACA;EACA;EACA;EACA;;;;;;qBAmCY,yBAAyB,iBAAiB;WAC7C,QAAQ;WACR,WAAW;UACZ;EAER,YAAY,WAAW,WAAW,SAAQ,QAAQ;EAK5C,WAAW;EAOX,aAAa;;;;EAOnB,sBAAsB,iBAAiB;;;;EAiFvC,uBACC,mBACA,oBACE;;;;EAiCG,SAAS;;;;EAOf,yBAAyB;;;;;;;;;;;;;;;;;wBAoBV,kBAAkB,QAAQ,SACzC,WAAW,WACX,UAAU,OAAO,QAAQ,SAASA,YAAkB,QAAQ,UAC5D,UAAS,QAAQ,wBACd,OAAO,QAAQ,SAASA,YAAkB,QAAQ"}
1
+ {"version":3,"file":"lambda.d.mts","names":[],"sources":["../../src/adapters/lambda.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;UAqBiB,wBAAA;EAAA,gBAAA,EAAA,KAAA;EAaD,cAAA,EAAA,MAAA;EAiBA,WAAA,EAAA,MAAA;EA4CH,cAAA,EAAc,MAAA;EAAA,eAAA,EAAA,MAAA;EAAA,iBAA4B,EAAA,MAAA;EAAmB,CAAA,GACxD,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;;;;;AASA,iBAvEF,qBAAA,CAAA,CAuEE,EAvEuB,wBAuEvB;;;;AAmIF,iBAzLA,8BAAA,CAyLA,MAAA,EAAA,OAAA,EAAA,OAAA,EAvLN,OAuLM,CAAA,EAAA;EAAO,SAOG,EAAA,MAAA;EAAwB,SApJZ,EAAA,OAAA;EAAgB,eAAA,EAAA,MAAA;EAwKtC,aAAA,EAAA,MAAiB;EAAA,YAAA,EAAA,MAAA;EAAA,eACrB,EAAA,MAAA;CAAS;;;;;AAEX,cA3KG,aAAA,YAAyB,gBA2K5B,CA3K6C,mBA2K7C,CAAA,CAAA;EAAO,SACN,MAAA,EA3KO,mBA2KP;EAAM,SAAW,SAAA,EA1KP,SA0KO;EAAa,QAAa,kBAAA;EAAO,WAAf,CAAA,SAAA,EAvKtB,SAuKsB,EAAA,MAAA,CAAA,EAvKH,OAuKG,CAvKK,mBAuKL,CAAA;EAAO,OAAA,CAAA,CAAA,EAlKnC,OAkKmC,CAAA,IAAA,CAAA;eA3JjC;;;;yCAOoB;;;;gEAoFpC;;;;WAiCY;;;;2BAOU;;;;;;;;;;;;;;;;;iBAoBV,8CACJ,4BACM,iBAAiB,YAAkB,QAAQ,oBACnD,QAAQ,+BACP,iBAAiB,YAAkB,QAAQ"}