@vibesdotdev/logging 0.0.2 → 1.0.0-rc.5
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/LICENSE +18 -0
- package/README.md +101 -8
- package/dist/audit/audit-retention.job.descriptor.d.ts +60 -0
- package/dist/audit/audit-retention.job.descriptor.d.ts.map +1 -0
- package/dist/audit/audit-retention.job.descriptor.js +42 -0
- package/dist/audit/audit-retention.job.descriptor.js.map +1 -0
- package/dist/audit/audit-retention.job.impl.d.ts +23 -0
- package/dist/audit/audit-retention.job.impl.d.ts.map +1 -0
- package/dist/audit/audit-retention.job.impl.js +24 -0
- package/dist/audit/audit-retention.job.impl.js.map +1 -0
- package/dist/audit/audit.descriptor.d.ts +6 -0
- package/dist/audit/audit.descriptor.d.ts.map +1 -1
- package/dist/audit/audit.descriptor.js +72 -5
- package/dist/audit/audit.descriptor.js.map +1 -1
- package/dist/audit/audit.storage.schema.d.ts +3 -3
- package/dist/audit/index.d.ts +3 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +4 -1
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/scheduled-audit-retention.d.ts +39 -0
- package/dist/audit/scheduled-audit-retention.d.ts.map +1 -0
- package/dist/audit/scheduled-audit-retention.js +38 -0
- package/dist/audit/scheduled-audit-retention.js.map +1 -0
- package/dist/browser/capture-error.d.ts +66 -0
- package/dist/browser/capture-error.d.ts.map +1 -0
- package/dist/browser/capture-error.js +82 -0
- package/dist/browser/capture-error.js.map +1 -0
- package/dist/browser/index.d.ts +11 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +16 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/logging-browser.plugin.d.ts +9 -0
- package/dist/browser/logging-browser.plugin.d.ts.map +1 -0
- package/dist/browser/logging-browser.plugin.js +26 -0
- package/dist/browser/logging-browser.plugin.js.map +1 -0
- package/dist/browser/plugin.d.ts +2 -0
- package/dist/browser/plugin.d.ts.map +1 -0
- package/dist/browser/plugin.js +2 -0
- package/dist/browser/plugin.js.map +1 -0
- package/dist/browser/read-errors.d.ts +26 -0
- package/dist/browser/read-errors.d.ts.map +1 -0
- package/dist/browser/read-errors.js +38 -0
- package/dist/browser/read-errors.js.map +1 -0
- package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts +10 -0
- package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts.map +1 -0
- package/dist/browser/sinks/browser/browser.browser.descriptor.js +23 -0
- package/dist/browser/sinks/browser/browser.browser.descriptor.js.map +1 -0
- package/dist/browser/sinks/browser/browser.impl.browser.d.ts +83 -0
- package/dist/browser/sinks/browser/browser.impl.browser.d.ts.map +1 -0
- package/dist/browser/sinks/browser/browser.impl.browser.js +247 -0
- package/dist/browser/sinks/browser/browser.impl.browser.js.map +1 -0
- package/dist/cli/failures.d.ts +29 -0
- package/dist/cli/failures.d.ts.map +1 -0
- package/dist/cli/failures.js +44 -0
- package/dist/cli/failures.js.map +1 -0
- package/dist/cli/flags.d.ts +24 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +56 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/log-line.d.ts +23 -0
- package/dist/cli/log-line.d.ts.map +1 -0
- package/dist/cli/log-line.js +39 -0
- package/dist/cli/log-line.js.map +1 -0
- package/dist/cli/logging.logs.descriptor.d.ts +9 -0
- package/dist/cli/logging.logs.descriptor.d.ts.map +1 -0
- package/dist/cli/logging.logs.descriptor.js +16 -0
- package/dist/cli/logging.logs.descriptor.js.map +1 -0
- package/dist/cli/logs.audit.cleanup.descriptor.d.ts +7 -0
- package/dist/cli/logs.audit.cleanup.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.audit.cleanup.descriptor.js +21 -0
- package/dist/cli/logs.audit.cleanup.descriptor.js.map +1 -0
- package/dist/cli/logs.audit.cleanup.impl.d.ts +14 -0
- package/dist/cli/logs.audit.cleanup.impl.d.ts.map +1 -0
- package/dist/cli/logs.audit.cleanup.impl.js +60 -0
- package/dist/cli/logs.audit.cleanup.impl.js.map +1 -0
- package/dist/cli/logs.audit.descriptor.d.ts +9 -0
- package/dist/cli/logs.audit.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.audit.descriptor.js +41 -0
- package/dist/cli/logs.audit.descriptor.js.map +1 -0
- package/dist/cli/logs.audit.group.descriptor.d.ts +7 -0
- package/dist/cli/logs.audit.group.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.audit.group.descriptor.js +15 -0
- package/dist/cli/logs.audit.group.descriptor.js.map +1 -0
- package/dist/cli/logs.audit.impl.d.ts +19 -0
- package/dist/cli/logs.audit.impl.d.ts.map +1 -0
- package/dist/cli/logs.audit.impl.js +83 -0
- package/dist/cli/logs.audit.impl.js.map +1 -0
- package/dist/cli/logs.descriptor.d.ts +1 -8
- package/dist/cli/logs.descriptor.d.ts.map +1 -1
- package/dist/cli/logs.descriptor.js +1 -15
- package/dist/cli/logs.descriptor.js.map +1 -1
- package/dist/cli/logs.list.impl.d.ts +4 -1
- package/dist/cli/logs.list.impl.d.ts.map +1 -1
- package/dist/cli/logs.list.impl.js +60 -63
- package/dist/cli/logs.list.impl.js.map +1 -1
- package/dist/cli/logs.rotate.descriptor.d.ts.map +1 -1
- package/dist/cli/logs.rotate.descriptor.js +7 -3
- package/dist/cli/logs.rotate.descriptor.js.map +1 -1
- package/dist/cli/logs.rotate.impl.d.ts +3 -1
- package/dist/cli/logs.rotate.impl.d.ts.map +1 -1
- package/dist/cli/logs.rotate.impl.js +72 -33
- package/dist/cli/logs.rotate.impl.js.map +1 -1
- package/dist/cli/logs.search.descriptor.d.ts.map +1 -1
- package/dist/cli/logs.search.descriptor.js +4 -0
- package/dist/cli/logs.search.descriptor.js.map +1 -1
- package/dist/cli/logs.search.impl.d.ts +3 -1
- package/dist/cli/logs.search.impl.d.ts.map +1 -1
- package/dist/cli/logs.search.impl.js +114 -108
- package/dist/cli/logs.search.impl.js.map +1 -1
- package/dist/cli/logs.tail.descriptor.d.ts.map +1 -1
- package/dist/cli/logs.tail.descriptor.js +2 -1
- package/dist/cli/logs.tail.descriptor.js.map +1 -1
- package/dist/cli/logs.tail.impl.d.ts +4 -2
- package/dist/cli/logs.tail.impl.d.ts.map +1 -1
- package/dist/cli/logs.tail.impl.js +84 -57
- package/dist/cli/logs.tail.impl.js.map +1 -1
- package/dist/cli/logs.view.impl.d.ts +2 -6
- package/dist/cli/logs.view.impl.d.ts.map +1 -1
- package/dist/cli/logs.view.impl.js +32 -50
- package/dist/cli/logs.view.impl.js.map +1 -1
- package/dist/cli/output.d.ts +29 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +29 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/{logging.cli.plugin.d.ts → cli/plugin.d.ts} +3 -3
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +45 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/cli/resolve-output.d.ts +25 -0
- package/dist/cli/resolve-output.d.ts.map +1 -0
- package/dist/cli/resolve-output.js +75 -0
- package/dist/cli/resolve-output.js.map +1 -0
- package/dist/cli/types.d.ts +13 -5
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +3 -3
- package/dist/client/logging-client.d.ts +31 -0
- package/dist/client/logging-client.d.ts.map +1 -0
- package/dist/client/logging-client.js +44 -0
- package/dist/client/logging-client.js.map +1 -0
- package/dist/config/file-rotation.d.ts +11 -0
- package/dist/config/file-rotation.d.ts.map +1 -0
- package/dist/config/file-rotation.js +18 -0
- package/dist/config/file-rotation.js.map +1 -0
- package/dist/config/load-config.d.ts +7 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/load-config.js +68 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/logging.config.descriptor.d.ts +350 -0
- package/dist/config/logging.config.descriptor.d.ts.map +1 -0
- package/dist/config/logging.config.descriptor.js +208 -0
- package/dist/config/logging.config.descriptor.js.map +1 -0
- package/dist/config/otel-service.d.ts +9 -0
- package/dist/config/otel-service.d.ts.map +1 -0
- package/dist/config/otel-service.js +18 -0
- package/dist/config/otel-service.js.map +1 -0
- package/dist/contexts/bootstrap.plugin.d.ts +3 -0
- package/dist/contexts/bootstrap.plugin.d.ts.map +1 -0
- package/dist/contexts/bootstrap.plugin.js +13 -0
- package/dist/contexts/bootstrap.plugin.js.map +1 -0
- package/dist/contexts/fallback-logger.d.ts +7 -2
- package/dist/contexts/fallback-logger.d.ts.map +1 -1
- package/dist/contexts/fallback-logger.js +73 -46
- package/dist/contexts/fallback-logger.js.map +1 -1
- package/dist/contexts/index.d.ts +2 -2
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +2 -3
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/logger.d.ts +38 -14
- package/dist/contexts/logger.d.ts.map +1 -1
- package/dist/contexts/logger.js +241 -62
- package/dist/contexts/logger.js.map +1 -1
- package/dist/core/attempt.d.ts +30 -0
- package/dist/core/attempt.d.ts.map +1 -0
- package/dist/core/attempt.js +44 -0
- package/dist/core/attempt.js.map +1 -0
- package/dist/core/emission-window.d.ts +34 -0
- package/dist/core/emission-window.d.ts.map +1 -0
- package/dist/core/emission-window.js +25 -0
- package/dist/core/emission-window.js.map +1 -0
- package/dist/core/endpoint.d.ts +54 -0
- package/dist/core/endpoint.d.ts.map +1 -0
- package/dist/core/endpoint.js +256 -0
- package/dist/core/endpoint.js.map +1 -0
- package/dist/core/entry-context.d.ts +106 -0
- package/dist/core/entry-context.d.ts.map +1 -0
- package/dist/core/entry-context.js +150 -0
- package/dist/core/entry-context.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +6 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +133 -67
- package/dist/core/logger.js.map +1 -1
- package/dist/core/namespace.d.ts +5 -2
- package/dist/core/namespace.d.ts.map +1 -1
- package/dist/core/namespace.js +15 -7
- package/dist/core/namespace.js.map +1 -1
- package/dist/core/normalize.d.ts +31 -0
- package/dist/core/normalize.d.ts.map +1 -0
- package/dist/core/normalize.js +67 -0
- package/dist/core/normalize.js.map +1 -0
- package/dist/core/otlp-headers.d.ts +53 -0
- package/dist/core/otlp-headers.d.ts.map +1 -0
- package/dist/core/otlp-headers.js +64 -0
- package/dist/core/otlp-headers.js.map +1 -0
- package/dist/core/otlp-partial-success.d.ts +48 -0
- package/dist/core/otlp-partial-success.d.ts.map +1 -0
- package/dist/core/otlp-partial-success.js +55 -0
- package/dist/core/otlp-partial-success.js.map +1 -0
- package/dist/core/outcome.d.ts +21 -0
- package/dist/core/outcome.d.ts.map +1 -0
- package/dist/core/outcome.js +24 -0
- package/dist/core/outcome.js.map +1 -0
- package/dist/core/output-resources.d.ts +15 -0
- package/dist/core/output-resources.d.ts.map +1 -0
- package/dist/core/output-resources.js +51 -0
- package/dist/core/output-resources.js.map +1 -0
- package/dist/core/parsing.d.ts.map +1 -1
- package/dist/core/parsing.js +13 -10
- package/dist/core/parsing.js.map +1 -1
- package/dist/core/redact.d.ts +161 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +581 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/root-identity.d.ts +13 -0
- package/dist/core/root-identity.d.ts.map +1 -0
- package/dist/core/root-identity.js +23 -0
- package/dist/core/root-identity.js.map +1 -0
- package/dist/core/types.d.ts +5 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/docs/cli.docs.descriptor.d.ts +4 -0
- package/dist/docs/cli.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/cli.docs.descriptor.js +97 -0
- package/dist/docs/cli.docs.descriptor.js.map +1 -0
- package/dist/docs/index.d.ts +7 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +7 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/docs/levels.docs.descriptor.d.ts +1 -1
- package/dist/docs/levels.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/levels.docs.descriptor.js +112 -246
- package/dist/docs/levels.docs.descriptor.js.map +1 -1
- package/dist/docs/logging.docs.descriptor.d.ts +4 -0
- package/dist/docs/logging.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/logging.docs.descriptor.js +105 -0
- package/dist/docs/logging.docs.descriptor.js.map +1 -0
- package/dist/docs/observability.docs.descriptor.d.ts +4 -0
- package/dist/docs/observability.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/observability.docs.descriptor.js +152 -0
- package/dist/docs/observability.docs.descriptor.js.map +1 -0
- package/dist/docs/structured.docs.descriptor.d.ts +1 -1
- package/dist/docs/structured.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/structured.docs.descriptor.js +111 -267
- package/dist/docs/structured.docs.descriptor.js.map +1 -1
- package/dist/docs/transports.docs.descriptor.d.ts +1 -1
- package/dist/docs/transports.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/transports.docs.descriptor.js +129 -344
- package/dist/docs/transports.docs.descriptor.js.map +1 -1
- package/dist/formatters/json/json.impl.d.ts +1 -1
- package/dist/formatters/json/json.impl.d.ts.map +1 -1
- package/dist/formatters/json/json.impl.js +3 -2
- package/dist/formatters/json/json.impl.js.map +1 -1
- package/dist/formatters/json5/json5.impl.d.ts +1 -1
- package/dist/formatters/json5/json5.impl.d.ts.map +1 -1
- package/dist/formatters/json5/json5.impl.js +3 -2
- package/dist/formatters/json5/json5.impl.js.map +1 -1
- package/dist/formatters/jsonl/jsonl.impl.d.ts +1 -1
- package/dist/formatters/jsonl/jsonl.impl.d.ts.map +1 -1
- package/dist/formatters/jsonl/jsonl.impl.js +3 -2
- package/dist/formatters/jsonl/jsonl.impl.js.map +1 -1
- package/dist/formatters/pretty/{pretty.impl.cli.d.ts → pretty.impl.consumer.d.ts} +1 -1
- package/dist/formatters/pretty/pretty.impl.consumer.d.ts.map +1 -0
- package/dist/formatters/pretty/{pretty.impl.cli.js → pretty.impl.consumer.js} +1 -1
- package/dist/formatters/pretty/pretty.impl.consumer.js.map +1 -0
- package/dist/host-files/file-audit.base.d.ts +39 -0
- package/dist/host-files/file-audit.base.d.ts.map +1 -0
- package/dist/host-files/file-audit.base.js +255 -0
- package/dist/host-files/file-audit.base.js.map +1 -0
- package/dist/host-files/file-output.base.d.ts +84 -0
- package/dist/host-files/file-output.base.d.ts.map +1 -0
- package/dist/host-files/file-output.base.js +401 -0
- package/dist/host-files/file-output.base.js.map +1 -0
- package/dist/host-files/file-output.factory.base.d.ts +31 -0
- package/dist/host-files/file-output.factory.base.d.ts.map +1 -0
- package/dist/host-files/file-output.factory.base.js +82 -0
- package/dist/host-files/file-output.factory.base.js.map +1 -0
- package/dist/host-files/file-output.read.base.d.ts +7 -0
- package/dist/host-files/file-output.read.base.d.ts.map +1 -0
- package/dist/host-files/file-output.read.base.js +229 -0
- package/dist/host-files/file-output.read.base.js.map +1 -0
- package/dist/host-files/file-sink.base.d.ts +22 -0
- package/dist/host-files/file-sink.base.d.ts.map +1 -0
- package/dist/host-files/file-sink.base.js +56 -0
- package/dist/host-files/file-sink.base.js.map +1 -0
- package/dist/host-files/host-file-logging.plugin.d.ts +11 -0
- package/dist/host-files/host-file-logging.plugin.d.ts.map +1 -0
- package/dist/host-files/host-file-logging.plugin.js +63 -0
- package/dist/host-files/host-file-logging.plugin.js.map +1 -0
- package/dist/host-files/index.d.ts +19 -0
- package/dist/host-files/index.d.ts.map +1 -0
- package/dist/host-files/index.js +18 -0
- package/dist/host-files/index.js.map +1 -0
- package/dist/host-files/rotate-appended-file.base.d.ts +35 -0
- package/dist/host-files/rotate-appended-file.base.d.ts.map +1 -0
- package/dist/host-files/rotate-appended-file.base.js +104 -0
- package/dist/host-files/rotate-appended-file.base.js.map +1 -0
- package/dist/host.d.ts +38 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +39 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +24 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -23
- package/dist/index.js.map +1 -1
- package/dist/kinds/audit.d.ts +40 -8
- package/dist/kinds/audit.d.ts.map +1 -1
- package/dist/kinds/audit.js +82 -20
- package/dist/kinds/audit.js.map +1 -1
- package/dist/kinds/contexts.d.ts +4 -3
- package/dist/kinds/contexts.d.ts.map +1 -1
- package/dist/kinds/file-output.d.ts +56 -0
- package/dist/kinds/file-output.d.ts.map +1 -0
- package/dist/kinds/file-output.js +11 -0
- package/dist/kinds/file-output.js.map +1 -0
- package/dist/kinds/formatter.d.ts +4 -6
- package/dist/kinds/formatter.d.ts.map +1 -1
- package/dist/kinds/formatter.js +4 -3
- package/dist/kinds/formatter.js.map +1 -1
- package/dist/kinds/index.d.ts +3 -3
- package/dist/kinds/index.d.ts.map +1 -1
- package/dist/kinds/index.js +3 -3
- package/dist/kinds/index.js.map +1 -1
- package/dist/kinds/logger.d.ts +4 -4
- package/dist/kinds/logger.d.ts.map +1 -1
- package/dist/kinds/logger.impl.d.ts +40 -13
- package/dist/kinds/logger.impl.d.ts.map +1 -1
- package/dist/kinds/logger.impl.js +179 -87
- package/dist/kinds/logger.impl.js.map +1 -1
- package/dist/kinds/logger.js +21 -11
- package/dist/kinds/logger.js.map +1 -1
- package/dist/kinds/logger.utils.d.ts +31 -4
- package/dist/kinds/logger.utils.d.ts.map +1 -1
- package/dist/kinds/logger.utils.js +58 -18
- package/dist/kinds/logger.utils.js.map +1 -1
- package/dist/kinds/output.d.ts +5 -11
- package/dist/kinds/output.d.ts.map +1 -1
- package/dist/kinds/output.impl.d.ts +9 -7
- package/dist/kinds/output.impl.d.ts.map +1 -1
- package/dist/kinds/output.impl.js +51 -29
- package/dist/kinds/output.impl.js.map +1 -1
- package/dist/kinds/output.js +10 -5
- package/dist/kinds/output.js.map +1 -1
- package/dist/kinds/output.types.d.ts +26 -7
- package/dist/kinds/output.types.d.ts.map +1 -1
- package/dist/kinds/sink.d.ts +6 -5
- package/dist/kinds/sink.d.ts.map +1 -1
- package/dist/kinds/sink.js +14 -7
- package/dist/kinds/sink.js.map +1 -1
- package/dist/logger.context.descriptor.d.ts +15 -1
- package/dist/logger.context.descriptor.d.ts.map +1 -1
- package/dist/logger.context.descriptor.js +1 -1
- package/dist/logger.context.descriptor.js.map +1 -1
- package/dist/logging.consumer.plugin.d.ts +4 -0
- package/dist/logging.consumer.plugin.d.ts.map +1 -0
- package/dist/logging.consumer.plugin.js +17 -0
- package/dist/logging.consumer.plugin.js.map +1 -0
- package/dist/logging.plugin.d.ts +3 -3
- package/dist/logging.plugin.d.ts.map +1 -1
- package/dist/logging.plugin.js +81 -42
- package/dist/logging.plugin.js.map +1 -1
- package/dist/observability/building-host.d.ts +11 -0
- package/dist/observability/building-host.d.ts.map +1 -0
- package/dist/observability/building-host.js +11 -0
- package/dist/observability/building-host.js.map +1 -0
- package/dist/observability/config.d.ts +36 -0
- package/dist/observability/config.d.ts.map +1 -0
- package/dist/observability/config.js +46 -0
- package/dist/observability/config.js.map +1 -0
- package/dist/observability/http/instrumented-fetch.d.ts +19 -0
- package/dist/observability/http/instrumented-fetch.d.ts.map +1 -0
- package/dist/observability/http/instrumented-fetch.js +175 -0
- package/dist/observability/http/instrumented-fetch.js.map +1 -0
- package/dist/observability/index.d.ts +8 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +10 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/lifecycle.d.ts +18 -0
- package/dist/observability/lifecycle.d.ts.map +1 -0
- package/dist/observability/lifecycle.js +44 -0
- package/dist/observability/lifecycle.js.map +1 -0
- package/dist/observability/observability/error-tracker.d.ts +43 -0
- package/dist/observability/observability/error-tracker.d.ts.map +1 -0
- package/dist/observability/observability/error-tracker.js +130 -0
- package/dist/observability/observability/error-tracker.js.map +1 -0
- package/dist/observability/should-keep-log.d.ts +8 -0
- package/dist/observability/should-keep-log.d.ts.map +1 -0
- package/dist/observability/should-keep-log.js +10 -0
- package/dist/observability/should-keep-log.js.map +1 -0
- package/dist/observability/telemetry/otel.d.ts +47 -0
- package/dist/observability/telemetry/otel.d.ts.map +1 -0
- package/dist/observability/telemetry/otel.js +542 -0
- package/dist/observability/telemetry/otel.js.map +1 -0
- package/dist/observability/telemetry/partial-success.d.ts +35 -0
- package/dist/observability/telemetry/partial-success.d.ts.map +1 -0
- package/dist/observability/telemetry/partial-success.js +94 -0
- package/dist/observability/telemetry/partial-success.js.map +1 -0
- package/dist/observability/telemetry/sdk-lifecycle.d.ts +37 -0
- package/dist/observability/telemetry/sdk-lifecycle.d.ts.map +1 -0
- package/dist/observability/telemetry/sdk-lifecycle.js +132 -0
- package/dist/observability/telemetry/sdk-lifecycle.js.map +1 -0
- package/dist/observability/telemetry/telemetry-root.d.ts +78 -0
- package/dist/observability/telemetry/telemetry-root.d.ts.map +1 -0
- package/dist/observability/telemetry/telemetry-root.js +79 -0
- package/dist/observability/telemetry/telemetry-root.js.map +1 -0
- package/dist/observability/telemetry-instrumentation.d.ts +76 -0
- package/dist/observability/telemetry-instrumentation.d.ts.map +1 -0
- package/dist/observability/telemetry-instrumentation.js +69 -0
- package/dist/observability/telemetry-instrumentation.js.map +1 -0
- package/dist/otel/index.d.ts +9 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +12 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/otel/logging-otel.plugin.d.ts +11 -0
- package/dist/otel/logging-otel.plugin.d.ts.map +1 -0
- package/dist/otel/logging-otel.plugin.js +27 -0
- package/dist/otel/logging-otel.plugin.js.map +1 -0
- package/dist/otel/sinks/otel/otel.descriptor.d.ts +10 -0
- package/dist/otel/sinks/otel/otel.descriptor.d.ts.map +1 -0
- package/dist/otel/sinks/otel/otel.descriptor.js +23 -0
- package/dist/otel/sinks/otel/otel.descriptor.js.map +1 -0
- package/dist/otel/sinks/otel/otel.impl.d.ts +47 -0
- package/dist/otel/sinks/otel/otel.impl.d.ts.map +1 -0
- package/dist/otel/sinks/otel/otel.impl.js +202 -0
- package/dist/otel/sinks/otel/otel.impl.js.map +1 -0
- package/dist/otel/sinks/otel/otlp-log-exporter.d.ts +76 -0
- package/dist/otel/sinks/otel/otlp-log-exporter.d.ts.map +1 -0
- package/dist/otel/sinks/otel/otlp-log-exporter.js +178 -0
- package/dist/otel/sinks/otel/otlp-log-exporter.js.map +1 -0
- package/dist/outputs/file/file.outputs.descriptor.d.ts +10 -0
- package/dist/outputs/file/file.outputs.descriptor.d.ts.map +1 -0
- package/dist/outputs/file/file.outputs.descriptor.js +32 -0
- package/dist/outputs/file/file.outputs.descriptor.js.map +1 -0
- package/dist/outputs/remote/remote.descriptor.d.ts +1 -1
- package/dist/outputs/remote/remote.descriptor.d.ts.map +1 -1
- package/dist/outputs/remote/remote.descriptor.js +1 -2
- package/dist/outputs/remote/remote.descriptor.js.map +1 -1
- package/dist/outputs/remote/remote.factory.d.ts +9 -0
- package/dist/outputs/remote/remote.factory.d.ts.map +1 -0
- package/dist/outputs/remote/remote.factory.js +16 -0
- package/dist/outputs/remote/remote.factory.js.map +1 -0
- package/dist/outputs/remote/remote.impl.d.ts +40 -4
- package/dist/outputs/remote/remote.impl.d.ts.map +1 -1
- package/dist/outputs/remote/remote.impl.js +224 -99
- package/dist/outputs/remote/remote.impl.js.map +1 -1
- package/dist/outputs.context.descriptor.d.ts +15 -1
- package/dist/outputs.context.descriptor.d.ts.map +1 -1
- package/dist/outputs.context.descriptor.js +1 -1
- package/dist/outputs.context.descriptor.js.map +1 -1
- package/dist/outputs.context.impl.d.ts +2 -1
- package/dist/outputs.context.impl.d.ts.map +1 -1
- package/dist/outputs.context.impl.js +17 -9
- package/dist/outputs.context.impl.js.map +1 -1
- package/dist/paths.d.ts +24 -3
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +63 -3
- package/dist/paths.js.map +1 -1
- package/dist/rotation/rotate-appended-file.d.ts +15 -0
- package/dist/rotation/rotate-appended-file.d.ts.map +1 -0
- package/dist/rotation/rotate-appended-file.js +20 -0
- package/dist/rotation/rotate-appended-file.js.map +1 -0
- package/dist/rotation/rotation-policy.d.ts +19 -0
- package/dist/rotation/rotation-policy.d.ts.map +1 -0
- package/dist/rotation/rotation-policy.js +37 -0
- package/dist/rotation/rotation-policy.js.map +1 -0
- package/dist/schemas/audit.d.ts +25 -7
- package/dist/schemas/audit.d.ts.map +1 -1
- package/dist/schemas/audit.js +10 -4
- package/dist/schemas/audit.js.map +1 -1
- package/dist/schemas/entry.d.ts +11 -5
- package/dist/schemas/entry.d.ts.map +1 -1
- package/dist/schemas/entry.js +3 -2
- package/dist/schemas/entry.js.map +1 -1
- package/dist/schemas/file-host.d.ts +86 -0
- package/dist/schemas/file-host.d.ts.map +1 -0
- package/dist/schemas/file-host.js +10 -0
- package/dist/schemas/file-host.js.map +1 -0
- package/dist/schemas/formatter.d.ts +11 -1
- package/dist/schemas/formatter.d.ts.map +1 -1
- package/dist/schemas/formatter.js +1 -1
- package/dist/schemas/formatter.js.map +1 -1
- package/dist/schemas/index.d.ts +3 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +3 -2
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/logger.d.ts +16 -1
- package/dist/schemas/logger.d.ts.map +1 -1
- package/dist/schemas/logger.js +6 -1
- package/dist/schemas/logger.js.map +1 -1
- package/dist/schemas/output-defaults.d.ts +44 -0
- package/dist/schemas/output-defaults.d.ts.map +1 -0
- package/dist/schemas/output-defaults.js +53 -0
- package/dist/schemas/output-defaults.js.map +1 -0
- package/dist/schemas/output.d.ts +25 -1
- package/dist/schemas/output.d.ts.map +1 -1
- package/dist/schemas/output.js +29 -2
- package/dist/schemas/output.js.map +1 -1
- package/dist/schemas/sink.d.ts +32 -1
- package/dist/schemas/sink.d.ts.map +1 -1
- package/dist/schemas/sink.js +17 -1
- package/dist/schemas/sink.js.map +1 -1
- package/dist/sinks/buffer/buffer.descriptor.js +1 -1
- package/dist/sinks/buffer/buffer.descriptor.js.map +1 -1
- package/dist/sinks/buffer/{buffer.impl.cli.d.ts → buffer.impl.d.ts} +3 -3
- package/dist/sinks/buffer/buffer.impl.d.ts.map +1 -0
- package/dist/sinks/buffer/buffer.impl.js +42 -0
- package/dist/sinks/buffer/buffer.impl.js.map +1 -0
- package/dist/sinks/console/console.descriptor.js +1 -1
- package/dist/sinks/console/console.descriptor.js.map +1 -1
- package/dist/sinks/console/console.impl.browser.d.ts +4 -3
- package/dist/sinks/console/console.impl.browser.d.ts.map +1 -1
- package/dist/sinks/console/console.impl.browser.js +11 -14
- package/dist/sinks/console/console.impl.browser.js.map +1 -1
- package/dist/sinks/console/{console.impl.cli.d.ts → console.impl.consumer.d.ts} +5 -4
- package/dist/sinks/console/console.impl.consumer.d.ts.map +1 -0
- package/dist/sinks/console/{console.impl.cli.js → console.impl.consumer.js} +16 -8
- package/dist/sinks/console/console.impl.consumer.js.map +1 -0
- package/dist/sinks/file/file.sinks.descriptor.d.ts +10 -0
- package/dist/sinks/file/file.sinks.descriptor.d.ts.map +1 -0
- package/dist/sinks/file/file.sinks.descriptor.js +23 -0
- package/dist/sinks/file/file.sinks.descriptor.js.map +1 -0
- package/dist/sinks/index.d.ts +1 -1
- package/dist/sinks/index.d.ts.map +1 -1
- package/dist/sinks/memory/memory.descriptor.d.ts +1 -1
- package/dist/sinks/memory/memory.descriptor.js +2 -2
- package/dist/sinks/memory/memory.descriptor.js.map +1 -1
- package/dist/sinks/memory/memory.impl.d.ts +5 -11
- package/dist/sinks/memory/memory.impl.d.ts.map +1 -1
- package/dist/sinks/memory/memory.impl.js +46 -21
- package/dist/sinks/memory/memory.impl.js.map +1 -1
- package/dist/sinks/stdout/stdout.descriptor.js +1 -1
- package/dist/sinks/stdout/stdout.descriptor.js.map +1 -1
- package/dist/sinks/stdout/{stdout.impl.cli.d.ts → stdout.impl.d.ts} +5 -4
- package/dist/sinks/stdout/stdout.impl.d.ts.map +1 -0
- package/dist/sinks/stdout/stdout.impl.js +29 -0
- package/dist/sinks/stdout/stdout.impl.js.map +1 -0
- package/dist/sinks.context.descriptor.d.ts +15 -1
- package/dist/sinks.context.descriptor.d.ts.map +1 -1
- package/dist/sinks.context.descriptor.js +1 -1
- package/dist/sinks.context.descriptor.js.map +1 -1
- package/dist/sinks.context.impl.d.ts +2 -1
- package/dist/sinks.context.impl.d.ts.map +1 -1
- package/dist/sinks.context.impl.js +17 -9
- package/dist/sinks.context.impl.js.map +1 -1
- package/dist/stdout-capture/mcp-frame.d.ts +23 -0
- package/dist/stdout-capture/mcp-frame.d.ts.map +1 -0
- package/dist/stdout-capture/mcp-frame.js +80 -0
- package/dist/stdout-capture/mcp-frame.js.map +1 -0
- package/dist/stdout-capture/stdout-capture.descriptor.d.ts +10 -0
- package/dist/stdout-capture/stdout-capture.descriptor.d.ts.map +1 -0
- package/dist/stdout-capture/stdout-capture.descriptor.js +17 -0
- package/dist/stdout-capture/stdout-capture.descriptor.js.map +1 -0
- package/dist/stdout-capture/stdout-capture.impl.d.ts +19 -0
- package/dist/stdout-capture/stdout-capture.impl.d.ts.map +1 -0
- package/dist/stdout-capture/stdout-capture.impl.js +49 -0
- package/dist/stdout-capture/stdout-capture.impl.js.map +1 -0
- package/dist/stdout-capture/stdout-capture.lease.d.ts +45 -0
- package/dist/stdout-capture/stdout-capture.lease.d.ts.map +1 -0
- package/dist/stdout-capture/stdout-capture.lease.js +338 -0
- package/dist/stdout-capture/stdout-capture.lease.js.map +1 -0
- package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts +4 -0
- package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts.map +1 -0
- package/dist/stdout-capture/stdout-capture.output.descriptor.js +18 -0
- package/dist/stdout-capture/stdout-capture.output.descriptor.js.map +1 -0
- package/dist/stdout-capture/stdout-capture.state.d.ts +29 -0
- package/dist/stdout-capture/stdout-capture.state.d.ts.map +1 -0
- package/dist/stdout-capture/stdout-capture.state.js +80 -0
- package/dist/stdout-capture/stdout-capture.state.js.map +1 -0
- package/dist/stdout-capture.d.ts +24 -0
- package/dist/stdout-capture.d.ts.map +1 -0
- package/dist/stdout-capture.js +28 -0
- package/dist/stdout-capture.js.map +1 -0
- package/dist/stdout-capture.plugin.d.ts +7 -0
- package/dist/stdout-capture.plugin.d.ts.map +1 -0
- package/dist/stdout-capture.plugin.js +28 -0
- package/dist/stdout-capture.plugin.js.map +1 -0
- package/package.json +308 -224
- package/dist/contexts/audit.d.ts +0 -34
- package/dist/contexts/audit.d.ts.map +0 -1
- package/dist/contexts/audit.js +0 -13
- package/dist/contexts/audit.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -7
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -8
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +0 -1
- package/dist/formatters/pretty/pretty.impl.cli.js.map +0 -1
- package/dist/kinds/logger.contracts.d.ts +0 -16
- package/dist/kinds/logger.contracts.d.ts.map +0 -1
- package/dist/kinds/logger.contracts.js +0 -9
- package/dist/kinds/logger.contracts.js.map +0 -1
- package/dist/kinds/output.contracts.d.ts +0 -50
- package/dist/kinds/output.contracts.d.ts.map +0 -1
- package/dist/kinds/output.contracts.js +0 -10
- package/dist/kinds/output.contracts.js.map +0 -1
- package/dist/logging.cli.plugin.d.ts.map +0 -1
- package/dist/logging.cli.plugin.js +0 -39
- package/dist/logging.cli.plugin.js.map +0 -1
- package/dist/outputs/index.d.ts +0 -7
- package/dist/outputs/index.d.ts.map +0 -1
- package/dist/outputs/index.js +0 -8
- package/dist/outputs/index.js.map +0 -1
- package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +0 -1
- package/dist/sinks/buffer/buffer.impl.cli.js +0 -34
- package/dist/sinks/buffer/buffer.impl.cli.js.map +0 -1
- package/dist/sinks/console/console.impl.cli.d.ts.map +0 -1
- package/dist/sinks/console/console.impl.cli.js.map +0 -1
- package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +0 -1
- package/dist/sinks/stdout/stdout.impl.cli.js +0 -21
- package/dist/sinks/stdout/stdout.impl.cli.js.map +0 -1
- package/src/audit/audit.descriptor.ts +0 -45
- package/src/audit/audit.storage.schema.ts +0 -57
- package/src/audit/index.ts +0 -8
- package/src/cli/logs.descriptor.ts +0 -19
- package/src/cli/logs.list.descriptor.ts +0 -28
- package/src/cli/logs.list.impl.ts +0 -93
- package/src/cli/logs.rotate.descriptor.ts +0 -40
- package/src/cli/logs.rotate.impl.ts +0 -61
- package/src/cli/logs.search.descriptor.ts +0 -61
- package/src/cli/logs.search.impl.ts +0 -173
- package/src/cli/logs.tail.descriptor.ts +0 -49
- package/src/cli/logs.tail.impl.ts +0 -105
- package/src/cli/logs.view.descriptor.ts +0 -57
- package/src/cli/logs.view.impl.ts +0 -108
- package/src/cli/types.ts +0 -59
- package/src/contexts/audit.ts +0 -36
- package/src/contexts/fallback-logger.ts +0 -80
- package/src/contexts/index.ts +0 -23
- package/src/contexts/logger.ts +0 -119
- package/src/core/index.ts +0 -32
- package/src/core/logger.ts +0 -150
- package/src/core/namespace.ts +0 -195
- package/src/core/parsing.ts +0 -21
- package/src/core/types.ts +0 -82
- package/src/docs/levels.docs.descriptor.ts +0 -344
- package/src/docs/structured.docs.descriptor.ts +0 -444
- package/src/docs/transports.docs.descriptor.ts +0 -428
- package/src/formatters/index.ts +0 -6
- package/src/formatters/json/json.formatters.descriptor.ts +0 -25
- package/src/formatters/json/json.impl.ts +0 -41
- package/src/formatters/json5/json5.descriptor.ts +0 -25
- package/src/formatters/json5/json5.impl.ts +0 -43
- package/src/formatters/jsonl/jsonl.descriptor.ts +0 -26
- package/src/formatters/jsonl/jsonl.impl.ts +0 -39
- package/src/formatters/pretty/pretty.descriptor.ts +0 -26
- package/src/formatters/pretty/pretty.impl.cli.ts +0 -101
- package/src/index.ts +0 -190
- package/src/kinds/audit.ts +0 -169
- package/src/kinds/contexts.ts +0 -22
- package/src/kinds/formatter.ts +0 -117
- package/src/kinds/index.ts +0 -25
- package/src/kinds/logger.contracts.ts +0 -17
- package/src/kinds/logger.impl.ts +0 -206
- package/src/kinds/logger.ts +0 -46
- package/src/kinds/logger.utils.ts +0 -91
- package/src/kinds/output.contracts.ts +0 -54
- package/src/kinds/output.impl.ts +0 -118
- package/src/kinds/output.ts +0 -59
- package/src/kinds/output.types.ts +0 -105
- package/src/kinds/sink.ts +0 -100
- package/src/logger.context.descriptor.ts +0 -13
- package/src/logging.cli.plugin.ts +0 -43
- package/src/logging.plugin.ts +0 -93
- package/src/outputs/index.ts +0 -6
- package/src/outputs/remote/remote.descriptor.ts +0 -27
- package/src/outputs/remote/remote.impl.ts +0 -218
- package/src/outputs.context.descriptor.ts +0 -10
- package/src/outputs.context.impl.ts +0 -30
- package/src/paths.ts +0 -10
- package/src/schemas/audit.ts +0 -98
- package/src/schemas/entry.ts +0 -88
- package/src/schemas/formatter.ts +0 -37
- package/src/schemas/index.ts +0 -80
- package/src/schemas/logger.ts +0 -38
- package/src/schemas/output.ts +0 -62
- package/src/schemas/sink.ts +0 -39
- package/src/sinks/buffer/buffer.descriptor.ts +0 -13
- package/src/sinks/buffer/buffer.impl.cli.ts +0 -49
- package/src/sinks/console/console.descriptor.ts +0 -20
- package/src/sinks/console/console.impl.browser.ts +0 -69
- package/src/sinks/console/console.impl.cli.ts +0 -71
- package/src/sinks/index.ts +0 -8
- package/src/sinks/memory/memory.descriptor.ts +0 -20
- package/src/sinks/memory/memory.impl.ts +0 -119
- package/src/sinks/stdout/stdout.descriptor.ts +0 -13
- package/src/sinks/stdout/stdout.impl.cli.ts +0 -27
- package/src/sinks.context.descriptor.ts +0 -10
- package/src/sinks.context.impl.ts +0 -30
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging-owned redaction and structured error schemas.
|
|
3
|
+
*
|
|
4
|
+
* Raw values enter the published schemas. Redaction uses keys and secret()
|
|
5
|
+
* values; free text remains data. Parsing yields a detached snapshot.
|
|
6
|
+
*
|
|
7
|
+
* One rule governs every value read off an Error or a context: each field is
|
|
8
|
+
* read exactly once, inside a guard. A string is kept (and passes the same
|
|
9
|
+
* key and `secret()` redaction as everything else); any other value goes
|
|
10
|
+
* through the one redaction walk; a value that cannot be read is never
|
|
11
|
+
* carried: an Error is then described value-free, and a context refuses with
|
|
12
|
+
* a typed `ZodError` issue holding a fixed message and the path.
|
|
13
|
+
*/
|
|
14
|
+
import * as z from 'zod/v4';
|
|
15
|
+
import { attempt } from "./outcome.js";
|
|
16
|
+
export const REDACTED = '[REDACTED]';
|
|
17
|
+
/**
|
|
18
|
+
* Whole keys that hold a credential. A bare `tokens` is listed on purpose and
|
|
19
|
+
* stays secret even when it holds a count: a key carries no type, so the safe
|
|
20
|
+
* reading wins; a count says so in its name (`maxTokens`, `inputTokens`,
|
|
21
|
+
* `tokenCount` stay readable).
|
|
22
|
+
*/
|
|
23
|
+
const SECRET_KEY_EXACT = new Set([
|
|
24
|
+
'authorization', 'proxyauthorization', 'cookie', 'cookies', 'setcookie', 'bearer', 'auth', 'authheader',
|
|
25
|
+
'credentialblob', 'tokens', 'secrets', 'jwt', 'sessionid', 'dsn', 'key'
|
|
26
|
+
]);
|
|
27
|
+
// Plural forms are listed explicitly; a bare `tokens` suffix is not, so token
|
|
28
|
+
// counts (`maxTokens`, `inputTokens`) stay readable. Named key material
|
|
29
|
+
// (`sshKey`, `signingKey`, `encryptionKey`, `masterKey`, `privKey`) and one-time
|
|
30
|
+
// codes (`mfaCode`, `pinCode`) are secret; a key that names a key without
|
|
31
|
+
// holding one (`keyId`, `publicKey`, `primaryKey`, `cacheKey`) is not.
|
|
32
|
+
const SECRET_KEY_SUFFIXES = [
|
|
33
|
+
'token', 'secret', 'secrets', 'password', 'passwords', 'passwd', 'passphrase', 'apikey', 'apikeys',
|
|
34
|
+
'privatekey', 'privatekeys', 'privkey', 'privkeys', 'accesskey', 'accesskeys', 'secretkey', 'secretkeys',
|
|
35
|
+
'sshkey', 'sshkeys', 'signingkey', 'signingkeys', 'encryptionkey', 'encryptionkeys', 'masterkey', 'masterkeys',
|
|
36
|
+
'mfacode', 'mfacodes', 'pincode', 'pincodes', 'passcode', 'passcodes', 'credential', 'credentials',
|
|
37
|
+
'signature', 'signatures', 'jwt', 'accesstokens', 'refreshtokens', 'idtokens', 'authtokens', 'apitokens',
|
|
38
|
+
'bearertokens', 'sessiontokens', 'connectionstring', 'databaseurl'
|
|
39
|
+
];
|
|
40
|
+
// Secret material named mid-key (`privateKeyPem`, `apiKeyId`, `passwordHash`).
|
|
41
|
+
const SECRET_KEY_INFIXES = ['password', 'privatekey', 'apikey', 'secretkey', 'clientsecret', 'accesstoken', 'refreshtoken'];
|
|
42
|
+
/**
|
|
43
|
+
* The credential words: a key (or query parameter name) whose last word is one
|
|
44
|
+
* of these names a credential. Matched as a whole word, never inside one, so
|
|
45
|
+
* `pwd`, `pass`, `pin`, `otp`, `totp`, `dbPwd` and `db_pass` are secret while `passage`,
|
|
46
|
+
* `bypass`, `spin` and `passCount` are not. A bare `key` is secret as the whole key only (the
|
|
47
|
+
* exact list), so `monkey`, `keyId`, `cacheKey` and `credentialKey` (which name
|
|
48
|
+
* a key, not hold one) stay readable. The endpoint scrubber's credential query
|
|
49
|
+
* parameters use the same rule (`isSecretKey`), so the two never disagree.
|
|
50
|
+
*/
|
|
51
|
+
export const CREDENTIAL_KEY_WORDS = [
|
|
52
|
+
'token', 'secret', 'password', 'passwd', 'pass', 'pwd', 'passphrase', 'pin', 'otp', 'totp', 'credential', 'signature', 'jwt', 'bearer'
|
|
53
|
+
];
|
|
54
|
+
const CREDENTIAL_WORDS = new Set(CREDENTIAL_KEY_WORDS);
|
|
55
|
+
/** A key's words: split at separators and at a lower-to-upper case change (`sshKey` -> `ssh`, `key`), lowercased. */
|
|
56
|
+
function keyWords(key) {
|
|
57
|
+
return key.replace(/([a-z0-9])([A-Z])/g, '$1 $2').toLowerCase().split(/[^a-z0-9]+/).filter((word) => word !== '');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A string a caller hands in, refused as a `ZodError` issue for any other value.
|
|
61
|
+
* Zod's own `z.string()` describes a refused value's type with `Array.isArray`,
|
|
62
|
+
* which throws a `TypeError` for a revoked Proxy; this check reads only `typeof`.
|
|
63
|
+
*/
|
|
64
|
+
export const CallerStringSchema = z.custom((value) => typeof value === 'string', { message: 'Expected a string.' });
|
|
65
|
+
/**
|
|
66
|
+
* Case- and separator-insensitive matching; token counts stay readable. A key
|
|
67
|
+
* is secret when its normalized form is a listed name, ends with a listed
|
|
68
|
+
* suffix or holds a listed infix (a bare `key` is listed), or when its last
|
|
69
|
+
* word is a credential word ({@link CREDENTIAL_KEY_WORDS}).
|
|
70
|
+
*/
|
|
71
|
+
export function isSecretKey(key) {
|
|
72
|
+
// Total for any value a caller hands at runtime: only a string is a key (read by `typeof`, which runs no trap), anything else names no secret.
|
|
73
|
+
if (!CallerStringSchema.safeParse(key).success)
|
|
74
|
+
return false;
|
|
75
|
+
const normalized = key.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
76
|
+
const last = keyWords(key).at(-1);
|
|
77
|
+
return SECRET_KEY_EXACT.has(normalized) ||
|
|
78
|
+
SECRET_KEY_SUFFIXES.some((suffix) => normalized.endsWith(suffix)) ||
|
|
79
|
+
SECRET_KEY_INFIXES.some((infix) => normalized.includes(infix)) ||
|
|
80
|
+
(last !== undefined && CREDENTIAL_WORDS.has(last));
|
|
81
|
+
}
|
|
82
|
+
const SECRET_BRAND = Symbol.for('vibes.logging.secret-value');
|
|
83
|
+
/** A secret that redacts in serialization; reveal() is the explicit escape. */
|
|
84
|
+
export class SecretValue {
|
|
85
|
+
[SECRET_BRAND] = true;
|
|
86
|
+
#value;
|
|
87
|
+
constructor(value) { this.#value = value; }
|
|
88
|
+
reveal() { return this.#value; }
|
|
89
|
+
toJSON() { return REDACTED; }
|
|
90
|
+
toString() { return REDACTED; }
|
|
91
|
+
[Symbol.for('nodejs.util.inspect.custom')]() { return REDACTED; }
|
|
92
|
+
}
|
|
93
|
+
export function secret(value) {
|
|
94
|
+
return new SecretValue(value);
|
|
95
|
+
}
|
|
96
|
+
const ObjectValueSchema = z.custom((value) => typeof value === 'object' && value !== null);
|
|
97
|
+
/**
|
|
98
|
+
* Validates the branded secret protocol without copying the secret instance.
|
|
99
|
+
* Total: a value whose protocol reads throw (a trap, a getter, a revoked
|
|
100
|
+
* Proxy) is not a secret value and refuses as an issue, never rethrowing.
|
|
101
|
+
*/
|
|
102
|
+
export const SecretValueSchema = z.custom((value) => {
|
|
103
|
+
const object = ObjectValueSchema.safeParse(value);
|
|
104
|
+
if (!object.success)
|
|
105
|
+
return false;
|
|
106
|
+
const candidate = object.data;
|
|
107
|
+
const branded = attempt(() => hasSecretProtocol(candidate));
|
|
108
|
+
return !branded.failed && branded.value;
|
|
109
|
+
});
|
|
110
|
+
/** The branded secret protocol's reads; any of them may throw (a trap, a getter, a revoked Proxy), so the schema runs this inside `attempt`. */
|
|
111
|
+
function hasSecretProtocol(candidate) {
|
|
112
|
+
return SECRET_BRAND in candidate && candidate[SECRET_BRAND] === true &&
|
|
113
|
+
'reveal' in candidate && typeof candidate.reveal === 'function' &&
|
|
114
|
+
'toJSON' in candidate && typeof candidate.toJSON === 'function' &&
|
|
115
|
+
'toString' in candidate && typeof candidate.toString === 'function';
|
|
116
|
+
}
|
|
117
|
+
export const PlainLogRecordSchema = z.custom((value) => {
|
|
118
|
+
const object = ObjectValueSchema.safeParse(value);
|
|
119
|
+
if (!object.success || Array.isArray(object.data))
|
|
120
|
+
return false;
|
|
121
|
+
const prototype = Object.getPrototypeOf(object.data);
|
|
122
|
+
return prototype === Object.prototype || prototype === null;
|
|
123
|
+
});
|
|
124
|
+
const MAX_DEPTH = 8;
|
|
125
|
+
const MAX_CAUSE_DEPTH = 5;
|
|
126
|
+
/**
|
|
127
|
+
* The breadth cap of the walk: an array keeps its first `MAX_WALK_BREADTH`
|
|
128
|
+
* items and an object its first `MAX_WALK_BREADTH` own enumerable keys (an
|
|
129
|
+
* AggregateError its first `MAX_WALK_BREADTH` members). What is past the cap
|
|
130
|
+
* is not read; it is described by one truncation marker holding the count
|
|
131
|
+
* left out ({@link truncationMarker}): a last array item, an object's
|
|
132
|
+
* {@link TRUNCATED_KEY} field, or a last aggregate member named `Truncated`.
|
|
133
|
+
* Ordinary contexts are far below it; a 100,000-item array is walked in a few
|
|
134
|
+
* milliseconds instead of the hundreds a full walk takes.
|
|
135
|
+
*/
|
|
136
|
+
export const MAX_WALK_BREADTH = 1000;
|
|
137
|
+
/** The key an object's truncation marker is carried under. */
|
|
138
|
+
export const TRUNCATED_KEY = '[Truncated]';
|
|
139
|
+
/** The marker for `omitted` items, keys or members past the breadth cap. */
|
|
140
|
+
export function truncationMarker(omitted) {
|
|
141
|
+
return `[Truncated: ${omitted} more]`;
|
|
142
|
+
}
|
|
143
|
+
const KNOWN_ERROR_KEYS = new Set([
|
|
144
|
+
'name', 'message', 'stack', 'cause', 'code', 'reason', 'status',
|
|
145
|
+
'statusCode', 'retryable', 'details', 'errors'
|
|
146
|
+
]);
|
|
147
|
+
// Error metadata is optional. Unsupported representations have no typed field;
|
|
148
|
+
// they do not prevent describing the original thrown value.
|
|
149
|
+
const OptionalStringSchema = z.union([z.string(), z.unknown().transform(() => undefined)]).optional();
|
|
150
|
+
const OptionalNumberSchema = z.union([z.number(), z.unknown().transform(() => undefined)]).optional();
|
|
151
|
+
const ErrorMetadataSchema = z.object({
|
|
152
|
+
code: z.union([z.string(), z.number(), z.unknown().transform(() => undefined)]).optional(),
|
|
153
|
+
reason: OptionalStringSchema,
|
|
154
|
+
status: OptionalNumberSchema,
|
|
155
|
+
statusCode: OptionalNumberSchema,
|
|
156
|
+
retryable: z.union([z.boolean(), z.unknown().transform(() => undefined)]).optional(),
|
|
157
|
+
details: z.unknown().optional()
|
|
158
|
+
});
|
|
159
|
+
const JsonHookSchema = z.custom((value) => typeof value === 'function');
|
|
160
|
+
const ArrayValueSchema = z.custom((value) => Array.isArray(value));
|
|
161
|
+
const StringValueSchema = z.string();
|
|
162
|
+
/**
|
|
163
|
+
* A real Map or Set: an instance by its prototype chain that also passes the intrinsic brand check
|
|
164
|
+
* (`Map.prototype.has` / `Set.prototype.has` called on it, which runs no caller code). A Proxy of a Map fails the
|
|
165
|
+
* brand check and walks as the object it presents; a Map with a swapped or null prototype is not an instance and
|
|
166
|
+
* walks as a plain object. Every read after this goes through the built-in intrinsics captured here, so no
|
|
167
|
+
* caller-defined `size`, iterator, `entries` or `values` runs.
|
|
168
|
+
*/
|
|
169
|
+
const MAP_HAS = Map.prototype.has;
|
|
170
|
+
const SET_HAS = Set.prototype.has;
|
|
171
|
+
const MAP_ENTRIES = Map.prototype.entries;
|
|
172
|
+
const SET_VALUES = Set.prototype.values;
|
|
173
|
+
const MapValueSchema = z.custom((value) => value instanceof Map && !attempt(() => MAP_HAS.call(value, undefined)).failed);
|
|
174
|
+
const SetValueSchema = z.custom((value) => value instanceof Set && !attempt(() => SET_HAS.call(value, undefined)).failed);
|
|
175
|
+
/** Takes the first `MAX_WALK_BREADTH` values of an intrinsic iterator; the rest are counted, never kept or walked. */
|
|
176
|
+
function collectionContents(iterator) {
|
|
177
|
+
const first = [];
|
|
178
|
+
let size = 0;
|
|
179
|
+
for (let step = iterator.next(); !step.done; step = iterator.next()) {
|
|
180
|
+
if (size < MAX_WALK_BREADTH)
|
|
181
|
+
first.push(step.value);
|
|
182
|
+
size += 1;
|
|
183
|
+
}
|
|
184
|
+
return { size, first };
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A caller primitive that JSON cannot carry, as the JSON value every sink can
|
|
188
|
+
* serialize: a bigint as its decimal string (`10n` -> `"10"`), a symbol as its
|
|
189
|
+
* `Symbol(description)` text, a function as `[Function]`, and NaN / Infinity /
|
|
190
|
+
* -Infinity as the strings `"NaN"`, `"Infinity"`, `"-Infinity"`. JSON primitives
|
|
191
|
+
* pass unchanged. No sink downstream of the walk can then throw on a value.
|
|
192
|
+
* A function is recognized by `typeof`, which no Proxy trap can intercept.
|
|
193
|
+
*/
|
|
194
|
+
export const FUNCTION_MARKER = '[Function]';
|
|
195
|
+
const JsonPrimitiveSchema = z.union([
|
|
196
|
+
z.bigint().transform((value) => value.toString()),
|
|
197
|
+
z.symbol().transform((value) => value.toString()),
|
|
198
|
+
JsonHookSchema.transform(() => FUNCTION_MARKER),
|
|
199
|
+
z.custom((value) => Number.isNaN(value) || value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY).transform((value) => String(value)),
|
|
200
|
+
z.unknown()
|
|
201
|
+
]);
|
|
202
|
+
/** The refusal message for a caller value that cannot be read: never what the read threw, which may carry the value. */
|
|
203
|
+
export const UNREADABLE_LOG_VALUE_MESSAGE = 'A log value could not be read (a getter, Proxy trap or conversion threw), so it cannot be snapshotted; what it threw is withheld because it may carry the value.';
|
|
204
|
+
/** The refusal message for a value whose own JSON hook throws; the hook's failure value never travels with it. */
|
|
205
|
+
export const JSON_HOOK_REFUSAL_MESSAGE = 'A log value\'s toJSON hook threw, so the value cannot be snapshotted.';
|
|
206
|
+
/**
|
|
207
|
+
* The refusals this module minted (a fixed message and a path, nothing read
|
|
208
|
+
* from a caller value). Only these leave a walk; a lookup runs no caller trap.
|
|
209
|
+
*/
|
|
210
|
+
const OWN_REFUSALS = new WeakMap();
|
|
211
|
+
function refusal(message, path) {
|
|
212
|
+
const refused = new z.ZodError([{ code: 'custom', path: [...path], input: undefined, message }]);
|
|
213
|
+
OWN_REFUSALS.set(refused, refused);
|
|
214
|
+
return refused;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* What a failure inside the walk becomes: the module's own refusal passes
|
|
218
|
+
* through (found by a lookup that reads nothing off the failure); anything
|
|
219
|
+
* else is the caller's thrown value, which may carry the secret, so it becomes
|
|
220
|
+
* the value-free unreadable refusal at `path`.
|
|
221
|
+
*/
|
|
222
|
+
function createRefusalSchema(path) {
|
|
223
|
+
return z.unknown().transform((cause) => {
|
|
224
|
+
const object = ObjectValueSchema.safeParse(cause);
|
|
225
|
+
return (object.success ? OWN_REFUSALS.get(object.data) : undefined) ?? refusal(UNREADABLE_LOG_VALUE_MESSAGE, path);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* One structural read of a caller value (a property, a key list, a prototype
|
|
230
|
+
* check, a hook lookup). Whatever it throws becomes the value-free unreadable
|
|
231
|
+
* refusal at `path`: the thrown value is the caller's and may carry the
|
|
232
|
+
* secret, so the refusal states the fact and the place, never the value.
|
|
233
|
+
*/
|
|
234
|
+
function guardedRead(path, read) {
|
|
235
|
+
const outcome = attempt(read);
|
|
236
|
+
if (!outcome.failed)
|
|
237
|
+
return outcome.value;
|
|
238
|
+
throw createRefusalSchema(path).parse(outcome.cause);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Sets `key` on a snapshot as an own data property. Plain assignment would run
|
|
242
|
+
* the `__proto__` setter and drop that key (changing the snapshot's prototype
|
|
243
|
+
* instead), so a caller's own `__proto__` field survives as data.
|
|
244
|
+
*/
|
|
245
|
+
function defineField(target, key, value) {
|
|
246
|
+
Object.defineProperty(target, key, { value, enumerable: true, writable: true, configurable: true });
|
|
247
|
+
}
|
|
248
|
+
/** Any caller object or array viewed as its keyed fields; the view is the same reference, nothing is copied or read. */
|
|
249
|
+
const KeyedFieldsSchema = z.custom((value) => typeof value === 'object' && value !== null);
|
|
250
|
+
/** Reads the field `key` of a caller object exactly once (presence, then one read), inside the guard. */
|
|
251
|
+
function createFieldSchema(key, path) {
|
|
252
|
+
return z.unknown().transform((target) => guardedRead([...path, key], () => {
|
|
253
|
+
const fields = KeyedFieldsSchema.parse(target);
|
|
254
|
+
return key in fields ? { present: true, value: fields[key] } : { present: false };
|
|
255
|
+
}));
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* The named fields of a caller value (an audit input, a tracker's params), each
|
|
259
|
+
* read exactly once inside the guard, as a record of the raw values read; an
|
|
260
|
+
* absent field is left out, and a value that is not an object has no fields.
|
|
261
|
+
* A read that throws (a getter, a Proxy trap, a revoked Proxy) refuses with
|
|
262
|
+
* the value-free unreadable `ZodError` issue at that field's path: nothing it
|
|
263
|
+
* threw is carried, and the schema never throws it. The values read are still
|
|
264
|
+
* raw; the caller walks or validates them.
|
|
265
|
+
*/
|
|
266
|
+
export function createFieldsReadSchema(keys) {
|
|
267
|
+
return z.unknown().transform((value, context) => {
|
|
268
|
+
const fields = {};
|
|
269
|
+
if (!ObjectValueSchema.safeParse(value).success)
|
|
270
|
+
return fields;
|
|
271
|
+
for (const key of keys) {
|
|
272
|
+
const read = attempt(() => createFieldSchema(key, []).parse(value));
|
|
273
|
+
if (read.failed) {
|
|
274
|
+
for (const issue of createRefusalSchema([key]).parse(read.cause).issues)
|
|
275
|
+
context.issues.push({ code: 'custom', message: issue.message, path: issue.path, input: undefined });
|
|
276
|
+
return z.NEVER;
|
|
277
|
+
}
|
|
278
|
+
if (read.value.present)
|
|
279
|
+
defineField(fields, key, read.value.value);
|
|
280
|
+
}
|
|
281
|
+
return fields;
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/** A walked value as text: a string as itself, any other JSON value as its JSON text, `undefined` as `undefined`. */
|
|
285
|
+
const WalkedTextSchema = z.unknown().transform((walked) => {
|
|
286
|
+
const text = StringValueSchema.safeParse(walked);
|
|
287
|
+
if (text.success)
|
|
288
|
+
return text.data;
|
|
289
|
+
return walked === undefined ? 'undefined' : JSON.stringify(walked);
|
|
290
|
+
});
|
|
291
|
+
/**
|
|
292
|
+
* A text field of a description (an Error's name, message or stack, a thrown
|
|
293
|
+
* primitive's message): a string is kept; any other value goes through the
|
|
294
|
+
* redaction walk and is carried as the walked value's text, so an object is
|
|
295
|
+
* redacted by key and a bigint, symbol or function is converted, never raw.
|
|
296
|
+
*/
|
|
297
|
+
function createTextSchema(seen, depth, path) {
|
|
298
|
+
return z.unknown().transform((value) => {
|
|
299
|
+
const text = StringValueSchema.safeParse(value);
|
|
300
|
+
return text.success ? text.data : WalkedTextSchema.parse(createWalkSchema(seen, depth, path).parse(value).value);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/** A present, non-empty text field read once off `error`, by the one field rule. */
|
|
304
|
+
function readText(seen, error, key, depth) {
|
|
305
|
+
const read = createFieldSchema(key, []).parse(error);
|
|
306
|
+
if (!read.present || read.value === undefined || read.value === null || read.value === '')
|
|
307
|
+
return undefined;
|
|
308
|
+
return createTextSchema(seen, depth + 1, [key]).parse(read.value);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* The one redaction walk. Each traversal carries its own cycle/depth state;
|
|
312
|
+
* every container is detached; every JSON hook is read once and runs exactly
|
|
313
|
+
* once; every structural read is guarded, so the walk throws only this
|
|
314
|
+
* module's typed, value-free refusals; and a nested Error is described by the
|
|
315
|
+
* total describer, in place.
|
|
316
|
+
*/
|
|
317
|
+
function createWalkSchema(seen, depth, path) {
|
|
318
|
+
return z.unknown().transform((value) => {
|
|
319
|
+
const object = ObjectValueSchema.safeParse(value);
|
|
320
|
+
if (!object.success)
|
|
321
|
+
return { value: guardedRead(path, () => JsonPrimitiveSchema.parse(value)) };
|
|
322
|
+
const target = object.data;
|
|
323
|
+
if (seen.has(target))
|
|
324
|
+
return { value: '[Circular]' };
|
|
325
|
+
if (depth >= MAX_DEPTH)
|
|
326
|
+
return { value: '[MaxDepth]' };
|
|
327
|
+
// A provable Error is described before any other read, so a trap elsewhere on it costs only its own description.
|
|
328
|
+
if (guardedRead(path, () => target instanceof Error))
|
|
329
|
+
return { value: createDescribedThrownSchema(seen, 0, depth, UNDESCRIBABLE_ERROR_MESSAGE).parse(target).error };
|
|
330
|
+
if (guardedRead(path, () => SecretValueSchema.safeParse(target).success))
|
|
331
|
+
return { value: REDACTED };
|
|
332
|
+
const hook = createFieldSchema('toJSON', path).parse(target);
|
|
333
|
+
const callable = hook.present ? JsonHookSchema.safeParse(hook.value) : undefined;
|
|
334
|
+
const child = (next) => createWalkSchema(seen, depth + 1, next);
|
|
335
|
+
seen.add(target);
|
|
336
|
+
try {
|
|
337
|
+
if (callable?.success) {
|
|
338
|
+
const run = callable.data;
|
|
339
|
+
const key = path.length === 0 ? '' : String(path[path.length - 1]);
|
|
340
|
+
const snapshot = attempt(() => run.call(target, key));
|
|
341
|
+
// The refusal is typed and carries no hook failure: a hook's thrown value is its own secret to keep.
|
|
342
|
+
if (snapshot.failed)
|
|
343
|
+
throw refusal(JSON_HOOK_REFUSAL_MESSAGE, path);
|
|
344
|
+
return child(path).parse(snapshot.value);
|
|
345
|
+
}
|
|
346
|
+
const list = guardedRead(path, () => ArrayValueSchema.safeParse(target));
|
|
347
|
+
if (list.success) {
|
|
348
|
+
const items = list.data;
|
|
349
|
+
// Length and each kept item are read once; a hole or `undefined` item is `null`, as JSON writes it. Items past the cap are not read.
|
|
350
|
+
const length = guardedRead(path, () => items.length);
|
|
351
|
+
const kept = Math.min(length, MAX_WALK_BREADTH);
|
|
352
|
+
const read = guardedRead(path, () => Array.from({ length: kept }, (_, index) => items[index]));
|
|
353
|
+
const walked = read.map((item, index) => child([...path, index]).parse(item).value ?? null);
|
|
354
|
+
if (length > kept)
|
|
355
|
+
walked.push(truncationMarker(length - kept));
|
|
356
|
+
return { value: walked };
|
|
357
|
+
}
|
|
358
|
+
// A Map is its entries: each key as text (a string as itself, any other key as its walked JSON text) and each
|
|
359
|
+
// value walked and redacted by that key, like an object's fields; a Set is its values, like an array. Both keep
|
|
360
|
+
// their first MAX_WALK_BREADTH entries and carry one truncation marker for the rest, which are never pulled.
|
|
361
|
+
const map = guardedRead(path, () => MapValueSchema.safeParse(target));
|
|
362
|
+
if (map.success) {
|
|
363
|
+
const { size, first: entries } = guardedRead(path, () => collectionContents(MAP_ENTRIES.call(map.data)));
|
|
364
|
+
const copy = {};
|
|
365
|
+
entries.forEach(([key, entry], index) => {
|
|
366
|
+
const field = WalkedTextSchema.parse(child([...path, index]).parse(key).value);
|
|
367
|
+
defineField(copy, field, isSecretKey(field) && entry !== undefined && entry !== null
|
|
368
|
+
? REDACTED
|
|
369
|
+
: child([...path, field]).parse(entry).value);
|
|
370
|
+
});
|
|
371
|
+
if (size > entries.length)
|
|
372
|
+
defineField(copy, TRUNCATED_KEY, truncationMarker(size - entries.length));
|
|
373
|
+
return { value: copy };
|
|
374
|
+
}
|
|
375
|
+
const set = guardedRead(path, () => SetValueSchema.safeParse(target));
|
|
376
|
+
if (set.success) {
|
|
377
|
+
const { size, first: members } = guardedRead(path, () => collectionContents(SET_VALUES.call(set.data)));
|
|
378
|
+
const walked = members.map((member, index) => child([...path, index]).parse(member).value ?? null);
|
|
379
|
+
if (size > members.length)
|
|
380
|
+
walked.push(truncationMarker(size - members.length));
|
|
381
|
+
return { value: walked };
|
|
382
|
+
}
|
|
383
|
+
// Own enumerable fields must be redacted regardless of their prototype; each kept one is read once, the rest not at all.
|
|
384
|
+
const keys = guardedRead(path, () => Object.keys(target));
|
|
385
|
+
const fields = KeyedFieldsSchema.parse(target);
|
|
386
|
+
const copy = {};
|
|
387
|
+
for (const field of keys.slice(0, MAX_WALK_BREADTH)) {
|
|
388
|
+
// The read is guarded at the container's path, as a whole-object read would be.
|
|
389
|
+
const entry = guardedRead(path, () => fields[field]);
|
|
390
|
+
defineField(copy, field, isSecretKey(field) && entry !== undefined && entry !== null
|
|
391
|
+
? REDACTED
|
|
392
|
+
: child([...path, field]).parse(entry).value);
|
|
393
|
+
}
|
|
394
|
+
if (keys.length > MAX_WALK_BREADTH)
|
|
395
|
+
defineField(copy, TRUNCATED_KEY, truncationMarker(keys.length - MAX_WALK_BREADTH));
|
|
396
|
+
return { value: copy };
|
|
397
|
+
}
|
|
398
|
+
finally {
|
|
399
|
+
seen.delete(target);
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
/** An Error's metadata, each field read once. */
|
|
404
|
+
function readMetadata(error) {
|
|
405
|
+
const read = (key) => createFieldSchema(key, []).parse(error);
|
|
406
|
+
const valueOf = (field) => ({ value: field.present ? field.value : undefined });
|
|
407
|
+
return ErrorMetadataSchema.parse({
|
|
408
|
+
code: valueOf(read('code')).value,
|
|
409
|
+
reason: valueOf(read('reason')).value,
|
|
410
|
+
status: valueOf(read('status')).value,
|
|
411
|
+
statusCode: valueOf(read('statusCode')).value,
|
|
412
|
+
retryable: valueOf(read('retryable')).value,
|
|
413
|
+
details: valueOf(read('details')).value
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
/** The full description; it may throw (a guarded read's refusal, a trap), and only the total describer runs it. */
|
|
417
|
+
function createLoggedErrorSchema(seen, causeDepth, depth) {
|
|
418
|
+
return z.unknown().transform((thrown) => {
|
|
419
|
+
if (!(thrown instanceof Error)) {
|
|
420
|
+
const object = ObjectValueSchema.safeParse(thrown);
|
|
421
|
+
return object.success
|
|
422
|
+
? { name: 'NonError', message: '[non-error thrown]', details: createWalkSchema(seen, depth, []).parse(thrown).value }
|
|
423
|
+
: { name: 'NonError', message: createTextSchema(seen, depth, []).parse(thrown) };
|
|
424
|
+
}
|
|
425
|
+
const error = thrown;
|
|
426
|
+
const head = () => ({ name: readText(seen, error, 'name', depth) ?? '', message: readText(seen, error, 'message', depth) ?? '' });
|
|
427
|
+
if (seen.has(error))
|
|
428
|
+
return { ...head(), details: '[Circular]' };
|
|
429
|
+
seen.add(error);
|
|
430
|
+
try {
|
|
431
|
+
const logged = head();
|
|
432
|
+
const metadata = readMetadata(error);
|
|
433
|
+
if (metadata.code !== undefined)
|
|
434
|
+
logged.code = metadata.code;
|
|
435
|
+
if (metadata.reason !== undefined)
|
|
436
|
+
logged.reason = metadata.reason;
|
|
437
|
+
const status = metadata.status ?? metadata.statusCode;
|
|
438
|
+
if (status !== undefined)
|
|
439
|
+
logged.status = status;
|
|
440
|
+
if (metadata.retryable !== undefined)
|
|
441
|
+
logged.retryable = metadata.retryable;
|
|
442
|
+
if (metadata.details !== undefined)
|
|
443
|
+
logged.details = createWalkSchema(seen, depth + 1, ['details']).parse(metadata.details).value;
|
|
444
|
+
// The other own fields, bounded like any object: the first MAX_WALK_BREADTH are read once each, the rest not at all.
|
|
445
|
+
const fields = {};
|
|
446
|
+
const ownFields = guardedRead([], () => Object.keys(error)).filter((key) => !KNOWN_ERROR_KEYS.has(key));
|
|
447
|
+
for (const key of ownFields.slice(0, MAX_WALK_BREADTH)) {
|
|
448
|
+
const read = createFieldSchema(key, []).parse(error);
|
|
449
|
+
defineField(fields, key, read.present ? read.value : undefined);
|
|
450
|
+
}
|
|
451
|
+
if (ownFields.length > 0) {
|
|
452
|
+
if (depth + 1 >= MAX_DEPTH)
|
|
453
|
+
logged.fields = { value: '[MaxDepth]' };
|
|
454
|
+
else {
|
|
455
|
+
const walked = PlainLogRecordSchema.parse(createWalkSchema(seen, depth + 1, ['fields']).parse(fields).value);
|
|
456
|
+
if (ownFields.length > MAX_WALK_BREADTH)
|
|
457
|
+
defineField(walked, TRUNCATED_KEY, truncationMarker(ownFields.length - MAX_WALK_BREADTH));
|
|
458
|
+
logged.fields = walked;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
const stack = readText(seen, error, 'stack', depth);
|
|
462
|
+
if (stack !== undefined)
|
|
463
|
+
logged.stack = stack;
|
|
464
|
+
const cause = createFieldSchema('cause', []).parse(error);
|
|
465
|
+
if (cause.present && cause.value !== undefined) {
|
|
466
|
+
logged.cause = causeDepth >= MAX_CAUSE_DEPTH ? '[MaxCauseDepth]' : createCauseSchema(seen, causeDepth + 1, depth + 1).parse(cause.value).value;
|
|
467
|
+
}
|
|
468
|
+
if (error instanceof AggregateError && causeDepth < MAX_CAUSE_DEPTH) {
|
|
469
|
+
const members = createFieldSchema('errors', []).parse(error);
|
|
470
|
+
if (members.present) {
|
|
471
|
+
const list = ArrayValueSchema.safeParse(members.value);
|
|
472
|
+
// A non-array `errors` is one member; an array's length and kept items are read once, up to the breadth cap.
|
|
473
|
+
const length = list.success ? list.data.length : 1;
|
|
474
|
+
const kept = Math.min(length, MAX_WALK_BREADTH);
|
|
475
|
+
const items = list.success ? Array.from({ length: kept }, (_, index) => list.data[index]) : [members.value];
|
|
476
|
+
const member = createDescribedThrownSchema(seen, causeDepth + 1, depth + 1, UNDESCRIBABLE_ERROR_MESSAGE);
|
|
477
|
+
logged.errors = items.map((value) => member.parse(value).error);
|
|
478
|
+
if (length > kept)
|
|
479
|
+
logged.errors.push({ name: 'Truncated', message: truncationMarker(length - kept) });
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return logged;
|
|
483
|
+
}
|
|
484
|
+
finally {
|
|
485
|
+
seen.delete(error);
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
/** What a thrown value's description says when describing it throws: never the thrown message, which a hostile getter or trap can fill with the value. */
|
|
490
|
+
export const UNDESCRIBABLE_ERROR_MESSAGE = 'The thrown value could not be described (a getter, toJSON, conversion or Proxy trap threw); its message is withheld because it may carry the value.';
|
|
491
|
+
/** An error name a value-free description may carry: an identifier that names no secret. */
|
|
492
|
+
const SafeErrorNameSchema = z.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]{0,63}$/).refine((name) => !isSecretKey(name));
|
|
493
|
+
/**
|
|
494
|
+
* The name a value-free description carries: a provable Error's own name when it
|
|
495
|
+
* reads without throwing and is a plain identifier naming no secret, else
|
|
496
|
+
* `Error`; `NonError` for anything not provably an Error (`instanceof` reads the
|
|
497
|
+
* prototype, which a Proxy trap or a revoked Proxy throws from).
|
|
498
|
+
*/
|
|
499
|
+
export const ReadableErrorNameSchema = z.unknown().transform((value) => {
|
|
500
|
+
const error = attempt(() => (value instanceof Error ? value : undefined));
|
|
501
|
+
if (error.failed || error.value === undefined)
|
|
502
|
+
return 'NonError';
|
|
503
|
+
const thrown = error.value;
|
|
504
|
+
const name = attempt(() => SafeErrorNameSchema.parse(thrown.name));
|
|
505
|
+
return name.failed ? 'Error' : name.value;
|
|
506
|
+
});
|
|
507
|
+
/** Describes a thrown value without the value: its readable error name and the fixed `message`. */
|
|
508
|
+
export function valueFreeFailureSchema(message) {
|
|
509
|
+
return z.unknown().transform((cause) => ({ name: ReadableErrorNameSchema.parse(cause), message }));
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* The total description of one thrown value: the full `LoggedError` when it can
|
|
513
|
+
* be built, else the value-free one (readable name and `undescribable`). Any
|
|
514
|
+
* failure while describing (a getter, `toJSON`, conversion or Proxy trap,
|
|
515
|
+
* `instanceof` included) selects the value-free form; nothing it threw travels.
|
|
516
|
+
*/
|
|
517
|
+
function createDescribedThrownSchema(seen, causeDepth, depth, undescribable) {
|
|
518
|
+
return z.unknown().transform((value) => {
|
|
519
|
+
const full = attempt(() => createLoggedErrorSchema(seen, causeDepth, depth).parse(value));
|
|
520
|
+
if (!full.failed)
|
|
521
|
+
return { error: full.value, described: true };
|
|
522
|
+
return { error: { name: ReadableErrorNameSchema.parse(value), message: undescribable }, described: false };
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
/** An Error's cause: an Error is described, any other value walked; one that cannot be either is described value-free, so it never costs the Error its own description. */
|
|
526
|
+
function createCauseSchema(seen, causeDepth, depth) {
|
|
527
|
+
return z.unknown().transform((cause) => {
|
|
528
|
+
const nested = attempt(() => cause instanceof Error
|
|
529
|
+
? { value: createLoggedErrorSchema(seen, causeDepth, depth).parse(cause) }
|
|
530
|
+
: createWalkSchema(seen, depth, ['cause']).parse(cause));
|
|
531
|
+
if (!nested.failed)
|
|
532
|
+
return nested.value;
|
|
533
|
+
return { value: { name: ReadableErrorNameSchema.parse(cause), message: UNDESCRIBABLE_ERROR_MESSAGE } };
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* The total describer of a thrown value, with the message its value-free form
|
|
538
|
+
* carries. It never throws, for any input, and its description is JSON.
|
|
539
|
+
*/
|
|
540
|
+
export function createThrownValueSchema(undescribable) {
|
|
541
|
+
return createDescribedThrownSchema(new WeakSet(), 0, 0, undescribable);
|
|
542
|
+
}
|
|
543
|
+
/** {@link createThrownValueSchema} with {@link UNDESCRIBABLE_ERROR_MESSAGE}. */
|
|
544
|
+
export const ThrownValueSchema = createThrownValueSchema(UNDESCRIBABLE_ERROR_MESSAGE);
|
|
545
|
+
/**
|
|
546
|
+
* Raw thrown values normalize here, including primitives and non-Error objects.
|
|
547
|
+
* Total: it never throws. An ordinary Error is described in full (name,
|
|
548
|
+
* message, metadata, redacted details and fields, stack, cause chain,
|
|
549
|
+
* aggregate members), each field read once: a string field is kept, a
|
|
550
|
+
* non-string one is walked and carried as its redacted JSON text. A value
|
|
551
|
+
* whose description throws is described as its readable error name
|
|
552
|
+
* (`ReadableErrorNameSchema`) and `UNDESCRIBABLE_ERROR_MESSAGE`, and a cause or
|
|
553
|
+
* aggregate member that cannot be described is described that way in place.
|
|
554
|
+
*/
|
|
555
|
+
export const LoggedErrorSchema = ThrownValueSchema.transform((thrown) => thrown.error);
|
|
556
|
+
/** A thrown value's message for a report line, through the total describer: never throws, never the text of a value that cannot be described. */
|
|
557
|
+
export const ThrownMessageSchema = ThrownValueSchema.transform((thrown) => thrown.error.message);
|
|
558
|
+
/**
|
|
559
|
+
* The one nested-value schema. A consumer that parses a value with it owns a
|
|
560
|
+
* detached, redacted snapshot: secret keys and `secret()` values are replaced,
|
|
561
|
+
* Errors become `LoggedError` (described in place by the total describer),
|
|
562
|
+
* every object's callable `toJSON` runs exactly once and its returned value is
|
|
563
|
+
* normalized the same way, and no caller container is retained. A value that
|
|
564
|
+
* cannot be read (a getter or Proxy trap throws) or whose hook throws refuses
|
|
565
|
+
* with a `ZodError` issue holding a fixed message and the path; nothing the
|
|
566
|
+
* value threw is carried, and the schema never throws it. `JSON.stringify` of
|
|
567
|
+
* the result runs no hook.
|
|
568
|
+
*/
|
|
569
|
+
export const RedactedLogValueSchema = z.unknown().transform((value, context) => {
|
|
570
|
+
const walked = attempt(() => createWalkSchema(new WeakSet(), 0, []).parse(value));
|
|
571
|
+
if (!walked.failed)
|
|
572
|
+
return walked.value.value;
|
|
573
|
+
// Every structural read is guarded, so the walk throws only its own refusals; the one rule maps the failure either way.
|
|
574
|
+
const refused = createRefusalSchema([]).parse(walked.cause);
|
|
575
|
+
for (const issue of refused.issues)
|
|
576
|
+
context.issues.push({ code: 'custom', message: issue.message, path: issue.path, input: undefined });
|
|
577
|
+
return z.NEVER;
|
|
578
|
+
});
|
|
579
|
+
/** The emitted path reuses {@link RedactedLogValueSchema}: delivery and the public schema are one contract. */
|
|
580
|
+
export const EmittedLogValueSchema = RedactedLogValueSchema;
|
|
581
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Root a runtime belongs to, as the kernel knows it. Logging keys every
|
|
3
|
+
* per-Root state (registrations, settings, namespace selection, emission
|
|
4
|
+
* window, resources, stdout capture, error tracking, telemetry) by it.
|
|
5
|
+
*
|
|
6
|
+
* It is `rootIdentityOf(runtime)`, never the runtime's own `rootIdentity`
|
|
7
|
+
* property: a Proxy or derived object can answer another Root's readable
|
|
8
|
+
* identity, and must not reach that Root's Logging state. A runtime the kernel
|
|
9
|
+
* neither constructed nor viewed names no Root and is refused typed.
|
|
10
|
+
*/
|
|
11
|
+
import { type RuntimeRef, type RuntimeRootIdentity } from '@vibesdotdev/kernel';
|
|
12
|
+
export declare function loggingRootOf(runtime: RuntimeRef): RuntimeRootIdentity;
|
|
13
|
+
//# sourceMappingURL=root-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-identity.d.ts","sourceRoot":"","sources":["../../src/core/root-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEjH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,mBAAmB,CAUtE"}
|