autotel 3.5.0 → 3.7.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/dist/attribute-redacting-processor-DtTS9xxh.d.cts +175 -0
- package/dist/attribute-redacting-processor-DtTS9xxh.d.cts.map +1 -0
- package/dist/attribute-redacting-processor-DtTS9xxh.d.ts +175 -0
- package/dist/attribute-redacting-processor-DtTS9xxh.d.ts.map +1 -0
- package/dist/attribute-redacting-processor.cjs +374 -33
- package/dist/attribute-redacting-processor.cjs.map +1 -1
- package/dist/attribute-redacting-processor.d.cts +2 -207
- package/dist/attribute-redacting-processor.d.ts +2 -207
- package/dist/attribute-redacting-processor.js +368 -2
- package/dist/attribute-redacting-processor.js.map +1 -1
- package/dist/attributes-D3etyRVc.cjs +713 -0
- package/dist/attributes-D3etyRVc.cjs.map +1 -0
- package/dist/attributes-ksn4HVbd.js +600 -0
- package/dist/attributes-ksn4HVbd.js.map +1 -0
- package/dist/attributes.cjs +21 -85
- package/dist/attributes.d.cts +2 -20
- package/dist/attributes.d.ts +2 -20
- package/dist/attributes.js +3 -5
- package/dist/auto.cjs +50 -28
- package/dist/auto.cjs.map +1 -1
- package/dist/auto.d.cts +1 -2
- package/dist/auto.d.ts +1 -2
- package/dist/auto.js +49 -23
- package/dist/auto.js.map +1 -1
- package/dist/business-baggage.cjs +357 -13
- package/dist/business-baggage.cjs.map +1 -1
- package/dist/business-baggage.d.cts +106 -139
- package/dist/business-baggage.d.cts.map +1 -0
- package/dist/business-baggage.d.ts +106 -139
- package/dist/business-baggage.d.ts.map +1 -0
- package/dist/business-baggage.js +357 -2
- package/dist/business-baggage.js.map +1 -1
- package/dist/canonical-log-line-processor--RlFDHhm.cjs +377 -0
- package/dist/canonical-log-line-processor--RlFDHhm.cjs.map +1 -0
- package/dist/canonical-log-line-processor-BcRuAdRk.d.ts +147 -0
- package/dist/canonical-log-line-processor-BcRuAdRk.d.ts.map +1 -0
- package/dist/canonical-log-line-processor-DbBQT5vY.js +366 -0
- package/dist/canonical-log-line-processor-DbBQT5vY.js.map +1 -0
- package/dist/canonical-log-line-processor-xvjMgtpF.d.cts +147 -0
- package/dist/canonical-log-line-processor-xvjMgtpF.d.cts.map +1 -0
- package/dist/config.cjs +118 -22
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +33 -45
- package/dist/config.d.cts.map +1 -0
- package/dist/config.d.ts +33 -45
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +116 -3
- package/dist/config.js.map +1 -1
- package/dist/correlated-events-Bzh5y-UB.js +28 -0
- package/dist/correlated-events-Bzh5y-UB.js.map +1 -0
- package/dist/correlated-events-kSwLo3mi.cjs +34 -0
- package/dist/correlated-events-kSwLo3mi.cjs.map +1 -0
- package/dist/correlation-id.cjs +11 -53
- package/dist/correlation-id.d.cts +6 -5
- package/dist/correlation-id.d.cts.map +1 -0
- package/dist/correlation-id.d.ts +6 -5
- package/dist/correlation-id.d.ts.map +1 -0
- package/dist/correlation-id.js +3 -16
- package/dist/db.cjs +244 -209
- package/dist/db.cjs.map +1 -1
- package/dist/db.d.cts +28 -26
- package/dist/db.d.cts.map +1 -0
- package/dist/db.d.ts +28 -26
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +243 -207
- package/dist/db.js.map +1 -1
- package/dist/decorators.cjs +39 -65
- package/dist/decorators.cjs.map +1 -1
- package/dist/decorators.d.cts +10 -37
- package/dist/decorators.d.cts.map +1 -0
- package/dist/decorators.d.ts +10 -37
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +38 -63
- package/dist/decorators.js.map +1 -1
- package/dist/define-event-CreknLm3.d.ts +25 -0
- package/dist/define-event-CreknLm3.d.ts.map +1 -0
- package/dist/define-event-HZRizPwz.d.cts +25 -0
- package/dist/define-event-HZRizPwz.d.cts.map +1 -0
- package/dist/drain-pipeline.cjs +111 -9
- package/dist/drain-pipeline.cjs.map +1 -1
- package/dist/drain-pipeline.d.cts +27 -32
- package/dist/drain-pipeline.d.cts.map +1 -0
- package/dist/drain-pipeline.d.ts +27 -32
- package/dist/drain-pipeline.d.ts.map +1 -0
- package/dist/drain-pipeline.js +111 -2
- package/dist/drain-pipeline.js.map +1 -1
- package/dist/enrichers.cjs +59 -66
- package/dist/enrichers.cjs.map +1 -1
- package/dist/enrichers.d.cts +15 -13
- package/dist/enrichers.d.cts.map +1 -0
- package/dist/enrichers.d.ts +15 -13
- package/dist/enrichers.d.ts.map +1 -0
- package/dist/enrichers.js +58 -65
- package/dist/enrichers.js.map +1 -1
- package/dist/event-Dlqr4ZNL.cjs +778 -0
- package/dist/event-Dlqr4ZNL.cjs.map +1 -0
- package/dist/event-_58ryBjh.js +761 -0
- package/dist/event-_58ryBjh.js.map +1 -0
- package/dist/event-subscriber-D1XLkPzi.d.cts +223 -0
- package/dist/event-subscriber-D1XLkPzi.d.cts.map +1 -0
- package/dist/event-subscriber-D1XLkPzi.d.ts +223 -0
- package/dist/event-subscriber-D1XLkPzi.d.ts.map +1 -0
- package/dist/event-subscriber.cjs +0 -6
- package/dist/event-subscriber.d.cts +2 -221
- package/dist/event-subscriber.d.ts +2 -221
- package/dist/event-subscriber.js +1 -3
- package/dist/event-testing-BqRnI0z4.d.cts +106 -0
- package/dist/event-testing-BqRnI0z4.d.cts.map +1 -0
- package/dist/event-testing-CfFs3to2.d.ts +106 -0
- package/dist/event-testing-CfFs3to2.d.ts.map +1 -0
- package/dist/event-testing.cjs +93 -17
- package/dist/event-testing.cjs.map +1 -1
- package/dist/event-testing.d.cts +2 -110
- package/dist/event-testing.d.ts +2 -110
- package/dist/event-testing.js +91 -2
- package/dist/event-testing.js.map +1 -1
- package/dist/event.cjs +5 -36
- package/dist/event.d.cts +295 -340
- package/dist/event.d.cts.map +1 -0
- package/dist/event.d.ts +295 -340
- package/dist/event.d.ts.map +1 -0
- package/dist/event.js +3 -20
- package/dist/exporters.cjs +12 -16
- package/dist/exporters.d.cts +86 -111
- package/dist/exporters.d.cts.map +1 -0
- package/dist/exporters.d.ts +86 -111
- package/dist/exporters.d.ts.map +1 -0
- package/dist/exporters.js +4 -4
- package/dist/filtering-span-processor-B8R8B7Uk.d.cts +59 -0
- package/dist/filtering-span-processor-B8R8B7Uk.d.cts.map +1 -0
- package/dist/filtering-span-processor-B8R8B7Uk.d.ts +59 -0
- package/dist/filtering-span-processor-B8R8B7Uk.d.ts.map +1 -0
- package/dist/filtering-span-processor.cjs +49 -9
- package/dist/filtering-span-processor.cjs.map +1 -1
- package/dist/filtering-span-processor.d.cts +2 -80
- package/dist/filtering-span-processor.d.ts +2 -80
- package/dist/filtering-span-processor.js +49 -2
- package/dist/filtering-span-processor.js.map +1 -1
- package/dist/functional-BGkT8J-h.js +1265 -0
- package/dist/functional-BGkT8J-h.js.map +1 -0
- package/dist/functional-C4CzoVrX.cjs +1312 -0
- package/dist/functional-C4CzoVrX.cjs.map +1 -0
- package/dist/functional.cjs +11 -56
- package/dist/functional.d.cts +96 -97
- package/dist/functional.d.cts.map +1 -0
- package/dist/functional.d.ts +96 -97
- package/dist/functional.d.ts.map +1 -0
- package/dist/functional.js +3 -19
- package/dist/http.cjs +276 -175
- package/dist/http.cjs.map +1 -1
- package/dist/http.d.cts +17 -37
- package/dist/http.d.cts.map +1 -0
- package/dist/http.d.ts +17 -37
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +275 -173
- package/dist/http.js.map +1 -1
- package/dist/index-CX0aG1Uh.d.ts +708 -0
- package/dist/index-CX0aG1Uh.d.ts.map +1 -0
- package/dist/index-DIWZFKUS.d.cts +708 -0
- package/dist/index-DIWZFKUS.d.cts.map +1 -0
- package/dist/index.cjs +1050 -1184
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +401 -570
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +401 -570
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +913 -725
- package/dist/index.js.map +1 -1
- package/dist/init-CNp-ee80.d.cts +1157 -0
- package/dist/init-CNp-ee80.d.cts.map +1 -0
- package/dist/init-Ch6t7MNI.js +1015 -0
- package/dist/init-Ch6t7MNI.js.map +1 -0
- package/dist/init-DJQOdVlN.d.ts +1157 -0
- package/dist/init-DJQOdVlN.d.ts.map +1 -0
- package/dist/init-DvapOXCc.cjs +1092 -0
- package/dist/init-DvapOXCc.cjs.map +1 -0
- package/dist/instrumentation.cjs +159 -185
- package/dist/instrumentation.cjs.map +1 -1
- package/dist/instrumentation.d.cts +42 -40
- package/dist/instrumentation.d.cts.map +1 -0
- package/dist/instrumentation.d.ts +42 -40
- package/dist/instrumentation.d.ts.map +1 -0
- package/dist/instrumentation.js +158 -183
- package/dist/instrumentation.js.map +1 -1
- package/dist/logger-BauSUhUv.d.cts +313 -0
- package/dist/logger-BauSUhUv.d.cts.map +1 -0
- package/dist/logger-BauSUhUv.d.ts +313 -0
- package/dist/logger-BauSUhUv.d.ts.map +1 -0
- package/dist/logger.cjs +225 -25
- package/dist/logger.cjs.map +1 -1
- package/dist/logger.d.cts +2 -348
- package/dist/logger.d.ts +2 -348
- package/dist/logger.js +204 -4
- package/dist/logger.js.map +1 -1
- package/dist/messaging-adapters.cjs +292 -187
- package/dist/messaging-adapters.cjs.map +1 -1
- package/dist/messaging-adapters.d.cts +28 -66
- package/dist/messaging-adapters.d.cts.map +1 -0
- package/dist/messaging-adapters.d.ts +28 -66
- package/dist/messaging-adapters.d.ts.map +1 -0
- package/dist/messaging-adapters.js +291 -185
- package/dist/messaging-adapters.js.map +1 -1
- package/dist/messaging-testing.cjs +306 -372
- package/dist/messaging-testing.cjs.map +1 -1
- package/dist/messaging-testing.d.cts +194 -223
- package/dist/messaging-testing.d.cts.map +1 -0
- package/dist/messaging-testing.d.ts +194 -223
- package/dist/messaging-testing.d.ts.map +1 -0
- package/dist/messaging-testing.js +305 -371
- package/dist/messaging-testing.js.map +1 -1
- package/dist/messaging.cjs +757 -35
- package/dist/messaging.cjs.map +1 -1
- package/dist/messaging.d.cts +603 -644
- package/dist/messaging.d.cts.map +1 -0
- package/dist/messaging.d.ts +603 -644
- package/dist/messaging.d.ts.map +1 -0
- package/dist/messaging.js +756 -20
- package/dist/messaging.js.map +1 -1
- package/dist/metric-helpers.cjs +27 -27
- package/dist/metric-helpers.cjs.map +1 -1
- package/dist/metric-helpers.d.cts +4 -2
- package/dist/metric-helpers.d.cts.map +1 -0
- package/dist/metric-helpers.d.ts +4 -2
- package/dist/metric-helpers.d.ts.map +1 -0
- package/dist/metric-helpers.js +24 -4
- package/dist/metric-helpers.js.map +1 -1
- package/dist/metric-testing-DXdK3-Q3.d.ts +106 -0
- package/dist/metric-testing-DXdK3-Q3.d.ts.map +1 -0
- package/dist/metric-testing-MxvzChDp.d.cts +106 -0
- package/dist/metric-testing-MxvzChDp.d.cts.map +1 -0
- package/dist/metric-testing.cjs +93 -17
- package/dist/metric-testing.cjs.map +1 -1
- package/dist/metric-testing.d.cts +2 -110
- package/dist/metric-testing.d.ts +2 -110
- package/dist/metric-testing.js +91 -2
- package/dist/metric-testing.js.map +1 -1
- package/dist/metric.cjs +306 -22
- package/dist/metric.cjs.map +1 -1
- package/dist/metric.d.cts +170 -198
- package/dist/metric.d.cts.map +1 -0
- package/dist/metric.d.ts +170 -198
- package/dist/metric.d.ts.map +1 -0
- package/dist/metric.js +277 -7
- package/dist/metric.js.map +1 -1
- package/dist/node-require-DF5QBX6z.cjs +99 -0
- package/dist/node-require-DF5QBX6z.cjs.map +1 -0
- package/dist/node-require-Db1oDpLj.js +88 -0
- package/dist/node-require-Db1oDpLj.js.map +1 -0
- package/dist/operation-context-C-2hmmtP.js +59 -0
- package/dist/operation-context-C-2hmmtP.js.map +1 -0
- package/dist/operation-context-n4_obUwq.cjs +70 -0
- package/dist/operation-context-n4_obUwq.cjs.map +1 -0
- package/dist/parse-error.cjs +55 -9
- package/dist/parse-error.cjs.map +1 -1
- package/dist/parse-error.d.cts +12 -10
- package/dist/parse-error.d.cts.map +1 -0
- package/dist/parse-error.d.ts +12 -10
- package/dist/parse-error.d.ts.map +1 -0
- package/dist/parse-error.js +55 -2
- package/dist/parse-error.js.map +1 -1
- package/dist/pretty-console-exporter-CMzlrRNg.cjs +232 -0
- package/dist/pretty-console-exporter-CMzlrRNg.cjs.map +1 -0
- package/dist/pretty-console-exporter-DqKl_q9z.js +227 -0
- package/dist/pretty-console-exporter-DqKl_q9z.js.map +1 -0
- package/dist/processors.cjs +13 -17
- package/dist/processors.d.cts +3 -171
- package/dist/processors.d.ts +3 -171
- package/dist/processors.js +4 -4
- package/dist/register.cjs +35 -6
- package/dist/register.cjs.map +1 -1
- package/dist/register.d.cts +1 -2
- package/dist/register.d.ts +1 -2
- package/dist/register.js +36 -3
- package/dist/register.js.map +1 -1
- package/dist/registry-DfXA3R1L.js +184 -0
- package/dist/registry-DfXA3R1L.js.map +1 -0
- package/dist/registry-JZg2J3RZ.cjs +334 -0
- package/dist/registry-JZg2J3RZ.cjs.map +1 -0
- package/dist/sampling-CR0Va1VB.d.ts +351 -0
- package/dist/sampling-CR0Va1VB.d.ts.map +1 -0
- package/dist/sampling-DfYhDJij.d.cts +351 -0
- package/dist/sampling-DfYhDJij.d.cts.map +1 -0
- package/dist/sampling.cjs +452 -60
- package/dist/sampling.cjs.map +1 -1
- package/dist/sampling.d.cts +2 -379
- package/dist/sampling.d.ts +2 -379
- package/dist/sampling.js +441 -5
- package/dist/sampling.js.map +1 -1
- package/dist/security-schema.cjs +65 -46
- package/dist/security-schema.cjs.map +1 -1
- package/dist/security-schema.d.cts +23 -26
- package/dist/security-schema.d.cts.map +1 -0
- package/dist/security-schema.d.ts +23 -26
- package/dist/security-schema.d.ts.map +1 -0
- package/dist/security-schema.js +64 -45
- package/dist/security-schema.js.map +1 -1
- package/dist/semantic-conventions-FhSxv-bK.d.cts +32 -0
- package/dist/semantic-conventions-FhSxv-bK.d.cts.map +1 -0
- package/dist/semantic-conventions-FhSxv-bK.d.ts +32 -0
- package/dist/semantic-conventions-FhSxv-bK.d.ts.map +1 -0
- package/dist/semantic-conventions.cjs +15 -26
- package/dist/semantic-conventions.cjs.map +1 -1
- package/dist/semantic-conventions.d.cts +2 -29
- package/dist/semantic-conventions.d.ts +2 -29
- package/dist/semantic-conventions.js +12 -3
- package/dist/semantic-conventions.js.map +1 -1
- package/dist/semantic-helpers.cjs +440 -38
- package/dist/semantic-helpers.cjs.map +1 -1
- package/dist/semantic-helpers.d.cts +38 -45
- package/dist/semantic-helpers.d.cts.map +1 -0
- package/dist/semantic-helpers.d.ts +38 -45
- package/dist/semantic-helpers.d.ts.map +1 -0
- package/dist/semantic-helpers.js +438 -19
- package/dist/semantic-helpers.js.map +1 -1
- package/dist/span-name-normalizer-8ZOGJuwv.d.cts +70 -0
- package/dist/span-name-normalizer-8ZOGJuwv.d.cts.map +1 -0
- package/dist/span-name-normalizer-8ZOGJuwv.d.ts +70 -0
- package/dist/span-name-normalizer-8ZOGJuwv.d.ts.map +1 -0
- package/dist/span-name-normalizer.cjs +95 -17
- package/dist/span-name-normalizer.cjs.map +1 -1
- package/dist/span-name-normalizer.d.cts +2 -94
- package/dist/span-name-normalizer.d.ts +2 -94
- package/dist/span-name-normalizer.js +93 -2
- package/dist/span-name-normalizer.js.map +1 -1
- package/dist/stable-hash-BNTMrmdB.cjs +28 -0
- package/dist/stable-hash-BNTMrmdB.cjs.map +1 -0
- package/dist/stable-hash-Cg5cT34Q.js +23 -0
- package/dist/stable-hash-Cg5cT34Q.js.map +1 -0
- package/dist/structured-error-9--cxBay.js +143 -0
- package/dist/structured-error-9--cxBay.js.map +1 -0
- package/dist/structured-error-CHg7DoIQ.cjs +178 -0
- package/dist/structured-error-CHg7DoIQ.cjs.map +1 -0
- package/dist/tail-sampling-processor.cjs +26 -13
- package/dist/tail-sampling-processor.cjs.map +1 -1
- package/dist/tail-sampling-processor.d.cts +11 -23
- package/dist/tail-sampling-processor.d.cts.map +1 -0
- package/dist/tail-sampling-processor.d.ts +11 -23
- package/dist/tail-sampling-processor.d.ts.map +1 -0
- package/dist/tail-sampling-processor.js +27 -6
- package/dist/tail-sampling-processor.js.map +1 -1
- package/dist/test-span-collector.cjs +70 -72
- package/dist/test-span-collector.cjs.map +1 -1
- package/dist/test-span-collector.d.cts +25 -43
- package/dist/test-span-collector.d.cts.map +1 -0
- package/dist/test-span-collector.d.ts +25 -43
- package/dist/test-span-collector.d.ts.map +1 -0
- package/dist/test-span-collector.js +69 -70
- package/dist/test-span-collector.js.map +1 -1
- package/dist/testing.cjs +389 -278
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +39 -62
- package/dist/testing.d.cts.map +1 -0
- package/dist/testing.d.ts +39 -62
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +386 -265
- package/dist/testing.js.map +1 -1
- package/dist/trace-context-Cijqoi6e.d.cts +212 -0
- package/dist/trace-context-Cijqoi6e.d.cts.map +1 -0
- package/dist/trace-context-Cijqoi6e.d.ts +212 -0
- package/dist/trace-context-Cijqoi6e.d.ts.map +1 -0
- package/dist/trace-helpers.cjs +634 -54
- package/dist/trace-helpers.cjs.map +1 -1
- package/dist/trace-helpers.d.cts +17 -49
- package/dist/trace-helpers.d.cts.map +1 -0
- package/dist/trace-helpers.d.ts +17 -49
- package/dist/trace-helpers.d.ts.map +1 -0
- package/dist/trace-helpers.js +624 -3
- package/dist/trace-helpers.js.map +1 -1
- package/dist/tracer-provider.cjs +227 -16
- package/dist/tracer-provider.cjs.map +1 -1
- package/dist/tracer-provider.d.cts +5 -4
- package/dist/tracer-provider.d.cts.map +1 -0
- package/dist/tracer-provider.d.ts +5 -4
- package/dist/tracer-provider.d.ts.map +1 -0
- package/dist/tracer-provider.js +227 -2
- package/dist/tracer-provider.js.map +1 -1
- package/dist/track-3HY4NGV-.cjs +1212 -0
- package/dist/track-3HY4NGV-.cjs.map +1 -0
- package/dist/track-nsKVy-pj.js +1111 -0
- package/dist/track-nsKVy-pj.js.map +1 -0
- package/dist/validate.cjs +201 -0
- package/dist/validate.cjs.map +1 -0
- package/dist/validate.d.cts +105 -0
- package/dist/validate.d.cts.map +1 -0
- package/dist/validate.d.ts +105 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +197 -0
- package/dist/validate.js.map +1 -0
- package/dist/validation-attributes.cjs +45 -0
- package/dist/validation-attributes.cjs.map +1 -0
- package/dist/validation-attributes.d.cts +33 -0
- package/dist/validation-attributes.d.cts.map +1 -0
- package/dist/validation-attributes.d.ts +33 -0
- package/dist/validation-attributes.d.ts.map +1 -0
- package/dist/validation-attributes.js +41 -0
- package/dist/validation-attributes.js.map +1 -0
- package/dist/webhook.cjs +286 -255
- package/dist/webhook.cjs.map +1 -1
- package/dist/webhook.d.cts +157 -192
- package/dist/webhook.d.cts.map +1 -0
- package/dist/webhook.d.ts +157 -192
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +285 -253
- package/dist/webhook.js.map +1 -1
- package/dist/workflow-distributed.cjs +498 -411
- package/dist/workflow-distributed.cjs.map +1 -1
- package/dist/workflow-distributed.d.cts +163 -173
- package/dist/workflow-distributed.d.cts.map +1 -0
- package/dist/workflow-distributed.d.ts +163 -173
- package/dist/workflow-distributed.d.ts.map +1 -0
- package/dist/workflow-distributed.js +497 -409
- package/dist/workflow-distributed.js.map +1 -1
- package/dist/workflow.cjs +405 -39
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.d.cts +78 -131
- package/dist/workflow.d.cts.map +1 -0
- package/dist/workflow.d.ts +78 -131
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +403 -20
- package/dist/workflow.js.map +1 -1
- package/dist/yaml-config-B3dQ82GR.cjs +272 -0
- package/dist/yaml-config-B3dQ82GR.cjs.map +1 -0
- package/dist/yaml-config.cjs +5 -24
- package/dist/yaml-config.d.cts +30 -64
- package/dist/yaml-config.d.cts.map +1 -0
- package/dist/yaml-config.d.ts +30 -64
- package/dist/yaml-config.d.ts.map +1 -0
- package/dist/yaml-config.js +226 -7
- package/dist/yaml-config.js.map +1 -1
- package/package.json +14 -4
- package/src/define-event.ts +2 -21
- package/src/index.ts +3 -0
- package/src/request-logger.test.ts +53 -1
- package/src/request-logger.ts +58 -0
- package/src/stable-hash.ts +27 -0
- package/src/validate.test.ts +287 -0
- package/src/validate.ts +307 -0
- package/src/validation-attributes.ts +43 -0
- package/dist/attributes.cjs.map +0 -1
- package/dist/attributes.js.map +0 -1
- package/dist/chunk-2ZKEORFN.cjs +0 -14
- package/dist/chunk-2ZKEORFN.cjs.map +0 -1
- package/dist/chunk-3QXBFGKP.js +0 -344
- package/dist/chunk-3QXBFGKP.js.map +0 -1
- package/dist/chunk-454CH4OV.js +0 -744
- package/dist/chunk-454CH4OV.js.map +0 -1
- package/dist/chunk-4A53YIAX.js +0 -180
- package/dist/chunk-4A53YIAX.js.map +0 -1
- package/dist/chunk-4IFSYQVX.js +0 -337
- package/dist/chunk-4IFSYQVX.js.map +0 -1
- package/dist/chunk-4P6ZOARG.cjs +0 -33
- package/dist/chunk-4P6ZOARG.cjs.map +0 -1
- package/dist/chunk-55ER2KD5.js +0 -228
- package/dist/chunk-55ER2KD5.js.map +0 -1
- package/dist/chunk-5ZN622AO.js +0 -73
- package/dist/chunk-5ZN622AO.js.map +0 -1
- package/dist/chunk-6S5RUKU3.cjs +0 -347
- package/dist/chunk-6S5RUKU3.cjs.map +0 -1
- package/dist/chunk-6UQRVUN3.js +0 -222
- package/dist/chunk-6UQRVUN3.js.map +0 -1
- package/dist/chunk-7552UTQW.js +0 -11
- package/dist/chunk-7552UTQW.js.map +0 -1
- package/dist/chunk-7EQ4G4SI.cjs +0 -146
- package/dist/chunk-7EQ4G4SI.cjs.map +0 -1
- package/dist/chunk-7SAWIN74.js +0 -285
- package/dist/chunk-7SAWIN74.js.map +0 -1
- package/dist/chunk-A4E5AQFK.js +0 -30
- package/dist/chunk-A4E5AQFK.js.map +0 -1
- package/dist/chunk-AC5GNZKB.cjs +0 -344
- package/dist/chunk-AC5GNZKB.cjs.map +0 -1
- package/dist/chunk-ALPYR2GC.js +0 -1061
- package/dist/chunk-ALPYR2GC.js.map +0 -1
- package/dist/chunk-BZHG5IZ4.js +0 -73
- package/dist/chunk-BZHG5IZ4.js.map +0 -1
- package/dist/chunk-CEAQK2QY.cjs +0 -32
- package/dist/chunk-CEAQK2QY.cjs.map +0 -1
- package/dist/chunk-CMHVQR6P.js +0 -170
- package/dist/chunk-CMHVQR6P.js.map +0 -1
- package/dist/chunk-CU6IDACR.cjs +0 -224
- package/dist/chunk-CU6IDACR.cjs.map +0 -1
- package/dist/chunk-DPSA4QLA.js +0 -344
- package/dist/chunk-DPSA4QLA.js.map +0 -1
- package/dist/chunk-DQEHQNQE.js +0 -795
- package/dist/chunk-DQEHQNQE.js.map +0 -1
- package/dist/chunk-ESLWRGAG.cjs +0 -92
- package/dist/chunk-ESLWRGAG.cjs.map +0 -1
- package/dist/chunk-ESMHTKLJ.cjs +0 -206
- package/dist/chunk-ESMHTKLJ.cjs.map +0 -1
- package/dist/chunk-FGNDN2FD.cjs +0 -1242
- package/dist/chunk-FGNDN2FD.cjs.map +0 -1
- package/dist/chunk-FU6R566Y.cjs +0 -236
- package/dist/chunk-FU6R566Y.cjs.map +0 -1
- package/dist/chunk-GBFTC7Q7.cjs +0 -837
- package/dist/chunk-GBFTC7Q7.cjs.map +0 -1
- package/dist/chunk-GYR5K654.js +0 -91
- package/dist/chunk-GYR5K654.js.map +0 -1
- package/dist/chunk-HA2WBOGQ.js +0 -57
- package/dist/chunk-HA2WBOGQ.js.map +0 -1
- package/dist/chunk-HT5JQKN2.js +0 -118
- package/dist/chunk-HT5JQKN2.js.map +0 -1
- package/dist/chunk-INJD3G4K.cjs +0 -340
- package/dist/chunk-INJD3G4K.cjs.map +0 -1
- package/dist/chunk-IOYFAFHJ.cjs +0 -95
- package/dist/chunk-IOYFAFHJ.cjs.map +0 -1
- package/dist/chunk-J5QENANM.js +0 -87
- package/dist/chunk-J5QENANM.js.map +0 -1
- package/dist/chunk-J7VGRIAJ.js +0 -64
- package/dist/chunk-J7VGRIAJ.js.map +0 -1
- package/dist/chunk-KFOHQK7X.js +0 -144
- package/dist/chunk-KFOHQK7X.js.map +0 -1
- package/dist/chunk-KIL5CUN6.js +0 -31
- package/dist/chunk-KIL5CUN6.js.map +0 -1
- package/dist/chunk-LITNXTTT.js +0 -3
- package/dist/chunk-LITNXTTT.js.map +0 -1
- package/dist/chunk-M3LFHHTN.cjs +0 -764
- package/dist/chunk-M3LFHHTN.cjs.map +0 -1
- package/dist/chunk-NEIB3TLD.cjs +0 -360
- package/dist/chunk-NEIB3TLD.cjs.map +0 -1
- package/dist/chunk-NVAI5CCN.cjs +0 -39
- package/dist/chunk-NVAI5CCN.cjs.map +0 -1
- package/dist/chunk-NVGPMGI4.js +0 -95
- package/dist/chunk-NVGPMGI4.js.map +0 -1
- package/dist/chunk-NZ72VDNY.cjs +0 -4
- package/dist/chunk-NZ72VDNY.cjs.map +0 -1
- package/dist/chunk-O4JZUCUE.js +0 -1174
- package/dist/chunk-O4JZUCUE.js.map +0 -1
- package/dist/chunk-O7JOKRN2.js +0 -833
- package/dist/chunk-O7JOKRN2.js.map +0 -1
- package/dist/chunk-OPPXYVEZ.cjs +0 -131
- package/dist/chunk-OPPXYVEZ.cjs.map +0 -1
- package/dist/chunk-Q4EULJQY.js +0 -35
- package/dist/chunk-Q4EULJQY.js.map +0 -1
- package/dist/chunk-QWW3E3JM.cjs +0 -178
- package/dist/chunk-QWW3E3JM.cjs.map +0 -1
- package/dist/chunk-R7QYGZUP.cjs +0 -1075
- package/dist/chunk-R7QYGZUP.cjs.map +0 -1
- package/dist/chunk-RUPKBKUF.js +0 -352
- package/dist/chunk-RUPKBKUF.js.map +0 -1
- package/dist/chunk-SEO6NAQT.js +0 -14
- package/dist/chunk-SEO6NAQT.js.map +0 -1
- package/dist/chunk-T4B5LB6E.cjs +0 -66
- package/dist/chunk-T4B5LB6E.cjs.map +0 -1
- package/dist/chunk-TC5ZPWM4.cjs +0 -289
- package/dist/chunk-TC5ZPWM4.cjs.map +0 -1
- package/dist/chunk-TQ5UWA7S.js +0 -26
- package/dist/chunk-TQ5UWA7S.js.map +0 -1
- package/dist/chunk-URHPSJW2.js +0 -339
- package/dist/chunk-URHPSJW2.js.map +0 -1
- package/dist/chunk-UY3UYPBZ.cjs +0 -77
- package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
- package/dist/chunk-VG2ABKJX.cjs +0 -100
- package/dist/chunk-VG2ABKJX.cjs.map +0 -1
- package/dist/chunk-VH77IPJN.cjs +0 -358
- package/dist/chunk-VH77IPJN.cjs.map +0 -1
- package/dist/chunk-VQTCQKHQ.cjs +0 -17
- package/dist/chunk-VQTCQKHQ.cjs.map +0 -1
- package/dist/chunk-WGWSHJ2N.js +0 -38
- package/dist/chunk-WGWSHJ2N.js.map +0 -1
- package/dist/chunk-WJH6IYU2.cjs +0 -32
- package/dist/chunk-WJH6IYU2.cjs.map +0 -1
- package/dist/chunk-YREV3LGG.cjs +0 -61
- package/dist/chunk-YREV3LGG.cjs.map +0 -1
- package/dist/chunk-YTXEZ4SD.cjs +0 -77
- package/dist/chunk-YTXEZ4SD.cjs.map +0 -1
- package/dist/chunk-YWCESU4Y.js +0 -1233
- package/dist/chunk-YWCESU4Y.js.map +0 -1
- package/dist/chunk-Z6HRSM2Y.cjs +0 -799
- package/dist/chunk-Z6HRSM2Y.cjs.map +0 -1
- package/dist/chunk-Z7PW3KHL.cjs +0 -1198
- package/dist/chunk-Z7PW3KHL.cjs.map +0 -1
- package/dist/chunk-ZNMBW67B.cjs +0 -40
- package/dist/chunk-ZNMBW67B.cjs.map +0 -1
- package/dist/correlation-id.cjs.map +0 -1
- package/dist/correlation-id.js.map +0 -1
- package/dist/event-subscriber.cjs.map +0 -1
- package/dist/event-subscriber.js.map +0 -1
- package/dist/event.cjs.map +0 -1
- package/dist/event.js.map +0 -1
- package/dist/exporters.cjs.map +0 -1
- package/dist/exporters.js.map +0 -1
- package/dist/functional.cjs.map +0 -1
- package/dist/functional.js.map +0 -1
- package/dist/init-DIowiiCh.d.ts +0 -1167
- package/dist/init-j-A1zI16.d.cts +0 -1167
- package/dist/processors.cjs.map +0 -1
- package/dist/processors.js.map +0 -1
- package/dist/trace-context-DbGKd1Rn.d.cts +0 -213
- package/dist/trace-context-DbGKd1Rn.d.ts +0 -213
- package/dist/utils-BahBCFtJ.d.cts +0 -712
- package/dist/utils-CLKwaUlG.d.ts +0 -712
- package/dist/yaml-config.cjs.map +0 -1
package/dist/init-j-A1zI16.d.cts
DELETED
|
@@ -1,1167 +0,0 @@
|
|
|
1
|
-
import * as _opentelemetry_sdk_trace_base from '@opentelemetry/sdk-trace-base';
|
|
2
|
-
import { SpanProcessor, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
3
|
-
import { NodeSDKConfiguration, NodeSDK } from '@opentelemetry/sdk-node';
|
|
4
|
-
import { Resource } from '@opentelemetry/resources';
|
|
5
|
-
import { Sampler, SamplingPreset } from './sampling.cjs';
|
|
6
|
-
import { EventSubscriber } from './event-subscriber.cjs';
|
|
7
|
-
import { Logger } from './logger.cjs';
|
|
8
|
-
import { Attributes } from '@opentelemetry/api';
|
|
9
|
-
import { MetricReader } from '@opentelemetry/sdk-metrics';
|
|
10
|
-
import { LogRecordProcessor } from '@opentelemetry/sdk-logs';
|
|
11
|
-
import { SpanFilterPredicate } from './filtering-span-processor.cjs';
|
|
12
|
-
import { SpanNameNormalizerConfig } from './span-name-normalizer.cjs';
|
|
13
|
-
import { AttributeRedactorConfig, AttributeRedactorPreset } from './attribute-redacting-processor.cjs';
|
|
14
|
-
import { CanonicalLogLineOptions } from './processors.cjs';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Input validation for events events and attributes
|
|
18
|
-
*
|
|
19
|
-
* Prevents:
|
|
20
|
-
* - Invalid event names
|
|
21
|
-
* - Oversized payloads
|
|
22
|
-
* - Circular references
|
|
23
|
-
* - Sensitive data leaks
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
interface ValidationConfig {
|
|
27
|
-
/** Max event name length (default: 100) */
|
|
28
|
-
maxEventNameLength: number;
|
|
29
|
-
/** Max attribute key length (default: 100) */
|
|
30
|
-
maxAttributeKeyLength: number;
|
|
31
|
-
/** Max attribute value length for strings (default: 1000) */
|
|
32
|
-
maxAttributeValueLength: number;
|
|
33
|
-
/** Max total attributes per event (default: 50) */
|
|
34
|
-
maxAttributeCount: number;
|
|
35
|
-
/** Max nesting depth for objects (default: 3) */
|
|
36
|
-
maxNestingDepth: number;
|
|
37
|
-
/** Sensitive field patterns to redact */
|
|
38
|
-
sensitivePatterns: RegExp[];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Events configuration types for trace context, correlation IDs, and enrichment
|
|
43
|
-
*
|
|
44
|
-
* @example Basic usage
|
|
45
|
-
* ```typescript
|
|
46
|
-
* import { init } from 'autotel';
|
|
47
|
-
*
|
|
48
|
-
* init({
|
|
49
|
-
* service: 'my-app',
|
|
50
|
-
* events: {
|
|
51
|
-
* includeTraceContext: true,
|
|
52
|
-
* traceUrl: (ctx) => `https://grafana.internal/explore?traceId=${ctx.traceId}`
|
|
53
|
-
* }
|
|
54
|
-
* });
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
/**
|
|
58
|
-
* Context passed to the traceUrl function for generating clickable trace URLs
|
|
59
|
-
*/
|
|
60
|
-
interface TraceUrlContext {
|
|
61
|
-
/** Trace ID (32 hex chars) - may be undefined outside a trace */
|
|
62
|
-
traceId?: string;
|
|
63
|
-
/** Span ID (16 hex chars) - may be undefined outside a trace */
|
|
64
|
-
spanId?: string;
|
|
65
|
-
/** Correlation ID (always present, 16 hex chars) */
|
|
66
|
-
correlationId: string;
|
|
67
|
-
/** Service name from init config */
|
|
68
|
-
serviceName: string;
|
|
69
|
-
/** Environment from init config */
|
|
70
|
-
environment?: string;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Per-key transform options for baggage enrichment
|
|
74
|
-
*/
|
|
75
|
-
type BaggageTransform = 'plain' | 'hash' | ((value: string) => string);
|
|
76
|
-
/**
|
|
77
|
-
* Baggage enrichment configuration with guardrails
|
|
78
|
-
*/
|
|
79
|
-
interface EnrichFromBaggageConfig {
|
|
80
|
-
/**
|
|
81
|
-
* Allowlist of baggage keys to include in events
|
|
82
|
-
* Supports exact matches and patterns (e.g., 'tenant.*')
|
|
83
|
-
*/
|
|
84
|
-
allow: string[];
|
|
85
|
-
/**
|
|
86
|
-
* Optional denylist of baggage keys to exclude
|
|
87
|
-
* Takes precedence over allow list
|
|
88
|
-
*/
|
|
89
|
-
deny?: string[];
|
|
90
|
-
/**
|
|
91
|
-
* Optional prefix to add to all enriched keys
|
|
92
|
-
* @example 'ctx.' results in 'ctx.tenant.id'
|
|
93
|
-
*/
|
|
94
|
-
prefix?: string;
|
|
95
|
-
/**
|
|
96
|
-
* Maximum number of keys to include (default: 10)
|
|
97
|
-
* Prevents payload bloat from excessive baggage
|
|
98
|
-
*/
|
|
99
|
-
maxKeys?: number;
|
|
100
|
-
/**
|
|
101
|
-
* Maximum total bytes for enriched values (default: 1024)
|
|
102
|
-
* Prevents payload bloat from large baggage values
|
|
103
|
-
*/
|
|
104
|
-
maxBytes?: number;
|
|
105
|
-
/**
|
|
106
|
-
* Per-key transform options
|
|
107
|
-
* - 'plain': Include value as-is
|
|
108
|
-
* - 'hash': Hash the value (for PII protection)
|
|
109
|
-
* - function: Custom transform function
|
|
110
|
-
*
|
|
111
|
-
* @example
|
|
112
|
-
* ```typescript
|
|
113
|
-
* transform: {
|
|
114
|
-
* 'user.id': 'hash', // Hash user ID for privacy
|
|
115
|
-
* 'tenant.id': 'plain', // Include tenant ID as-is
|
|
116
|
-
* 'session.id': (v) => v.slice(0, 8) // Custom truncation
|
|
117
|
-
* }
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
transform?: Record<string, BaggageTransform>;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Events configuration for trace context and enrichment
|
|
124
|
-
*/
|
|
125
|
-
interface EventsConfig {
|
|
126
|
-
/**
|
|
127
|
-
* Include trace context in events (default: false)
|
|
128
|
-
*
|
|
129
|
-
* When enabled, events automatically include:
|
|
130
|
-
* - autotel.trace_id (32 hex chars)
|
|
131
|
-
* - autotel.span_id (16 hex chars)
|
|
132
|
-
* - autotel.trace_flags (2 hex chars)
|
|
133
|
-
* - autotel.trace_state (raw tracestate string, if present)
|
|
134
|
-
* - autotel.correlation_id (always present, 16 hex chars)
|
|
135
|
-
*
|
|
136
|
-
* Subscribers map these to platform-specific names:
|
|
137
|
-
* - PostHog: $trace_id, $span_id
|
|
138
|
-
* - Mixpanel: trace_id, span_id
|
|
139
|
-
*/
|
|
140
|
-
includeTraceContext?: boolean;
|
|
141
|
-
/**
|
|
142
|
-
* Include full array of linked trace IDs for batch/fan-in scenarios (default: false)
|
|
143
|
-
*
|
|
144
|
-
* When false (default), batch/fan-in events include:
|
|
145
|
-
* - autotel.linked_trace_id_count: Number of linked parents
|
|
146
|
-
* - autotel.linked_trace_id_hash: Stable hash of sorted IDs (keeps payload lean)
|
|
147
|
-
*
|
|
148
|
-
* When true, events also include:
|
|
149
|
-
* - autotel.linked_trace_ids: Full array of linked trace IDs
|
|
150
|
-
*/
|
|
151
|
-
includeLinkedTraceIds?: boolean;
|
|
152
|
-
/**
|
|
153
|
-
* Generate clickable trace URL from context
|
|
154
|
-
*
|
|
155
|
-
* @param ctx - Trace context with traceId, spanId, correlationId, serviceName, environment
|
|
156
|
-
* @returns URL string or undefined to skip
|
|
157
|
-
*
|
|
158
|
-
* @example Grafana Tempo
|
|
159
|
-
* ```typescript
|
|
160
|
-
* traceUrl: (ctx) => ctx.traceId
|
|
161
|
-
* ? `https://grafana.internal/explore?traceId=${ctx.traceId}`
|
|
162
|
-
* : undefined
|
|
163
|
-
* ```
|
|
164
|
-
*
|
|
165
|
-
* @example Datadog
|
|
166
|
-
* ```typescript
|
|
167
|
-
* traceUrl: (ctx) => ctx.traceId
|
|
168
|
-
* ? `https://app.datadoghq.com/apm/traces?traceId=${ctx.traceId}`
|
|
169
|
-
* : undefined
|
|
170
|
-
* ```
|
|
171
|
-
*
|
|
172
|
-
* @example Jaeger
|
|
173
|
-
* ```typescript
|
|
174
|
-
* traceUrl: (ctx) => ctx.traceId
|
|
175
|
-
* ? `https://jaeger.internal/trace/${ctx.traceId}`
|
|
176
|
-
* : undefined
|
|
177
|
-
* ```
|
|
178
|
-
*/
|
|
179
|
-
traceUrl?: (ctx: TraceUrlContext) => string | undefined;
|
|
180
|
-
/**
|
|
181
|
-
* Auto-enrich events from baggage with guardrails
|
|
182
|
-
*
|
|
183
|
-
* Automatically includes baggage entries in events without manual code.
|
|
184
|
-
* Apply allow/deny lists and per-key transforms for PII protection.
|
|
185
|
-
*
|
|
186
|
-
* @example Basic allowlist
|
|
187
|
-
* ```typescript
|
|
188
|
-
* enrichFromBaggage: {
|
|
189
|
-
* allow: ['tenant.id', 'user.id', 'request.id']
|
|
190
|
-
* }
|
|
191
|
-
* // Events include: tenant.id, user.id, request.id from baggage
|
|
192
|
-
* ```
|
|
193
|
-
*
|
|
194
|
-
* @example With prefix and transforms
|
|
195
|
-
* ```typescript
|
|
196
|
-
* enrichFromBaggage: {
|
|
197
|
-
* allow: ['tenant.id', 'user.id', 'user.email'],
|
|
198
|
-
* deny: ['user.ssn'],
|
|
199
|
-
* prefix: 'ctx.',
|
|
200
|
-
* transform: {
|
|
201
|
-
* 'user.id': 'hash',
|
|
202
|
-
* 'user.email': 'hash'
|
|
203
|
-
* }
|
|
204
|
-
* }
|
|
205
|
-
* // Events include: ctx.tenant.id, ctx.user.id (hashed), ctx.user.email (hashed)
|
|
206
|
-
* ```
|
|
207
|
-
*/
|
|
208
|
-
enrichFromBaggage?: EnrichFromBaggageConfig;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
interface AutotelDevtoolsConfig {
|
|
212
|
-
enabled?: boolean;
|
|
213
|
-
endpoint?: string;
|
|
214
|
-
embedded?: boolean;
|
|
215
|
-
host?: string;
|
|
216
|
-
port?: number;
|
|
217
|
-
verbose?: boolean;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
interface AutotelConfig {
|
|
221
|
-
/** Service name (required) */
|
|
222
|
-
service: string;
|
|
223
|
-
/**
|
|
224
|
-
* Local developer UX for autotel-devtools.
|
|
225
|
-
*
|
|
226
|
-
* - `true`: send traces, metrics, and logs to `http://127.0.0.1:4318`
|
|
227
|
-
* - `{ embedded: true }`: attempt to start `autotel-devtools` automatically
|
|
228
|
-
*
|
|
229
|
-
* When enabled:
|
|
230
|
-
* - `endpoint` defaults to the local devtools URL
|
|
231
|
-
* - `logs` default to `true` unless explicitly set
|
|
232
|
-
*
|
|
233
|
-
* This keeps production config unchanged while making local debugging
|
|
234
|
-
* effectively zero-config.
|
|
235
|
-
*/
|
|
236
|
-
devtools?: boolean | AutotelDevtoolsConfig;
|
|
237
|
-
/** Event subscribers - bring your own (PostHog, Mixpanel, etc.) */
|
|
238
|
-
subscribers?: EventSubscriber[];
|
|
239
|
-
/**
|
|
240
|
-
* Additional OpenTelemetry instrumentations to register (raw OTel classes).
|
|
241
|
-
* Useful when you need custom instrumentation configs or instrumentations
|
|
242
|
-
* not covered by autoInstrumentations.
|
|
243
|
-
*
|
|
244
|
-
* **Important:** If you need custom instrumentation configs (like `requireParentSpan: false`),
|
|
245
|
-
* use EITHER manual instrumentations OR autoInstrumentations, not both for the same library.
|
|
246
|
-
* Manual instrumentations always take precedence over auto-instrumentations.
|
|
247
|
-
*
|
|
248
|
-
* @example Manual instrumentations with custom config
|
|
249
|
-
* ```typescript
|
|
250
|
-
* import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
|
|
251
|
-
*
|
|
252
|
-
* init({
|
|
253
|
-
* service: 'my-app',
|
|
254
|
-
* autoInstrumentations: false, // Disable auto-instrumentations
|
|
255
|
-
* instrumentations: [
|
|
256
|
-
* new MongoDBInstrumentation({
|
|
257
|
-
* requireParentSpan: false // Custom config
|
|
258
|
-
* })
|
|
259
|
-
* ]
|
|
260
|
-
* })
|
|
261
|
-
* ```
|
|
262
|
-
*
|
|
263
|
-
* @example Mix auto + manual (auto for most, manual for specific configs)
|
|
264
|
-
* ```typescript
|
|
265
|
-
* import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
|
|
266
|
-
*
|
|
267
|
-
* init({
|
|
268
|
-
* service: 'my-app',
|
|
269
|
-
* autoInstrumentations: ['http', 'express'], // Auto for these
|
|
270
|
-
* instrumentations: [
|
|
271
|
-
* new MongoDBInstrumentation({
|
|
272
|
-
* requireParentSpan: false // Manual config for MongoDB
|
|
273
|
-
* })
|
|
274
|
-
* ]
|
|
275
|
-
* })
|
|
276
|
-
* ```
|
|
277
|
-
*/
|
|
278
|
-
instrumentations?: NodeSDKConfiguration['instrumentations'];
|
|
279
|
-
/**
|
|
280
|
-
* Simple names for auto-instrumentation.
|
|
281
|
-
* Uses @opentelemetry/auto-instrumentations-node (peer dependency).
|
|
282
|
-
*
|
|
283
|
-
* **Important:** If you provide manual instrumentations for the same library,
|
|
284
|
-
* the manual config takes precedence and auto-instrumentation for that library is disabled.
|
|
285
|
-
*
|
|
286
|
-
* @example Enable all auto-instrumentations (simple approach)
|
|
287
|
-
* ```typescript
|
|
288
|
-
* init({
|
|
289
|
-
* service: 'my-app',
|
|
290
|
-
* autoInstrumentations: true // Enable all with defaults
|
|
291
|
-
* })
|
|
292
|
-
* ```
|
|
293
|
-
*
|
|
294
|
-
* @example Enable specific auto-instrumentations
|
|
295
|
-
* ```typescript
|
|
296
|
-
* init({
|
|
297
|
-
* service: 'my-app',
|
|
298
|
-
* autoInstrumentations: ['express', 'pino', 'http']
|
|
299
|
-
* })
|
|
300
|
-
* ```
|
|
301
|
-
*
|
|
302
|
-
* @example Configure specific auto-instrumentations
|
|
303
|
-
* ```typescript
|
|
304
|
-
* init({
|
|
305
|
-
* service: 'my-app',
|
|
306
|
-
* autoInstrumentations: {
|
|
307
|
-
* express: { enabled: true },
|
|
308
|
-
* pino: { enabled: true },
|
|
309
|
-
* http: { enabled: false }
|
|
310
|
-
* }
|
|
311
|
-
* })
|
|
312
|
-
* ```
|
|
313
|
-
*
|
|
314
|
-
* @example Manual config when you need custom settings
|
|
315
|
-
* ```typescript
|
|
316
|
-
* import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
|
|
317
|
-
*
|
|
318
|
-
* init({
|
|
319
|
-
* service: 'my-app',
|
|
320
|
-
* autoInstrumentations: false, // Use manual control
|
|
321
|
-
* instrumentations: [
|
|
322
|
-
* new MongoDBInstrumentation({
|
|
323
|
-
* requireParentSpan: false // Custom config not available with auto
|
|
324
|
-
* })
|
|
325
|
-
* ]
|
|
326
|
-
* })
|
|
327
|
-
* ```
|
|
328
|
-
*/
|
|
329
|
-
autoInstrumentations?: string[] | boolean | Record<string, {
|
|
330
|
-
enabled?: boolean;
|
|
331
|
-
}>;
|
|
332
|
-
/**
|
|
333
|
-
* OTLP endpoint for traces/metrics/logs
|
|
334
|
-
* Only used if you don't provide custom exporters/processors
|
|
335
|
-
* @default process.env.OTLP_ENDPOINT || 'http://localhost:4318'
|
|
336
|
-
*/
|
|
337
|
-
endpoint?: string;
|
|
338
|
-
/**
|
|
339
|
-
* Custom span processors for traces (supports multiple processors)
|
|
340
|
-
* Allows you to use any backend: Jaeger, Zipkin, Datadog, New Relic, etc.
|
|
341
|
-
* If not provided, defaults to OTLP with tail sampling
|
|
342
|
-
*
|
|
343
|
-
* @example Multiple processors
|
|
344
|
-
* ```typescript
|
|
345
|
-
* import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
|
|
346
|
-
* import { BatchSpanProcessor, SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'
|
|
347
|
-
*
|
|
348
|
-
* init({
|
|
349
|
-
* service: 'my-app',
|
|
350
|
-
* spanProcessors: [
|
|
351
|
-
* new BatchSpanProcessor(new JaegerExporter()),
|
|
352
|
-
* new SimpleSpanProcessor(new ConsoleSpanExporter()) // Debug alongside production
|
|
353
|
-
* ]
|
|
354
|
-
* })
|
|
355
|
-
* ```
|
|
356
|
-
*
|
|
357
|
-
* @example Single processor
|
|
358
|
-
* ```typescript
|
|
359
|
-
* import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
360
|
-
*
|
|
361
|
-
* init({
|
|
362
|
-
* service: 'my-app',
|
|
363
|
-
* spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())]
|
|
364
|
-
* })
|
|
365
|
-
* ```
|
|
366
|
-
*/
|
|
367
|
-
spanProcessors?: SpanProcessor[];
|
|
368
|
-
/**
|
|
369
|
-
* Custom span processor for traces (single-item alias of spanProcessors)
|
|
370
|
-
* @deprecated Use spanProcessors for consistency with other multi-value config fields
|
|
371
|
-
*/
|
|
372
|
-
spanProcessor?: SpanProcessor;
|
|
373
|
-
/**
|
|
374
|
-
* Custom span exporters for traces (alternative to spanProcessors, supports multiple exporters)
|
|
375
|
-
* Provide either spanProcessors OR spanExporters, not both
|
|
376
|
-
* Each exporter will be wrapped in TailSamplingSpanProcessor + BatchSpanProcessor
|
|
377
|
-
*
|
|
378
|
-
* @example Multiple exporters
|
|
379
|
-
* ```typescript
|
|
380
|
-
* import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
|
|
381
|
-
* import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
|
|
382
|
-
*
|
|
383
|
-
* init({
|
|
384
|
-
* service: 'my-app',
|
|
385
|
-
* spanExporters: [
|
|
386
|
-
* new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' }),
|
|
387
|
-
* new JaegerExporter() // Send to multiple backends simultaneously
|
|
388
|
-
* ]
|
|
389
|
-
* })
|
|
390
|
-
* ```
|
|
391
|
-
*
|
|
392
|
-
* @example Single exporter
|
|
393
|
-
* ```typescript
|
|
394
|
-
* import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
|
|
395
|
-
*
|
|
396
|
-
* init({
|
|
397
|
-
* service: 'my-app',
|
|
398
|
-
* spanExporters: [new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' })]
|
|
399
|
-
* })
|
|
400
|
-
* ```
|
|
401
|
-
*/
|
|
402
|
-
spanExporters?: SpanExporter[];
|
|
403
|
-
/**
|
|
404
|
-
* Custom span exporter for traces (single-item alias of spanExporters)
|
|
405
|
-
* @deprecated Use spanExporters for consistency with other multi-value config fields
|
|
406
|
-
*/
|
|
407
|
-
spanExporter?: SpanExporter;
|
|
408
|
-
/**
|
|
409
|
-
* Custom metric readers (supports multiple readers)
|
|
410
|
-
* Allows sending metrics to multiple backends: OTLP, Prometheus, custom readers
|
|
411
|
-
* Defaults to OTLP metrics exporter when metrics are enabled.
|
|
412
|
-
*
|
|
413
|
-
* @example Multiple metric readers
|
|
414
|
-
* ```typescript
|
|
415
|
-
* import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
|
|
416
|
-
* import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'
|
|
417
|
-
* import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
|
|
418
|
-
*
|
|
419
|
-
* init({
|
|
420
|
-
* service: 'my-app',
|
|
421
|
-
* metricReaders: [
|
|
422
|
-
* new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter() }),
|
|
423
|
-
* new PrometheusExporter() // Export to multiple backends
|
|
424
|
-
* ]
|
|
425
|
-
* })
|
|
426
|
-
* ```
|
|
427
|
-
*/
|
|
428
|
-
metricReaders?: MetricReader[];
|
|
429
|
-
/**
|
|
430
|
-
* Custom metric reader (single-item alias of metricReaders)
|
|
431
|
-
* @deprecated Use metricReaders for consistency with other multi-value config fields
|
|
432
|
-
*/
|
|
433
|
-
metricReader?: MetricReader;
|
|
434
|
-
/**
|
|
435
|
-
* Custom log record processors. When omitted, logs are not configured.
|
|
436
|
-
*/
|
|
437
|
-
logRecordProcessors?: LogRecordProcessor[];
|
|
438
|
-
/**
|
|
439
|
-
* Custom log record processor (single-item alias of logRecordProcessors)
|
|
440
|
-
* @deprecated Use logRecordProcessors for consistency with other multi-value config fields
|
|
441
|
-
*/
|
|
442
|
-
logRecordProcessor?: LogRecordProcessor;
|
|
443
|
-
/**
|
|
444
|
-
* PostHog integration - auto-configures OTLP log exporter.
|
|
445
|
-
*
|
|
446
|
-
* @example
|
|
447
|
-
* ```typescript
|
|
448
|
-
* init({
|
|
449
|
-
* service: 'my-app',
|
|
450
|
-
* posthog: { url: 'https://us.i.posthog.com/i/v1/logs?token=phc_xxx' }
|
|
451
|
-
* });
|
|
452
|
-
* ```
|
|
453
|
-
*
|
|
454
|
-
* Also reads from POSTHOG_LOGS_URL environment variable as fallback.
|
|
455
|
-
*/
|
|
456
|
-
posthog?: {
|
|
457
|
-
url: string;
|
|
458
|
-
};
|
|
459
|
-
/** Additional resource attributes to merge with defaults. */
|
|
460
|
-
resourceAttributes?: Attributes;
|
|
461
|
-
/** Provide a fully custom Resource to merge (advanced use case). */
|
|
462
|
-
resource?: Resource;
|
|
463
|
-
/**
|
|
464
|
-
* Headers for OTLP exporters. Accepts either an object map or
|
|
465
|
-
* a "key=value" comma separated string.
|
|
466
|
-
*
|
|
467
|
-
* @example
|
|
468
|
-
* ```typescript
|
|
469
|
-
* init({
|
|
470
|
-
* service: 'my-app',
|
|
471
|
-
* endpoint: 'https://api.honeycomb.io',
|
|
472
|
-
* headers: { 'x-honeycomb-team': 'YOUR_API_KEY' }
|
|
473
|
-
* })
|
|
474
|
-
* ```
|
|
475
|
-
*/
|
|
476
|
-
headers?: Record<string, string> | string;
|
|
477
|
-
/**
|
|
478
|
-
* OTLP protocol to use for traces, metrics, and logs
|
|
479
|
-
* - 'http': HTTP/protobuf (default, uses port 4318)
|
|
480
|
-
* - 'grpc': gRPC (uses port 4317)
|
|
481
|
-
*
|
|
482
|
-
* Can be overridden with OTEL_EXPORTER_OTLP_PROTOCOL env var.
|
|
483
|
-
*
|
|
484
|
-
* Note: gRPC exporters are optional peer dependencies. Install them with:
|
|
485
|
-
* ```bash
|
|
486
|
-
* pnpm add @opentelemetry/exporter-trace-otlp-grpc @opentelemetry/exporter-metrics-otlp-grpc
|
|
487
|
-
* ```
|
|
488
|
-
*
|
|
489
|
-
* @example HTTP (default)
|
|
490
|
-
* ```typescript
|
|
491
|
-
* init({
|
|
492
|
-
* service: 'my-app',
|
|
493
|
-
* protocol: 'http', // or omit (defaults to http)
|
|
494
|
-
* endpoint: 'http://localhost:4318'
|
|
495
|
-
* })
|
|
496
|
-
* ```
|
|
497
|
-
*
|
|
498
|
-
* @example gRPC
|
|
499
|
-
* ```typescript
|
|
500
|
-
* init({
|
|
501
|
-
* service: 'my-app',
|
|
502
|
-
* protocol: 'grpc',
|
|
503
|
-
* endpoint: 'grpc://localhost:4317'
|
|
504
|
-
* })
|
|
505
|
-
* ```
|
|
506
|
-
*
|
|
507
|
-
* @default 'http'
|
|
508
|
-
*/
|
|
509
|
-
protocol?: 'http' | 'grpc';
|
|
510
|
-
/**
|
|
511
|
-
* Optional factory to build a customised NodeSDK instance from our defaults.
|
|
512
|
-
*/
|
|
513
|
-
sdkFactory?: (defaults: Partial<NodeSDKConfiguration>) => NodeSDK;
|
|
514
|
-
/**
|
|
515
|
-
* Infrastructure metrics configuration
|
|
516
|
-
* - true: always enabled (default)
|
|
517
|
-
* - false: always disabled
|
|
518
|
-
* - 'auto': always enabled (same as true)
|
|
519
|
-
*
|
|
520
|
-
* Can be overridden with AUTOTEL_METRICS=on|off env var
|
|
521
|
-
*/
|
|
522
|
-
metrics?: boolean | 'auto';
|
|
523
|
-
/**
|
|
524
|
-
* OTLP logs configuration
|
|
525
|
-
* - true: auto-configure OTLP log exporter from endpoint
|
|
526
|
-
* - false: disabled (default)
|
|
527
|
-
* - 'auto': same as false (opt-in only)
|
|
528
|
-
*
|
|
529
|
-
* When enabled and an endpoint is configured, autotel will automatically
|
|
530
|
-
* create a BatchLogRecordProcessor with an OTLPLogExporter - no manual
|
|
531
|
-
* imports needed. Works alongside logRecordProcessors (additive).
|
|
532
|
-
*
|
|
533
|
-
* Requires @opentelemetry/sdk-logs and @opentelemetry/exporter-logs-otlp-http
|
|
534
|
-
* (or -grpc) as peer dependencies.
|
|
535
|
-
*
|
|
536
|
-
* Can be overridden with AUTOTEL_LOGS=on|off env var.
|
|
537
|
-
*
|
|
538
|
-
* @example
|
|
539
|
-
* ```typescript
|
|
540
|
-
* init({
|
|
541
|
-
* service: 'my-app',
|
|
542
|
-
* endpoint: 'http://localhost:4318',
|
|
543
|
-
* logs: true,
|
|
544
|
-
* });
|
|
545
|
-
* ```
|
|
546
|
-
*/
|
|
547
|
-
logs?: boolean | 'auto';
|
|
548
|
-
/** Sampling strategy - takes precedence over `sampling` preset */
|
|
549
|
-
sampler?: Sampler;
|
|
550
|
-
/**
|
|
551
|
-
* Sampling preset shorthand — resolves to a pre-configured sampler.
|
|
552
|
-
* If both `sampler` and `sampling` are provided, `sampler` takes precedence.
|
|
553
|
-
*
|
|
554
|
-
* @default 'production' (10% baseline + always-on for errors/slow)
|
|
555
|
-
*
|
|
556
|
-
* **Footgun for one-shot scripts:** the default samples ~90% of spans away,
|
|
557
|
-
* which means a fixture-capture script that emits a single normal span
|
|
558
|
-
* almost always sees zero output. For local debugging and capture use:
|
|
559
|
-
*
|
|
560
|
-
* ```typescript
|
|
561
|
-
* init({
|
|
562
|
-
* service: 'fixture-capture',
|
|
563
|
-
* spanProcessors: [new SimpleSpanProcessor(new InMemorySpanExporter())],
|
|
564
|
-
* sampling: 'development', // capture EVERY span
|
|
565
|
-
* });
|
|
566
|
-
* ```
|
|
567
|
-
*
|
|
568
|
-
* Read `exporter.getFinishedSpans()` **before** calling `shutdown()` —
|
|
569
|
-
* `InMemorySpanExporter.shutdown()` resets state.
|
|
570
|
-
*/
|
|
571
|
-
sampling?: SamplingPreset;
|
|
572
|
-
/** Service version (default: auto-detect from package.json or '1.0.0') */
|
|
573
|
-
version?: string;
|
|
574
|
-
/** Environment (default: process.env.NODE_ENV || 'development') */
|
|
575
|
-
environment?: string;
|
|
576
|
-
/**
|
|
577
|
-
* Logger instance for internal autotel diagnostic messages
|
|
578
|
-
*
|
|
579
|
-
* This logger is used by autotel internally to log initialization, warnings,
|
|
580
|
-
* and debug information. Any logger with info/warn/error/debug methods works.
|
|
581
|
-
*
|
|
582
|
-
* **For OTel instrumentation of your application logs**, use the `autoInstrumentations` option:
|
|
583
|
-
* - `autoInstrumentations: ['pino']` - Injects traceId/spanId into Pino logs
|
|
584
|
-
* - `autoInstrumentations: ['winston']` - Injects traceId/spanId into Winston logs
|
|
585
|
-
*
|
|
586
|
-
* Default: silent logger (no-op)
|
|
587
|
-
*
|
|
588
|
-
* @example Pino with OTel instrumentation
|
|
589
|
-
* ```typescript
|
|
590
|
-
* import pino from 'pino'
|
|
591
|
-
* import { init } from 'autotel'
|
|
592
|
-
*
|
|
593
|
-
* const logger = pino({ level: 'info' })
|
|
594
|
-
* init({
|
|
595
|
-
* service: 'my-app',
|
|
596
|
-
* logger, // For autotel's internal logs
|
|
597
|
-
* autoInstrumentations: ['pino'] // For OTel trace context in YOUR logs
|
|
598
|
-
* })
|
|
599
|
-
* ```
|
|
600
|
-
*
|
|
601
|
-
* @example Custom logger for autotel diagnostics
|
|
602
|
-
* ```typescript
|
|
603
|
-
* const logger = {
|
|
604
|
-
* info: (msg, extra) => console.log(msg, extra),
|
|
605
|
-
* warn: (msg, extra) => console.warn(msg, extra),
|
|
606
|
-
* error: (msg, err, extra) => console.error(msg, err, extra),
|
|
607
|
-
* debug: (msg, extra) => console.debug(msg, extra),
|
|
608
|
-
* }
|
|
609
|
-
* init({ service: 'my-app', logger })
|
|
610
|
-
* ```
|
|
611
|
-
*/
|
|
612
|
-
logger?: Logger;
|
|
613
|
-
/**
|
|
614
|
-
* Flush events queue when root spans end
|
|
615
|
-
* - true: Flush on root span completion (default)
|
|
616
|
-
* - false: Use batching (events flush every 10 seconds automatically)
|
|
617
|
-
*
|
|
618
|
-
* Only flushes on root spans to avoid excessive network calls.
|
|
619
|
-
* Default is true for serverless/short-lived processes. Set to false
|
|
620
|
-
* for long-running services where batching is more efficient.
|
|
621
|
-
*/
|
|
622
|
-
flushOnRootSpanEnd?: boolean;
|
|
623
|
-
/**
|
|
624
|
-
* Force-flush OpenTelemetry spans on shutdown (default: false)
|
|
625
|
-
*
|
|
626
|
-
* When enabled, spans are force-flushed along with events on root
|
|
627
|
-
* span completion. This is useful for serverless/short-lived processes where
|
|
628
|
-
* spans may not export before the process ends.
|
|
629
|
-
*
|
|
630
|
-
* - true: Force-flush spans on root span completion (~50-200ms latency)
|
|
631
|
-
* - false: Spans export via normal batch processor (default behavior)
|
|
632
|
-
*
|
|
633
|
-
* Only applies when flushOnRootSpanEnd is also enabled.
|
|
634
|
-
*
|
|
635
|
-
* Note: For edge runtimes (Cloudflare Workers, Vercel Edge), use the
|
|
636
|
-
* 'autotel-edge' package instead, which handles this automatically.
|
|
637
|
-
*
|
|
638
|
-
* @example Serverless with force-flush
|
|
639
|
-
* ```typescript
|
|
640
|
-
* init({
|
|
641
|
-
* service: 'my-lambda',
|
|
642
|
-
* flushOnRootSpanEnd: true,
|
|
643
|
-
* forceFlushOnShutdown: true, // Force-flush spans
|
|
644
|
-
* });
|
|
645
|
-
* ```
|
|
646
|
-
*/
|
|
647
|
-
forceFlushOnShutdown?: boolean;
|
|
648
|
-
/**
|
|
649
|
-
* Automatically copy baggage entries to span attributes
|
|
650
|
-
*
|
|
651
|
-
* When enabled, all baggage entries are automatically added as span attributes,
|
|
652
|
-
* making them visible in trace UIs (Jaeger, Grafana, DataDog, etc.) without
|
|
653
|
-
* manually calling ctx.setAttribute() for each entry.
|
|
654
|
-
*
|
|
655
|
-
* - `true`: adds baggage with 'baggage.' prefix (e.g. baggage.tenant.id)
|
|
656
|
-
* - `string`: uses custom prefix (e.g. 'ctx' → ctx.tenant.id, '' → tenant.id)
|
|
657
|
-
* - `false` or omit: disabled (default)
|
|
658
|
-
*
|
|
659
|
-
* @default false
|
|
660
|
-
*
|
|
661
|
-
* @example Enable with default prefix
|
|
662
|
-
* ```typescript
|
|
663
|
-
* init({
|
|
664
|
-
* service: 'my-app',
|
|
665
|
-
* baggage: true
|
|
666
|
-
* });
|
|
667
|
-
*
|
|
668
|
-
* // Now baggage automatically appears as span attributes
|
|
669
|
-
* await withBaggage({
|
|
670
|
-
* baggage: { 'tenant.id': 't1', 'user.id': 'u1' },
|
|
671
|
-
* fn: async () => {
|
|
672
|
-
* // Span has baggage.tenant.id and baggage.user.id attributes!
|
|
673
|
-
* }
|
|
674
|
-
* });
|
|
675
|
-
* ```
|
|
676
|
-
*
|
|
677
|
-
* @example Custom prefix
|
|
678
|
-
* ```typescript
|
|
679
|
-
* init({
|
|
680
|
-
* service: 'my-app',
|
|
681
|
-
* baggage: 'ctx' // Uses 'ctx.' prefix
|
|
682
|
-
* });
|
|
683
|
-
* // Creates attributes: ctx.tenant.id, ctx.user.id
|
|
684
|
-
* ```
|
|
685
|
-
*
|
|
686
|
-
* @example No prefix
|
|
687
|
-
* ```typescript
|
|
688
|
-
* init({
|
|
689
|
-
* service: 'my-app',
|
|
690
|
-
* baggage: '' // No prefix
|
|
691
|
-
* });
|
|
692
|
-
* // Creates attributes: tenant.id, user.id
|
|
693
|
-
* ```
|
|
694
|
-
*/
|
|
695
|
-
baggage?: boolean | string;
|
|
696
|
-
/**
|
|
697
|
-
* Validation configuration for events events
|
|
698
|
-
* - Override default sensitive field patterns for redaction
|
|
699
|
-
* - Customize max lengths, nesting depth, etc.
|
|
700
|
-
*
|
|
701
|
-
* @example Disable redaction for development
|
|
702
|
-
* ```typescript
|
|
703
|
-
* init({
|
|
704
|
-
* service: 'my-app',
|
|
705
|
-
* validation: {
|
|
706
|
-
* sensitivePatterns: [] // Disable all redaction
|
|
707
|
-
* }
|
|
708
|
-
* })
|
|
709
|
-
* ```
|
|
710
|
-
*
|
|
711
|
-
* @example Add custom patterns
|
|
712
|
-
* ```typescript
|
|
713
|
-
* init({
|
|
714
|
-
* service: 'my-app',
|
|
715
|
-
* validation: {
|
|
716
|
-
* sensitivePatterns: [
|
|
717
|
-
* /password/i,
|
|
718
|
-
* /apiKey/i,
|
|
719
|
-
* /customSecret/i // Your custom pattern
|
|
720
|
-
* ]
|
|
721
|
-
* }
|
|
722
|
-
* })
|
|
723
|
-
* ```
|
|
724
|
-
*/
|
|
725
|
-
validation?: Partial<ValidationConfig>;
|
|
726
|
-
/**
|
|
727
|
-
* Events configuration for trace context, correlation IDs, and enrichment
|
|
728
|
-
*
|
|
729
|
-
* Controls how product events integrate with distributed tracing:
|
|
730
|
-
* - `includeTraceContext`: Automatically include trace context in events
|
|
731
|
-
* - `includeLinkedTraceIds`: Include full array of linked trace IDs (for batch/fan-in)
|
|
732
|
-
* - `traceUrl`: Generate clickable trace URLs in events
|
|
733
|
-
* - `enrichFromBaggage`: Auto-enrich events from baggage with guardrails
|
|
734
|
-
*
|
|
735
|
-
* @example Basic trace context
|
|
736
|
-
* ```typescript
|
|
737
|
-
* init({
|
|
738
|
-
* service: 'my-app',
|
|
739
|
-
* events: {
|
|
740
|
-
* includeTraceContext: true
|
|
741
|
-
* }
|
|
742
|
-
* });
|
|
743
|
-
* // Events now include autotel.trace_id, autotel.span_id, autotel.correlation_id
|
|
744
|
-
* ```
|
|
745
|
-
*
|
|
746
|
-
* @example With clickable trace URLs
|
|
747
|
-
* ```typescript
|
|
748
|
-
* init({
|
|
749
|
-
* service: 'my-app',
|
|
750
|
-
* events: {
|
|
751
|
-
* includeTraceContext: true,
|
|
752
|
-
* traceUrl: (ctx) => `https://grafana.internal/explore?traceId=${ctx.traceId}`
|
|
753
|
-
* }
|
|
754
|
-
* });
|
|
755
|
-
* ```
|
|
756
|
-
*
|
|
757
|
-
* @example With baggage enrichment
|
|
758
|
-
* ```typescript
|
|
759
|
-
* init({
|
|
760
|
-
* service: 'my-app',
|
|
761
|
-
* events: {
|
|
762
|
-
* includeTraceContext: true,
|
|
763
|
-
* enrichFromBaggage: {
|
|
764
|
-
* allow: ['tenant.id', 'user.id'],
|
|
765
|
-
* prefix: 'ctx.',
|
|
766
|
-
* maxKeys: 10,
|
|
767
|
-
* maxBytes: 1024
|
|
768
|
-
* }
|
|
769
|
-
* }
|
|
770
|
-
* });
|
|
771
|
-
* ```
|
|
772
|
-
*/
|
|
773
|
-
events?: EventsConfig;
|
|
774
|
-
/**
|
|
775
|
-
* Debug mode for local span inspection.
|
|
776
|
-
* Enables console output to help you see spans as they're created.
|
|
777
|
-
*
|
|
778
|
-
* - `true`: Raw JSON output (ConsoleSpanExporter)
|
|
779
|
-
* - `'pretty'`: Colorized, hierarchical output (PrettyConsoleExporter)
|
|
780
|
-
* - `false`/undefined: No console output (default)
|
|
781
|
-
*
|
|
782
|
-
* When enabled: Outputs spans to console AND sends to backend (if endpoint/exporter configured)
|
|
783
|
-
*
|
|
784
|
-
* Perfect for progressive development:
|
|
785
|
-
* - Start with debug: 'pretty' (no endpoint) → see traces immediately with nice formatting
|
|
786
|
-
* - Add endpoint later → console + backend, verify before choosing provider
|
|
787
|
-
* - Remove debug in production → backend only, clean production config
|
|
788
|
-
*
|
|
789
|
-
* Can be overridden with AUTOTEL_DEBUG environment variable.
|
|
790
|
-
*
|
|
791
|
-
* @example Pretty debug output (recommended for development)
|
|
792
|
-
* ```typescript
|
|
793
|
-
* init({
|
|
794
|
-
* service: 'my-app',
|
|
795
|
-
* debug: 'pretty' // Colorized, hierarchical output
|
|
796
|
-
* })
|
|
797
|
-
* ```
|
|
798
|
-
*
|
|
799
|
-
* @example Raw JSON output (verbose)
|
|
800
|
-
* ```typescript
|
|
801
|
-
* init({
|
|
802
|
-
* service: 'my-app',
|
|
803
|
-
* debug: true // Raw ConsoleSpanExporter output
|
|
804
|
-
* })
|
|
805
|
-
* ```
|
|
806
|
-
*
|
|
807
|
-
* @example Environment variable
|
|
808
|
-
* ```bash
|
|
809
|
-
* AUTOTEL_DEBUG=pretty node server.js
|
|
810
|
-
* AUTOTEL_DEBUG=true node server.js
|
|
811
|
-
* ```
|
|
812
|
-
*/
|
|
813
|
-
debug?: boolean | 'pretty';
|
|
814
|
-
/**
|
|
815
|
-
* Filter predicate to drop unwanted spans before processing.
|
|
816
|
-
*
|
|
817
|
-
* Useful for filtering out noisy spans from specific instrumentations
|
|
818
|
-
* (e.g., Next.js internal spans, health check endpoints).
|
|
819
|
-
*
|
|
820
|
-
* The filter runs on completed spans (onEnd), so you have access to:
|
|
821
|
-
* - `span.name` - Span name
|
|
822
|
-
* - `span.attributes` - All span attributes
|
|
823
|
-
* - `span.instrumentationScope` - `{ name, version }` of the instrumentation
|
|
824
|
-
* - `span.status` - Span status code and message
|
|
825
|
-
* - `span.duration` - Span duration as `[seconds, nanoseconds]`
|
|
826
|
-
*
|
|
827
|
-
* Return `true` to keep the span, `false` to drop it.
|
|
828
|
-
*
|
|
829
|
-
* @example Filter out Next.js instrumentation spans
|
|
830
|
-
* ```typescript
|
|
831
|
-
* init({
|
|
832
|
-
* service: 'my-app',
|
|
833
|
-
* spanFilter: (span) => span.instrumentationScope.name !== 'next.js'
|
|
834
|
-
* })
|
|
835
|
-
* ```
|
|
836
|
-
*
|
|
837
|
-
* @example Filter out health check spans
|
|
838
|
-
* ```typescript
|
|
839
|
-
* init({
|
|
840
|
-
* service: 'my-app',
|
|
841
|
-
* spanFilter: (span) => !span.name.includes('/health')
|
|
842
|
-
* })
|
|
843
|
-
* ```
|
|
844
|
-
*
|
|
845
|
-
* @example Complex filtering (multiple conditions)
|
|
846
|
-
* ```typescript
|
|
847
|
-
* init({
|
|
848
|
-
* service: 'my-app',
|
|
849
|
-
* spanFilter: (span) => {
|
|
850
|
-
* // Drop Next.js internal spans
|
|
851
|
-
* if (span.instrumentationScope.name === 'next.js') return false;
|
|
852
|
-
* // Drop health checks
|
|
853
|
-
* if (span.name.includes('/health')) return false;
|
|
854
|
-
* // Drop very short spans (less than 1ms)
|
|
855
|
-
* const [secs, nanos] = span.duration;
|
|
856
|
-
* if (secs === 0 && nanos < 1_000_000) return false;
|
|
857
|
-
* return true;
|
|
858
|
-
* }
|
|
859
|
-
* })
|
|
860
|
-
* ```
|
|
861
|
-
*/
|
|
862
|
-
spanFilter?: SpanFilterPredicate;
|
|
863
|
-
/**
|
|
864
|
-
* Normalize span names to reduce cardinality from dynamic path segments.
|
|
865
|
-
*
|
|
866
|
-
* High-cardinality span names (e.g., `/users/123/posts/456`) cause issues:
|
|
867
|
-
* - Cost explosions in observability backends
|
|
868
|
-
* - Cardinality limits exceeded
|
|
869
|
-
* - Poor UX when searching/filtering traces
|
|
870
|
-
*
|
|
871
|
-
* The normalizer transforms dynamic segments into placeholders:
|
|
872
|
-
* - `/users/123` → `/users/:id`
|
|
873
|
-
* - `/items/550e8400-e29b-...` → `/items/:uuid`
|
|
874
|
-
*
|
|
875
|
-
* Provide either a custom function or use a built-in preset:
|
|
876
|
-
* - `'rest-api'` - Numeric IDs, UUIDs, ObjectIds, dates, timestamps, emails
|
|
877
|
-
* - `'graphql'` - GraphQL operation name normalization
|
|
878
|
-
* - `'minimal'` - Only numeric IDs and UUIDs
|
|
879
|
-
*
|
|
880
|
-
* @example Custom normalizer function
|
|
881
|
-
* ```typescript
|
|
882
|
-
* init({
|
|
883
|
-
* service: 'my-app',
|
|
884
|
-
* spanNameNormalizer: (name) => {
|
|
885
|
-
* return name
|
|
886
|
-
* .replace(/\/[0-9]+/g, '/:id')
|
|
887
|
-
* .replace(/\/[a-f0-9-]{36}/gi, '/:uuid');
|
|
888
|
-
* }
|
|
889
|
-
* })
|
|
890
|
-
* ```
|
|
891
|
-
*
|
|
892
|
-
* @example Using built-in preset
|
|
893
|
-
* ```typescript
|
|
894
|
-
* init({
|
|
895
|
-
* service: 'my-app',
|
|
896
|
-
* spanNameNormalizer: 'rest-api'
|
|
897
|
-
* })
|
|
898
|
-
* ```
|
|
899
|
-
*
|
|
900
|
-
* @example Combining with spanFilter
|
|
901
|
-
* ```typescript
|
|
902
|
-
* init({
|
|
903
|
-
* service: 'my-app',
|
|
904
|
-
* spanNameNormalizer: 'rest-api',
|
|
905
|
-
* spanFilter: (span) => span.instrumentationScope.name !== 'next.js'
|
|
906
|
-
* })
|
|
907
|
-
* ```
|
|
908
|
-
*/
|
|
909
|
-
spanNameNormalizer?: SpanNameNormalizerConfig;
|
|
910
|
-
/**
|
|
911
|
-
* Automatically redact PII and sensitive data from span attributes before export.
|
|
912
|
-
* Critical for compliance (GDPR, PCI-DSS, HIPAA) and data security.
|
|
913
|
-
*
|
|
914
|
-
* Auto-enabled in production: when this is left unset and the resolved
|
|
915
|
-
* environment is `production`, the `'default'` preset is applied. Override
|
|
916
|
-
* with the `AUTOTEL_REDACT_PII` env var (`off` / `strict` / `pci-dss` / ...)
|
|
917
|
-
* or pass `false` to disable redaction entirely.
|
|
918
|
-
*
|
|
919
|
-
* Can be a preset name, custom configuration, or `false` to disable:
|
|
920
|
-
* - `'default'`: Emails, phones, SSNs, credit cards, sensitive keys (password, secret, token)
|
|
921
|
-
* - `'strict'`: Default + Bearer tokens, JWTs, API keys in values
|
|
922
|
-
* - `'pci-dss'`: Payment card industry focus (credit cards, CVV, card-related keys)
|
|
923
|
-
*
|
|
924
|
-
* @example Use default preset
|
|
925
|
-
* ```typescript
|
|
926
|
-
* init({
|
|
927
|
-
* service: 'my-app',
|
|
928
|
-
* attributeRedactor: 'default'
|
|
929
|
-
* })
|
|
930
|
-
* ```
|
|
931
|
-
*
|
|
932
|
-
* @example Custom patterns
|
|
933
|
-
* ```typescript
|
|
934
|
-
* init({
|
|
935
|
-
* service: 'my-app',
|
|
936
|
-
* attributeRedactor: {
|
|
937
|
-
* keyPatterns: [/password/i, /secret/i],
|
|
938
|
-
* valuePatterns: [
|
|
939
|
-
* { name: 'customerId', pattern: /CUST-\d{8}/g, replacement: 'CUST-***' }
|
|
940
|
-
* ]
|
|
941
|
-
* }
|
|
942
|
-
* })
|
|
943
|
-
* ```
|
|
944
|
-
*
|
|
945
|
-
* @example Custom redactor function
|
|
946
|
-
* ```typescript
|
|
947
|
-
* init({
|
|
948
|
-
* service: 'my-app',
|
|
949
|
-
* attributeRedactor: {
|
|
950
|
-
* redactor: (key, value) => {
|
|
951
|
-
* if (key === 'user.email' && typeof value === 'string') {
|
|
952
|
-
* return value.replace(/@.+/, '@[REDACTED]');
|
|
953
|
-
* }
|
|
954
|
-
* return value;
|
|
955
|
-
* }
|
|
956
|
-
* }
|
|
957
|
-
* })
|
|
958
|
-
* ```
|
|
959
|
-
*/
|
|
960
|
-
attributeRedactor?: AttributeRedactorConfig | AttributeRedactorPreset | false;
|
|
961
|
-
/**
|
|
962
|
-
* OpenLLMetry integration for LLM observability.
|
|
963
|
-
* Requires @traceloop/node-server-sdk as an optional peer dependency.
|
|
964
|
-
*
|
|
965
|
-
* @example Enable OpenLLMetry with default settings
|
|
966
|
-
* ```typescript
|
|
967
|
-
* init({
|
|
968
|
-
* service: 'my-app',
|
|
969
|
-
* openllmetry: { enabled: true }
|
|
970
|
-
* })
|
|
971
|
-
* ```
|
|
972
|
-
*
|
|
973
|
-
* @example Enable with custom options
|
|
974
|
-
* ```typescript
|
|
975
|
-
* init({
|
|
976
|
-
* service: 'my-app',
|
|
977
|
-
* openllmetry: {
|
|
978
|
-
* enabled: true,
|
|
979
|
-
* options: {
|
|
980
|
-
* disableBatch: process.env.NODE_ENV !== 'production',
|
|
981
|
-
* apiKey: process.env.TRACELOOP_API_KEY
|
|
982
|
-
* }
|
|
983
|
-
* }
|
|
984
|
-
* })
|
|
985
|
-
* ```
|
|
986
|
-
*/
|
|
987
|
-
openllmetry?: {
|
|
988
|
-
enabled: boolean;
|
|
989
|
-
options?: Record<string, unknown>;
|
|
990
|
-
};
|
|
991
|
-
/**
|
|
992
|
-
* Canonical log lines - automatically emit spans as wide events (canonical log lines)
|
|
993
|
-
*
|
|
994
|
-
* When enabled, each span (or root span only) is automatically emitted as a
|
|
995
|
-
* comprehensive log record with ALL span attributes. This implements the
|
|
996
|
-
* "canonical log line" pattern: one comprehensive event per request with all context.
|
|
997
|
-
*
|
|
998
|
-
* **Benefits:**
|
|
999
|
-
* - One log line per request with all context (wide event)
|
|
1000
|
-
* - High-cardinality, high-dimensionality data for powerful queries
|
|
1001
|
-
* - Automatic - no manual logging needed
|
|
1002
|
-
* - Queryable as structured data instead of string search
|
|
1003
|
-
*
|
|
1004
|
-
* @example Basic usage (one canonical log line per request)
|
|
1005
|
-
* ```typescript
|
|
1006
|
-
* init({
|
|
1007
|
-
* service: 'checkout-api',
|
|
1008
|
-
* canonicalLogLines: {
|
|
1009
|
-
* enabled: true,
|
|
1010
|
-
* rootSpansOnly: true, // One canonical log line per request
|
|
1011
|
-
* },
|
|
1012
|
-
* });
|
|
1013
|
-
* ```
|
|
1014
|
-
*
|
|
1015
|
-
* @example With custom logger
|
|
1016
|
-
* ```typescript
|
|
1017
|
-
* import pino from 'pino';
|
|
1018
|
-
* const logger = pino();
|
|
1019
|
-
* init({
|
|
1020
|
-
* service: 'my-app',
|
|
1021
|
-
* logger,
|
|
1022
|
-
* canonicalLogLines: {
|
|
1023
|
-
* enabled: true,
|
|
1024
|
-
* logger, // Use Pino for canonical log lines
|
|
1025
|
-
* rootSpansOnly: true,
|
|
1026
|
-
* },
|
|
1027
|
-
* });
|
|
1028
|
-
* ```
|
|
1029
|
-
*
|
|
1030
|
-
* @example Custom message format
|
|
1031
|
-
* ```typescript
|
|
1032
|
-
* init({
|
|
1033
|
-
* service: 'my-app',
|
|
1034
|
-
* canonicalLogLines: {
|
|
1035
|
-
* enabled: true,
|
|
1036
|
-
* messageFormat: (span) => {
|
|
1037
|
-
* const status = span.status.code === 2 ? 'ERROR' : 'SUCCESS';
|
|
1038
|
-
* return `${span.name} [${status}]`;
|
|
1039
|
-
* },
|
|
1040
|
-
* },
|
|
1041
|
-
* });
|
|
1042
|
-
* ```
|
|
1043
|
-
*/
|
|
1044
|
-
canonicalLogLines?: {
|
|
1045
|
-
enabled: boolean;
|
|
1046
|
-
/** Logger to use for emitting canonical log lines (defaults to OTel Logs API) */
|
|
1047
|
-
logger?: Logger;
|
|
1048
|
-
/** Only emit canonical log lines for root spans (default: false) */
|
|
1049
|
-
rootSpansOnly?: boolean;
|
|
1050
|
-
/** Minimum log level for canonical log lines (default: 'info') */
|
|
1051
|
-
minLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
1052
|
-
/** Custom message format (default: uses span name) */
|
|
1053
|
-
messageFormat?: (span: _opentelemetry_sdk_trace_base.ReadableSpan) => string;
|
|
1054
|
-
/** Whether to include resource attributes (default: true) */
|
|
1055
|
-
includeResourceAttributes?: boolean;
|
|
1056
|
-
/** Predicate to decide whether to emit (runs after event is built). */
|
|
1057
|
-
shouldEmit?: CanonicalLogLineOptions['shouldEmit'];
|
|
1058
|
-
/**
|
|
1059
|
-
* Declarative tail sampling conditions (OR logic).
|
|
1060
|
-
* Ignored when `shouldEmit` is provided.
|
|
1061
|
-
* @example keep: [{ status: 500 }, { durationMs: 1000 }]
|
|
1062
|
-
*/
|
|
1063
|
-
keep?: CanonicalLogLineOptions['keep'];
|
|
1064
|
-
/** Callback invoked after emit for custom fan-out. */
|
|
1065
|
-
drain?: CanonicalLogLineOptions['drain'];
|
|
1066
|
-
/** Handler for drain failures. */
|
|
1067
|
-
onDrainError?: CanonicalLogLineOptions['onDrainError'];
|
|
1068
|
-
/**
|
|
1069
|
-
* Pretty-print canonical log lines to console.
|
|
1070
|
-
* Defaults to true when NODE_ENV is 'development'.
|
|
1071
|
-
*/
|
|
1072
|
-
pretty?: boolean;
|
|
1073
|
-
};
|
|
1074
|
-
/**
|
|
1075
|
-
* Suppress console output while keeping OTel exporters running.
|
|
1076
|
-
* Useful for platforms like GCP Cloud Run / AWS Lambda where stdout
|
|
1077
|
-
* is managed externally by the platform's log collector.
|
|
1078
|
-
*
|
|
1079
|
-
* @default false
|
|
1080
|
-
*/
|
|
1081
|
-
silent?: boolean;
|
|
1082
|
-
/**
|
|
1083
|
-
* Minimum log level for internal autotel diagnostic messages.
|
|
1084
|
-
* Messages below this level are dropped before processing.
|
|
1085
|
-
*
|
|
1086
|
-
* @default 'info'
|
|
1087
|
-
*/
|
|
1088
|
-
minLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
1089
|
-
}
|
|
1090
|
-
/**
|
|
1091
|
-
* Lock the logger to prevent further `init()` calls.
|
|
1092
|
-
* Use this when framework plugins set up instrumentation and you want
|
|
1093
|
-
* to prevent accidental re-initialization from user code.
|
|
1094
|
-
*/
|
|
1095
|
-
declare function lockLogger(): void;
|
|
1096
|
-
/**
|
|
1097
|
-
* Check if the logger has been locked.
|
|
1098
|
-
*/
|
|
1099
|
-
declare function isLoggerLocked(): boolean;
|
|
1100
|
-
/**
|
|
1101
|
-
* Initialize autotel - Write Once, Observe Everywhere
|
|
1102
|
-
*
|
|
1103
|
-
* Follows OpenTelemetry standards: opinionated defaults with full flexibility
|
|
1104
|
-
* Idempotent: multiple calls are safe, last one wins
|
|
1105
|
-
*
|
|
1106
|
-
* @example Minimal setup (OTLP default)
|
|
1107
|
-
* ```typescript
|
|
1108
|
-
* init({ service: 'my-app' })
|
|
1109
|
-
* ```
|
|
1110
|
-
*
|
|
1111
|
-
* @example With events (observe in PostHog, Mixpanel, etc.)
|
|
1112
|
-
* ```typescript
|
|
1113
|
-
* import { PostHogSubscriber } from 'autotel-subscribers/posthog';
|
|
1114
|
-
*
|
|
1115
|
-
* init({
|
|
1116
|
-
* service: 'my-app',
|
|
1117
|
-
* subscribers: [new PostHogSubscriber({ apiKey: '...' })]
|
|
1118
|
-
* })
|
|
1119
|
-
* ```
|
|
1120
|
-
*
|
|
1121
|
-
* @example Observe in Jaeger
|
|
1122
|
-
* ```typescript
|
|
1123
|
-
* import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
|
|
1124
|
-
*
|
|
1125
|
-
* init({
|
|
1126
|
-
* service: 'my-app',
|
|
1127
|
-
* spanExporter: new JaegerExporter({ endpoint: 'http://localhost:14268/api/traces' })
|
|
1128
|
-
* })
|
|
1129
|
-
* ```
|
|
1130
|
-
*
|
|
1131
|
-
* @example Observe in Zipkin
|
|
1132
|
-
* ```typescript
|
|
1133
|
-
* import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
|
|
1134
|
-
*
|
|
1135
|
-
* init({
|
|
1136
|
-
* service: 'my-app',
|
|
1137
|
-
* spanExporter: new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' })
|
|
1138
|
-
* })
|
|
1139
|
-
* ```
|
|
1140
|
-
*
|
|
1141
|
-
* @example Observe in Datadog
|
|
1142
|
-
* ```typescript
|
|
1143
|
-
* import { DatadogSpanProcessor } from '@opentelemetry/exporter-datadog'
|
|
1144
|
-
*
|
|
1145
|
-
* init({
|
|
1146
|
-
* service: 'my-app',
|
|
1147
|
-
* spanProcessor: new DatadogSpanProcessor({ ... })
|
|
1148
|
-
* })
|
|
1149
|
-
* ```
|
|
1150
|
-
*
|
|
1151
|
-
* @example Console output (dev)
|
|
1152
|
-
* ```typescript
|
|
1153
|
-
* import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
|
1154
|
-
*
|
|
1155
|
-
* init({
|
|
1156
|
-
* service: 'my-app',
|
|
1157
|
-
* spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter())
|
|
1158
|
-
* })
|
|
1159
|
-
* ```
|
|
1160
|
-
*/
|
|
1161
|
-
declare function init(cfg: AutotelConfig): void;
|
|
1162
|
-
/**
|
|
1163
|
-
* Check if autotel has been initialized
|
|
1164
|
-
*/
|
|
1165
|
-
declare function isInitialized(): boolean;
|
|
1166
|
-
|
|
1167
|
-
export { type AutotelConfig as A, isInitialized as a, isLoggerLocked as b, init as i, lockLogger as l };
|