@superblocksteam/telemetry 2.0.0-SNAPSHOT.329be19cb7ca892b
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.txt +87 -0
- package/README.md +298 -0
- package/dist/browser/console-logging.d.ts +18 -0
- package/dist/browser/console-logging.d.ts.map +1 -0
- package/dist/browser/console-logging.js +32 -0
- package/dist/browser/console-logging.js.map +1 -0
- package/dist/browser/early-console-buffer.d.ts +49 -0
- package/dist/browser/early-console-buffer.d.ts.map +1 -0
- package/dist/browser/early-console-buffer.js +182 -0
- package/dist/browser/early-console-buffer.js.map +1 -0
- package/dist/browser/index.d.ts +17 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +50 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/init.d.ts +101 -0
- package/dist/browser/init.d.ts.map +1 -0
- package/dist/browser/init.js +329 -0
- package/dist/browser/init.js.map +1 -0
- package/dist/browser/instrumentations.d.ts +67 -0
- package/dist/browser/instrumentations.d.ts.map +1 -0
- package/dist/browser/instrumentations.js +83 -0
- package/dist/browser/instrumentations.js.map +1 -0
- package/dist/browser/logs.d.ts +55 -0
- package/dist/browser/logs.d.ts.map +1 -0
- package/dist/browser/logs.js +86 -0
- package/dist/browser/logs.js.map +1 -0
- package/dist/browser/metrics.d.ts +29 -0
- package/dist/browser/metrics.d.ts.map +1 -0
- package/dist/browser/metrics.js +49 -0
- package/dist/browser/metrics.js.map +1 -0
- package/dist/browser/resilient-exporter.d.ts +43 -0
- package/dist/browser/resilient-exporter.d.ts.map +1 -0
- package/dist/browser/resilient-exporter.js +88 -0
- package/dist/browser/resilient-exporter.js.map +1 -0
- package/dist/browser/sanitizer.d.ts +35 -0
- package/dist/browser/sanitizer.d.ts.map +1 -0
- package/dist/browser/sanitizer.js +211 -0
- package/dist/browser/sanitizer.js.map +1 -0
- package/dist/browser/traced-socket.d.ts +102 -0
- package/dist/browser/traced-socket.d.ts.map +1 -0
- package/dist/browser/traced-socket.js +203 -0
- package/dist/browser/traced-socket.js.map +1 -0
- package/dist/common/contracts/tier2-traces.d.ts +116 -0
- package/dist/common/contracts/tier2-traces.d.ts.map +1 -0
- package/dist/common/contracts/tier2-traces.js +736 -0
- package/dist/common/contracts/tier2-traces.js.map +1 -0
- package/dist/common/deployment-type.d.ts +18 -0
- package/dist/common/deployment-type.d.ts.map +1 -0
- package/dist/common/deployment-type.js +30 -0
- package/dist/common/deployment-type.js.map +1 -0
- package/dist/common/guardrails.d.ts +116 -0
- package/dist/common/guardrails.d.ts.map +1 -0
- package/dist/common/guardrails.js +189 -0
- package/dist/common/guardrails.js.map +1 -0
- package/dist/common/index.d.ts +18 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +34 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/log-sanitizer.d.ts +170 -0
- package/dist/common/log-sanitizer.d.ts.map +1 -0
- package/dist/common/log-sanitizer.js +690 -0
- package/dist/common/log-sanitizer.js.map +1 -0
- package/dist/common/normalize-metric-path.d.ts +2 -0
- package/dist/common/normalize-metric-path.d.ts.map +1 -0
- package/dist/common/normalize-metric-path.js +22 -0
- package/dist/common/normalize-metric-path.js.map +1 -0
- package/dist/common/policy-evaluator.d.ts +103 -0
- package/dist/common/policy-evaluator.d.ts.map +1 -0
- package/dist/common/policy-evaluator.js +200 -0
- package/dist/common/policy-evaluator.js.map +1 -0
- package/dist/common/resource.d.ts +79 -0
- package/dist/common/resource.d.ts.map +1 -0
- package/dist/common/resource.js +128 -0
- package/dist/common/resource.js.map +1 -0
- package/dist/common/tier-hints.d.ts +182 -0
- package/dist/common/tier-hints.d.ts.map +1 -0
- package/dist/common/tier-hints.js +209 -0
- package/dist/common/tier-hints.js.map +1 -0
- package/dist/common/trace-sanitizer.d.ts +82 -0
- package/dist/common/trace-sanitizer.d.ts.map +1 -0
- package/dist/common/trace-sanitizer.js +234 -0
- package/dist/common/trace-sanitizer.js.map +1 -0
- package/dist/common/traced-socket-types.d.ts +43 -0
- package/dist/common/traced-socket-types.d.ts.map +1 -0
- package/dist/common/traced-socket-types.js +17 -0
- package/dist/common/traced-socket-types.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/forbidden-attributes.d.ts +149 -0
- package/dist/lint/forbidden-attributes.d.ts.map +1 -0
- package/dist/lint/forbidden-attributes.js +215 -0
- package/dist/lint/forbidden-attributes.js.map +1 -0
- package/dist/lint/index.d.ts +9 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +16 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/llmobs/index.d.ts +22 -0
- package/dist/llmobs/index.d.ts.map +1 -0
- package/dist/llmobs/index.js +29 -0
- package/dist/llmobs/index.js.map +1 -0
- package/dist/llmobs/tier1-exporter.d.ts +146 -0
- package/dist/llmobs/tier1-exporter.d.ts.map +1 -0
- package/dist/llmobs/tier1-exporter.js +199 -0
- package/dist/llmobs/tier1-exporter.js.map +1 -0
- package/dist/llmobs/tier2-summarizer.d.ts +268 -0
- package/dist/llmobs/tier2-summarizer.d.ts.map +1 -0
- package/dist/llmobs/tier2-summarizer.js +656 -0
- package/dist/llmobs/tier2-summarizer.js.map +1 -0
- package/dist/node/dynamic-attribute-processor.d.ts +43 -0
- package/dist/node/dynamic-attribute-processor.d.ts.map +1 -0
- package/dist/node/dynamic-attribute-processor.js +79 -0
- package/dist/node/dynamic-attribute-processor.js.map +1 -0
- package/dist/node/exporters/resilient-exporter.d.ts +91 -0
- package/dist/node/exporters/resilient-exporter.d.ts.map +1 -0
- package/dist/node/exporters/resilient-exporter.js +136 -0
- package/dist/node/exporters/resilient-exporter.js.map +1 -0
- package/dist/node/index.d.ts +13 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +32 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/init.d.ts +97 -0
- package/dist/node/init.d.ts.map +1 -0
- package/dist/node/init.js +365 -0
- package/dist/node/init.js.map +1 -0
- package/dist/node/local-obs-mode.d.ts +17 -0
- package/dist/node/local-obs-mode.d.ts.map +1 -0
- package/dist/node/local-obs-mode.js +22 -0
- package/dist/node/local-obs-mode.js.map +1 -0
- package/dist/node/log-processor.d.ts +132 -0
- package/dist/node/log-processor.d.ts.map +1 -0
- package/dist/node/log-processor.js +397 -0
- package/dist/node/log-processor.js.map +1 -0
- package/dist/node/metrics-client.d.ts +88 -0
- package/dist/node/metrics-client.d.ts.map +1 -0
- package/dist/node/metrics-client.js +209 -0
- package/dist/node/metrics-client.js.map +1 -0
- package/dist/node/safe-logger.d.ts +55 -0
- package/dist/node/safe-logger.d.ts.map +1 -0
- package/dist/node/safe-logger.js +158 -0
- package/dist/node/safe-logger.js.map +1 -0
- package/dist/node/sanitizing-processor.d.ts +67 -0
- package/dist/node/sanitizing-processor.d.ts.map +1 -0
- package/dist/node/sanitizing-processor.js +167 -0
- package/dist/node/sanitizing-processor.js.map +1 -0
- package/dist/node/service-tracers.d.ts +52 -0
- package/dist/node/service-tracers.d.ts.map +1 -0
- package/dist/node/service-tracers.js +81 -0
- package/dist/node/service-tracers.js.map +1 -0
- package/dist/node/traced-socket.d.ts +120 -0
- package/dist/node/traced-socket.d.ts.map +1 -0
- package/dist/node/traced-socket.js +338 -0
- package/dist/node/traced-socket.js.map +1 -0
- package/dist/npm-registry/emitter.d.ts +310 -0
- package/dist/npm-registry/emitter.d.ts.map +1 -0
- package/dist/npm-registry/emitter.js +537 -0
- package/dist/npm-registry/emitter.js.map +1 -0
- package/dist/npm-registry/index.d.ts +12 -0
- package/dist/npm-registry/index.d.ts.map +1 -0
- package/dist/npm-registry/index.js +28 -0
- package/dist/npm-registry/index.js.map +1 -0
- package/dist/npm-registry/sanitize.d.ts +174 -0
- package/dist/npm-registry/sanitize.d.ts.map +1 -0
- package/dist/npm-registry/sanitize.js +342 -0
- package/dist/npm-registry/sanitize.js.map +1 -0
- package/dist/npm-registry/spans.d.ts +61 -0
- package/dist/npm-registry/spans.d.ts.map +1 -0
- package/dist/npm-registry/spans.js +91 -0
- package/dist/npm-registry/spans.js.map +1 -0
- package/dist/testing/in-memory-exporter.d.ts +179 -0
- package/dist/testing/in-memory-exporter.d.ts.map +1 -0
- package/dist/testing/in-memory-exporter.js +256 -0
- package/dist/testing/in-memory-exporter.js.map +1 -0
- package/dist/testing/index.d.ts +9 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/metrics-capture.d.ts +29 -0
- package/dist/testing/metrics-capture.d.ts.map +1 -0
- package/dist/testing/metrics-capture.js +74 -0
- package/dist/testing/metrics-capture.js.map +1 -0
- package/dist/testing/test-init.d.ts +80 -0
- package/dist/testing/test-init.d.ts.map +1 -0
- package/dist/testing/test-init.js +144 -0
- package/dist/testing/test-init.js.map +1 -0
- package/dist/types/index.d.ts +84 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/policy.d.ts +92 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/policy.js +125 -0
- package/dist/types/policy.js.map +1 -0
- package/dist-esm/browser/console-logging.d.ts +18 -0
- package/dist-esm/browser/console-logging.d.ts.map +1 -0
- package/dist-esm/browser/console-logging.js +27 -0
- package/dist-esm/browser/console-logging.js.map +1 -0
- package/dist-esm/browser/early-console-buffer.d.ts +49 -0
- package/dist-esm/browser/early-console-buffer.d.ts.map +1 -0
- package/dist-esm/browser/early-console-buffer.js +180 -0
- package/dist-esm/browser/early-console-buffer.js.map +1 -0
- package/dist-esm/browser/index.d.ts +17 -0
- package/dist-esm/browser/index.d.ts.map +1 -0
- package/dist-esm/browser/index.js +22 -0
- package/dist-esm/browser/index.js.map +1 -0
- package/dist-esm/browser/init.d.ts +101 -0
- package/dist-esm/browser/init.d.ts.map +1 -0
- package/dist-esm/browser/init.js +319 -0
- package/dist-esm/browser/init.js.map +1 -0
- package/dist-esm/browser/instrumentations.d.ts +67 -0
- package/dist-esm/browser/instrumentations.d.ts.map +1 -0
- package/dist-esm/browser/instrumentations.js +79 -0
- package/dist-esm/browser/instrumentations.js.map +1 -0
- package/dist-esm/browser/logs.d.ts +55 -0
- package/dist-esm/browser/logs.d.ts.map +1 -0
- package/dist-esm/browser/logs.js +79 -0
- package/dist-esm/browser/logs.js.map +1 -0
- package/dist-esm/browser/metrics.d.ts +29 -0
- package/dist-esm/browser/metrics.d.ts.map +1 -0
- package/dist-esm/browser/metrics.js +46 -0
- package/dist-esm/browser/metrics.js.map +1 -0
- package/dist-esm/browser/resilient-exporter.d.ts +43 -0
- package/dist-esm/browser/resilient-exporter.d.ts.map +1 -0
- package/dist-esm/browser/resilient-exporter.js +84 -0
- package/dist-esm/browser/resilient-exporter.js.map +1 -0
- package/dist-esm/browser/sanitizer.d.ts +35 -0
- package/dist-esm/browser/sanitizer.d.ts.map +1 -0
- package/dist-esm/browser/sanitizer.js +207 -0
- package/dist-esm/browser/sanitizer.js.map +1 -0
- package/dist-esm/browser/traced-socket.d.ts +102 -0
- package/dist-esm/browser/traced-socket.d.ts.map +1 -0
- package/dist-esm/browser/traced-socket.js +199 -0
- package/dist-esm/browser/traced-socket.js.map +1 -0
- package/dist-esm/common/contracts/tier2-traces.d.ts +116 -0
- package/dist-esm/common/contracts/tier2-traces.d.ts.map +1 -0
- package/dist-esm/common/contracts/tier2-traces.js +725 -0
- package/dist-esm/common/contracts/tier2-traces.js.map +1 -0
- package/dist-esm/common/deployment-type.d.ts +18 -0
- package/dist-esm/common/deployment-type.d.ts.map +1 -0
- package/dist-esm/common/deployment-type.js +27 -0
- package/dist-esm/common/deployment-type.js.map +1 -0
- package/dist-esm/common/guardrails.d.ts +116 -0
- package/dist-esm/common/guardrails.d.ts.map +1 -0
- package/dist-esm/common/guardrails.js +179 -0
- package/dist-esm/common/guardrails.js.map +1 -0
- package/dist-esm/common/index.d.ts +18 -0
- package/dist-esm/common/index.d.ts.map +1 -0
- package/dist-esm/common/index.js +18 -0
- package/dist-esm/common/index.js.map +1 -0
- package/dist-esm/common/log-sanitizer.d.ts +170 -0
- package/dist-esm/common/log-sanitizer.d.ts.map +1 -0
- package/dist-esm/common/log-sanitizer.js +672 -0
- package/dist-esm/common/log-sanitizer.js.map +1 -0
- package/dist-esm/common/normalize-metric-path.d.ts +2 -0
- package/dist-esm/common/normalize-metric-path.d.ts.map +1 -0
- package/dist-esm/common/normalize-metric-path.js +19 -0
- package/dist-esm/common/normalize-metric-path.js.map +1 -0
- package/dist-esm/common/policy-evaluator.d.ts +103 -0
- package/dist-esm/common/policy-evaluator.d.ts.map +1 -0
- package/dist-esm/common/policy-evaluator.js +196 -0
- package/dist-esm/common/policy-evaluator.js.map +1 -0
- package/dist-esm/common/resource.d.ts +79 -0
- package/dist-esm/common/resource.d.ts.map +1 -0
- package/dist-esm/common/resource.js +121 -0
- package/dist-esm/common/resource.js.map +1 -0
- package/dist-esm/common/tier-hints.d.ts +182 -0
- package/dist-esm/common/tier-hints.d.ts.map +1 -0
- package/dist-esm/common/tier-hints.js +199 -0
- package/dist-esm/common/tier-hints.js.map +1 -0
- package/dist-esm/common/trace-sanitizer.d.ts +82 -0
- package/dist-esm/common/trace-sanitizer.d.ts.map +1 -0
- package/dist-esm/common/trace-sanitizer.js +230 -0
- package/dist-esm/common/trace-sanitizer.js.map +1 -0
- package/dist-esm/common/traced-socket-types.d.ts +43 -0
- package/dist-esm/common/traced-socket-types.d.ts.map +1 -0
- package/dist-esm/common/traced-socket-types.js +16 -0
- package/dist-esm/common/traced-socket-types.js.map +1 -0
- package/dist-esm/index.d.ts +45 -0
- package/dist-esm/index.d.ts.map +1 -0
- package/dist-esm/index.js +56 -0
- package/dist-esm/index.js.map +1 -0
- package/dist-esm/lint/forbidden-attributes.d.ts +149 -0
- package/dist-esm/lint/forbidden-attributes.d.ts.map +1 -0
- package/dist-esm/lint/forbidden-attributes.js +210 -0
- package/dist-esm/lint/forbidden-attributes.js.map +1 -0
- package/dist-esm/lint/index.d.ts +9 -0
- package/dist-esm/lint/index.d.ts.map +1 -0
- package/dist-esm/lint/index.js +9 -0
- package/dist-esm/lint/index.js.map +1 -0
- package/dist-esm/llmobs/index.d.ts +22 -0
- package/dist-esm/llmobs/index.d.ts.map +1 -0
- package/dist-esm/llmobs/index.js +22 -0
- package/dist-esm/llmobs/index.js.map +1 -0
- package/dist-esm/llmobs/tier1-exporter.d.ts +146 -0
- package/dist-esm/llmobs/tier1-exporter.d.ts.map +1 -0
- package/dist-esm/llmobs/tier1-exporter.js +193 -0
- package/dist-esm/llmobs/tier1-exporter.js.map +1 -0
- package/dist-esm/llmobs/tier2-summarizer.d.ts +268 -0
- package/dist-esm/llmobs/tier2-summarizer.d.ts.map +1 -0
- package/dist-esm/llmobs/tier2-summarizer.js +652 -0
- package/dist-esm/llmobs/tier2-summarizer.js.map +1 -0
- package/dist-esm/node/dynamic-attribute-processor.d.ts +43 -0
- package/dist-esm/node/dynamic-attribute-processor.d.ts.map +1 -0
- package/dist-esm/node/dynamic-attribute-processor.js +74 -0
- package/dist-esm/node/dynamic-attribute-processor.js.map +1 -0
- package/dist-esm/node/exporters/resilient-exporter.d.ts +91 -0
- package/dist-esm/node/exporters/resilient-exporter.d.ts.map +1 -0
- package/dist-esm/node/exporters/resilient-exporter.js +132 -0
- package/dist-esm/node/exporters/resilient-exporter.js.map +1 -0
- package/dist-esm/node/index.d.ts +13 -0
- package/dist-esm/node/index.d.ts.map +1 -0
- package/dist-esm/node/index.js +13 -0
- package/dist-esm/node/index.js.map +1 -0
- package/dist-esm/node/init.d.ts +97 -0
- package/dist-esm/node/init.d.ts.map +1 -0
- package/dist-esm/node/init.js +359 -0
- package/dist-esm/node/init.js.map +1 -0
- package/dist-esm/node/local-obs-mode.d.ts +17 -0
- package/dist-esm/node/local-obs-mode.d.ts.map +1 -0
- package/dist-esm/node/local-obs-mode.js +19 -0
- package/dist-esm/node/local-obs-mode.js.map +1 -0
- package/dist-esm/node/log-processor.d.ts +132 -0
- package/dist-esm/node/log-processor.d.ts.map +1 -0
- package/dist-esm/node/log-processor.js +389 -0
- package/dist-esm/node/log-processor.js.map +1 -0
- package/dist-esm/node/metrics-client.d.ts +88 -0
- package/dist-esm/node/metrics-client.d.ts.map +1 -0
- package/dist-esm/node/metrics-client.js +205 -0
- package/dist-esm/node/metrics-client.js.map +1 -0
- package/dist-esm/node/safe-logger.d.ts +55 -0
- package/dist-esm/node/safe-logger.d.ts.map +1 -0
- package/dist-esm/node/safe-logger.js +154 -0
- package/dist-esm/node/safe-logger.js.map +1 -0
- package/dist-esm/node/sanitizing-processor.d.ts +67 -0
- package/dist-esm/node/sanitizing-processor.d.ts.map +1 -0
- package/dist-esm/node/sanitizing-processor.js +163 -0
- package/dist-esm/node/sanitizing-processor.js.map +1 -0
- package/dist-esm/node/service-tracers.d.ts +52 -0
- package/dist-esm/node/service-tracers.d.ts.map +1 -0
- package/dist-esm/node/service-tracers.js +78 -0
- package/dist-esm/node/service-tracers.js.map +1 -0
- package/dist-esm/node/traced-socket.d.ts +120 -0
- package/dist-esm/node/traced-socket.d.ts.map +1 -0
- package/dist-esm/node/traced-socket.js +334 -0
- package/dist-esm/node/traced-socket.js.map +1 -0
- package/dist-esm/npm-registry/emitter.d.ts +310 -0
- package/dist-esm/npm-registry/emitter.d.ts.map +1 -0
- package/dist-esm/npm-registry/emitter.js +525 -0
- package/dist-esm/npm-registry/emitter.js.map +1 -0
- package/dist-esm/npm-registry/index.d.ts +12 -0
- package/dist-esm/npm-registry/index.d.ts.map +1 -0
- package/dist-esm/npm-registry/index.js +12 -0
- package/dist-esm/npm-registry/index.js.map +1 -0
- package/dist-esm/npm-registry/sanitize.d.ts +174 -0
- package/dist-esm/npm-registry/sanitize.d.ts.map +1 -0
- package/dist-esm/npm-registry/sanitize.js +331 -0
- package/dist-esm/npm-registry/sanitize.js.map +1 -0
- package/dist-esm/npm-registry/spans.d.ts +61 -0
- package/dist-esm/npm-registry/spans.d.ts.map +1 -0
- package/dist-esm/npm-registry/spans.js +86 -0
- package/dist-esm/npm-registry/spans.js.map +1 -0
- package/dist-esm/package.json +1 -0
- package/dist-esm/testing/in-memory-exporter.d.ts +179 -0
- package/dist-esm/testing/in-memory-exporter.d.ts.map +1 -0
- package/dist-esm/testing/in-memory-exporter.js +250 -0
- package/dist-esm/testing/in-memory-exporter.js.map +1 -0
- package/dist-esm/testing/index.d.ts +9 -0
- package/dist-esm/testing/index.d.ts.map +1 -0
- package/dist-esm/testing/index.js +9 -0
- package/dist-esm/testing/index.js.map +1 -0
- package/dist-esm/testing/metrics-capture.d.ts +29 -0
- package/dist-esm/testing/metrics-capture.d.ts.map +1 -0
- package/dist-esm/testing/metrics-capture.js +71 -0
- package/dist-esm/testing/metrics-capture.js.map +1 -0
- package/dist-esm/testing/test-init.d.ts +80 -0
- package/dist-esm/testing/test-init.d.ts.map +1 -0
- package/dist-esm/testing/test-init.js +137 -0
- package/dist-esm/testing/test-init.js.map +1 -0
- package/dist-esm/types/index.d.ts +84 -0
- package/dist-esm/types/index.d.ts.map +1 -0
- package/dist-esm/types/index.js +7 -0
- package/dist-esm/types/index.js.map +1 -0
- package/dist-esm/types/policy.d.ts +92 -0
- package/dist-esm/types/policy.d.ts.map +1 -0
- package/dist-esm/types/policy.js +122 -0
- package/dist-esm/types/policy.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NPM Registry Spans (APPS-4378)
|
|
4
|
+
*
|
|
5
|
+
* OTel-native `startActiveSpan` helpers for the four named npm-registry spans.
|
|
6
|
+
* Using the global tracer (`trace.getTracer`) means LLMObs interop is
|
|
7
|
+
* automatic: a span started inside an `@llmobs.decorate`'d context becomes a
|
|
8
|
+
* child of that task span (shared global tracer provider); outside any LLMObs
|
|
9
|
+
* context (server verify, CLI bootstrap) it is a root span.
|
|
10
|
+
*
|
|
11
|
+
* `org_id` rides on spans (per-trace context), never on a metric label. Raw
|
|
12
|
+
* registry hostnames are bucketed via {@link bucketNpmRegistryHost} before
|
|
13
|
+
* they reach a span attribute, matching the metric path — the one exception
|
|
14
|
+
* is the structured-log path, which keeps the raw host (see
|
|
15
|
+
* {@link auditNpmRegistryHost} in ./sanitize).
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.NPM_REGISTRY_SPAN_ATTR = exports.NPM_REGISTRY_SPAN = void 0;
|
|
19
|
+
exports.withNpmRegistrySpan = withNpmRegistrySpan;
|
|
20
|
+
exports.npmPackageUnpackedSizeBytes = npmPackageUnpackedSizeBytes;
|
|
21
|
+
const api_1 = require("@opentelemetry/api");
|
|
22
|
+
/** Instrumentation scope for every npm-registry span. */
|
|
23
|
+
const TRACER_NAME = "superblocks.npm-registry";
|
|
24
|
+
/** The four named spans (APPS-4378). */
|
|
25
|
+
exports.NPM_REGISTRY_SPAN = {
|
|
26
|
+
VERIFY: "npm_registry.verify",
|
|
27
|
+
LOOKUP_PACKAGE: "npm_registry.lookup_package",
|
|
28
|
+
PREPARE_FOR_PRIVATE_REGISTRY: "npm_registry.prepare_for_private_registry",
|
|
29
|
+
SYNC_HOME_NPMRC: "npm_registry.sync_home_npmrc",
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Canonical span-attribute keys, shared across the four spans so the
|
|
33
|
+
* dimension names never drift between call sites.
|
|
34
|
+
*/
|
|
35
|
+
exports.NPM_REGISTRY_SPAN_ATTR = {
|
|
36
|
+
ORG_ID: "org_id",
|
|
37
|
+
/** Bucketed (`public_npm | private | unknown`) — never the raw host. */
|
|
38
|
+
REGISTRY_HOST: "registry_host",
|
|
39
|
+
OUTCOME: "outcome",
|
|
40
|
+
DURATION_MS: "duration_ms",
|
|
41
|
+
/** Richer `NpmRegistryFetchResult.source` for drill-down. */
|
|
42
|
+
SOURCE: "source",
|
|
43
|
+
REGISTRY_CONFIGURED: "registry_configured",
|
|
44
|
+
/** Tri-valued: `true | false | "unknown"`. */
|
|
45
|
+
ALLOW_INSTALL_SCRIPTS: "allow_install_scripts",
|
|
46
|
+
PACKAGE_NAME_BUCKET: "package_name_bucket",
|
|
47
|
+
/** Span-attribute ONLY — raw byte counts are unbounded, never a metric label. */
|
|
48
|
+
PACKAGE_UNPACKED_SIZE_BYTES: "package_unpacked_size_bytes",
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Start an active npm-registry span over the global tracer, run `fn`, and
|
|
52
|
+
* end the span in `finally`. On throw, the error is recorded
|
|
53
|
+
* (`span.recordException`) and the span status set to ERROR before the throw
|
|
54
|
+
* propagates. `fn` receives the span so it can attach final attributes
|
|
55
|
+
* (outcome / duration) once the operation resolves.
|
|
56
|
+
*/
|
|
57
|
+
async function withNpmRegistrySpan(spanName, initialAttributes, fn) {
|
|
58
|
+
const tracer = api_1.trace.getTracer(TRACER_NAME);
|
|
59
|
+
return tracer.startActiveSpan(spanName, async (span) => {
|
|
60
|
+
if (Object.keys(initialAttributes).length > 0) {
|
|
61
|
+
span.setAttributes(initialAttributes);
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return await fn(span);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
// `recordException` accepts Error | string; narrow rather than cast.
|
|
68
|
+
span.recordException(err instanceof Error ? err : String(err));
|
|
69
|
+
span.setStatus({ code: api_1.SpanStatusCode.ERROR });
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
span.end();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Coerce a registry-reported `dist.unpackedSize` to a span-safe value: a
|
|
79
|
+
* finite, non-negative number, else `undefined`. A hostile or buggy registry
|
|
80
|
+
* cannot smuggle a non-numeric byte count onto the span through this guard.
|
|
81
|
+
*
|
|
82
|
+
* Callers MUST omit the attribute when this returns `undefined` rather than
|
|
83
|
+
* calling `setAttribute(key, undefined)` (some OTel exporters mishandle
|
|
84
|
+
* undefined values). The lookup call site guards with `if (size !== undefined)`.
|
|
85
|
+
*/
|
|
86
|
+
function npmPackageUnpackedSizeBytes(raw) {
|
|
87
|
+
return typeof raw === "number" && Number.isFinite(raw) && raw >= 0
|
|
88
|
+
? raw
|
|
89
|
+
: undefined;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=spans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../../src/npm-registry/spans.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA+CH,kDAqBC;AAWD,kEAIC;AAjFD,4CAK4B;AAE5B,yDAAyD;AACzD,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C,wCAAwC;AAC3B,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,qBAAqB;IAC7B,cAAc,EAAE,6BAA6B;IAC7C,4BAA4B,EAAE,2CAA2C;IACzE,eAAe,EAAE,8BAA8B;CACvC,CAAC;AAEX;;;GAGG;AACU,QAAA,sBAAsB,GAAG;IACpC,MAAM,EAAE,QAAQ;IAChB,wEAAwE;IACxE,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,6DAA6D;IAC7D,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,8CAA8C;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,iFAAiF;IACjF,2BAA2B,EAAE,6BAA6B;CAClD,CAAC;AAEX;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,iBAA6B,EAC7B,EAA8B;IAE9B,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,IAAI,CAAC,eAAe,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,2BAA2B,CAAC,GAAY;IACtD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChE,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Exporters for Testing
|
|
3
|
+
*
|
|
4
|
+
* These exporters capture telemetry data in memory for assertion in tests.
|
|
5
|
+
* No external connections are made.
|
|
6
|
+
*/
|
|
7
|
+
import { ExportResult } from "@opentelemetry/core";
|
|
8
|
+
import type { SpanExporter, ReadableSpan } from "@opentelemetry/sdk-trace-base";
|
|
9
|
+
/**
|
|
10
|
+
* In-memory span exporter for testing.
|
|
11
|
+
* Captures all exported spans for assertion.
|
|
12
|
+
*/
|
|
13
|
+
export declare class InMemorySpanExporter implements SpanExporter {
|
|
14
|
+
private spans;
|
|
15
|
+
private stopped;
|
|
16
|
+
/**
|
|
17
|
+
* Export spans to in-memory storage.
|
|
18
|
+
*/
|
|
19
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
20
|
+
/**
|
|
21
|
+
* Shutdown the exporter.
|
|
22
|
+
*/
|
|
23
|
+
shutdown(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Force flush (no-op for in-memory).
|
|
26
|
+
*/
|
|
27
|
+
forceFlush(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get all captured spans.
|
|
30
|
+
*/
|
|
31
|
+
getSpans(): ReadableSpan[];
|
|
32
|
+
/**
|
|
33
|
+
* Get the number of captured spans.
|
|
34
|
+
*/
|
|
35
|
+
getSpanCount(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Clear captured spans.
|
|
38
|
+
*/
|
|
39
|
+
reset(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Find spans by name.
|
|
42
|
+
*
|
|
43
|
+
* @param name - Span name to search for
|
|
44
|
+
* @returns Matching spans
|
|
45
|
+
*/
|
|
46
|
+
findSpansByName(name: string): ReadableSpan[];
|
|
47
|
+
/**
|
|
48
|
+
* Find spans by name pattern (regex).
|
|
49
|
+
*
|
|
50
|
+
* @param pattern - Regex pattern to match span names
|
|
51
|
+
* @returns Matching spans
|
|
52
|
+
*/
|
|
53
|
+
findSpansByPattern(pattern: RegExp): ReadableSpan[];
|
|
54
|
+
/**
|
|
55
|
+
* Find spans with a specific attribute value.
|
|
56
|
+
*
|
|
57
|
+
* @param key - Attribute key
|
|
58
|
+
* @param value - Attribute value (or regex for pattern matching)
|
|
59
|
+
* @returns Matching spans
|
|
60
|
+
*/
|
|
61
|
+
findSpansByAttribute(key: string, value: string | RegExp): ReadableSpan[];
|
|
62
|
+
/**
|
|
63
|
+
* Assert no spans have a specific attribute value.
|
|
64
|
+
* Useful for ensuring Tier 1 data doesn't leak.
|
|
65
|
+
*
|
|
66
|
+
* @param key - Attribute key
|
|
67
|
+
* @param value - Forbidden attribute value (or regex pattern)
|
|
68
|
+
* @throws Error if forbidden attribute is found
|
|
69
|
+
*/
|
|
70
|
+
assertNoAttribute(key: string, value: string | RegExp): void;
|
|
71
|
+
/**
|
|
72
|
+
* Assert all spans have a required attribute.
|
|
73
|
+
*
|
|
74
|
+
* @param key - Attribute key
|
|
75
|
+
* @throws Error if any span is missing the attribute
|
|
76
|
+
*/
|
|
77
|
+
assertAllHaveAttribute(key: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get span names for debugging.
|
|
80
|
+
*/
|
|
81
|
+
getSpanNames(): string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Metric data point captured by in-memory exporter.
|
|
85
|
+
*/
|
|
86
|
+
export interface CapturedMetric {
|
|
87
|
+
name: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
unit?: string;
|
|
90
|
+
type: "counter" | "gauge" | "histogram" | "observable";
|
|
91
|
+
dataPoints: Array<{
|
|
92
|
+
value: number;
|
|
93
|
+
attributes: Record<string, unknown>;
|
|
94
|
+
timestamp: number;
|
|
95
|
+
}>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* In-memory metric exporter for testing.
|
|
99
|
+
*/
|
|
100
|
+
export declare class InMemoryMetricExporter {
|
|
101
|
+
private metrics;
|
|
102
|
+
/**
|
|
103
|
+
* Export metrics to in-memory storage.
|
|
104
|
+
*/
|
|
105
|
+
export(metrics: CapturedMetric[]): void;
|
|
106
|
+
/**
|
|
107
|
+
* Get all captured metrics.
|
|
108
|
+
*/
|
|
109
|
+
getMetrics(): CapturedMetric[];
|
|
110
|
+
/**
|
|
111
|
+
* Find metrics by name.
|
|
112
|
+
*
|
|
113
|
+
* @param name - Metric name
|
|
114
|
+
* @returns Matching metrics
|
|
115
|
+
*/
|
|
116
|
+
findMetricsByName(name: string): CapturedMetric[];
|
|
117
|
+
/**
|
|
118
|
+
* Clear captured metrics.
|
|
119
|
+
*/
|
|
120
|
+
reset(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Assert no metrics have a specific label value.
|
|
123
|
+
*
|
|
124
|
+
* @param labelKey - Label key
|
|
125
|
+
* @param value - Forbidden value
|
|
126
|
+
* @throws Error if forbidden label is found
|
|
127
|
+
*/
|
|
128
|
+
assertNoLabel(labelKey: string, value: string | RegExp): void;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Log record captured by in-memory exporter.
|
|
132
|
+
*/
|
|
133
|
+
export interface CapturedLogRecord {
|
|
134
|
+
timestamp: number;
|
|
135
|
+
severityNumber: number;
|
|
136
|
+
severityText?: string;
|
|
137
|
+
body?: unknown;
|
|
138
|
+
attributes: Record<string, unknown>;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* In-memory log exporter for testing.
|
|
142
|
+
*/
|
|
143
|
+
export declare class InMemoryLogExporter {
|
|
144
|
+
private logs;
|
|
145
|
+
/**
|
|
146
|
+
* Export logs to in-memory storage.
|
|
147
|
+
*/
|
|
148
|
+
export(logs: CapturedLogRecord[]): void;
|
|
149
|
+
/**
|
|
150
|
+
* Get all captured logs.
|
|
151
|
+
*/
|
|
152
|
+
getLogs(): CapturedLogRecord[];
|
|
153
|
+
/**
|
|
154
|
+
* Find logs by severity.
|
|
155
|
+
*
|
|
156
|
+
* @param severityNumber - Severity level (e.g., 9 for INFO, 13 for WARN, 17 for ERROR)
|
|
157
|
+
* @returns Matching logs
|
|
158
|
+
*/
|
|
159
|
+
findLogsBySeverity(severityNumber: number): CapturedLogRecord[];
|
|
160
|
+
/**
|
|
161
|
+
* Find logs containing text.
|
|
162
|
+
*
|
|
163
|
+
* @param text - Text to search for in log body
|
|
164
|
+
* @returns Matching logs
|
|
165
|
+
*/
|
|
166
|
+
findLogsContaining(text: string | RegExp): CapturedLogRecord[];
|
|
167
|
+
/**
|
|
168
|
+
* Clear captured logs.
|
|
169
|
+
*/
|
|
170
|
+
reset(): void;
|
|
171
|
+
/**
|
|
172
|
+
* Assert no logs contain sensitive data.
|
|
173
|
+
*
|
|
174
|
+
* @param pattern - Pattern to check for (forbidden content)
|
|
175
|
+
* @throws Error if forbidden content is found
|
|
176
|
+
*/
|
|
177
|
+
assertNoLogContains(pattern: RegExp): void;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=in-memory-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-exporter.d.ts","sourceRoot":"","sources":["../../src/testing/in-memory-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-Memory Exporters for Testing
|
|
4
|
+
*
|
|
5
|
+
* These exporters capture telemetry data in memory for assertion in tests.
|
|
6
|
+
* No external connections are made.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.InMemoryLogExporter = exports.InMemoryMetricExporter = exports.InMemorySpanExporter = void 0;
|
|
10
|
+
const core_1 = require("@opentelemetry/core");
|
|
11
|
+
/**
|
|
12
|
+
* In-memory span exporter for testing.
|
|
13
|
+
* Captures all exported spans for assertion.
|
|
14
|
+
*/
|
|
15
|
+
class InMemorySpanExporter {
|
|
16
|
+
spans = [];
|
|
17
|
+
stopped = false;
|
|
18
|
+
/**
|
|
19
|
+
* Export spans to in-memory storage.
|
|
20
|
+
*/
|
|
21
|
+
export(spans, resultCallback) {
|
|
22
|
+
if (this.stopped) {
|
|
23
|
+
resultCallback({ code: core_1.ExportResultCode.FAILED });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.spans.push(...spans);
|
|
27
|
+
resultCallback({ code: core_1.ExportResultCode.SUCCESS });
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shutdown the exporter.
|
|
31
|
+
*/
|
|
32
|
+
shutdown() {
|
|
33
|
+
this.stopped = true;
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Force flush (no-op for in-memory).
|
|
38
|
+
*/
|
|
39
|
+
forceFlush() {
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all captured spans.
|
|
44
|
+
*/
|
|
45
|
+
getSpans() {
|
|
46
|
+
return [...this.spans];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the number of captured spans.
|
|
50
|
+
*/
|
|
51
|
+
getSpanCount() {
|
|
52
|
+
return this.spans.length;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Clear captured spans.
|
|
56
|
+
*/
|
|
57
|
+
reset() {
|
|
58
|
+
this.spans = [];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Find spans by name.
|
|
62
|
+
*
|
|
63
|
+
* @param name - Span name to search for
|
|
64
|
+
* @returns Matching spans
|
|
65
|
+
*/
|
|
66
|
+
findSpansByName(name) {
|
|
67
|
+
return this.spans.filter((s) => s.name === name);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Find spans by name pattern (regex).
|
|
71
|
+
*
|
|
72
|
+
* @param pattern - Regex pattern to match span names
|
|
73
|
+
* @returns Matching spans
|
|
74
|
+
*/
|
|
75
|
+
findSpansByPattern(pattern) {
|
|
76
|
+
return this.spans.filter((s) => pattern.test(s.name));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Find spans with a specific attribute value.
|
|
80
|
+
*
|
|
81
|
+
* @param key - Attribute key
|
|
82
|
+
* @param value - Attribute value (or regex for pattern matching)
|
|
83
|
+
* @returns Matching spans
|
|
84
|
+
*/
|
|
85
|
+
findSpansByAttribute(key, value) {
|
|
86
|
+
return this.spans.filter((s) => {
|
|
87
|
+
const attr = s.attributes[key];
|
|
88
|
+
if (attr === undefined)
|
|
89
|
+
return false;
|
|
90
|
+
if (value instanceof RegExp) {
|
|
91
|
+
return value.test(String(attr));
|
|
92
|
+
}
|
|
93
|
+
return attr === value;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Assert no spans have a specific attribute value.
|
|
98
|
+
* Useful for ensuring Tier 1 data doesn't leak.
|
|
99
|
+
*
|
|
100
|
+
* @param key - Attribute key
|
|
101
|
+
* @param value - Forbidden attribute value (or regex pattern)
|
|
102
|
+
* @throws Error if forbidden attribute is found
|
|
103
|
+
*/
|
|
104
|
+
assertNoAttribute(key, value) {
|
|
105
|
+
for (const span of this.spans) {
|
|
106
|
+
const attr = span.attributes[key];
|
|
107
|
+
if (attr === undefined)
|
|
108
|
+
continue;
|
|
109
|
+
const matches = value instanceof RegExp ? value.test(String(attr)) : attr === value;
|
|
110
|
+
if (matches) {
|
|
111
|
+
throw new Error(`Found forbidden attribute ${key}=${String(attr)} on span "${span.name}"`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Assert all spans have a required attribute.
|
|
117
|
+
*
|
|
118
|
+
* @param key - Attribute key
|
|
119
|
+
* @throws Error if any span is missing the attribute
|
|
120
|
+
*/
|
|
121
|
+
assertAllHaveAttribute(key) {
|
|
122
|
+
for (const span of this.spans) {
|
|
123
|
+
if (span.attributes[key] === undefined) {
|
|
124
|
+
throw new Error(`Span "${span.name}" is missing required attribute "${key}"`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get span names for debugging.
|
|
130
|
+
*/
|
|
131
|
+
getSpanNames() {
|
|
132
|
+
return this.spans.map((s) => s.name);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.InMemorySpanExporter = InMemorySpanExporter;
|
|
136
|
+
/**
|
|
137
|
+
* In-memory metric exporter for testing.
|
|
138
|
+
*/
|
|
139
|
+
class InMemoryMetricExporter {
|
|
140
|
+
metrics = [];
|
|
141
|
+
/**
|
|
142
|
+
* Export metrics to in-memory storage.
|
|
143
|
+
*/
|
|
144
|
+
export(metrics) {
|
|
145
|
+
this.metrics.push(...metrics);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get all captured metrics.
|
|
149
|
+
*/
|
|
150
|
+
getMetrics() {
|
|
151
|
+
return [...this.metrics];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Find metrics by name.
|
|
155
|
+
*
|
|
156
|
+
* @param name - Metric name
|
|
157
|
+
* @returns Matching metrics
|
|
158
|
+
*/
|
|
159
|
+
findMetricsByName(name) {
|
|
160
|
+
return this.metrics.filter((m) => m.name === name);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Clear captured metrics.
|
|
164
|
+
*/
|
|
165
|
+
reset() {
|
|
166
|
+
this.metrics = [];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Assert no metrics have a specific label value.
|
|
170
|
+
*
|
|
171
|
+
* @param labelKey - Label key
|
|
172
|
+
* @param value - Forbidden value
|
|
173
|
+
* @throws Error if forbidden label is found
|
|
174
|
+
*/
|
|
175
|
+
assertNoLabel(labelKey, value) {
|
|
176
|
+
for (const metric of this.metrics) {
|
|
177
|
+
for (const dp of metric.dataPoints) {
|
|
178
|
+
const label = dp.attributes[labelKey];
|
|
179
|
+
if (label === undefined)
|
|
180
|
+
continue;
|
|
181
|
+
const matches = value instanceof RegExp ? value.test(String(label)) : label === value;
|
|
182
|
+
if (matches) {
|
|
183
|
+
throw new Error(`Found forbidden label ${labelKey}=${String(label)} on metric "${metric.name}"`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.InMemoryMetricExporter = InMemoryMetricExporter;
|
|
190
|
+
/**
|
|
191
|
+
* In-memory log exporter for testing.
|
|
192
|
+
*/
|
|
193
|
+
class InMemoryLogExporter {
|
|
194
|
+
logs = [];
|
|
195
|
+
/**
|
|
196
|
+
* Export logs to in-memory storage.
|
|
197
|
+
*/
|
|
198
|
+
export(logs) {
|
|
199
|
+
this.logs.push(...logs);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get all captured logs.
|
|
203
|
+
*/
|
|
204
|
+
getLogs() {
|
|
205
|
+
return [...this.logs];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Find logs by severity.
|
|
209
|
+
*
|
|
210
|
+
* @param severityNumber - Severity level (e.g., 9 for INFO, 13 for WARN, 17 for ERROR)
|
|
211
|
+
* @returns Matching logs
|
|
212
|
+
*/
|
|
213
|
+
findLogsBySeverity(severityNumber) {
|
|
214
|
+
return this.logs.filter((l) => l.severityNumber === severityNumber);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Find logs containing text.
|
|
218
|
+
*
|
|
219
|
+
* @param text - Text to search for in log body
|
|
220
|
+
* @returns Matching logs
|
|
221
|
+
*/
|
|
222
|
+
findLogsContaining(text) {
|
|
223
|
+
return this.logs.filter((l) => {
|
|
224
|
+
if (l.body === undefined)
|
|
225
|
+
return false;
|
|
226
|
+
const bodyStr = String(l.body);
|
|
227
|
+
return text instanceof RegExp
|
|
228
|
+
? text.test(bodyStr)
|
|
229
|
+
: bodyStr.includes(text);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Clear captured logs.
|
|
234
|
+
*/
|
|
235
|
+
reset() {
|
|
236
|
+
this.logs = [];
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Assert no logs contain sensitive data.
|
|
240
|
+
*
|
|
241
|
+
* @param pattern - Pattern to check for (forbidden content)
|
|
242
|
+
* @throws Error if forbidden content is found
|
|
243
|
+
*/
|
|
244
|
+
assertNoLogContains(pattern) {
|
|
245
|
+
for (const log of this.logs) {
|
|
246
|
+
if (log.body === undefined)
|
|
247
|
+
continue;
|
|
248
|
+
const bodyStr = String(log.body);
|
|
249
|
+
if (pattern.test(bodyStr)) {
|
|
250
|
+
throw new Error(`Found forbidden content in log: ${bodyStr.slice(0, 100)}...`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
exports.InMemoryLogExporter = InMemoryLogExporter;
|
|
256
|
+
//# sourceMappingURL=in-memory-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-exporter.js","sourceRoot":"","sources":["../../src/testing/in-memory-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing Utilities
|
|
3
|
+
*
|
|
4
|
+
* In-memory exporters and test helpers for telemetry assertions.
|
|
5
|
+
*/
|
|
6
|
+
export { InMemorySpanExporter, InMemoryMetricExporter, InMemoryLogExporter, type CapturedMetric, type CapturedLogRecord, } from "./in-memory-exporter.js";
|
|
7
|
+
export { initTestTelemetry, getTestTelemetryInstance, resetTestTelemetry, getTestTracer, withTestSpan, type TestTelemetryInstance, } from "./test-init.js";
|
|
8
|
+
export { captureMetrics, type CapturedPoint, type MetricsCapture, } from "./metrics-capture.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Testing Utilities
|
|
4
|
+
*
|
|
5
|
+
* In-memory exporters and test helpers for telemetry assertions.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.captureMetrics = exports.withTestSpan = exports.getTestTracer = exports.resetTestTelemetry = exports.getTestTelemetryInstance = exports.initTestTelemetry = exports.InMemoryLogExporter = exports.InMemoryMetricExporter = exports.InMemorySpanExporter = void 0;
|
|
9
|
+
var in_memory_exporter_js_1 = require("./in-memory-exporter.js");
|
|
10
|
+
Object.defineProperty(exports, "InMemorySpanExporter", { enumerable: true, get: function () { return in_memory_exporter_js_1.InMemorySpanExporter; } });
|
|
11
|
+
Object.defineProperty(exports, "InMemoryMetricExporter", { enumerable: true, get: function () { return in_memory_exporter_js_1.InMemoryMetricExporter; } });
|
|
12
|
+
Object.defineProperty(exports, "InMemoryLogExporter", { enumerable: true, get: function () { return in_memory_exporter_js_1.InMemoryLogExporter; } });
|
|
13
|
+
var test_init_js_1 = require("./test-init.js");
|
|
14
|
+
Object.defineProperty(exports, "initTestTelemetry", { enumerable: true, get: function () { return test_init_js_1.initTestTelemetry; } });
|
|
15
|
+
Object.defineProperty(exports, "getTestTelemetryInstance", { enumerable: true, get: function () { return test_init_js_1.getTestTelemetryInstance; } });
|
|
16
|
+
Object.defineProperty(exports, "resetTestTelemetry", { enumerable: true, get: function () { return test_init_js_1.resetTestTelemetry; } });
|
|
17
|
+
Object.defineProperty(exports, "getTestTracer", { enumerable: true, get: function () { return test_init_js_1.getTestTracer; } });
|
|
18
|
+
Object.defineProperty(exports, "withTestSpan", { enumerable: true, get: function () { return test_init_js_1.withTestSpan; } });
|
|
19
|
+
var metrics_capture_js_1 = require("./metrics-capture.js");
|
|
20
|
+
Object.defineProperty(exports, "captureMetrics", { enumerable: true, get: function () { return metrics_capture_js_1.captureMetrics; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iEAMiC;AAL/B,6HAAA,oBAAoB,OAAA;AACpB,+HAAA,sBAAsB,OAAA;AACtB,4HAAA,mBAAmB,OAAA;AAKrB,+CAOwB;AANtB,iHAAA,iBAAiB,OAAA;AACjB,wHAAA,wBAAwB,OAAA;AACxB,kHAAA,kBAAkB,OAAA;AAClB,6GAAA,aAAa,OAAA;AACb,4GAAA,YAAY,OAAA;AAId,2DAI8B;AAH5B,oHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory metric capture for tests.
|
|
3
|
+
*
|
|
4
|
+
* `initTestTelemetry` registers only a tracer provider, so instruments have
|
|
5
|
+
* nowhere to record and its `metricExporter` always reads back empty. This
|
|
6
|
+
* installs a real SDK MeterProvider as the global and flattens what it
|
|
7
|
+
* collects into (name, attributes, value) triples.
|
|
8
|
+
*
|
|
9
|
+
* Installing a provider also re-binds instruments written against the lazy
|
|
10
|
+
* pattern, so a module imported before the harness ran still records.
|
|
11
|
+
*/
|
|
12
|
+
export interface CapturedPoint {
|
|
13
|
+
attributes: Record<string, unknown>;
|
|
14
|
+
/** Histogram data points only. */
|
|
15
|
+
count?: number;
|
|
16
|
+
/** Histogram data points only. */
|
|
17
|
+
sum?: number;
|
|
18
|
+
/** Counter and gauge data points only. */
|
|
19
|
+
value?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MetricsCapture {
|
|
22
|
+
/** Every data point recorded since the last read. */
|
|
23
|
+
collect: () => Promise<CapturedPoint[]>;
|
|
24
|
+
/** Data points for one metric name, recorded since the last read. */
|
|
25
|
+
pointsFor: (metricName: string) => Promise<CapturedPoint[]>;
|
|
26
|
+
shutdown: () => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export declare function captureMetrics(): MetricsCapture;
|
|
29
|
+
//# sourceMappingURL=metrics-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-capture.d.ts","sourceRoot":"","sources":["../../src/testing/metrics-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACxC,qEAAqE;IACrE,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5D,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,cAAc,IAAI,cAAc,CA+D/C"}
|