@geekmidas/telescope 10.0.0-alpha.99 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -0
- package/README.md +18 -28
- package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts +47 -0
- package/dist/InMemoryMetricsStorage-BbKCL3YL.d.mts.map +1 -0
- package/dist/InMemoryMetricsStorage-C4drxT7G.mjs +247 -0
- package/dist/InMemoryMetricsStorage-C4drxT7G.mjs.map +1 -0
- package/dist/InMemoryMetricsStorage-D0njWUSi.cjs +252 -0
- package/dist/InMemoryMetricsStorage-D0njWUSi.cjs.map +1 -0
- package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts +47 -0
- package/dist/InMemoryMetricsStorage-TvPdZjL0.d.cts.map +1 -0
- package/dist/{MetricsAggregator-BJdIvfEv.d.mts → MetricsAggregator-4SqelGcG.d.cts} +6 -3
- package/dist/MetricsAggregator-4SqelGcG.d.cts.map +1 -0
- package/dist/MetricsAggregator-B7lUICdH.cjs +363 -0
- package/dist/MetricsAggregator-B7lUICdH.cjs.map +1 -0
- package/dist/{MetricsAggregator-CnC3oT5q.d.cts → MetricsAggregator-DZrW8ls6.d.mts} +6 -3
- package/dist/MetricsAggregator-DZrW8ls6.d.mts.map +1 -0
- package/dist/MetricsAggregator-S3DQWNas.mjs +357 -0
- package/dist/MetricsAggregator-S3DQWNas.mjs.map +1 -0
- package/dist/MetricsStorage-B86e4131.d.cts +60 -0
- package/dist/MetricsStorage-B86e4131.d.cts.map +1 -0
- package/dist/MetricsStorage-BWyP2_12.d.mts +60 -0
- package/dist/MetricsStorage-BWyP2_12.d.mts.map +1 -0
- package/dist/MetricsStorage-BypQXWiv.mjs +0 -0
- package/dist/MetricsStorage-Or8pVCe4.cjs +0 -0
- package/dist/Telescope-Cs3fv8jt.cjs +395 -0
- package/dist/Telescope-Cs3fv8jt.cjs.map +1 -0
- package/dist/{Telescope-BVfDvVvY.d.mts → Telescope-D4nmwDRA.d.cts} +7 -4
- package/dist/Telescope-D4nmwDRA.d.cts.map +1 -0
- package/dist/Telescope-Dh5av3FC.mjs +389 -0
- package/dist/Telescope-Dh5av3FC.mjs.map +1 -0
- package/dist/{Telescope-DeqSHfuB.d.cts → Telescope-Dl6VSfxd.d.mts} +7 -4
- package/dist/Telescope-Dl6VSfxd.d.mts.map +1 -0
- package/dist/Telescope.cjs +4 -385
- package/dist/Telescope.d.cts +3 -1
- package/dist/Telescope.d.mts +3 -1
- package/dist/Telescope.mjs +4 -384
- package/dist/adapters/index.d.cts +2 -2
- package/dist/adapters/index.d.mts +2 -2
- package/dist/adapters/index.mjs +0 -1
- package/dist/adapters/lambda.cjs +10 -9
- package/dist/adapters/lambda.cjs.map +1 -1
- package/dist/adapters/lambda.d.cts +13 -9
- package/dist/adapters/lambda.d.cts.map +1 -1
- package/dist/adapters/lambda.d.mts +13 -9
- package/dist/adapters/lambda.d.mts.map +1 -1
- package/dist/adapters/lambda.mjs +4 -3
- package/dist/adapters/lambda.mjs.map +1 -1
- package/dist/adapters/middy.cjs +4 -236
- package/dist/adapters/middy.d.cts +5 -60
- package/dist/adapters/middy.d.mts +5 -60
- package/dist/adapters/middy.mjs +3 -234
- package/dist/adapters/types.d.cts +2 -162
- package/dist/adapters/types.d.mts +2 -162
- package/dist/adapters/types.mjs +0 -1
- package/dist/{rolldown-runtime-VH7oDXx4.cjs → chunk-CUT6urMc.cjs} +10 -8
- package/dist/core--quSp5Qr.d.mts +78 -0
- package/dist/core--quSp5Qr.d.mts.map +1 -0
- package/dist/core-B4Jpia5H.d.cts +78 -0
- package/dist/core-B4Jpia5H.d.cts.map +1 -0
- package/dist/core-CtVHRJGv.cjs +199 -0
- package/dist/core-CtVHRJGv.cjs.map +1 -0
- package/dist/core-D6hJ6exL.mjs +139 -0
- package/dist/core-D6hJ6exL.mjs.map +1 -0
- package/dist/core.cjs +22 -22
- package/dist/core.d.cts +4 -4
- package/dist/core.d.mts +4 -4
- package/dist/core.mjs +4 -3
- package/dist/hono--uKQ7Jgi.d.mts +71 -0
- package/dist/hono--uKQ7Jgi.d.mts.map +1 -0
- package/dist/hono-C4EgpbKQ.cjs +160 -0
- package/dist/hono-C4EgpbKQ.cjs.map +1 -0
- package/dist/hono-CemCKU87.d.cts +71 -0
- package/dist/hono-CemCKU87.d.cts.map +1 -0
- package/dist/hono-DxhvnVbF.mjs +136 -0
- package/dist/hono-DxhvnVbF.mjs.map +1 -0
- package/dist/http-BiNtg85L.d.mts +107 -0
- package/dist/http-BiNtg85L.d.mts.map +1 -0
- package/dist/http-DQzgLczm.mjs +159 -0
- package/dist/http-DQzgLczm.mjs.map +1 -0
- package/dist/http-D_Z8sYXZ.cjs +219 -0
- package/dist/http-D_Z8sYXZ.cjs.map +1 -0
- package/dist/http-Dvca6fC3.d.cts +107 -0
- package/dist/http-Dvca6fC3.d.cts.map +1 -0
- package/dist/index-BL32-cvv.d.cts +1 -0
- package/dist/index-CsuikFeJ.d.mts +1 -0
- package/dist/index.cjs +9 -8
- package/dist/index.d.cts +6 -5
- package/dist/index.d.mts +6 -5
- package/dist/index.mjs +7 -5
- package/dist/instrumentation/core.cjs +11 -147
- package/dist/instrumentation/core.d.cts +3 -74
- package/dist/instrumentation/core.d.mts +3 -74
- package/dist/instrumentation/core.mjs +2 -137
- package/dist/instrumentation/hono.cjs +6 -174
- package/dist/instrumentation/hono.d.cts +2 -86
- package/dist/instrumentation/hono.d.mts +2 -86
- package/dist/instrumentation/hono.mjs +3 -170
- package/dist/instrumentation/http.cjs +11 -189
- package/dist/instrumentation/http.d.cts +2 -119
- package/dist/instrumentation/http.d.mts +2 -119
- package/dist/instrumentation/http.mjs +2 -178
- package/dist/instrumentation/index.cjs +47 -56
- package/dist/instrumentation/index.d.cts +9 -11
- package/dist/instrumentation/index.d.mts +9 -11
- package/dist/instrumentation/index.mjs +9 -10
- package/dist/instrumentation/middleware.cjs +6 -164
- package/dist/instrumentation/middleware.d.cts +2 -83
- package/dist/instrumentation/middleware.d.mts +2 -83
- package/dist/instrumentation/middleware.mjs +3 -160
- package/dist/instrumentation/otel.cjs +3 -137
- package/dist/instrumentation/otel.d.cts +2 -97
- package/dist/instrumentation/otel.d.mts +2 -97
- package/dist/instrumentation/otel.mjs +3 -136
- package/dist/instrumentation/setup.cjs +4 -142
- package/dist/instrumentation/setup.d.cts +3 -139
- package/dist/instrumentation/setup.d.mts +3 -139
- package/dist/instrumentation/setup.mjs +3 -139
- package/dist/instrumentation/tracing.cjs +10 -114
- package/dist/instrumentation/tracing.d.cts +2 -49
- package/dist/instrumentation/tracing.d.mts +2 -49
- package/dist/instrumentation/tracing.mjs +2 -105
- package/dist/logger/console.cjs +12 -18
- package/dist/logger/console.cjs.map +1 -1
- package/dist/logger/console.d.cts +10 -7
- package/dist/logger/console.d.cts.map +1 -1
- package/dist/logger/console.d.mts +10 -7
- package/dist/logger/console.d.mts.map +1 -1
- package/dist/logger/console.mjs +11 -17
- package/dist/logger/console.mjs.map +1 -1
- package/dist/logger/pino.cjs +5 -6
- package/dist/logger/pino.cjs.map +1 -1
- package/dist/logger/pino.d.cts +10 -6
- package/dist/logger/pino.d.cts.map +1 -1
- package/dist/logger/pino.d.mts +10 -6
- package/dist/logger/pino.d.mts.map +1 -1
- package/dist/logger/pino.mjs +3 -2
- package/dist/logger/pino.mjs.map +1 -1
- package/dist/memory--BK4iWiv.d.cts +40 -0
- package/dist/memory--BK4iWiv.d.cts.map +1 -0
- package/dist/memory-6S9H-IF5.mjs +123 -0
- package/dist/memory-6S9H-IF5.mjs.map +1 -0
- package/dist/memory-B0d_n1g5.cjs +129 -0
- package/dist/memory-B0d_n1g5.cjs.map +1 -0
- package/dist/memory-DCirEVFW.d.mts +40 -0
- package/dist/memory-DCirEVFW.d.mts.map +1 -0
- package/dist/metrics/MetricsAggregator.cjs +2 -354
- package/dist/metrics/MetricsAggregator.d.cts +2 -1
- package/dist/metrics/MetricsAggregator.d.mts +2 -1
- package/dist/metrics/MetricsAggregator.mjs +2 -353
- package/dist/metrics/index.cjs +4 -3
- package/dist/metrics/index.d.cts +4 -2
- package/dist/metrics/index.d.mts +4 -2
- package/dist/metrics/index.mjs +4 -2
- package/dist/metrics/storage/InMemoryMetricsStorage.cjs +3 -240
- package/dist/metrics/storage/InMemoryMetricsStorage.d.cts +4 -43
- package/dist/metrics/storage/InMemoryMetricsStorage.d.mts +4 -43
- package/dist/metrics/storage/InMemoryMetricsStorage.mjs +3 -239
- package/dist/metrics/storage/MetricsStorage.cjs +1 -0
- package/dist/metrics/storage/MetricsStorage.d.cts +3 -56
- package/dist/metrics/storage/MetricsStorage.d.mts +3 -56
- package/dist/metrics/storage/MetricsStorage.mjs +1 -1
- package/dist/metrics/storage/index.cjs +6 -6
- package/dist/metrics/storage/index.d.cts +3 -3
- package/dist/metrics/storage/index.d.mts +3 -3
- package/dist/metrics/storage/index.mjs +5 -4
- package/dist/metrics/storage/types.cjs +2 -34
- package/dist/metrics/storage/types.d.cts +2 -207
- package/dist/metrics/storage/types.d.mts +2 -207
- package/dist/metrics/storage/types.mjs +2 -33
- package/dist/metrics-D5YT-Rnq.mjs +0 -0
- package/dist/metrics-fhD3l3C3.cjs +0 -0
- package/dist/middleware-B2jFUukM.cjs +184 -0
- package/dist/middleware-B2jFUukM.cjs.map +1 -0
- package/dist/middleware-BTDncHwm.mjs +160 -0
- package/dist/middleware-BTDncHwm.mjs.map +1 -0
- package/dist/middleware-CA84nsNN.d.cts +74 -0
- package/dist/middleware-CA84nsNN.d.cts.map +1 -0
- package/dist/middleware-DAceVpfw.d.mts +74 -0
- package/dist/middleware-DAceVpfw.d.mts.map +1 -0
- package/dist/middy-B6Btl8XE.d.mts +64 -0
- package/dist/middy-B6Btl8XE.d.mts.map +1 -0
- package/dist/middy-BTR3cyvk.mjs +236 -0
- package/dist/middy-BTR3cyvk.mjs.map +1 -0
- package/dist/middy-Bq0defVg.d.cts +64 -0
- package/dist/middy-Bq0defVg.d.cts.map +1 -0
- package/dist/middy-y5Zp27eG.cjs +247 -0
- package/dist/middy-y5Zp27eG.cjs.map +1 -0
- package/dist/otel-1bJPb2Z7.d.mts +101 -0
- package/dist/otel-1bJPb2Z7.d.mts.map +1 -0
- package/dist/otel-C1HqHA2O.cjs +136 -0
- package/dist/otel-C1HqHA2O.cjs.map +1 -0
- package/dist/otel-SBVoVEHr.d.cts +101 -0
- package/dist/otel-SBVoVEHr.d.cts.map +1 -0
- package/dist/otel-wulj5B-X.mjs +130 -0
- package/dist/otel-wulj5B-X.mjs.map +1 -0
- package/dist/otlp/hono.cjs +15 -9
- package/dist/otlp/hono.cjs.map +1 -1
- package/dist/otlp/hono.d.cts +13 -3
- package/dist/otlp/hono.d.cts.map +1 -1
- package/dist/otlp/hono.d.mts +13 -3
- package/dist/otlp/hono.d.mts.map +1 -1
- package/dist/otlp/hono.mjs +11 -5
- package/dist/otlp/hono.mjs.map +1 -1
- package/dist/otlp/index.cjs +11 -11
- package/dist/otlp/index.d.cts +7 -4
- package/dist/otlp/index.d.mts +7 -4
- package/dist/otlp/index.mjs +5 -4
- package/dist/otlp/receiver.cjs +4 -88
- package/dist/otlp/receiver.d.cts +7 -59
- package/dist/otlp/receiver.d.mts +7 -59
- package/dist/otlp/receiver.mjs +4 -87
- package/dist/otlp/transformer.cjs +5 -214
- package/dist/otlp/transformer.d.cts +3 -1
- package/dist/otlp/transformer.d.mts +3 -1
- package/dist/otlp/transformer.mjs +3 -211
- package/dist/otlp/types.cjs +5 -57
- package/dist/otlp/types.d.cts +1 -1
- package/dist/otlp/types.d.mts +1 -1
- package/dist/otlp/types.mjs +2 -53
- package/dist/receiver-Cj1lbAOO.cjs +94 -0
- package/dist/receiver-Cj1lbAOO.cjs.map +1 -0
- package/dist/receiver-CxVd_9CB.mjs +89 -0
- package/dist/receiver-CxVd_9CB.mjs.map +1 -0
- package/dist/receiver-DLICx5uU.d.cts +63 -0
- package/dist/receiver-DLICx5uU.d.cts.map +1 -0
- package/dist/receiver-UeZT-H8u.d.mts +63 -0
- package/dist/receiver-UeZT-H8u.d.mts.map +1 -0
- package/dist/redact-BzkITCNW.mjs +83 -0
- package/dist/redact-BzkITCNW.mjs.map +1 -0
- package/dist/redact-DVaSSPZT.cjs +95 -0
- package/dist/redact-DVaSSPZT.cjs.map +1 -0
- package/dist/redact.cjs +3 -84
- package/dist/redact.d.cts +8 -4
- package/dist/redact.d.cts.map +1 -1
- package/dist/redact.d.mts +8 -4
- package/dist/redact.d.mts.map +1 -1
- package/dist/redact.mjs +2 -80
- package/dist/server/hono.cjs +54 -33
- package/dist/server/hono.cjs.map +1 -1
- package/dist/server/hono.d.cts +14 -19
- package/dist/server/hono.d.cts.map +1 -1
- package/dist/server/hono.d.mts +14 -19
- package/dist/server/hono.d.mts.map +1 -1
- package/dist/server/hono.mjs +52 -31
- package/dist/server/hono.mjs.map +1 -1
- package/dist/setup-B9jM77Qk.mjs +98 -0
- package/dist/setup-B9jM77Qk.mjs.map +1 -0
- package/dist/setup-Bkxm4g6b.d.mts +87 -0
- package/dist/setup-Bkxm4g6b.d.mts.map +1 -0
- package/dist/setup-CYpff5B9.cjs +110 -0
- package/dist/setup-CYpff5B9.cjs.map +1 -0
- package/dist/setup-D58N1f9O.d.cts +87 -0
- package/dist/setup-D58N1f9O.d.cts.map +1 -0
- package/dist/storage/kysely.cjs +70 -82
- package/dist/storage/kysely.cjs.map +1 -1
- package/dist/storage/kysely.d.cts +20 -36
- package/dist/storage/kysely.d.cts.map +1 -1
- package/dist/storage/kysely.d.mts +20 -36
- package/dist/storage/kysely.d.mts.map +1 -1
- package/dist/storage/kysely.mjs +69 -81
- package/dist/storage/kysely.mjs.map +1 -1
- package/dist/storage/memory.cjs +2 -122
- package/dist/storage/memory.d.cts +3 -36
- package/dist/storage/memory.d.mts +3 -36
- package/dist/storage/memory.mjs +2 -121
- package/dist/tracing-BX8uY2nR.d.cts +53 -0
- package/dist/tracing-BX8uY2nR.d.cts.map +1 -0
- package/dist/tracing-Bt1zWRlb.cjs +167 -0
- package/dist/tracing-Bt1zWRlb.cjs.map +1 -0
- package/dist/tracing-Cijm_5NI.mjs +113 -0
- package/dist/tracing-Cijm_5NI.mjs.map +1 -0
- package/dist/tracing-PnECEbEu.d.mts +53 -0
- package/dist/tracing-PnECEbEu.d.mts.map +1 -0
- package/dist/transformer-BXQPhzql.mjs +215 -0
- package/dist/transformer-BXQPhzql.mjs.map +1 -0
- package/dist/transformer-CLGZ0EQc.cjs +232 -0
- package/dist/transformer-CLGZ0EQc.cjs.map +1 -0
- package/dist/{transformer-BtqjAs0b.d.cts → transformer-CTGsaVfV.d.mts} +8 -4
- package/dist/transformer-CTGsaVfV.d.mts.map +1 -0
- package/dist/{transformer-DI6t8-YA.d.mts → transformer-ICEbxpFf.d.cts} +8 -4
- package/dist/transformer-ICEbxpFf.d.cts.map +1 -0
- package/dist/{types-BVujq4zd.d.mts → types-B1EIa_cQ.d.mts} +4 -3
- package/dist/types-B1EIa_cQ.d.mts.map +1 -0
- package/dist/types-BRzW1NM8.d.cts +166 -0
- package/dist/types-BRzW1NM8.d.cts.map +1 -0
- package/dist/types-BS3Rx8Sk.d.cts +209 -0
- package/dist/types-BS3Rx8Sk.d.cts.map +1 -0
- package/dist/types-Bwm_jNU7.mjs +54 -0
- package/dist/types-Bwm_jNU7.mjs.map +1 -0
- package/dist/types-BzQ78Efw.d.mts +166 -0
- package/dist/types-BzQ78Efw.d.mts.map +1 -0
- package/dist/types-CbNGXnJE.d.mts +209 -0
- package/dist/types-CbNGXnJE.d.mts.map +1 -0
- package/dist/{types-DVETVdpa.d.cts → types-CmOB7CLO.d.cts} +7 -6
- package/dist/types-CmOB7CLO.d.cts.map +1 -0
- package/dist/{types-DVETVdpa.d.mts → types-DBc0q5KD.d.mts} +7 -6
- package/dist/types-DBc0q5KD.d.mts.map +1 -0
- package/dist/types-Dsh-DIO_.cjs +78 -0
- package/dist/types-Dsh-DIO_.cjs.map +1 -0
- package/dist/types-ZW-nfWf6.cjs +40 -0
- package/dist/types-ZW-nfWf6.cjs.map +1 -0
- package/dist/{types-BVujq4zd.d.cts → types-l7Rlb5Mg.d.cts} +4 -3
- package/dist/types-l7Rlb5Mg.d.cts.map +1 -0
- package/dist/types-ojhnLdwz.mjs +34 -0
- package/dist/types-ojhnLdwz.mjs.map +1 -0
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.mjs +0 -1
- package/dist/ui-assets-BEXqOQLe.cjs +48 -0
- package/dist/ui-assets-BEXqOQLe.cjs.map +1 -0
- package/dist/ui-assets-BhTDUsrM.mjs +30 -0
- package/dist/ui-assets-BhTDUsrM.mjs.map +1 -0
- package/dist/ui-assets.cjs +5 -0
- package/dist/ui-assets.d.cts +13 -0
- package/dist/ui-assets.d.cts.map +1 -0
- package/dist/ui-assets.d.mts +13 -0
- package/dist/ui-assets.d.mts.map +1 -0
- package/dist/ui-assets.mjs +3 -0
- package/package.json +46 -46
- package/src/Telescope.ts +561 -0
- package/src/__tests__/Telescope.spec.ts +438 -0
- package/src/__tests__/pino-transport.spec.ts +115 -0
- package/src/__tests__/redact.spec.ts +336 -0
- package/src/adapters/__tests__/lambda.spec.ts +318 -0
- package/src/adapters/__tests__/middy.spec.ts +741 -0
- package/src/adapters/index.ts +22 -0
- package/src/adapters/lambda.ts +432 -0
- package/src/adapters/middy.ts +402 -0
- package/src/adapters/types.ts +181 -0
- package/src/core.ts +51 -0
- package/src/index.ts +34 -0
- package/src/instrumentation/__tests__/core.spec.ts +248 -0
- package/src/instrumentation/__tests__/hono.spec.ts +348 -0
- package/src/instrumentation/__tests__/middleware.spec.ts +528 -0
- package/src/instrumentation/__tests__/otel.spec.ts +291 -0
- package/src/instrumentation/__tests__/tracing.spec.ts +208 -0
- package/src/instrumentation/core.ts +228 -0
- package/src/instrumentation/hono.ts +270 -0
- package/src/instrumentation/http.ts +306 -0
- package/src/instrumentation/index.ts +90 -0
- package/src/instrumentation/middleware.ts +297 -0
- package/src/instrumentation/otel.ts +271 -0
- package/src/instrumentation/setup.ts +246 -0
- package/src/instrumentation/tracing.ts +145 -0
- package/src/logger/__tests__/console.spec.ts +366 -0
- package/src/logger/__tests__/pino.spec.ts +217 -0
- package/src/logger/console.ts +230 -0
- package/src/logger/pino.ts +201 -0
- package/src/metrics/MetricsAggregator.ts +555 -0
- package/src/metrics/__tests__/MetricsAggregator.spec.ts +298 -0
- package/src/metrics/index.ts +2 -0
- package/src/metrics/storage/InMemoryMetricsStorage.ts +380 -0
- package/src/metrics/storage/MetricsStorage.ts +74 -0
- package/src/metrics/storage/index.ts +3 -0
- package/src/metrics/storage/types.ts +243 -0
- package/src/otlp/__tests__/receiver.spec.ts +367 -0
- package/src/otlp/__tests__/transformer.spec.ts +455 -0
- package/src/otlp/hono.ts +120 -0
- package/src/otlp/index.ts +22 -0
- package/src/otlp/receiver.ts +162 -0
- package/src/otlp/transformer.ts +367 -0
- package/src/otlp/types.ts +364 -0
- package/src/redact.ts +116 -0
- package/src/server/__tests__/hono.spec.ts +814 -0
- package/src/server/hono.ts +442 -0
- package/src/storage/__tests__/kysely.spec.ts +715 -0
- package/src/storage/__tests__/memory.spec.ts +694 -0
- package/src/storage/kysely.ts +599 -0
- package/src/storage/memory.ts +204 -0
- package/src/types.ts +447 -0
- package/src/ui-assets.ts +40 -0
- package/tsconfig.json +9 -0
- package/ui/CHANGELOG.md +7 -0
- package/ui/index.html +12 -0
- package/ui/node_modules/.bin/tsc +21 -0
- package/ui/node_modules/.bin/tsserver +21 -0
- package/ui/node_modules/.bin/vite +21 -0
- package/ui/package.json +24 -0
- package/ui/src/App.tsx +595 -0
- package/ui/src/api.ts +88 -0
- package/ui/src/components/ExceptionDetail.tsx +100 -0
- package/ui/src/components/FilterBar.tsx +162 -0
- package/ui/src/components/LogDetail.tsx +91 -0
- package/ui/src/components/RequestDetail.tsx +143 -0
- package/ui/src/main.tsx +10 -0
- package/ui/src/styles.css +11 -0
- package/ui/src/types.ts +63 -0
- package/ui/src/vite-env.d.ts +1 -0
- package/ui/src/vite-plugin-gkm-config.ts +54 -0
- package/ui/tsconfig.json +20 -0
- package/ui/tsconfig.tsbuildinfo +1 -0
- package/ui/vite.config.ts +13 -0
- package/dist/MetricsAggregator-BJdIvfEv.d.mts.map +0 -1
- package/dist/MetricsAggregator-CnC3oT5q.d.cts.map +0 -1
- package/dist/Telescope-BVfDvVvY.d.mts.map +0 -1
- package/dist/Telescope-DeqSHfuB.d.cts.map +0 -1
- package/dist/Telescope.cjs.map +0 -1
- package/dist/Telescope.mjs.map +0 -1
- package/dist/adapters/middy.cjs.map +0 -1
- package/dist/adapters/middy.d.cts.map +0 -1
- package/dist/adapters/middy.d.mts.map +0 -1
- package/dist/adapters/middy.mjs.map +0 -1
- package/dist/adapters/types.d.cts.map +0 -1
- package/dist/adapters/types.d.mts.map +0 -1
- package/dist/instrumentation/core.cjs.map +0 -1
- package/dist/instrumentation/core.d.cts.map +0 -1
- package/dist/instrumentation/core.d.mts.map +0 -1
- package/dist/instrumentation/core.mjs.map +0 -1
- package/dist/instrumentation/hono.cjs.map +0 -1
- package/dist/instrumentation/hono.d.cts.map +0 -1
- package/dist/instrumentation/hono.d.mts.map +0 -1
- package/dist/instrumentation/hono.mjs.map +0 -1
- package/dist/instrumentation/http.cjs.map +0 -1
- package/dist/instrumentation/http.d.cts.map +0 -1
- package/dist/instrumentation/http.d.mts.map +0 -1
- package/dist/instrumentation/http.mjs.map +0 -1
- package/dist/instrumentation/middleware.cjs.map +0 -1
- package/dist/instrumentation/middleware.d.cts.map +0 -1
- package/dist/instrumentation/middleware.d.mts.map +0 -1
- package/dist/instrumentation/middleware.mjs.map +0 -1
- package/dist/instrumentation/otel.cjs.map +0 -1
- package/dist/instrumentation/otel.d.cts.map +0 -1
- package/dist/instrumentation/otel.d.mts.map +0 -1
- package/dist/instrumentation/otel.mjs.map +0 -1
- package/dist/instrumentation/sampler.cjs +0 -54
- package/dist/instrumentation/sampler.cjs.map +0 -1
- package/dist/instrumentation/sampler.d.cts +0 -38
- package/dist/instrumentation/sampler.d.cts.map +0 -1
- package/dist/instrumentation/sampler.d.mts +0 -38
- package/dist/instrumentation/sampler.d.mts.map +0 -1
- package/dist/instrumentation/sampler.mjs +0 -52
- package/dist/instrumentation/sampler.mjs.map +0 -1
- package/dist/instrumentation/setup.cjs.map +0 -1
- package/dist/instrumentation/setup.d.cts.map +0 -1
- package/dist/instrumentation/setup.d.mts.map +0 -1
- package/dist/instrumentation/setup.mjs.map +0 -1
- package/dist/instrumentation/tracing.cjs.map +0 -1
- package/dist/instrumentation/tracing.d.cts.map +0 -1
- package/dist/instrumentation/tracing.d.mts.map +0 -1
- package/dist/instrumentation/tracing.mjs.map +0 -1
- package/dist/instrumentation/trust.cjs +0 -107
- package/dist/instrumentation/trust.cjs.map +0 -1
- package/dist/instrumentation/trust.d.cts +0 -57
- package/dist/instrumentation/trust.d.cts.map +0 -1
- package/dist/instrumentation/trust.d.mts +0 -57
- package/dist/instrumentation/trust.d.mts.map +0 -1
- package/dist/instrumentation/trust.mjs +0 -104
- package/dist/instrumentation/trust.mjs.map +0 -1
- package/dist/metrics/MetricsAggregator.cjs.map +0 -1
- package/dist/metrics/MetricsAggregator.mjs.map +0 -1
- package/dist/metrics/storage/InMemoryMetricsStorage.cjs.map +0 -1
- package/dist/metrics/storage/InMemoryMetricsStorage.d.cts.map +0 -1
- package/dist/metrics/storage/InMemoryMetricsStorage.d.mts.map +0 -1
- package/dist/metrics/storage/InMemoryMetricsStorage.mjs.map +0 -1
- package/dist/metrics/storage/MetricsStorage.d.cts.map +0 -1
- package/dist/metrics/storage/MetricsStorage.d.mts.map +0 -1
- package/dist/metrics/storage/types.cjs.map +0 -1
- package/dist/metrics/storage/types.d.cts.map +0 -1
- package/dist/metrics/storage/types.d.mts.map +0 -1
- package/dist/metrics/storage/types.mjs.map +0 -1
- package/dist/otlp/receiver.cjs.map +0 -1
- package/dist/otlp/receiver.d.cts.map +0 -1
- package/dist/otlp/receiver.d.mts.map +0 -1
- package/dist/otlp/receiver.mjs.map +0 -1
- package/dist/otlp/transformer.cjs.map +0 -1
- package/dist/otlp/transformer.mjs.map +0 -1
- package/dist/otlp/types.cjs.map +0 -1
- package/dist/otlp/types.mjs.map +0 -1
- package/dist/redact.cjs.map +0 -1
- package/dist/redact.mjs.map +0 -1
- package/dist/storage/memory.cjs.map +0 -1
- package/dist/storage/memory.d.cts.map +0 -1
- package/dist/storage/memory.d.mts.map +0 -1
- package/dist/storage/memory.mjs.map +0 -1
- package/dist/transformer-BtqjAs0b.d.cts.map +0 -1
- package/dist/transformer-DI6t8-YA.d.mts.map +0 -1
- package/dist/types-BVujq4zd.d.cts.map +0 -1
- package/dist/types-BVujq4zd.d.mts.map +0 -1
- package/dist/types-DVETVdpa.d.cts.map +0 -1
- package/dist/types-DVETVdpa.d.mts.map +0 -1
|
@@ -1,165 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
const require_instrumentation_trust = require("./trust.cjs");
|
|
4
|
-
let _opentelemetry_api = require("@opentelemetry/api");
|
|
5
|
-
//#region src/instrumentation/middleware.ts
|
|
6
|
-
const SPAN_SYMBOL = Symbol("telemetry.span");
|
|
7
|
-
const CONTEXT_SYMBOL = Symbol("telemetry.context");
|
|
8
|
-
/**
|
|
9
|
-
* Get the current span from the Lambda event
|
|
10
|
-
*/
|
|
11
|
-
function getSpanFromEvent(event) {
|
|
12
|
-
return event?.[SPAN_SYMBOL];
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Get the current trace context from the Lambda event
|
|
16
|
-
*/
|
|
17
|
-
function getContextFromEvent(event) {
|
|
18
|
-
return event?.[CONTEXT_SYMBOL];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Create a telemetry middleware for Lambda handlers
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
|
|
26
|
-
*
|
|
27
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
28
|
-
* telemetry: { middleware: telemetryMiddleware() },
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
function telemetryMiddleware(options = {}) {
|
|
33
|
-
return {
|
|
34
|
-
before: async (request) => {
|
|
35
|
-
if (options.shouldSkip?.(request.event)) return;
|
|
36
|
-
const event = request.event;
|
|
37
|
-
const lambdaContext = request.context;
|
|
38
|
-
const headers = normalizeHeaders(event.headers || {});
|
|
39
|
-
const trusted = require_instrumentation_trust.isTrustedOrigin(typeof headers.origin === "string" ? headers.origin : void 0, options.trustedOrigins) || Boolean(options.trustRequest?.(event));
|
|
40
|
-
const { parent: parentContext, links } = require_instrumentation_http.incomingTraceContext(headers, trusted);
|
|
41
|
-
const attrs = buildSpanAttributes(event, lambdaContext, options);
|
|
42
|
-
const span = require_instrumentation_http.createHttpServerSpan(attrs, parentContext, links);
|
|
43
|
-
event[SPAN_SYMBOL] = span;
|
|
44
|
-
event[CONTEXT_SYMBOL] = _opentelemetry_api.trace.setSpan(parentContext, span);
|
|
45
|
-
span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
|
|
46
|
-
span.setAttribute("faas.name", lambdaContext.functionName);
|
|
47
|
-
if (options.recordBody && event.body) {
|
|
48
|
-
const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
|
|
49
|
-
span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
after: async (request) => {
|
|
53
|
-
const span = getSpanFromEvent(request.event);
|
|
54
|
-
if (!span) return;
|
|
55
|
-
const response = request.response;
|
|
56
|
-
const statusCode = typeof response?.statusCode === "number" ? response.statusCode : 200;
|
|
57
|
-
if (options.recordResponseBody && response?.body) {
|
|
58
|
-
const bodyStr = typeof response.body === "string" ? response.body : JSON.stringify(response.body);
|
|
59
|
-
span.setAttribute("http.response.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
|
|
60
|
-
}
|
|
61
|
-
require_instrumentation_http.endHttpSpan(span, { statusCode });
|
|
62
|
-
},
|
|
63
|
-
onError: async (request) => {
|
|
64
|
-
const span = getSpanFromEvent(request.event);
|
|
65
|
-
if (!span) return;
|
|
66
|
-
const error = request.error;
|
|
67
|
-
const response = request.response;
|
|
68
|
-
let statusCode = 500;
|
|
69
|
-
if (response?.statusCode) statusCode = response.statusCode;
|
|
70
|
-
else if (error && "statusCode" in error) statusCode = error.statusCode;
|
|
71
|
-
require_instrumentation_http.endHttpSpan(span, { statusCode }, error instanceof Error ? error : new Error(String(error)));
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Build span attributes from Lambda event
|
|
77
|
-
*/
|
|
78
|
-
function buildSpanAttributes(event, lambdaContext, options) {
|
|
79
|
-
const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
|
|
80
|
-
const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
|
|
81
|
-
let method = "INVOKE";
|
|
82
|
-
let path = "/";
|
|
83
|
-
let route;
|
|
84
|
-
let host;
|
|
85
|
-
let scheme;
|
|
86
|
-
let userAgent;
|
|
87
|
-
let clientIp;
|
|
88
|
-
let requestId;
|
|
89
|
-
if (isV2) {
|
|
90
|
-
const http = event.requestContext.http;
|
|
91
|
-
method = http.method;
|
|
92
|
-
path = event.rawPath || http.path;
|
|
93
|
-
route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
|
|
94
|
-
host = event.headers?.host;
|
|
95
|
-
scheme = "https";
|
|
96
|
-
userAgent = http.userAgent;
|
|
97
|
-
clientIp = http.sourceIp;
|
|
98
|
-
requestId = event.requestContext.requestId;
|
|
99
|
-
} else if (isV1) {
|
|
100
|
-
method = event.httpMethod;
|
|
101
|
-
path = event.path;
|
|
102
|
-
route = event.resource;
|
|
103
|
-
host = event.headers?.Host || event.headers?.host;
|
|
104
|
-
scheme = "https";
|
|
105
|
-
userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
|
|
106
|
-
clientIp = event.requestContext?.identity?.sourceIp;
|
|
107
|
-
requestId = event.requestContext?.requestId;
|
|
108
|
-
} else if ("httpMethod" in event) {
|
|
109
|
-
method = event.httpMethod;
|
|
110
|
-
path = event.path;
|
|
111
|
-
host = event.headers?.host;
|
|
112
|
-
userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
|
|
113
|
-
clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
|
|
114
|
-
}
|
|
115
|
-
const attrs = {
|
|
116
|
-
method,
|
|
117
|
-
path,
|
|
118
|
-
route,
|
|
119
|
-
host,
|
|
120
|
-
scheme,
|
|
121
|
-
userAgent,
|
|
122
|
-
clientIp,
|
|
123
|
-
requestId: requestId || lambdaContext.awsRequestId
|
|
124
|
-
};
|
|
125
|
-
if (options.getEndpointName || options.getOperationId) attrs.endpoint = {
|
|
126
|
-
name: options.getEndpointName?.(event),
|
|
127
|
-
operationId: options.getOperationId?.(event)
|
|
128
|
-
};
|
|
129
|
-
if (options.getUserId) {
|
|
130
|
-
const userId = options.getUserId(event);
|
|
131
|
-
if (userId) attrs.user = { userId };
|
|
132
|
-
}
|
|
133
|
-
return attrs;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Normalize headers to lowercase keys
|
|
137
|
-
*/
|
|
138
|
-
function normalizeHeaders(headers) {
|
|
139
|
-
const normalized = {};
|
|
140
|
-
for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
|
|
141
|
-
return normalized;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Run a function within the span context from a Lambda event
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* await withEventContext(event, async () => {
|
|
149
|
-
* // Any spans created here will be children of the request span
|
|
150
|
-
* await doSomething();
|
|
151
|
-
* });
|
|
152
|
-
* ```
|
|
153
|
-
*/
|
|
154
|
-
async function withEventContext(event, fn) {
|
|
155
|
-
const ctx = getContextFromEvent(event);
|
|
156
|
-
if (!ctx) return fn();
|
|
157
|
-
return _opentelemetry_api.context.with(ctx, fn);
|
|
158
|
-
}
|
|
159
|
-
//#endregion
|
|
160
|
-
exports.getContextFromEvent = getContextFromEvent;
|
|
161
|
-
exports.getSpanFromEvent = getSpanFromEvent;
|
|
162
|
-
exports.telemetryMiddleware = telemetryMiddleware;
|
|
163
|
-
exports.withEventContext = withEventContext;
|
|
1
|
+
require('../http-D_Z8sYXZ.cjs');
|
|
2
|
+
const require_middleware = require('../middleware-B2jFUukM.cjs');
|
|
164
3
|
|
|
165
|
-
|
|
4
|
+
exports.getContextFromEvent = require_middleware.getContextFromEvent;
|
|
5
|
+
exports.getSpanFromEvent = require_middleware.getSpanFromEvent;
|
|
6
|
+
exports.telemetryMiddleware = require_middleware.telemetryMiddleware;
|
|
7
|
+
exports.withEventContext = require_middleware.withEventContext;
|
|
@@ -1,83 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { Span } from "@opentelemetry/api";
|
|
4
|
-
//#region src/instrumentation/middleware.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Options for the telemetry middleware
|
|
7
|
-
*/
|
|
8
|
-
export interface TelemetryMiddlewareOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Whether to record request body as span attribute
|
|
11
|
-
* @default false
|
|
12
|
-
*/
|
|
13
|
-
recordBody?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Whether to record response body as span attribute
|
|
16
|
-
* @default false
|
|
17
|
-
*/
|
|
18
|
-
recordResponseBody?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Custom function to extract endpoint name from event
|
|
21
|
-
*/
|
|
22
|
-
getEndpointName?: (event: any) => string | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Custom function to extract operation ID from event
|
|
25
|
-
*/
|
|
26
|
-
getOperationId?: (event: any) => string | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* Custom function to extract user ID from event
|
|
29
|
-
*/
|
|
30
|
-
getUserId?: (event: any) => string | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Whether to skip tracing for this request
|
|
33
|
-
*/
|
|
34
|
-
shouldSkip?: (event: any) => boolean;
|
|
35
|
-
/**
|
|
36
|
-
* The origins whose `traceparent` is continued: the API's own sites, the
|
|
37
|
-
* same list its CORS allows. Any other caller starts a new trace linked to
|
|
38
|
-
* the one it claimed.
|
|
39
|
-
*/
|
|
40
|
-
trustedOrigins?: readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* Trust a request with no trusted origin anyway — a caller the function
|
|
43
|
-
* can vouch for, such as one that passed IAM auth. A Lambda behind API
|
|
44
|
-
* Gateway has no private network to tell an internal caller by, so none
|
|
45
|
-
* is trusted unless this says so.
|
|
46
|
-
*/
|
|
47
|
-
trustRequest?: (event: any) => boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the current span from the Lambda event
|
|
51
|
-
*/
|
|
52
|
-
export declare function getSpanFromEvent(event: any): Span | undefined;
|
|
53
|
-
/**
|
|
54
|
-
* Get the current trace context from the Lambda event
|
|
55
|
-
*/
|
|
56
|
-
export declare function getContextFromEvent(event: any): any;
|
|
57
|
-
/**
|
|
58
|
-
* Create a telemetry middleware for Lambda handlers
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
|
|
63
|
-
*
|
|
64
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
65
|
-
* telemetry: { middleware: telemetryMiddleware() },
|
|
66
|
-
* });
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
export declare function telemetryMiddleware(options?: TelemetryMiddlewareOptions): MiddlewareObj<any, any, Error, Context>;
|
|
70
|
-
/**
|
|
71
|
-
* Run a function within the span context from a Lambda event
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript
|
|
75
|
-
* await withEventContext(event, async () => {
|
|
76
|
-
* // Any spans created here will be children of the request span
|
|
77
|
-
* await doSomething();
|
|
78
|
-
* });
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function withEventContext<T>(event: any, fn: () => Promise<T>): Promise<T>;
|
|
82
|
-
//#endregion
|
|
83
|
-
//# sourceMappingURL=middleware.d.cts.map
|
|
1
|
+
import { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-CA84nsNN.cjs";
|
|
2
|
+
export { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
|
|
@@ -1,83 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { MiddlewareObj } from "@middy/core";
|
|
4
|
-
//#region src/instrumentation/middleware.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* Options for the telemetry middleware
|
|
7
|
-
*/
|
|
8
|
-
export interface TelemetryMiddlewareOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Whether to record request body as span attribute
|
|
11
|
-
* @default false
|
|
12
|
-
*/
|
|
13
|
-
recordBody?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Whether to record response body as span attribute
|
|
16
|
-
* @default false
|
|
17
|
-
*/
|
|
18
|
-
recordResponseBody?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Custom function to extract endpoint name from event
|
|
21
|
-
*/
|
|
22
|
-
getEndpointName?: (event: any) => string | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Custom function to extract operation ID from event
|
|
25
|
-
*/
|
|
26
|
-
getOperationId?: (event: any) => string | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* Custom function to extract user ID from event
|
|
29
|
-
*/
|
|
30
|
-
getUserId?: (event: any) => string | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Whether to skip tracing for this request
|
|
33
|
-
*/
|
|
34
|
-
shouldSkip?: (event: any) => boolean;
|
|
35
|
-
/**
|
|
36
|
-
* The origins whose `traceparent` is continued: the API's own sites, the
|
|
37
|
-
* same list its CORS allows. Any other caller starts a new trace linked to
|
|
38
|
-
* the one it claimed.
|
|
39
|
-
*/
|
|
40
|
-
trustedOrigins?: readonly string[];
|
|
41
|
-
/**
|
|
42
|
-
* Trust a request with no trusted origin anyway — a caller the function
|
|
43
|
-
* can vouch for, such as one that passed IAM auth. A Lambda behind API
|
|
44
|
-
* Gateway has no private network to tell an internal caller by, so none
|
|
45
|
-
* is trusted unless this says so.
|
|
46
|
-
*/
|
|
47
|
-
trustRequest?: (event: any) => boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the current span from the Lambda event
|
|
51
|
-
*/
|
|
52
|
-
export declare function getSpanFromEvent(event: any): Span | undefined;
|
|
53
|
-
/**
|
|
54
|
-
* Get the current trace context from the Lambda event
|
|
55
|
-
*/
|
|
56
|
-
export declare function getContextFromEvent(event: any): any;
|
|
57
|
-
/**
|
|
58
|
-
* Create a telemetry middleware for Lambda handlers
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
|
|
63
|
-
*
|
|
64
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
65
|
-
* telemetry: { middleware: telemetryMiddleware() },
|
|
66
|
-
* });
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
export declare function telemetryMiddleware(options?: TelemetryMiddlewareOptions): MiddlewareObj<any, any, Error, Context$1>;
|
|
70
|
-
/**
|
|
71
|
-
* Run a function within the span context from a Lambda event
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript
|
|
75
|
-
* await withEventContext(event, async () => {
|
|
76
|
-
* // Any spans created here will be children of the request span
|
|
77
|
-
* await doSomething();
|
|
78
|
-
* });
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function withEventContext<T>(event: any, fn: () => Promise<T>): Promise<T>;
|
|
82
|
-
//#endregion
|
|
83
|
-
//# sourceMappingURL=middleware.d.mts.map
|
|
1
|
+
import { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-DAceVpfw.mjs";
|
|
2
|
+
export { TelemetryMiddlewareOptions, getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
|
|
@@ -1,161 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { context, trace } from "@opentelemetry/api";
|
|
4
|
-
//#region src/instrumentation/middleware.ts
|
|
5
|
-
const SPAN_SYMBOL = Symbol("telemetry.span");
|
|
6
|
-
const CONTEXT_SYMBOL = Symbol("telemetry.context");
|
|
7
|
-
/**
|
|
8
|
-
* Get the current span from the Lambda event
|
|
9
|
-
*/
|
|
10
|
-
function getSpanFromEvent(event) {
|
|
11
|
-
return event?.[SPAN_SYMBOL];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Get the current trace context from the Lambda event
|
|
15
|
-
*/
|
|
16
|
-
function getContextFromEvent(event) {
|
|
17
|
-
return event?.[CONTEXT_SYMBOL];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a telemetry middleware for Lambda handlers
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* import { telemetryMiddleware } from '@geekmidas/telescope/instrumentation';
|
|
25
|
-
*
|
|
26
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
27
|
-
* telemetry: { middleware: telemetryMiddleware() },
|
|
28
|
-
* });
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
function telemetryMiddleware(options = {}) {
|
|
32
|
-
return {
|
|
33
|
-
before: async (request) => {
|
|
34
|
-
if (options.shouldSkip?.(request.event)) return;
|
|
35
|
-
const event = request.event;
|
|
36
|
-
const lambdaContext = request.context;
|
|
37
|
-
const headers = normalizeHeaders(event.headers || {});
|
|
38
|
-
const trusted = isTrustedOrigin(typeof headers.origin === "string" ? headers.origin : void 0, options.trustedOrigins) || Boolean(options.trustRequest?.(event));
|
|
39
|
-
const { parent: parentContext, links } = incomingTraceContext(headers, trusted);
|
|
40
|
-
const attrs = buildSpanAttributes(event, lambdaContext, options);
|
|
41
|
-
const span = createHttpServerSpan(attrs, parentContext, links);
|
|
42
|
-
event[SPAN_SYMBOL] = span;
|
|
43
|
-
event[CONTEXT_SYMBOL] = trace.setSpan(parentContext, span);
|
|
44
|
-
span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
|
|
45
|
-
span.setAttribute("faas.name", lambdaContext.functionName);
|
|
46
|
-
if (options.recordBody && event.body) {
|
|
47
|
-
const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
|
|
48
|
-
span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
after: async (request) => {
|
|
52
|
-
const span = getSpanFromEvent(request.event);
|
|
53
|
-
if (!span) return;
|
|
54
|
-
const response = request.response;
|
|
55
|
-
const statusCode = typeof response?.statusCode === "number" ? response.statusCode : 200;
|
|
56
|
-
if (options.recordResponseBody && response?.body) {
|
|
57
|
-
const bodyStr = typeof response.body === "string" ? response.body : JSON.stringify(response.body);
|
|
58
|
-
span.setAttribute("http.response.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
|
|
59
|
-
}
|
|
60
|
-
endHttpSpan(span, { statusCode });
|
|
61
|
-
},
|
|
62
|
-
onError: async (request) => {
|
|
63
|
-
const span = getSpanFromEvent(request.event);
|
|
64
|
-
if (!span) return;
|
|
65
|
-
const error = request.error;
|
|
66
|
-
const response = request.response;
|
|
67
|
-
let statusCode = 500;
|
|
68
|
-
if (response?.statusCode) statusCode = response.statusCode;
|
|
69
|
-
else if (error && "statusCode" in error) statusCode = error.statusCode;
|
|
70
|
-
endHttpSpan(span, { statusCode }, error instanceof Error ? error : new Error(String(error)));
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Build span attributes from Lambda event
|
|
76
|
-
*/
|
|
77
|
-
function buildSpanAttributes(event, lambdaContext, options) {
|
|
78
|
-
const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
|
|
79
|
-
const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
|
|
80
|
-
let method = "INVOKE";
|
|
81
|
-
let path = "/";
|
|
82
|
-
let route;
|
|
83
|
-
let host;
|
|
84
|
-
let scheme;
|
|
85
|
-
let userAgent;
|
|
86
|
-
let clientIp;
|
|
87
|
-
let requestId;
|
|
88
|
-
if (isV2) {
|
|
89
|
-
const http = event.requestContext.http;
|
|
90
|
-
method = http.method;
|
|
91
|
-
path = event.rawPath || http.path;
|
|
92
|
-
route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
|
|
93
|
-
host = event.headers?.host;
|
|
94
|
-
scheme = "https";
|
|
95
|
-
userAgent = http.userAgent;
|
|
96
|
-
clientIp = http.sourceIp;
|
|
97
|
-
requestId = event.requestContext.requestId;
|
|
98
|
-
} else if (isV1) {
|
|
99
|
-
method = event.httpMethod;
|
|
100
|
-
path = event.path;
|
|
101
|
-
route = event.resource;
|
|
102
|
-
host = event.headers?.Host || event.headers?.host;
|
|
103
|
-
scheme = "https";
|
|
104
|
-
userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
|
|
105
|
-
clientIp = event.requestContext?.identity?.sourceIp;
|
|
106
|
-
requestId = event.requestContext?.requestId;
|
|
107
|
-
} else if ("httpMethod" in event) {
|
|
108
|
-
method = event.httpMethod;
|
|
109
|
-
path = event.path;
|
|
110
|
-
host = event.headers?.host;
|
|
111
|
-
userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
|
|
112
|
-
clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
|
|
113
|
-
}
|
|
114
|
-
const attrs = {
|
|
115
|
-
method,
|
|
116
|
-
path,
|
|
117
|
-
route,
|
|
118
|
-
host,
|
|
119
|
-
scheme,
|
|
120
|
-
userAgent,
|
|
121
|
-
clientIp,
|
|
122
|
-
requestId: requestId || lambdaContext.awsRequestId
|
|
123
|
-
};
|
|
124
|
-
if (options.getEndpointName || options.getOperationId) attrs.endpoint = {
|
|
125
|
-
name: options.getEndpointName?.(event),
|
|
126
|
-
operationId: options.getOperationId?.(event)
|
|
127
|
-
};
|
|
128
|
-
if (options.getUserId) {
|
|
129
|
-
const userId = options.getUserId(event);
|
|
130
|
-
if (userId) attrs.user = { userId };
|
|
131
|
-
}
|
|
132
|
-
return attrs;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Normalize headers to lowercase keys
|
|
136
|
-
*/
|
|
137
|
-
function normalizeHeaders(headers) {
|
|
138
|
-
const normalized = {};
|
|
139
|
-
for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
|
|
140
|
-
return normalized;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Run a function within the span context from a Lambda event
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
* ```typescript
|
|
147
|
-
* await withEventContext(event, async () => {
|
|
148
|
-
* // Any spans created here will be children of the request span
|
|
149
|
-
* await doSomething();
|
|
150
|
-
* });
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
async function withEventContext(event, fn) {
|
|
154
|
-
const ctx = getContextFromEvent(event);
|
|
155
|
-
if (!ctx) return fn();
|
|
156
|
-
return context.with(ctx, fn);
|
|
157
|
-
}
|
|
158
|
-
//#endregion
|
|
159
|
-
export { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
|
|
1
|
+
import "../http-DQzgLczm.mjs";
|
|
2
|
+
import { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext } from "../middleware-BTDncHwm.mjs";
|
|
160
3
|
|
|
161
|
-
|
|
4
|
+
export { getContextFromEvent, getSpanFromEvent, telemetryMiddleware, withEventContext };
|
|
@@ -1,138 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
let _opentelemetry_api = require("@opentelemetry/api");
|
|
4
|
-
//#region src/instrumentation/otel.ts
|
|
5
|
-
/**
|
|
6
|
-
* OpenTelemetry implementation of the Telemetry interface
|
|
7
|
-
*
|
|
8
|
-
* This provides automatic span creation for Lambda handlers using
|
|
9
|
-
* OpenTelemetry. Works with any OTel-compatible backend (Jaeger, Zipkin,
|
|
10
|
-
* Datadog, Honeycomb, etc.)
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* OpenTelemetry implementation of the Telemetry interface
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';
|
|
18
|
-
*
|
|
19
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
20
|
-
* telemetry: new OTelTelemetry(),
|
|
21
|
-
* });
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* @example With options
|
|
25
|
-
* ```typescript
|
|
26
|
-
* const adaptor = new AmazonApiGatewayV2Endpoint(endpoint, {
|
|
27
|
-
* telemetry: new OTelTelemetry({
|
|
28
|
-
* recordBody: true,
|
|
29
|
-
* getUserId: (event) => event.requestContext?.authorizer?.userId,
|
|
30
|
-
* }),
|
|
31
|
-
* });
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
var OTelTelemetry = class {
|
|
35
|
-
options;
|
|
36
|
-
constructor(options = {}) {
|
|
37
|
-
this.options = options;
|
|
38
|
-
}
|
|
39
|
-
onRequestStart(request) {
|
|
40
|
-
const { event, context: lambdaContext } = request;
|
|
41
|
-
const headers = normalizeHeaders(event.headers || {});
|
|
42
|
-
const parentContext = require_instrumentation_http.extractTraceContext(headers);
|
|
43
|
-
const attrs = this.buildSpanAttributes(event, lambdaContext);
|
|
44
|
-
const span = require_instrumentation_http.createHttpServerSpan(attrs, parentContext);
|
|
45
|
-
const otelContext = _opentelemetry_api.trace.setSpan(parentContext, span);
|
|
46
|
-
span.setAttribute("faas.invocation_id", lambdaContext.awsRequestId);
|
|
47
|
-
span.setAttribute("faas.name", lambdaContext.functionName);
|
|
48
|
-
if (this.options.recordBody && event.body) {
|
|
49
|
-
const bodyStr = typeof event.body === "string" ? event.body : JSON.stringify(event.body);
|
|
50
|
-
span.setAttribute("http.request.body", bodyStr.length > 4096 ? `${bodyStr.slice(0, 4096)}...` : bodyStr);
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
span,
|
|
54
|
-
otelContext
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
onRequestEnd(ctx, response) {
|
|
58
|
-
const { span } = ctx;
|
|
59
|
-
if (this.options.recordResponseBody && response.body) span.setAttribute("http.response.body", response.body.length > 4096 ? `${response.body.slice(0, 4096)}...` : response.body);
|
|
60
|
-
require_instrumentation_http.endHttpSpan(span, { statusCode: response.statusCode });
|
|
61
|
-
}
|
|
62
|
-
onRequestError(ctx, error) {
|
|
63
|
-
const { span } = ctx;
|
|
64
|
-
require_instrumentation_http.endHttpSpan(span, { statusCode: 500 }, error);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Build span attributes from Lambda event
|
|
68
|
-
*/
|
|
69
|
-
buildSpanAttributes(event, lambdaContext) {
|
|
70
|
-
const isV2 = "requestContext" in event && "http" in (event.requestContext || {});
|
|
71
|
-
const isV1 = "requestContext" in event && "httpMethod" in event && !("http" in (event.requestContext || {}));
|
|
72
|
-
let method = "INVOKE";
|
|
73
|
-
let path = "/";
|
|
74
|
-
let route;
|
|
75
|
-
let host;
|
|
76
|
-
let scheme;
|
|
77
|
-
let userAgent;
|
|
78
|
-
let clientIp;
|
|
79
|
-
let requestId;
|
|
80
|
-
if (isV2) {
|
|
81
|
-
const http = event.requestContext.http;
|
|
82
|
-
method = http.method;
|
|
83
|
-
path = event.rawPath || http.path;
|
|
84
|
-
route = event.routeKey?.replace(/^[A-Z]+\s+/, "");
|
|
85
|
-
host = event.headers?.host;
|
|
86
|
-
scheme = "https";
|
|
87
|
-
userAgent = http.userAgent;
|
|
88
|
-
clientIp = http.sourceIp;
|
|
89
|
-
requestId = event.requestContext.requestId;
|
|
90
|
-
} else if (isV1) {
|
|
91
|
-
method = event.httpMethod;
|
|
92
|
-
path = event.path;
|
|
93
|
-
route = event.resource;
|
|
94
|
-
host = event.headers?.Host || event.headers?.host;
|
|
95
|
-
scheme = "https";
|
|
96
|
-
userAgent = event.headers?.["User-Agent"] || event.headers?.["user-agent"];
|
|
97
|
-
clientIp = event.requestContext?.identity?.sourceIp;
|
|
98
|
-
requestId = event.requestContext?.requestId;
|
|
99
|
-
} else if ("httpMethod" in event) {
|
|
100
|
-
method = event.httpMethod;
|
|
101
|
-
path = event.path;
|
|
102
|
-
host = event.headers?.host;
|
|
103
|
-
userAgent = event.headers?.["user-agent"] || event.headers?.["User-Agent"];
|
|
104
|
-
clientIp = event.headers?.["x-forwarded-for"]?.split(",")[0]?.trim();
|
|
105
|
-
}
|
|
106
|
-
const attrs = {
|
|
107
|
-
method,
|
|
108
|
-
path,
|
|
109
|
-
route,
|
|
110
|
-
host,
|
|
111
|
-
scheme,
|
|
112
|
-
userAgent,
|
|
113
|
-
clientIp,
|
|
114
|
-
requestId: requestId || lambdaContext.awsRequestId
|
|
115
|
-
};
|
|
116
|
-
if (this.options.getEndpointName || this.options.getOperationId) attrs.endpoint = {
|
|
117
|
-
name: this.options.getEndpointName?.(event),
|
|
118
|
-
operationId: this.options.getOperationId?.(event)
|
|
119
|
-
};
|
|
120
|
-
if (this.options.getUserId) {
|
|
121
|
-
const userId = this.options.getUserId(event);
|
|
122
|
-
if (userId) attrs.user = { userId };
|
|
123
|
-
}
|
|
124
|
-
return attrs;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* Normalize headers to lowercase keys
|
|
129
|
-
*/
|
|
130
|
-
function normalizeHeaders(headers) {
|
|
131
|
-
const normalized = {};
|
|
132
|
-
for (const [key, value] of Object.entries(headers)) normalized[key.toLowerCase()] = value;
|
|
133
|
-
return normalized;
|
|
134
|
-
}
|
|
135
|
-
//#endregion
|
|
136
|
-
exports.OTelTelemetry = OTelTelemetry;
|
|
1
|
+
require('../http-D_Z8sYXZ.cjs');
|
|
2
|
+
const require_otel = require('../otel-C1HqHA2O.cjs');
|
|
137
3
|
|
|
138
|
-
|
|
4
|
+
exports.OTelTelemetry = require_otel.OTelTelemetry;
|