autotel 3.6.0 → 4.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/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-CmYpdqCN.js +591 -0
- package/dist/attributes-CmYpdqCN.js.map +1 -0
- package/dist/attributes-PZ5doLgw.cjs +704 -0
- package/dist/attributes-PZ5doLgw.cjs.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 -54
- 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 -17
- 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 -66
- 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 -64
- 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 -37
- 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 -21
- 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 -57
- 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 -20
- package/dist/http.cjs +276 -176
- 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 -174
- package/dist/http.js.map +1 -1
- package/dist/index-Ck06vlW2.d.ts +678 -0
- package/dist/index-Ck06vlW2.d.ts.map +1 -0
- package/dist/index-eKuioqT1.d.cts +678 -0
- package/dist/index-eKuioqT1.d.cts.map +1 -0
- package/dist/index.cjs +751 -1218
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +341 -659
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +341 -659
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +606 -737
- 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 -36
- 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 -21
- 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-DVSmWg6Y.js +175 -0
- package/dist/registry-DVSmWg6Y.js.map +1 -0
- package/dist/registry-DYgvb62e.cjs +319 -0
- package/dist/registry-DYgvb62e.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 +327 -39
- package/dist/semantic-helpers.cjs.map +1 -1
- package/dist/semantic-helpers.d.cts +30 -150
- package/dist/semantic-helpers.d.cts.map +1 -0
- package/dist/semantic-helpers.d.ts +30 -150
- package/dist/semantic-helpers.d.ts.map +1 -0
- package/dist/semantic-helpers.js +326 -20
- 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 +178 -115
- package/dist/validate.cjs.map +1 -1
- package/dist/validate.d.cts +40 -64
- package/dist/validate.d.cts.map +1 -0
- package/dist/validate.d.ts +40 -64
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +177 -113
- package/dist/validate.js.map +1 -1
- package/dist/validation-attributes.cjs +42 -17
- package/dist/validation-attributes.cjs.map +1 -1
- package/dist/validation-attributes.d.cts +13 -20
- package/dist/validation-attributes.d.cts.map +1 -0
- package/dist/validation-attributes.d.ts +13 -20
- package/dist/validation-attributes.d.ts.map +1 -0
- package/dist/validation-attributes.js +40 -2
- package/dist/validation-attributes.js.map +1 -1
- package/dist/webhook.cjs +286 -256
- 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 -254
- package/dist/webhook.js.map +1 -1
- package/dist/workflow-distributed.cjs +498 -412
- 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 -410
- package/dist/workflow-distributed.js.map +1 -1
- package/dist/workflow.cjs +405 -40
- 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 -21
- 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 +4 -4
- package/skills/analyze-traces/SKILL.md +14 -12
- package/skills/review-otel-patterns/SKILL.md +4 -2
- package/skills/tune-sampling/SKILL.md +8 -3
- package/src/attributes/builders.ts +2 -20
- package/src/attributes/index.ts +0 -1
- package/src/attributes/registry.ts +2 -9
- package/src/attributes/types.ts +0 -8
- package/src/index.ts +7 -41
- package/src/request-logger.test.ts +53 -1
- package/src/request-logger.ts +58 -0
- package/src/semantic-helpers.test.ts +2 -87
- package/src/semantic-helpers.ts +0 -146
- package/src/validate.test.ts +3 -1
- package/src/validate.ts +9 -3
- 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-66YJ66GG.js +0 -1021
- package/dist/chunk-66YJ66GG.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-ALPYR2GC.js +0 -1061
- package/dist/chunk-ALPYR2GC.js.map +0 -1
- package/dist/chunk-B7SWBE4P.cjs +0 -799
- package/dist/chunk-B7SWBE4P.cjs.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-D4TM63S3.js +0 -795
- package/dist/chunk-D4TM63S3.js.map +0 -1
- package/dist/chunk-DCEDJQGG.js +0 -28
- package/dist/chunk-DCEDJQGG.js.map +0 -1
- package/dist/chunk-DPSA4QLA.js +0 -344
- package/dist/chunk-DPSA4QLA.js.map +0 -1
- package/dist/chunk-E6TERL5O.cjs +0 -23
- package/dist/chunk-E6TERL5O.cjs.map +0 -1
- package/dist/chunk-EE6CPXKH.cjs +0 -164
- package/dist/chunk-EE6CPXKH.cjs.map +0 -1
- package/dist/chunk-EOFB7XCL.cjs +0 -837
- package/dist/chunk-EOFB7XCL.cjs.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-FMTHVSYY.cjs +0 -1039
- package/dist/chunk-FMTHVSYY.cjs.map +0 -1
- package/dist/chunk-FU6R566Y.cjs +0 -236
- package/dist/chunk-FU6R566Y.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-KYXZS3EA.cjs +0 -100
- package/dist/chunk-KYXZS3EA.cjs.map +0 -1
- package/dist/chunk-LITNXTTT.js +0 -3
- package/dist/chunk-LITNXTTT.js.map +0 -1
- package/dist/chunk-LVIPBYFE.js +0 -157
- package/dist/chunk-LVIPBYFE.js.map +0 -1
- package/dist/chunk-M3LFHHTN.cjs +0 -764
- package/dist/chunk-M3LFHHTN.cjs.map +0 -1
- package/dist/chunk-N25JDZSC.js +0 -95
- package/dist/chunk-N25JDZSC.js.map +0 -1
- package/dist/chunk-NEIB3TLD.cjs +0 -360
- package/dist/chunk-NEIB3TLD.cjs.map +0 -1
- package/dist/chunk-NENU7E6V.cjs +0 -344
- package/dist/chunk-NENU7E6V.cjs.map +0 -1
- package/dist/chunk-NVAI5CCN.cjs +0 -39
- package/dist/chunk-NVAI5CCN.cjs.map +0 -1
- package/dist/chunk-NZ72VDNY.cjs +0 -4
- package/dist/chunk-NZ72VDNY.cjs.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-QF7ARNUM.js +0 -339
- package/dist/chunk-QF7ARNUM.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-T5WRA76K.cjs +0 -32
- package/dist/chunk-T5WRA76K.cjs.map +0 -1
- package/dist/chunk-T7JO2TCP.js +0 -1233
- package/dist/chunk-T7JO2TCP.js.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-UIKYE2QZ.js +0 -833
- package/dist/chunk-UIKYE2QZ.js.map +0 -1
- package/dist/chunk-UNPLAVE7.js +0 -21
- package/dist/chunk-UNPLAVE7.js.map +0 -1
- package/dist/chunk-UY3UYPBZ.cjs +0 -77
- package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
- package/dist/chunk-V7UBMJAB.cjs +0 -1242
- package/dist/chunk-V7UBMJAB.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-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/define-event-BL6Li7CM.d.ts +0 -23
- package/dist/define-event-ClP3T1Jx.d.cts +0 -23
- 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/src/gen-ai-cost.test.ts +0 -81
- package/src/gen-ai-cost.ts +0 -145
- package/src/gen-ai-events.test.ts +0 -135
- package/src/gen-ai-events.ts +0 -208
- package/src/gen-ai-metrics.test.ts +0 -96
- package/src/gen-ai-metrics.ts +0 -128
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
let _opentelemetry_api = require("@opentelemetry/api");
|
|
2
|
+
|
|
3
|
+
//#region src/pretty-console-exporter.ts
|
|
4
|
+
/**
|
|
5
|
+
* Export result code constants (avoid importing @opentelemetry/core)
|
|
6
|
+
*/
|
|
7
|
+
const ExportResultCode = {
|
|
8
|
+
SUCCESS: 0,
|
|
9
|
+
FAILED: 1
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* ANSI escape codes for terminal colors (zero dependencies)
|
|
13
|
+
*/
|
|
14
|
+
const ANSI = {
|
|
15
|
+
reset: "\x1B[0m",
|
|
16
|
+
bold: "\x1B[1m",
|
|
17
|
+
dim: "\x1B[2m",
|
|
18
|
+
green: "\x1B[32m",
|
|
19
|
+
red: "\x1B[31m",
|
|
20
|
+
yellow: "\x1B[33m",
|
|
21
|
+
blue: "\x1B[34m",
|
|
22
|
+
cyan: "\x1B[36m",
|
|
23
|
+
gray: "\x1B[90m"
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Pretty Console Exporter - colorized, hierarchical span output for development
|
|
27
|
+
*
|
|
28
|
+
* Features:
|
|
29
|
+
* - Colorized status indicators (✓ green, ✗ red)
|
|
30
|
+
* - Duration with color coding (fast=green, medium=yellow, slow=red)
|
|
31
|
+
* - Hierarchical tree view showing parent-child relationships
|
|
32
|
+
* - Attribute display with truncation
|
|
33
|
+
* - Error message highlighting
|
|
34
|
+
*/
|
|
35
|
+
var PrettyConsoleExporter = class {
|
|
36
|
+
options;
|
|
37
|
+
constructor(options = {}) {
|
|
38
|
+
this.options = {
|
|
39
|
+
colors: options.colors ?? process.stdout?.isTTY ?? false,
|
|
40
|
+
showAttributes: options.showAttributes ?? true,
|
|
41
|
+
maxValueLength: options.maxValueLength ?? 50,
|
|
42
|
+
showScope: options.showScope ?? true,
|
|
43
|
+
hideAttributes: options.hideAttributes ?? [],
|
|
44
|
+
showTraceId: options.showTraceId ?? false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Export spans with pretty formatting
|
|
49
|
+
*/
|
|
50
|
+
export(spans, resultCallback) {
|
|
51
|
+
if (spans.length === 0) {
|
|
52
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const traceGroups = this.groupByTrace(spans);
|
|
57
|
+
for (const [traceId, traceSpans] of traceGroups) this.printTrace(traceId, traceSpans);
|
|
58
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
59
|
+
} catch {
|
|
60
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Group spans by their trace ID
|
|
65
|
+
*/
|
|
66
|
+
groupByTrace(spans) {
|
|
67
|
+
const groups = /* @__PURE__ */ new Map();
|
|
68
|
+
for (const span of spans) {
|
|
69
|
+
const traceId = span.spanContext().traceId;
|
|
70
|
+
const group = groups.get(traceId) ?? [];
|
|
71
|
+
group.push(span);
|
|
72
|
+
groups.set(traceId, group);
|
|
73
|
+
}
|
|
74
|
+
return groups;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Print a single trace with all its spans as a tree
|
|
78
|
+
*/
|
|
79
|
+
printTrace(traceId, spans) {
|
|
80
|
+
const sorted = [...spans].toSorted((a, b) => {
|
|
81
|
+
return hrTimeToMs(a.startTime) - hrTimeToMs(b.startTime);
|
|
82
|
+
});
|
|
83
|
+
const tree = this.buildSpanTree(sorted);
|
|
84
|
+
if (this.options.showTraceId && tree.length > 0) console.log(this.color(`trace: ${traceId}`, "gray"));
|
|
85
|
+
for (const node of tree) this.printNode(node, 0, false);
|
|
86
|
+
console.log("");
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Build a tree structure from flat spans using parent-child relationships
|
|
90
|
+
*/
|
|
91
|
+
buildSpanTree(spans) {
|
|
92
|
+
const spanMap = /* @__PURE__ */ new Map();
|
|
93
|
+
const roots = [];
|
|
94
|
+
for (const span of spans) {
|
|
95
|
+
const spanId = span.spanContext().spanId;
|
|
96
|
+
spanMap.set(spanId, {
|
|
97
|
+
span,
|
|
98
|
+
children: []
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
for (const span of spans) {
|
|
102
|
+
const spanId = span.spanContext().spanId;
|
|
103
|
+
const parentId = span.parentSpanContext?.spanId;
|
|
104
|
+
const node = spanMap.get(spanId);
|
|
105
|
+
if (parentId && spanMap.has(parentId)) spanMap.get(parentId).children.push(node);
|
|
106
|
+
else roots.push(node);
|
|
107
|
+
}
|
|
108
|
+
return roots;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Print a span node with indentation and tree characters
|
|
112
|
+
*/
|
|
113
|
+
printNode(node, depth, isLast) {
|
|
114
|
+
const { span } = node;
|
|
115
|
+
const prefix = depth === 0 ? "" : " ".repeat(depth - 1) + (isLast ? "└─ " : "├─ ");
|
|
116
|
+
const isError = span.status.code === _opentelemetry_api.SpanStatusCode.ERROR;
|
|
117
|
+
const statusChar = isError ? "✗" : "✓";
|
|
118
|
+
const statusColor = isError ? "red" : "green";
|
|
119
|
+
const durationMs = hrTimeToMs(span.duration);
|
|
120
|
+
const durationStr = formatDuration(durationMs);
|
|
121
|
+
const durationColor = getDurationColor(durationMs);
|
|
122
|
+
const scopeName = this.options.showScope ? this.color(` [${this.getScopeName(span)}]`, "gray") : "";
|
|
123
|
+
const line = [
|
|
124
|
+
prefix,
|
|
125
|
+
this.color(statusChar, statusColor),
|
|
126
|
+
" ",
|
|
127
|
+
span.name.padEnd(Math.max(35 - prefix.length, 10)),
|
|
128
|
+
this.color(durationStr.padStart(8), durationColor),
|
|
129
|
+
scopeName
|
|
130
|
+
].join("");
|
|
131
|
+
console.log(line);
|
|
132
|
+
if (this.options.showAttributes) {
|
|
133
|
+
const attrs = this.formatAttributes(span);
|
|
134
|
+
if (attrs) {
|
|
135
|
+
const attrIndent = " ".repeat(depth) + " ";
|
|
136
|
+
console.log(this.color(`${attrIndent}${attrs}`, "dim"));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (isError && span.status.message) {
|
|
140
|
+
const errorIndent = " ".repeat(depth) + " ";
|
|
141
|
+
console.log(this.color(`${errorIndent}Error: ${span.status.message}`, "red"));
|
|
142
|
+
}
|
|
143
|
+
const childCount = node.children.length;
|
|
144
|
+
let index = 0;
|
|
145
|
+
for (const child of node.children) {
|
|
146
|
+
this.printNode(child, depth + 1, index === childCount - 1);
|
|
147
|
+
index++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get short scope name from instrumentation scope
|
|
152
|
+
*/
|
|
153
|
+
getScopeName(span) {
|
|
154
|
+
const name = span.instrumentationScope?.name ?? "unknown";
|
|
155
|
+
const match = name.match(/@opentelemetry\/instrumentation-(.+)/);
|
|
156
|
+
if (match?.[1]) return match[1];
|
|
157
|
+
return name.split("/").at(-1) ?? name;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format span attributes as a comma-separated string
|
|
161
|
+
*/
|
|
162
|
+
formatAttributes(span) {
|
|
163
|
+
const attrs = span.attributes;
|
|
164
|
+
if (!attrs || Object.keys(attrs).length === 0) return "";
|
|
165
|
+
const pairs = [];
|
|
166
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
167
|
+
if (this.options.hideAttributes.includes(key)) continue;
|
|
168
|
+
if (value === void 0 || value === null) continue;
|
|
169
|
+
const strValue = this.truncate(Array.isArray(value) ? `[${value.join(", ")}]` : String(value), this.options.maxValueLength);
|
|
170
|
+
pairs.push(`${key}=${strValue}`);
|
|
171
|
+
}
|
|
172
|
+
return pairs.join(", ");
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Truncate string to max length with ellipsis
|
|
176
|
+
*/
|
|
177
|
+
truncate(str, max) {
|
|
178
|
+
if (str.length <= max) return str;
|
|
179
|
+
return str.slice(0, max - 3) + "...";
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Apply ANSI color if colors are enabled
|
|
183
|
+
*/
|
|
184
|
+
color(text, color) {
|
|
185
|
+
if (!this.options.colors) return text;
|
|
186
|
+
return `${ANSI[color]}${text}${ANSI.reset}`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Shutdown (no-op for console exporter)
|
|
190
|
+
*/
|
|
191
|
+
shutdown() {
|
|
192
|
+
return Promise.resolve();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Force flush (no-op for console exporter)
|
|
196
|
+
*/
|
|
197
|
+
forceFlush() {
|
|
198
|
+
return Promise.resolve();
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Convert HrTime [seconds, nanoseconds] to milliseconds
|
|
203
|
+
*/
|
|
204
|
+
function hrTimeToMs(hrTime) {
|
|
205
|
+
const [seconds, nanos] = hrTime;
|
|
206
|
+
return seconds * 1e3 + nanos / 1e6;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Format duration with appropriate units
|
|
210
|
+
*/
|
|
211
|
+
function formatDuration(ms) {
|
|
212
|
+
if (ms < 1) return `${(ms * 1e3).toFixed(0)}µs`;
|
|
213
|
+
if (ms < 1e3) return `${ms.toFixed(0)}ms`;
|
|
214
|
+
return `${(ms / 1e3).toFixed(2)}s`;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get color based on duration (fast=green, medium=yellow, slow=red)
|
|
218
|
+
*/
|
|
219
|
+
function getDurationColor(ms) {
|
|
220
|
+
if (ms < 100) return "green";
|
|
221
|
+
if (ms < 500) return "yellow";
|
|
222
|
+
return "red";
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
//#endregion
|
|
226
|
+
Object.defineProperty(exports, 'PrettyConsoleExporter', {
|
|
227
|
+
enumerable: true,
|
|
228
|
+
get: function () {
|
|
229
|
+
return PrettyConsoleExporter;
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
//# sourceMappingURL=pretty-console-exporter-CMzlrRNg.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretty-console-exporter-CMzlrRNg.cjs","names":["SpanStatusCode"],"sources":["../src/pretty-console-exporter.ts"],"sourcesContent":["/**\n * Pretty Console Exporter\n *\n * A developer-friendly span exporter that displays colorized, hierarchical\n * trace output in the terminal. Zero external dependencies - uses ANSI escape codes.\n *\n * @example Basic usage\n * ```typescript\n * init({\n * service: 'my-app',\n * debug: 'pretty' // Uses PrettyConsoleExporter\n * })\n * ```\n *\n * @example Explicit usage with options\n * ```typescript\n * import { PrettyConsoleExporter } from 'autotel/exporters'\n *\n * init({\n * service: 'my-app',\n * spanExporters: [new PrettyConsoleExporter({\n * colors: true,\n * showAttributes: true,\n * hideAttributes: ['http.user_agent']\n * })]\n * })\n * ```\n */\n\nimport type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SpanStatusCode } from '@opentelemetry/api';\n\n/**\n * Export result code constants (avoid importing @opentelemetry/core)\n */\nconst ExportResultCode = {\n SUCCESS: 0,\n FAILED: 1,\n} as const;\n\n/**\n * Export result type for SpanExporter callback\n */\ninterface ExportResult {\n code: number;\n error?: Error;\n}\n\n/**\n * ANSI escape codes for terminal colors (zero dependencies)\n */\nconst ANSI = {\n reset: '\\u001B[0m',\n bold: '\\u001B[1m',\n dim: '\\u001B[2m',\n green: '\\u001B[32m',\n red: '\\u001B[31m',\n yellow: '\\u001B[33m',\n blue: '\\u001B[34m',\n cyan: '\\u001B[36m',\n gray: '\\u001B[90m',\n} as const;\n\ntype AnsiColor = keyof typeof ANSI;\n\n/**\n * Configuration options for PrettyConsoleExporter\n */\nexport interface PrettyConsoleExporterOptions {\n /**\n * Enable ANSI colors in output\n * @default auto-detect TTY\n */\n colors?: boolean;\n\n /**\n * Show span attributes in output\n * @default true\n */\n showAttributes?: boolean;\n\n /**\n * Maximum length for attribute values before truncation\n * @default 50\n */\n maxValueLength?: number;\n\n /**\n * Show instrumentation scope name (e.g., [http], [pg])\n * @default true\n */\n showScope?: boolean;\n\n /**\n * Attribute keys to always hide from output\n * @default []\n */\n hideAttributes?: string[];\n\n /**\n * Show trace ID for each root span\n * @default false\n */\n showTraceId?: boolean;\n}\n\n/**\n * Internal node structure for building span trees\n */\ninterface SpanNode {\n span: ReadableSpan;\n children: SpanNode[];\n}\n\n/**\n * Pretty Console Exporter - colorized, hierarchical span output for development\n *\n * Features:\n * - Colorized status indicators (✓ green, ✗ red)\n * - Duration with color coding (fast=green, medium=yellow, slow=red)\n * - Hierarchical tree view showing parent-child relationships\n * - Attribute display with truncation\n * - Error message highlighting\n */\nexport class PrettyConsoleExporter implements SpanExporter {\n private readonly options: Required<PrettyConsoleExporterOptions>;\n\n constructor(options: PrettyConsoleExporterOptions = {}) {\n this.options = {\n colors: options.colors ?? process.stdout?.isTTY ?? false,\n showAttributes: options.showAttributes ?? true,\n maxValueLength: options.maxValueLength ?? 50,\n showScope: options.showScope ?? true,\n hideAttributes: options.hideAttributes ?? [],\n showTraceId: options.showTraceId ?? false,\n };\n }\n\n /**\n * Export spans with pretty formatting\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (spans.length === 0) {\n resultCallback({ code: ExportResultCode.SUCCESS });\n return;\n }\n\n try {\n // Group spans by trace ID\n const traceGroups = this.groupByTrace(spans);\n\n // Print each trace group\n for (const [traceId, traceSpans] of traceGroups) {\n this.printTrace(traceId, traceSpans);\n }\n\n resultCallback({ code: ExportResultCode.SUCCESS });\n } catch {\n // Fail-open: don't crash the app if formatting fails\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n }\n\n /**\n * Group spans by their trace ID\n */\n private groupByTrace(spans: ReadableSpan[]): Map<string, ReadableSpan[]> {\n const groups = new Map<string, ReadableSpan[]>();\n\n for (const span of spans) {\n const traceId = span.spanContext().traceId;\n const group = groups.get(traceId) ?? [];\n group.push(span);\n groups.set(traceId, group);\n }\n\n return groups;\n }\n\n /**\n * Print a single trace with all its spans as a tree\n */\n private printTrace(traceId: string, spans: ReadableSpan[]): void {\n // Sort by start time\n const sorted = [...spans].toSorted((a, b) => {\n const aTime = hrTimeToMs(a.startTime);\n const bTime = hrTimeToMs(b.startTime);\n return aTime - bTime;\n });\n\n // Build tree structure\n const tree = this.buildSpanTree(sorted);\n\n // Print trace ID header if enabled\n if (this.options.showTraceId && tree.length > 0) {\n console.log(this.color(`trace: ${traceId}`, 'gray'));\n }\n\n // Print each root span and its children\n for (const node of tree) {\n this.printNode(node, 0, false);\n }\n\n // Add blank line between traces\n console.log('');\n }\n\n /**\n * Build a tree structure from flat spans using parent-child relationships\n */\n private buildSpanTree(spans: ReadableSpan[]): SpanNode[] {\n const spanMap = new Map<string, SpanNode>();\n const roots: SpanNode[] = [];\n\n // Create nodes for all spans\n for (const span of spans) {\n const spanId = span.spanContext().spanId;\n spanMap.set(spanId, { span, children: [] });\n }\n\n // Build parent-child relationships\n for (const span of spans) {\n const spanId = span.spanContext().spanId;\n const parentId = span.parentSpanContext?.spanId;\n const node = spanMap.get(spanId)!;\n\n if (parentId && spanMap.has(parentId)) {\n // Has parent in this batch - add as child\n spanMap.get(parentId)!.children.push(node);\n } else {\n // No parent or parent not in batch - treat as root\n roots.push(node);\n }\n }\n\n return roots;\n }\n\n /**\n * Print a span node with indentation and tree characters\n */\n private printNode(node: SpanNode, depth: number, isLast: boolean): void {\n const { span } = node;\n\n // Build tree prefix\n const prefix =\n depth === 0 ? '' : ' '.repeat(depth - 1) + (isLast ? '└─ ' : '├─ ');\n\n // Status indicator\n const isError = span.status.code === SpanStatusCode.ERROR;\n const statusChar = isError ? '✗' : '✓';\n const statusColor: AnsiColor = isError ? 'red' : 'green';\n\n // Duration formatting\n const durationMs = hrTimeToMs(span.duration);\n const durationStr = formatDuration(durationMs);\n const durationColor = getDurationColor(durationMs);\n\n // Scope name (instrumentation library)\n const scopeName = this.options.showScope\n ? this.color(` [${this.getScopeName(span)}]`, 'gray')\n : '';\n\n // Build the main line\n const line = [\n prefix,\n this.color(statusChar, statusColor),\n ' ',\n span.name.padEnd(Math.max(35 - prefix.length, 10)),\n this.color(durationStr.padStart(8), durationColor),\n scopeName,\n ].join('');\n\n console.log(line);\n\n // Print attributes on next line (indented)\n if (this.options.showAttributes) {\n const attrs = this.formatAttributes(span);\n if (attrs) {\n const attrIndent = ' '.repeat(depth) + ' ';\n console.log(this.color(`${attrIndent}${attrs}`, 'dim'));\n }\n }\n\n // Print error message if present\n if (isError && span.status.message) {\n const errorIndent = ' '.repeat(depth) + ' ';\n console.log(\n this.color(`${errorIndent}Error: ${span.status.message}`, 'red'),\n );\n }\n\n // Print children\n const childCount = node.children.length;\n let index = 0;\n for (const child of node.children) {\n this.printNode(child, depth + 1, index === childCount - 1);\n index++;\n }\n }\n\n /**\n * Get short scope name from instrumentation scope\n */\n private getScopeName(span: ReadableSpan): string {\n const name = span.instrumentationScope?.name ?? 'unknown';\n // Extract short name from @opentelemetry/instrumentation-xxx format\n const match = name.match(/@opentelemetry\\/instrumentation-(.+)/);\n if (match?.[1]) return match[1];\n // Fall back to last part of name or full name\n const lastPart = name.split('/').at(-1);\n return lastPart ?? name;\n }\n\n /**\n * Format span attributes as a comma-separated string\n */\n private formatAttributes(span: ReadableSpan): string {\n const attrs = span.attributes;\n if (!attrs || Object.keys(attrs).length === 0) {\n return '';\n }\n\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(attrs)) {\n // Skip hidden attributes\n if (this.options.hideAttributes.includes(key)) continue;\n\n // Skip undefined/null values\n if (value === undefined || value === null) continue;\n\n // Format value\n const strValue = this.truncate(\n Array.isArray(value) ? `[${value.join(', ')}]` : String(value),\n this.options.maxValueLength,\n );\n pairs.push(`${key}=${strValue}`);\n }\n\n return pairs.join(', ');\n }\n\n /**\n * Truncate string to max length with ellipsis\n */\n private truncate(str: string, max: number): string {\n if (str.length <= max) return str;\n return str.slice(0, max - 3) + '...';\n }\n\n /**\n * Apply ANSI color if colors are enabled\n */\n private color(text: string, color: AnsiColor): string {\n if (!this.options.colors) return text;\n return `${ANSI[color]}${text}${ANSI.reset}`;\n }\n\n /**\n * Shutdown (no-op for console exporter)\n */\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Force flush (no-op for console exporter)\n */\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n/**\n * Convert HrTime [seconds, nanoseconds] to milliseconds\n */\nfunction hrTimeToMs(hrTime: [number, number]): number {\n const [seconds, nanos] = hrTime;\n return seconds * 1000 + nanos / 1_000_000;\n}\n\n/**\n * Format duration with appropriate units\n */\nfunction formatDuration(ms: number): string {\n if (ms < 1) {\n // Sub-millisecond: show as microseconds\n return `${(ms * 1000).toFixed(0)}µs`;\n }\n if (ms < 1000) {\n // Under 1 second: show as milliseconds\n return `${ms.toFixed(0)}ms`;\n }\n // 1 second or more: show as seconds\n return `${(ms / 1000).toFixed(2)}s`;\n}\n\n/**\n * Get color based on duration (fast=green, medium=yellow, slow=red)\n */\nfunction getDurationColor(ms: number): AnsiColor {\n if (ms < 100) return 'green';\n if (ms < 500) return 'yellow';\n return 'red';\n}\n\n/**\n * Export utility functions for testing\n */\nexport { formatDuration, getDurationColor, hrTimeToMs };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { SpanStatusCode } from "@opentelemetry/api";
|
|
2
|
+
|
|
3
|
+
//#region src/pretty-console-exporter.ts
|
|
4
|
+
/**
|
|
5
|
+
* Export result code constants (avoid importing @opentelemetry/core)
|
|
6
|
+
*/
|
|
7
|
+
const ExportResultCode = {
|
|
8
|
+
SUCCESS: 0,
|
|
9
|
+
FAILED: 1
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* ANSI escape codes for terminal colors (zero dependencies)
|
|
13
|
+
*/
|
|
14
|
+
const ANSI = {
|
|
15
|
+
reset: "\x1B[0m",
|
|
16
|
+
bold: "\x1B[1m",
|
|
17
|
+
dim: "\x1B[2m",
|
|
18
|
+
green: "\x1B[32m",
|
|
19
|
+
red: "\x1B[31m",
|
|
20
|
+
yellow: "\x1B[33m",
|
|
21
|
+
blue: "\x1B[34m",
|
|
22
|
+
cyan: "\x1B[36m",
|
|
23
|
+
gray: "\x1B[90m"
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Pretty Console Exporter - colorized, hierarchical span output for development
|
|
27
|
+
*
|
|
28
|
+
* Features:
|
|
29
|
+
* - Colorized status indicators (✓ green, ✗ red)
|
|
30
|
+
* - Duration with color coding (fast=green, medium=yellow, slow=red)
|
|
31
|
+
* - Hierarchical tree view showing parent-child relationships
|
|
32
|
+
* - Attribute display with truncation
|
|
33
|
+
* - Error message highlighting
|
|
34
|
+
*/
|
|
35
|
+
var PrettyConsoleExporter = class {
|
|
36
|
+
options;
|
|
37
|
+
constructor(options = {}) {
|
|
38
|
+
this.options = {
|
|
39
|
+
colors: options.colors ?? process.stdout?.isTTY ?? false,
|
|
40
|
+
showAttributes: options.showAttributes ?? true,
|
|
41
|
+
maxValueLength: options.maxValueLength ?? 50,
|
|
42
|
+
showScope: options.showScope ?? true,
|
|
43
|
+
hideAttributes: options.hideAttributes ?? [],
|
|
44
|
+
showTraceId: options.showTraceId ?? false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Export spans with pretty formatting
|
|
49
|
+
*/
|
|
50
|
+
export(spans, resultCallback) {
|
|
51
|
+
if (spans.length === 0) {
|
|
52
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const traceGroups = this.groupByTrace(spans);
|
|
57
|
+
for (const [traceId, traceSpans] of traceGroups) this.printTrace(traceId, traceSpans);
|
|
58
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
59
|
+
} catch {
|
|
60
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Group spans by their trace ID
|
|
65
|
+
*/
|
|
66
|
+
groupByTrace(spans) {
|
|
67
|
+
const groups = /* @__PURE__ */ new Map();
|
|
68
|
+
for (const span of spans) {
|
|
69
|
+
const traceId = span.spanContext().traceId;
|
|
70
|
+
const group = groups.get(traceId) ?? [];
|
|
71
|
+
group.push(span);
|
|
72
|
+
groups.set(traceId, group);
|
|
73
|
+
}
|
|
74
|
+
return groups;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Print a single trace with all its spans as a tree
|
|
78
|
+
*/
|
|
79
|
+
printTrace(traceId, spans) {
|
|
80
|
+
const sorted = [...spans].toSorted((a, b) => {
|
|
81
|
+
return hrTimeToMs(a.startTime) - hrTimeToMs(b.startTime);
|
|
82
|
+
});
|
|
83
|
+
const tree = this.buildSpanTree(sorted);
|
|
84
|
+
if (this.options.showTraceId && tree.length > 0) console.log(this.color(`trace: ${traceId}`, "gray"));
|
|
85
|
+
for (const node of tree) this.printNode(node, 0, false);
|
|
86
|
+
console.log("");
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Build a tree structure from flat spans using parent-child relationships
|
|
90
|
+
*/
|
|
91
|
+
buildSpanTree(spans) {
|
|
92
|
+
const spanMap = /* @__PURE__ */ new Map();
|
|
93
|
+
const roots = [];
|
|
94
|
+
for (const span of spans) {
|
|
95
|
+
const spanId = span.spanContext().spanId;
|
|
96
|
+
spanMap.set(spanId, {
|
|
97
|
+
span,
|
|
98
|
+
children: []
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
for (const span of spans) {
|
|
102
|
+
const spanId = span.spanContext().spanId;
|
|
103
|
+
const parentId = span.parentSpanContext?.spanId;
|
|
104
|
+
const node = spanMap.get(spanId);
|
|
105
|
+
if (parentId && spanMap.has(parentId)) spanMap.get(parentId).children.push(node);
|
|
106
|
+
else roots.push(node);
|
|
107
|
+
}
|
|
108
|
+
return roots;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Print a span node with indentation and tree characters
|
|
112
|
+
*/
|
|
113
|
+
printNode(node, depth, isLast) {
|
|
114
|
+
const { span } = node;
|
|
115
|
+
const prefix = depth === 0 ? "" : " ".repeat(depth - 1) + (isLast ? "└─ " : "├─ ");
|
|
116
|
+
const isError = span.status.code === SpanStatusCode.ERROR;
|
|
117
|
+
const statusChar = isError ? "✗" : "✓";
|
|
118
|
+
const statusColor = isError ? "red" : "green";
|
|
119
|
+
const durationMs = hrTimeToMs(span.duration);
|
|
120
|
+
const durationStr = formatDuration(durationMs);
|
|
121
|
+
const durationColor = getDurationColor(durationMs);
|
|
122
|
+
const scopeName = this.options.showScope ? this.color(` [${this.getScopeName(span)}]`, "gray") : "";
|
|
123
|
+
const line = [
|
|
124
|
+
prefix,
|
|
125
|
+
this.color(statusChar, statusColor),
|
|
126
|
+
" ",
|
|
127
|
+
span.name.padEnd(Math.max(35 - prefix.length, 10)),
|
|
128
|
+
this.color(durationStr.padStart(8), durationColor),
|
|
129
|
+
scopeName
|
|
130
|
+
].join("");
|
|
131
|
+
console.log(line);
|
|
132
|
+
if (this.options.showAttributes) {
|
|
133
|
+
const attrs = this.formatAttributes(span);
|
|
134
|
+
if (attrs) {
|
|
135
|
+
const attrIndent = " ".repeat(depth) + " ";
|
|
136
|
+
console.log(this.color(`${attrIndent}${attrs}`, "dim"));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (isError && span.status.message) {
|
|
140
|
+
const errorIndent = " ".repeat(depth) + " ";
|
|
141
|
+
console.log(this.color(`${errorIndent}Error: ${span.status.message}`, "red"));
|
|
142
|
+
}
|
|
143
|
+
const childCount = node.children.length;
|
|
144
|
+
let index = 0;
|
|
145
|
+
for (const child of node.children) {
|
|
146
|
+
this.printNode(child, depth + 1, index === childCount - 1);
|
|
147
|
+
index++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get short scope name from instrumentation scope
|
|
152
|
+
*/
|
|
153
|
+
getScopeName(span) {
|
|
154
|
+
const name = span.instrumentationScope?.name ?? "unknown";
|
|
155
|
+
const match = name.match(/@opentelemetry\/instrumentation-(.+)/);
|
|
156
|
+
if (match?.[1]) return match[1];
|
|
157
|
+
return name.split("/").at(-1) ?? name;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format span attributes as a comma-separated string
|
|
161
|
+
*/
|
|
162
|
+
formatAttributes(span) {
|
|
163
|
+
const attrs = span.attributes;
|
|
164
|
+
if (!attrs || Object.keys(attrs).length === 0) return "";
|
|
165
|
+
const pairs = [];
|
|
166
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
167
|
+
if (this.options.hideAttributes.includes(key)) continue;
|
|
168
|
+
if (value === void 0 || value === null) continue;
|
|
169
|
+
const strValue = this.truncate(Array.isArray(value) ? `[${value.join(", ")}]` : String(value), this.options.maxValueLength);
|
|
170
|
+
pairs.push(`${key}=${strValue}`);
|
|
171
|
+
}
|
|
172
|
+
return pairs.join(", ");
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Truncate string to max length with ellipsis
|
|
176
|
+
*/
|
|
177
|
+
truncate(str, max) {
|
|
178
|
+
if (str.length <= max) return str;
|
|
179
|
+
return str.slice(0, max - 3) + "...";
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Apply ANSI color if colors are enabled
|
|
183
|
+
*/
|
|
184
|
+
color(text, color) {
|
|
185
|
+
if (!this.options.colors) return text;
|
|
186
|
+
return `${ANSI[color]}${text}${ANSI.reset}`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Shutdown (no-op for console exporter)
|
|
190
|
+
*/
|
|
191
|
+
shutdown() {
|
|
192
|
+
return Promise.resolve();
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Force flush (no-op for console exporter)
|
|
196
|
+
*/
|
|
197
|
+
forceFlush() {
|
|
198
|
+
return Promise.resolve();
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Convert HrTime [seconds, nanoseconds] to milliseconds
|
|
203
|
+
*/
|
|
204
|
+
function hrTimeToMs(hrTime) {
|
|
205
|
+
const [seconds, nanos] = hrTime;
|
|
206
|
+
return seconds * 1e3 + nanos / 1e6;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Format duration with appropriate units
|
|
210
|
+
*/
|
|
211
|
+
function formatDuration(ms) {
|
|
212
|
+
if (ms < 1) return `${(ms * 1e3).toFixed(0)}µs`;
|
|
213
|
+
if (ms < 1e3) return `${ms.toFixed(0)}ms`;
|
|
214
|
+
return `${(ms / 1e3).toFixed(2)}s`;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get color based on duration (fast=green, medium=yellow, slow=red)
|
|
218
|
+
*/
|
|
219
|
+
function getDurationColor(ms) {
|
|
220
|
+
if (ms < 100) return "green";
|
|
221
|
+
if (ms < 500) return "yellow";
|
|
222
|
+
return "red";
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
//#endregion
|
|
226
|
+
export { PrettyConsoleExporter as t };
|
|
227
|
+
//# sourceMappingURL=pretty-console-exporter-DqKl_q9z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretty-console-exporter-DqKl_q9z.js","names":[],"sources":["../src/pretty-console-exporter.ts"],"sourcesContent":["/**\n * Pretty Console Exporter\n *\n * A developer-friendly span exporter that displays colorized, hierarchical\n * trace output in the terminal. Zero external dependencies - uses ANSI escape codes.\n *\n * @example Basic usage\n * ```typescript\n * init({\n * service: 'my-app',\n * debug: 'pretty' // Uses PrettyConsoleExporter\n * })\n * ```\n *\n * @example Explicit usage with options\n * ```typescript\n * import { PrettyConsoleExporter } from 'autotel/exporters'\n *\n * init({\n * service: 'my-app',\n * spanExporters: [new PrettyConsoleExporter({\n * colors: true,\n * showAttributes: true,\n * hideAttributes: ['http.user_agent']\n * })]\n * })\n * ```\n */\n\nimport type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SpanStatusCode } from '@opentelemetry/api';\n\n/**\n * Export result code constants (avoid importing @opentelemetry/core)\n */\nconst ExportResultCode = {\n SUCCESS: 0,\n FAILED: 1,\n} as const;\n\n/**\n * Export result type for SpanExporter callback\n */\ninterface ExportResult {\n code: number;\n error?: Error;\n}\n\n/**\n * ANSI escape codes for terminal colors (zero dependencies)\n */\nconst ANSI = {\n reset: '\\u001B[0m',\n bold: '\\u001B[1m',\n dim: '\\u001B[2m',\n green: '\\u001B[32m',\n red: '\\u001B[31m',\n yellow: '\\u001B[33m',\n blue: '\\u001B[34m',\n cyan: '\\u001B[36m',\n gray: '\\u001B[90m',\n} as const;\n\ntype AnsiColor = keyof typeof ANSI;\n\n/**\n * Configuration options for PrettyConsoleExporter\n */\nexport interface PrettyConsoleExporterOptions {\n /**\n * Enable ANSI colors in output\n * @default auto-detect TTY\n */\n colors?: boolean;\n\n /**\n * Show span attributes in output\n * @default true\n */\n showAttributes?: boolean;\n\n /**\n * Maximum length for attribute values before truncation\n * @default 50\n */\n maxValueLength?: number;\n\n /**\n * Show instrumentation scope name (e.g., [http], [pg])\n * @default true\n */\n showScope?: boolean;\n\n /**\n * Attribute keys to always hide from output\n * @default []\n */\n hideAttributes?: string[];\n\n /**\n * Show trace ID for each root span\n * @default false\n */\n showTraceId?: boolean;\n}\n\n/**\n * Internal node structure for building span trees\n */\ninterface SpanNode {\n span: ReadableSpan;\n children: SpanNode[];\n}\n\n/**\n * Pretty Console Exporter - colorized, hierarchical span output for development\n *\n * Features:\n * - Colorized status indicators (✓ green, ✗ red)\n * - Duration with color coding (fast=green, medium=yellow, slow=red)\n * - Hierarchical tree view showing parent-child relationships\n * - Attribute display with truncation\n * - Error message highlighting\n */\nexport class PrettyConsoleExporter implements SpanExporter {\n private readonly options: Required<PrettyConsoleExporterOptions>;\n\n constructor(options: PrettyConsoleExporterOptions = {}) {\n this.options = {\n colors: options.colors ?? process.stdout?.isTTY ?? false,\n showAttributes: options.showAttributes ?? true,\n maxValueLength: options.maxValueLength ?? 50,\n showScope: options.showScope ?? true,\n hideAttributes: options.hideAttributes ?? [],\n showTraceId: options.showTraceId ?? false,\n };\n }\n\n /**\n * Export spans with pretty formatting\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (spans.length === 0) {\n resultCallback({ code: ExportResultCode.SUCCESS });\n return;\n }\n\n try {\n // Group spans by trace ID\n const traceGroups = this.groupByTrace(spans);\n\n // Print each trace group\n for (const [traceId, traceSpans] of traceGroups) {\n this.printTrace(traceId, traceSpans);\n }\n\n resultCallback({ code: ExportResultCode.SUCCESS });\n } catch {\n // Fail-open: don't crash the app if formatting fails\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n }\n\n /**\n * Group spans by their trace ID\n */\n private groupByTrace(spans: ReadableSpan[]): Map<string, ReadableSpan[]> {\n const groups = new Map<string, ReadableSpan[]>();\n\n for (const span of spans) {\n const traceId = span.spanContext().traceId;\n const group = groups.get(traceId) ?? [];\n group.push(span);\n groups.set(traceId, group);\n }\n\n return groups;\n }\n\n /**\n * Print a single trace with all its spans as a tree\n */\n private printTrace(traceId: string, spans: ReadableSpan[]): void {\n // Sort by start time\n const sorted = [...spans].toSorted((a, b) => {\n const aTime = hrTimeToMs(a.startTime);\n const bTime = hrTimeToMs(b.startTime);\n return aTime - bTime;\n });\n\n // Build tree structure\n const tree = this.buildSpanTree(sorted);\n\n // Print trace ID header if enabled\n if (this.options.showTraceId && tree.length > 0) {\n console.log(this.color(`trace: ${traceId}`, 'gray'));\n }\n\n // Print each root span and its children\n for (const node of tree) {\n this.printNode(node, 0, false);\n }\n\n // Add blank line between traces\n console.log('');\n }\n\n /**\n * Build a tree structure from flat spans using parent-child relationships\n */\n private buildSpanTree(spans: ReadableSpan[]): SpanNode[] {\n const spanMap = new Map<string, SpanNode>();\n const roots: SpanNode[] = [];\n\n // Create nodes for all spans\n for (const span of spans) {\n const spanId = span.spanContext().spanId;\n spanMap.set(spanId, { span, children: [] });\n }\n\n // Build parent-child relationships\n for (const span of spans) {\n const spanId = span.spanContext().spanId;\n const parentId = span.parentSpanContext?.spanId;\n const node = spanMap.get(spanId)!;\n\n if (parentId && spanMap.has(parentId)) {\n // Has parent in this batch - add as child\n spanMap.get(parentId)!.children.push(node);\n } else {\n // No parent or parent not in batch - treat as root\n roots.push(node);\n }\n }\n\n return roots;\n }\n\n /**\n * Print a span node with indentation and tree characters\n */\n private printNode(node: SpanNode, depth: number, isLast: boolean): void {\n const { span } = node;\n\n // Build tree prefix\n const prefix =\n depth === 0 ? '' : ' '.repeat(depth - 1) + (isLast ? '└─ ' : '├─ ');\n\n // Status indicator\n const isError = span.status.code === SpanStatusCode.ERROR;\n const statusChar = isError ? '✗' : '✓';\n const statusColor: AnsiColor = isError ? 'red' : 'green';\n\n // Duration formatting\n const durationMs = hrTimeToMs(span.duration);\n const durationStr = formatDuration(durationMs);\n const durationColor = getDurationColor(durationMs);\n\n // Scope name (instrumentation library)\n const scopeName = this.options.showScope\n ? this.color(` [${this.getScopeName(span)}]`, 'gray')\n : '';\n\n // Build the main line\n const line = [\n prefix,\n this.color(statusChar, statusColor),\n ' ',\n span.name.padEnd(Math.max(35 - prefix.length, 10)),\n this.color(durationStr.padStart(8), durationColor),\n scopeName,\n ].join('');\n\n console.log(line);\n\n // Print attributes on next line (indented)\n if (this.options.showAttributes) {\n const attrs = this.formatAttributes(span);\n if (attrs) {\n const attrIndent = ' '.repeat(depth) + ' ';\n console.log(this.color(`${attrIndent}${attrs}`, 'dim'));\n }\n }\n\n // Print error message if present\n if (isError && span.status.message) {\n const errorIndent = ' '.repeat(depth) + ' ';\n console.log(\n this.color(`${errorIndent}Error: ${span.status.message}`, 'red'),\n );\n }\n\n // Print children\n const childCount = node.children.length;\n let index = 0;\n for (const child of node.children) {\n this.printNode(child, depth + 1, index === childCount - 1);\n index++;\n }\n }\n\n /**\n * Get short scope name from instrumentation scope\n */\n private getScopeName(span: ReadableSpan): string {\n const name = span.instrumentationScope?.name ?? 'unknown';\n // Extract short name from @opentelemetry/instrumentation-xxx format\n const match = name.match(/@opentelemetry\\/instrumentation-(.+)/);\n if (match?.[1]) return match[1];\n // Fall back to last part of name or full name\n const lastPart = name.split('/').at(-1);\n return lastPart ?? name;\n }\n\n /**\n * Format span attributes as a comma-separated string\n */\n private formatAttributes(span: ReadableSpan): string {\n const attrs = span.attributes;\n if (!attrs || Object.keys(attrs).length === 0) {\n return '';\n }\n\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(attrs)) {\n // Skip hidden attributes\n if (this.options.hideAttributes.includes(key)) continue;\n\n // Skip undefined/null values\n if (value === undefined || value === null) continue;\n\n // Format value\n const strValue = this.truncate(\n Array.isArray(value) ? `[${value.join(', ')}]` : String(value),\n this.options.maxValueLength,\n );\n pairs.push(`${key}=${strValue}`);\n }\n\n return pairs.join(', ');\n }\n\n /**\n * Truncate string to max length with ellipsis\n */\n private truncate(str: string, max: number): string {\n if (str.length <= max) return str;\n return str.slice(0, max - 3) + '...';\n }\n\n /**\n * Apply ANSI color if colors are enabled\n */\n private color(text: string, color: AnsiColor): string {\n if (!this.options.colors) return text;\n return `${ANSI[color]}${text}${ANSI.reset}`;\n }\n\n /**\n * Shutdown (no-op for console exporter)\n */\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Force flush (no-op for console exporter)\n */\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n\n/**\n * Convert HrTime [seconds, nanoseconds] to milliseconds\n */\nfunction hrTimeToMs(hrTime: [number, number]): number {\n const [seconds, nanos] = hrTime;\n return seconds * 1000 + nanos / 1_000_000;\n}\n\n/**\n * Format duration with appropriate units\n */\nfunction formatDuration(ms: number): string {\n if (ms < 1) {\n // Sub-millisecond: show as microseconds\n return `${(ms * 1000).toFixed(0)}µs`;\n }\n if (ms < 1000) {\n // Under 1 second: show as milliseconds\n return `${ms.toFixed(0)}ms`;\n }\n // 1 second or more: show as seconds\n return `${(ms / 1000).toFixed(2)}s`;\n}\n\n/**\n * Get color based on duration (fast=green, medium=yellow, slow=red)\n */\nfunction getDurationColor(ms: number): AnsiColor {\n if (ms < 100) return 'green';\n if (ms < 500) return 'yellow';\n return 'red';\n}\n\n/**\n * Export utility functions for testing\n */\nexport { formatDuration, getDurationColor, hrTimeToMs };\n"],"mappings":"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"}
|
package/dist/processors.cjs
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
'
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_canonical_log_line_processor = require('./canonical-log-line-processor--RlFDHhm.cjs');
|
|
3
|
+
let _opentelemetry_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
var sdkTraceBase = require('@opentelemetry/sdk-trace-base');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "CanonicalLogLineProcessor", {
|
|
5
|
+
Object.defineProperty(exports, 'BatchSpanProcessor', {
|
|
9
6
|
enumerable: true,
|
|
10
|
-
get: function () {
|
|
7
|
+
get: function () {
|
|
8
|
+
return _opentelemetry_sdk_trace_base.BatchSpanProcessor;
|
|
9
|
+
}
|
|
11
10
|
});
|
|
12
|
-
|
|
11
|
+
exports.CanonicalLogLineProcessor = require_canonical_log_line_processor.CanonicalLogLineProcessor;
|
|
12
|
+
Object.defineProperty(exports, 'SimpleSpanProcessor', {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
get: function () { return sdkTraceBase.SimpleSpanProcessor; }
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=processors.cjs.map
|
|
21
|
-
//# sourceMappingURL=processors.cjs.map
|
|
14
|
+
get: function () {
|
|
15
|
+
return _opentelemetry_sdk_trace_base.SimpleSpanProcessor;
|
|
16
|
+
}
|
|
17
|
+
});
|