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