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
package/dist/validate.d.cts
CHANGED
|
@@ -1,51 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import './event-subscriber.cjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Validation telemetry — connect runtime input validation (Zod or any
|
|
6
|
-
* `safeParse` schema) to your traces and metrics at the boundaries where bad
|
|
7
|
-
* data actually enters: HTTP bodies, events, messages.
|
|
8
|
-
*
|
|
9
|
-
* Today a `safeParse` failure either throws (no span, no metric, no alert) or
|
|
10
|
-
* is silently swallowed in a handler. `defineValidator` makes the mismatch
|
|
11
|
-
* **observable** — a `validation.*` span attribute set and a counter
|
|
12
|
-
* incremented — with a per-validator `observe` vs `reject` mode:
|
|
13
|
-
*
|
|
14
|
-
* - `reject` (default): record telemetry, then throw a structured 400-shaped
|
|
15
|
-
* error so the boundary can fail cleanly.
|
|
16
|
-
* - `observe`: record telemetry, return the raw input so the handler continues
|
|
17
|
-
* — useful for measuring real-world drift before you enforce it.
|
|
18
|
-
*
|
|
19
|
-
* **Not a security feature by default.** A malformed body is usually a bug or
|
|
20
|
-
* version skew, not an attack. Validation telemetry is first-class on its own
|
|
21
|
-
* metric; escalation to the security path is a deliberate opt-in via
|
|
22
|
-
* {@link onValidationMismatch} (e.g. wired by `autotel-audit`), never automatic.
|
|
23
|
-
*
|
|
24
|
-
* **PII-safe by construction.** Only field *paths*, issue *codes*, and the
|
|
25
|
-
* declared *type* are ever recorded — never the offending value, and never a
|
|
26
|
-
* validator's error `message` (which routinely embeds the received value).
|
|
27
|
-
*/
|
|
1
|
+
import { r as SchemaLike } from "./define-event-HZRizPwz.cjs";
|
|
28
2
|
|
|
3
|
+
//#region src/validate.d.ts
|
|
29
4
|
type ValidationMode = 'observe' | 'reject';
|
|
30
5
|
type ValidationSeverity = 'info' | 'warning' | 'error';
|
|
31
6
|
/** A single failing field, stripped of any payload values. */
|
|
32
7
|
interface ValidationIssue {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
8
|
+
/** Dotted field path, e.g. `items.0.price`. Never a value. */
|
|
9
|
+
path: string;
|
|
10
|
+
/** Issue code (e.g. Zod's `invalid_type`, `too_small`). Never a value. */
|
|
11
|
+
code: string;
|
|
12
|
+
/** Declared type/constraint summary, e.g. `string`. Never a received value. */
|
|
13
|
+
expected?: string;
|
|
39
14
|
}
|
|
40
15
|
/** Everything the recorder needs — already PII-stripped by the caller. */
|
|
41
16
|
interface ValidationMismatch {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
17
|
+
/** Contract id, e.g. `POST /orders` or `order.placed`. */
|
|
18
|
+
name: string;
|
|
19
|
+
boundary: string;
|
|
20
|
+
mode: ValidationMode;
|
|
21
|
+
issues: ValidationIssue[];
|
|
22
|
+
hash?: string;
|
|
23
|
+
severity?: ValidationSeverity;
|
|
49
24
|
}
|
|
50
25
|
type MismatchListener = (mismatch: ValidationMismatch) => void;
|
|
51
26
|
/**
|
|
@@ -75,33 +50,33 @@ declare function recordValidationMismatch(mismatch: ValidationMismatch): void;
|
|
|
75
50
|
*/
|
|
76
51
|
declare function formatValidationIssues(error: unknown): ValidationIssue[];
|
|
77
52
|
interface DefineValidatorOptions<S> {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
53
|
+
/** Where validation runs. Defaults to `input`. */
|
|
54
|
+
boundary?: string;
|
|
55
|
+
/** `reject` (default): record then throw. `observe`: record then continue. */
|
|
56
|
+
onMismatch?: ValidationMode;
|
|
57
|
+
/** Project the schema to JSON Schema for a stable `validation.hash`. */
|
|
58
|
+
toJsonSchema?: (schema: S) => unknown;
|
|
59
|
+
severity?: ValidationSeverity;
|
|
60
|
+
/** Build the error thrown in `reject` mode (defaults to a 400 structured error). */
|
|
61
|
+
onReject?: (issues: ValidationIssue[], name: string) => Error;
|
|
87
62
|
}
|
|
88
63
|
type ValidatorResult<T> = {
|
|
89
|
-
|
|
90
|
-
|
|
64
|
+
success: true;
|
|
65
|
+
data: T;
|
|
91
66
|
} | {
|
|
92
|
-
|
|
93
|
-
|
|
67
|
+
success: false;
|
|
68
|
+
issues: ValidationIssue[];
|
|
94
69
|
};
|
|
95
70
|
interface Validator<T> {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly mode: ValidationMode;
|
|
73
|
+
/** Validate and record on failure; never throws. */
|
|
74
|
+
safeParse(input: unknown): ValidatorResult<T>;
|
|
75
|
+
/**
|
|
76
|
+
* Validate, record on failure, then apply the mode: `reject` throws,
|
|
77
|
+
* `observe` returns the raw input so the handler can continue.
|
|
78
|
+
*/
|
|
79
|
+
parse(input: unknown): T;
|
|
105
80
|
}
|
|
106
81
|
/**
|
|
107
82
|
* Declare an expected input shape once and get a validator that records every
|
|
@@ -125,5 +100,6 @@ interface Validator<T> {
|
|
|
125
100
|
* ```
|
|
126
101
|
*/
|
|
127
102
|
declare function defineValidator<T, S extends SchemaLike<T>>(name: string, schema: S, options?: DefineValidatorOptions<S>): Validator<T>;
|
|
128
|
-
|
|
129
|
-
export {
|
|
103
|
+
//#endregion
|
|
104
|
+
export { DefineValidatorOptions, type SchemaLike, ValidationIssue, ValidationMismatch, ValidationMode, ValidationSeverity, Validator, ValidatorResult, defineValidator, formatValidationIssues, onValidationMismatch, recordValidationMismatch };
|
|
105
|
+
//# sourceMappingURL=validate.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.cts","names":[],"sources":["../src/validate.ts"],"mappings":";;;KAyCY,cAAA;AAAA,KACA,kBAAA;;UAGK,eAAA;EAYf;EAVA,IAAA;EAYA;EAVA,IAAA;EAWA;EATA,QAAA;AAAA;;UAIe,kBAAA;EAOc;EAL7B,IAAA;EACA,QAAA;EACA,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ,eAAA;EACR,IAAA;EACA,QAAA,GAAW,kBAAA;AAAA;AAAA,KAaR,gBAAA,IAAoB,QAA4B,EAAlB,kBAAkB;;;AAcS;AAe9D;;;;AAAqE;AAqDrE;;;iBApEgB,oBAAA,CAAqB,OAAyB,EAAhB,gBAAgB;AAoES;AAmCvE;;;;AAnCuE,iBArDvD,wBAAA,CAAyB,QAA4B,EAAlB,kBAAkB;;;;;;;;iBAqDrD,sBAAA,CAAuB,KAAA,YAAiB,eAAe;AAAA,UAmCtD,sBAAA;EAMf;EAJA,QAAA;EAIgB;EAFhB,UAAA,GAAa,cAAA;EAGF;EADX,YAAA,IAAgB,MAAA,EAAQ,CAAA;EACxB,QAAA,GAAW,kBAAA;EAEC;EAAZ,QAAA,IAAY,MAAA,EAAQ,eAAA,IAAmB,IAAA,aAAiB,KAAA;AAAA;AAAA,KAG9C,eAAA;EACN,OAAA;EAAe,IAAA,EAAM,CAAA;AAAA;EACrB,OAAA;EAAgB,MAAA,EAAQ,eAAe;AAAA;AAAA,UAE5B,SAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA,EAAM,cAAA;EAJX;EAMJ,SAAA,CAAU,KAAA,YAAiB,eAAA,CAAgB,CAAA;EANf;;AAAe;AAE7C;EASE,KAAA,CAAM,KAAA,YAAiB,CAAA;AAAA;;;;;;;;;;;;;;;;;;;AAAC;AA2C1B;;iBAAgB,eAAA,cAA6B,UAAA,CAAW,CAAA,GACtD,IAAA,UACA,MAAA,EAAQ,CAAA,EACR,OAAA,GAAS,sBAAA,CAAuB,CAAA,IAC/B,SAAA,CAAU,CAAA"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -1,51 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import './event-subscriber.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Validation telemetry — connect runtime input validation (Zod or any
|
|
6
|
-
* `safeParse` schema) to your traces and metrics at the boundaries where bad
|
|
7
|
-
* data actually enters: HTTP bodies, events, messages.
|
|
8
|
-
*
|
|
9
|
-
* Today a `safeParse` failure either throws (no span, no metric, no alert) or
|
|
10
|
-
* is silently swallowed in a handler. `defineValidator` makes the mismatch
|
|
11
|
-
* **observable** — a `validation.*` span attribute set and a counter
|
|
12
|
-
* incremented — with a per-validator `observe` vs `reject` mode:
|
|
13
|
-
*
|
|
14
|
-
* - `reject` (default): record telemetry, then throw a structured 400-shaped
|
|
15
|
-
* error so the boundary can fail cleanly.
|
|
16
|
-
* - `observe`: record telemetry, return the raw input so the handler continues
|
|
17
|
-
* — useful for measuring real-world drift before you enforce it.
|
|
18
|
-
*
|
|
19
|
-
* **Not a security feature by default.** A malformed body is usually a bug or
|
|
20
|
-
* version skew, not an attack. Validation telemetry is first-class on its own
|
|
21
|
-
* metric; escalation to the security path is a deliberate opt-in via
|
|
22
|
-
* {@link onValidationMismatch} (e.g. wired by `autotel-audit`), never automatic.
|
|
23
|
-
*
|
|
24
|
-
* **PII-safe by construction.** Only field *paths*, issue *codes*, and the
|
|
25
|
-
* declared *type* are ever recorded — never the offending value, and never a
|
|
26
|
-
* validator's error `message` (which routinely embeds the received value).
|
|
27
|
-
*/
|
|
1
|
+
import { r as SchemaLike } from "./define-event-CreknLm3.js";
|
|
28
2
|
|
|
3
|
+
//#region src/validate.d.ts
|
|
29
4
|
type ValidationMode = 'observe' | 'reject';
|
|
30
5
|
type ValidationSeverity = 'info' | 'warning' | 'error';
|
|
31
6
|
/** A single failing field, stripped of any payload values. */
|
|
32
7
|
interface ValidationIssue {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
8
|
+
/** Dotted field path, e.g. `items.0.price`. Never a value. */
|
|
9
|
+
path: string;
|
|
10
|
+
/** Issue code (e.g. Zod's `invalid_type`, `too_small`). Never a value. */
|
|
11
|
+
code: string;
|
|
12
|
+
/** Declared type/constraint summary, e.g. `string`. Never a received value. */
|
|
13
|
+
expected?: string;
|
|
39
14
|
}
|
|
40
15
|
/** Everything the recorder needs — already PII-stripped by the caller. */
|
|
41
16
|
interface ValidationMismatch {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
17
|
+
/** Contract id, e.g. `POST /orders` or `order.placed`. */
|
|
18
|
+
name: string;
|
|
19
|
+
boundary: string;
|
|
20
|
+
mode: ValidationMode;
|
|
21
|
+
issues: ValidationIssue[];
|
|
22
|
+
hash?: string;
|
|
23
|
+
severity?: ValidationSeverity;
|
|
49
24
|
}
|
|
50
25
|
type MismatchListener = (mismatch: ValidationMismatch) => void;
|
|
51
26
|
/**
|
|
@@ -75,33 +50,33 @@ declare function recordValidationMismatch(mismatch: ValidationMismatch): void;
|
|
|
75
50
|
*/
|
|
76
51
|
declare function formatValidationIssues(error: unknown): ValidationIssue[];
|
|
77
52
|
interface DefineValidatorOptions<S> {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
53
|
+
/** Where validation runs. Defaults to `input`. */
|
|
54
|
+
boundary?: string;
|
|
55
|
+
/** `reject` (default): record then throw. `observe`: record then continue. */
|
|
56
|
+
onMismatch?: ValidationMode;
|
|
57
|
+
/** Project the schema to JSON Schema for a stable `validation.hash`. */
|
|
58
|
+
toJsonSchema?: (schema: S) => unknown;
|
|
59
|
+
severity?: ValidationSeverity;
|
|
60
|
+
/** Build the error thrown in `reject` mode (defaults to a 400 structured error). */
|
|
61
|
+
onReject?: (issues: ValidationIssue[], name: string) => Error;
|
|
87
62
|
}
|
|
88
63
|
type ValidatorResult<T> = {
|
|
89
|
-
|
|
90
|
-
|
|
64
|
+
success: true;
|
|
65
|
+
data: T;
|
|
91
66
|
} | {
|
|
92
|
-
|
|
93
|
-
|
|
67
|
+
success: false;
|
|
68
|
+
issues: ValidationIssue[];
|
|
94
69
|
};
|
|
95
70
|
interface Validator<T> {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly mode: ValidationMode;
|
|
73
|
+
/** Validate and record on failure; never throws. */
|
|
74
|
+
safeParse(input: unknown): ValidatorResult<T>;
|
|
75
|
+
/**
|
|
76
|
+
* Validate, record on failure, then apply the mode: `reject` throws,
|
|
77
|
+
* `observe` returns the raw input so the handler can continue.
|
|
78
|
+
*/
|
|
79
|
+
parse(input: unknown): T;
|
|
105
80
|
}
|
|
106
81
|
/**
|
|
107
82
|
* Declare an expected input shape once and get a validator that records every
|
|
@@ -125,5 +100,6 @@ interface Validator<T> {
|
|
|
125
100
|
* ```
|
|
126
101
|
*/
|
|
127
102
|
declare function defineValidator<T, S extends SchemaLike<T>>(name: string, schema: S, options?: DefineValidatorOptions<S>): Validator<T>;
|
|
128
|
-
|
|
129
|
-
export {
|
|
103
|
+
//#endregion
|
|
104
|
+
export { DefineValidatorOptions, type SchemaLike, ValidationIssue, ValidationMismatch, ValidationMode, ValidationSeverity, Validator, ValidatorResult, defineValidator, formatValidationIssues, onValidationMismatch, recordValidationMismatch };
|
|
105
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","names":[],"sources":["../src/validate.ts"],"mappings":";;;KAyCY,cAAA;AAAA,KACA,kBAAA;;UAGK,eAAA;EAYf;EAVA,IAAA;EAYA;EAVA,IAAA;EAWA;EATA,QAAA;AAAA;;UAIe,kBAAA;EAOc;EAL7B,IAAA;EACA,QAAA;EACA,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ,eAAA;EACR,IAAA;EACA,QAAA,GAAW,kBAAA;AAAA;AAAA,KAaR,gBAAA,IAAoB,QAA4B,EAAlB,kBAAkB;;;AAcS;AAe9D;;;;AAAqE;AAqDrE;;;iBApEgB,oBAAA,CAAqB,OAAyB,EAAhB,gBAAgB;AAoES;AAmCvE;;;;AAnCuE,iBArDvD,wBAAA,CAAyB,QAA4B,EAAlB,kBAAkB;;;;;;;;iBAqDrD,sBAAA,CAAuB,KAAA,YAAiB,eAAe;AAAA,UAmCtD,sBAAA;EAMf;EAJA,QAAA;EAIgB;EAFhB,UAAA,GAAa,cAAA;EAGF;EADX,YAAA,IAAgB,MAAA,EAAQ,CAAA;EACxB,QAAA,GAAW,kBAAA;EAEC;EAAZ,QAAA,IAAY,MAAA,EAAQ,eAAA,IAAmB,IAAA,aAAiB,KAAA;AAAA;AAAA,KAG9C,eAAA;EACN,OAAA;EAAe,IAAA,EAAM,CAAA;AAAA;EACrB,OAAA;EAAgB,MAAA,EAAQ,eAAe;AAAA;AAAA,UAE5B,SAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA,EAAM,cAAA;EAJX;EAMJ,SAAA,CAAU,KAAA,YAAiB,eAAA,CAAgB,CAAA;EANf;;AAAe;AAE7C;EASE,KAAA,CAAM,KAAA,YAAiB,CAAA;AAAA;;;;;;;;;;;;;;;;;;;AAAC;AA2C1B;;iBAAgB,eAAA,cAA6B,UAAA,CAAW,CAAA,GACtD,IAAA,UACA,MAAA,EAAQ,CAAA,EACR,OAAA,GAAS,sBAAA,CAAuB,CAAA,IAC/B,SAAA,CAAU,CAAA"}
|
package/dist/validate.js
CHANGED
|
@@ -1,133 +1,197 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { hashJson } from
|
|
3
|
-
import { createCounter } from
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import './chunk-HA2WBOGQ.js';
|
|
7
|
-
import { trace } from '@opentelemetry/api';
|
|
1
|
+
import { t as createStructuredError } from "./structured-error-9--cxBay.js";
|
|
2
|
+
import { t as hashJson } from "./stable-hash-Cg5cT34Q.js";
|
|
3
|
+
import { createCounter } from "./metric-helpers.js";
|
|
4
|
+
import { VALIDATION_ATTR, VALIDATION_ISSUE_CAP, VALIDATION_METRICS } from "./validation-attributes.js";
|
|
5
|
+
import { trace } from "@opentelemetry/api";
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
//#region src/validate.ts
|
|
8
|
+
/**
|
|
9
|
+
* Validation telemetry — connect runtime input validation (Zod or any
|
|
10
|
+
* `safeParse` schema) to your traces and metrics at the boundaries where bad
|
|
11
|
+
* data actually enters: HTTP bodies, events, messages.
|
|
12
|
+
*
|
|
13
|
+
* Today a `safeParse` failure either throws (no span, no metric, no alert) or
|
|
14
|
+
* is silently swallowed in a handler. `defineValidator` makes the mismatch
|
|
15
|
+
* **observable** — a `validation.*` span attribute set and a counter
|
|
16
|
+
* incremented — with a per-validator `observe` vs `reject` mode:
|
|
17
|
+
*
|
|
18
|
+
* - `reject` (default): record telemetry, then throw a structured 400-shaped
|
|
19
|
+
* error so the boundary can fail cleanly.
|
|
20
|
+
* - `observe`: record telemetry, return the raw input so the handler continues
|
|
21
|
+
* — useful for measuring real-world drift before you enforce it.
|
|
22
|
+
*
|
|
23
|
+
* **Not a security feature by default.** A malformed body is usually a bug or
|
|
24
|
+
* version skew, not an attack. Validation telemetry is first-class on its own
|
|
25
|
+
* metric; escalation to the security path is a deliberate opt-in via
|
|
26
|
+
* {@link onValidationMismatch} (e.g. wired by `autotel-audit`), never automatic.
|
|
27
|
+
*
|
|
28
|
+
* **PII-safe by construction.** Only field *paths*, issue *codes*, and the
|
|
29
|
+
* declared *type* are ever recorded — never the offending value, and never a
|
|
30
|
+
* validator's error `message` (which routinely embeds the received value).
|
|
31
|
+
*/
|
|
32
|
+
let mismatchCounter;
|
|
10
33
|
function counter() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
description: "Input payloads that did not match their declared shape"
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return mismatchCounter;
|
|
34
|
+
if (!mismatchCounter) mismatchCounter = createCounter(VALIDATION_METRICS.mismatches, { description: "Input payloads that did not match their declared shape" });
|
|
35
|
+
return mismatchCounter;
|
|
17
36
|
}
|
|
18
|
-
|
|
37
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
38
|
+
/**
|
|
39
|
+
* Register an explicit handler called on every recorded mismatch — the opt-in
|
|
40
|
+
* seam for escalating to security events, a webhook, or a custom sink. There is
|
|
41
|
+
* no automatic, package-presence-driven escalation: nothing fires here unless
|
|
42
|
+
* you (or a package you wire up) register a handler.
|
|
43
|
+
*
|
|
44
|
+
* Multiple subscribers coexist: a package (e.g. `autotel-audit` bridging to
|
|
45
|
+
* security events) and your own app code (a webhook, a logger) can both
|
|
46
|
+
* register and all fire. Returns an unsubscribe fn that removes only this
|
|
47
|
+
* handler; registering the same function twice is a no-op (Set semantics).
|
|
48
|
+
*/
|
|
19
49
|
function onValidationMismatch(handler) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
50
|
+
listeners.add(handler);
|
|
51
|
+
return () => {
|
|
52
|
+
listeners.delete(handler);
|
|
53
|
+
};
|
|
24
54
|
}
|
|
25
|
-
|
|
55
|
+
const truncate = (values) => values.slice(0, 20).join(",");
|
|
56
|
+
/**
|
|
57
|
+
* Record a validation mismatch as telemetry: `validation.*` attributes on the
|
|
58
|
+
* active span (if any) and an increment on `autotel.validation.mismatches`.
|
|
59
|
+
* Fail-open — never throws, so instrumentation can't break the boundary.
|
|
60
|
+
*/
|
|
26
61
|
function recordValidationMismatch(mismatch) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
listener(mismatch);
|
|
54
|
-
} catch {
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
} catch {
|
|
58
|
-
}
|
|
62
|
+
try {
|
|
63
|
+
const paths = mismatch.issues.map((i) => i.path).filter(Boolean);
|
|
64
|
+
const codes = [...new Set(mismatch.issues.map((i) => i.code))];
|
|
65
|
+
const span = trace.getActiveSpan();
|
|
66
|
+
if (span) span.setAttributes({
|
|
67
|
+
[VALIDATION_ATTR.name]: mismatch.name,
|
|
68
|
+
[VALIDATION_ATTR.boundary]: mismatch.boundary,
|
|
69
|
+
[VALIDATION_ATTR.mode]: mismatch.mode,
|
|
70
|
+
[VALIDATION_ATTR.issueCount]: mismatch.issues.length,
|
|
71
|
+
[VALIDATION_ATTR.issuePaths]: truncate(paths),
|
|
72
|
+
[VALIDATION_ATTR.issueCodes]: truncate(codes),
|
|
73
|
+
...mismatch.hash ? { [VALIDATION_ATTR.hash]: mismatch.hash } : {},
|
|
74
|
+
...mismatch.severity ? { [VALIDATION_ATTR.severity]: mismatch.severity } : {}
|
|
75
|
+
});
|
|
76
|
+
try {
|
|
77
|
+
counter().add(1, {
|
|
78
|
+
boundary: mismatch.boundary,
|
|
79
|
+
validation: mismatch.name,
|
|
80
|
+
mode: mismatch.mode
|
|
81
|
+
});
|
|
82
|
+
} catch {}
|
|
83
|
+
for (const listener of listeners) try {
|
|
84
|
+
listener(mismatch);
|
|
85
|
+
} catch {}
|
|
86
|
+
} catch {}
|
|
59
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Normalise an arbitrary validation error into PII-safe issues. Reads only
|
|
90
|
+
* `path`, `code`, and (when it is a declared type name) `expected` — and never
|
|
91
|
+
* `message`, `received`, or any value-bearing field. Understands the Zod shape
|
|
92
|
+
* (`error.issues`) and a generic `error.errors` fallback; returns `[]` for
|
|
93
|
+
* anything unrecognised.
|
|
94
|
+
*/
|
|
60
95
|
function formatValidationIssues(error) {
|
|
61
|
-
|
|
62
|
-
return raw.map((issue) => toSafeIssue(issue));
|
|
96
|
+
return extractRawIssues(error).map((issue) => toSafeIssue(issue));
|
|
63
97
|
}
|
|
64
98
|
function extractRawIssues(error) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return [];
|
|
99
|
+
if (error && typeof error === "object") {
|
|
100
|
+
const candidate = error.issues ?? error.errors;
|
|
101
|
+
if (Array.isArray(candidate)) return candidate.filter((i) => i !== null && typeof i === "object");
|
|
102
|
+
}
|
|
103
|
+
return [];
|
|
74
104
|
}
|
|
75
105
|
function toSafeIssue(issue) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
106
|
+
const rawPath = issue.path;
|
|
107
|
+
const path = Array.isArray(rawPath) ? rawPath.map(String).join(".") : typeof rawPath === "string" ? rawPath : "";
|
|
108
|
+
const code = typeof issue.code === "string" ? issue.code : "invalid";
|
|
109
|
+
const expected = typeof issue.expected === "string" ? issue.expected : void 0;
|
|
110
|
+
return expected ? {
|
|
111
|
+
path,
|
|
112
|
+
code,
|
|
113
|
+
expected
|
|
114
|
+
} : {
|
|
115
|
+
path,
|
|
116
|
+
code
|
|
117
|
+
};
|
|
81
118
|
}
|
|
82
119
|
function defaultRejectError(issues, name) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
120
|
+
return createStructuredError({
|
|
121
|
+
name: "ValidationError",
|
|
122
|
+
status: 400,
|
|
123
|
+
code: "validation_failed",
|
|
124
|
+
message: `Input for "${name}" did not match its declared shape.`,
|
|
125
|
+
why: `${issues.length} field(s) failed validation: ${issues.map((i) => i.path || "(root)").slice(0, 20).join(", ")}.`,
|
|
126
|
+
fix: "Send a payload that matches the schema, or switch this validator to observe mode while you investigate.",
|
|
127
|
+
details: {
|
|
128
|
+
validation: name,
|
|
129
|
+
issues
|
|
130
|
+
}
|
|
131
|
+
});
|
|
93
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Declare an expected input shape once and get a validator that records every
|
|
135
|
+
* mismatch as telemetry.
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* import { z } from 'zod';
|
|
140
|
+
* import { defineValidator } from 'autotel/validate';
|
|
141
|
+
*
|
|
142
|
+
* const OrderBody = defineValidator('POST /orders', z.object({
|
|
143
|
+
* items: z.array(z.object({ sku: z.string(), qty: z.number().int() })),
|
|
144
|
+
* }), { boundary: 'http', toJsonSchema: (s) => z.toJSONSchema(s) });
|
|
145
|
+
*
|
|
146
|
+
* // reject mode (default): records + throws a 400-shaped structured error
|
|
147
|
+
* const order = OrderBody.parse(req.body);
|
|
148
|
+
*
|
|
149
|
+
* // observe mode: records, returns the result, never throws
|
|
150
|
+
* const result = OrderBody.safeParse(req.body);
|
|
151
|
+
* if (!result.success) metrics.onDrift(result.issues);
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
94
154
|
function defineValidator(name, schema, options = {}) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
155
|
+
const mode = options.onMismatch ?? "reject";
|
|
156
|
+
const boundary = options.boundary ?? "input";
|
|
157
|
+
const hash = options.toJsonSchema ? hashJson(options.toJsonSchema(schema)) : void 0;
|
|
158
|
+
const record = (issues) => {
|
|
159
|
+
recordValidationMismatch({
|
|
160
|
+
name,
|
|
161
|
+
boundary,
|
|
162
|
+
mode,
|
|
163
|
+
issues,
|
|
164
|
+
hash,
|
|
165
|
+
severity: options.severity
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
name,
|
|
170
|
+
mode,
|
|
171
|
+
safeParse(input) {
|
|
172
|
+
const parsed = schema.safeParse(input);
|
|
173
|
+
if (parsed.success) return {
|
|
174
|
+
success: true,
|
|
175
|
+
data: parsed.data
|
|
176
|
+
};
|
|
177
|
+
const issues = formatValidationIssues(parsed.error);
|
|
178
|
+
record(issues);
|
|
179
|
+
return {
|
|
180
|
+
success: false,
|
|
181
|
+
issues
|
|
182
|
+
};
|
|
183
|
+
},
|
|
184
|
+
parse(input) {
|
|
185
|
+
const parsed = schema.safeParse(input);
|
|
186
|
+
if (parsed.success) return parsed.data;
|
|
187
|
+
const issues = formatValidationIssues(parsed.error);
|
|
188
|
+
record(issues);
|
|
189
|
+
if (mode === "reject") throw options.onReject?.(issues, name) ?? defaultRejectError(issues, name);
|
|
190
|
+
return input;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
129
193
|
}
|
|
130
194
|
|
|
195
|
+
//#endregion
|
|
131
196
|
export { defineValidator, formatValidationIssues, onValidationMismatch, recordValidationMismatch };
|
|
132
|
-
//# sourceMappingURL=validate.js.map
|
|
133
197
|
//# sourceMappingURL=validate.js.map
|