@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,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-memory metric capture for tests.
|
|
4
|
+
*
|
|
5
|
+
* `initTestTelemetry` registers only a tracer provider, so instruments have
|
|
6
|
+
* nowhere to record and its `metricExporter` always reads back empty. This
|
|
7
|
+
* installs a real SDK MeterProvider as the global and flattens what it
|
|
8
|
+
* collects into (name, attributes, value) triples.
|
|
9
|
+
*
|
|
10
|
+
* Installing a provider also re-binds instruments written against the lazy
|
|
11
|
+
* pattern, so a module imported before the harness ran still records.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.captureMetrics = captureMetrics;
|
|
15
|
+
const api_1 = require("@opentelemetry/api");
|
|
16
|
+
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
17
|
+
function captureMetrics() {
|
|
18
|
+
const exporter = new sdk_metrics_1.InMemoryMetricExporter(sdk_metrics_1.AggregationTemporality.DELTA);
|
|
19
|
+
const reader = new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
20
|
+
exporter,
|
|
21
|
+
exportIntervalMillis: 60_000,
|
|
22
|
+
});
|
|
23
|
+
const provider = new sdk_metrics_1.MeterProvider({ readers: [reader] });
|
|
24
|
+
api_1.metrics.disable();
|
|
25
|
+
api_1.metrics.setGlobalMeterProvider(provider);
|
|
26
|
+
const collectNamed = async () => {
|
|
27
|
+
await provider.forceFlush();
|
|
28
|
+
const collected = [];
|
|
29
|
+
for (const resourceMetric of exporter.getMetrics()) {
|
|
30
|
+
for (const scopeMetric of resourceMetric.scopeMetrics) {
|
|
31
|
+
for (const metric of scopeMetric.metrics) {
|
|
32
|
+
const name = metric.descriptor.name;
|
|
33
|
+
// Narrow on the metric, not the point: `dataPoints` is only typed
|
|
34
|
+
// once `dataPointType` has been checked.
|
|
35
|
+
if (metric.dataPointType === sdk_metrics_1.DataPointType.HISTOGRAM) {
|
|
36
|
+
for (const point of metric.dataPoints) {
|
|
37
|
+
collected.push({
|
|
38
|
+
attributes: point.attributes,
|
|
39
|
+
count: point.value.count,
|
|
40
|
+
name,
|
|
41
|
+
...(point.value.sum === undefined
|
|
42
|
+
? {}
|
|
43
|
+
: { sum: point.value.sum }),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (metric.dataPointType === sdk_metrics_1.DataPointType.SUM ||
|
|
48
|
+
metric.dataPointType === sdk_metrics_1.DataPointType.GAUGE) {
|
|
49
|
+
for (const point of metric.dataPoints) {
|
|
50
|
+
collected.push({
|
|
51
|
+
attributes: point.attributes,
|
|
52
|
+
name,
|
|
53
|
+
value: point.value,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exporter.reset();
|
|
61
|
+
return collected;
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
collect: async () => (await collectNamed()).map(({ name: _name, ...point }) => point),
|
|
65
|
+
pointsFor: async (metricName) => (await collectNamed())
|
|
66
|
+
.filter((point) => point.name === metricName)
|
|
67
|
+
.map(({ name: _name, ...point }) => point),
|
|
68
|
+
shutdown: async () => {
|
|
69
|
+
await provider.shutdown();
|
|
70
|
+
api_1.metrics.disable();
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=metrics-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-capture.js","sourceRoot":"","sources":["../../src/testing/metrics-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Telemetry Initialization
|
|
3
|
+
*
|
|
4
|
+
* Initialize telemetry for testing with in-memory exporters.
|
|
5
|
+
* No external connections are made.
|
|
6
|
+
*/
|
|
7
|
+
import { trace } from "@opentelemetry/api";
|
|
8
|
+
import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js";
|
|
9
|
+
import type { BaseTelemetryConfig } from "../types/index.js";
|
|
10
|
+
import { InMemorySpanExporter, InMemoryMetricExporter, InMemoryLogExporter } from "./in-memory-exporter.js";
|
|
11
|
+
/**
|
|
12
|
+
* Test telemetry instance with in-memory exporters.
|
|
13
|
+
*/
|
|
14
|
+
export interface TestTelemetryInstance {
|
|
15
|
+
/** In-memory span exporter */
|
|
16
|
+
spanExporter: InMemorySpanExporter;
|
|
17
|
+
/** In-memory metric exporter */
|
|
18
|
+
metricExporter: InMemoryMetricExporter;
|
|
19
|
+
/** In-memory log exporter */
|
|
20
|
+
logExporter: InMemoryLogExporter;
|
|
21
|
+
/** Policy evaluator */
|
|
22
|
+
policyEvaluator: TelemetryPolicyEvaluator;
|
|
23
|
+
/** Reset all exporters (call in beforeEach) */
|
|
24
|
+
reset: () => void;
|
|
25
|
+
/** Shutdown (call in afterAll) */
|
|
26
|
+
shutdown: () => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Initialize telemetry for testing.
|
|
30
|
+
*
|
|
31
|
+
* Uses in-memory exporters, no external connections.
|
|
32
|
+
* Call once per test file, use reset() in beforeEach.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Optional test configuration
|
|
35
|
+
* @returns Test telemetry instance
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
|
|
40
|
+
*
|
|
41
|
+
* describe('MyService', () => {
|
|
42
|
+
* const { spanExporter, reset } = initTestTelemetry();
|
|
43
|
+
*
|
|
44
|
+
* beforeEach(() => reset());
|
|
45
|
+
*
|
|
46
|
+
* it('creates expected spans', async () => {
|
|
47
|
+
* // ... test code ...
|
|
48
|
+
* expect(spanExporter.getSpans()).toHaveLength(1);
|
|
49
|
+
* });
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function initTestTelemetry(config?: Partial<BaseTelemetryConfig>): TestTelemetryInstance;
|
|
54
|
+
/**
|
|
55
|
+
* Get the test telemetry instance.
|
|
56
|
+
*
|
|
57
|
+
* @throws Error if not initialized
|
|
58
|
+
*/
|
|
59
|
+
export declare function getTestTelemetryInstance(): TestTelemetryInstance;
|
|
60
|
+
/**
|
|
61
|
+
* Reset the test telemetry (for cleanup between test files).
|
|
62
|
+
*/
|
|
63
|
+
export declare function resetTestTelemetry(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Get a tracer for tests.
|
|
66
|
+
*
|
|
67
|
+
* @param name - Tracer name
|
|
68
|
+
* @returns Tracer instance
|
|
69
|
+
*/
|
|
70
|
+
export declare function getTestTracer(name?: string): ReturnType<typeof trace.getTracer>;
|
|
71
|
+
/**
|
|
72
|
+
* Run a function within a test span.
|
|
73
|
+
* Useful for testing span creation.
|
|
74
|
+
*
|
|
75
|
+
* @param name - Span name
|
|
76
|
+
* @param fn - Function to run
|
|
77
|
+
* @returns Function result
|
|
78
|
+
*/
|
|
79
|
+
export declare function withTestSpan<T>(name: string, fn: () => Promise<T> | T): Promise<T>;
|
|
80
|
+
//# sourceMappingURL=test-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-init.d.ts","sourceRoot":"","sources":["../../src/testing/test-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,YAAY,EAAE,oBAAoB,CAAC;IACnC,gCAAgC;IAChC,cAAc,EAAE,sBAAsB,CAAC;IACvC,6BAA6B;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,uBAAuB;IACvB,eAAe,EAAE,wBAAwB,CAAC;IAC1C,+CAA+C;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAeD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,qBAAqB,CA2CvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAOhE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIxD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,SAAS,GACZ,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAEpC;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CASZ"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test Telemetry Initialization
|
|
4
|
+
*
|
|
5
|
+
* Initialize telemetry for testing with in-memory exporters.
|
|
6
|
+
* No external connections are made.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.initTestTelemetry = initTestTelemetry;
|
|
10
|
+
exports.getTestTelemetryInstance = getTestTelemetryInstance;
|
|
11
|
+
exports.resetTestTelemetry = resetTestTelemetry;
|
|
12
|
+
exports.getTestTracer = getTestTracer;
|
|
13
|
+
exports.withTestSpan = withTestSpan;
|
|
14
|
+
const api_1 = require("@opentelemetry/api");
|
|
15
|
+
const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
|
|
16
|
+
const core_1 = require("@opentelemetry/core");
|
|
17
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
18
|
+
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
19
|
+
const policy_evaluator_js_1 = require("../common/policy-evaluator.js");
|
|
20
|
+
const resource_js_1 = require("../common/resource.js");
|
|
21
|
+
const policy_js_1 = require("../types/policy.js");
|
|
22
|
+
const in_memory_exporter_js_1 = require("./in-memory-exporter.js");
|
|
23
|
+
// Singleton for tests
|
|
24
|
+
let testInstance;
|
|
25
|
+
let tracerProvider;
|
|
26
|
+
/**
|
|
27
|
+
* Default test configuration.
|
|
28
|
+
*/
|
|
29
|
+
const DEFAULT_TEST_CONFIG = {
|
|
30
|
+
serviceName: "test-service",
|
|
31
|
+
serviceVersion: "0.0.0-test",
|
|
32
|
+
environment: "test",
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Initialize telemetry for testing.
|
|
36
|
+
*
|
|
37
|
+
* Uses in-memory exporters, no external connections.
|
|
38
|
+
* Call once per test file, use reset() in beforeEach.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Optional test configuration
|
|
41
|
+
* @returns Test telemetry instance
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
|
|
46
|
+
*
|
|
47
|
+
* describe('MyService', () => {
|
|
48
|
+
* const { spanExporter, reset } = initTestTelemetry();
|
|
49
|
+
*
|
|
50
|
+
* beforeEach(() => reset());
|
|
51
|
+
*
|
|
52
|
+
* it('creates expected spans', async () => {
|
|
53
|
+
* // ... test code ...
|
|
54
|
+
* expect(spanExporter.getSpans()).toHaveLength(1);
|
|
55
|
+
* });
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
function initTestTelemetry(config) {
|
|
60
|
+
if (testInstance) {
|
|
61
|
+
return testInstance;
|
|
62
|
+
}
|
|
63
|
+
const mergedConfig = { ...DEFAULT_TEST_CONFIG, ...config };
|
|
64
|
+
const resource = (0, resource_js_1.buildResource)(mergedConfig);
|
|
65
|
+
const spanExporter = new in_memory_exporter_js_1.InMemorySpanExporter();
|
|
66
|
+
const metricExporter = new in_memory_exporter_js_1.InMemoryMetricExporter();
|
|
67
|
+
const logExporter = new in_memory_exporter_js_1.InMemoryLogExporter();
|
|
68
|
+
const policyEvaluator = new policy_evaluator_js_1.TelemetryPolicyEvaluator(policy_js_1.CLOUD_DEFAULT_POLICY);
|
|
69
|
+
// Create provider with span processors in constructor (OTEL v2.x API)
|
|
70
|
+
tracerProvider = new sdk_trace_node_1.NodeTracerProvider({
|
|
71
|
+
resource,
|
|
72
|
+
spanProcessors: [new sdk_trace_base_1.SimpleSpanProcessor(spanExporter)],
|
|
73
|
+
});
|
|
74
|
+
// Register the provider
|
|
75
|
+
tracerProvider.register({
|
|
76
|
+
propagator: new core_1.W3CTraceContextPropagator(),
|
|
77
|
+
contextManager: new context_async_hooks_1.AsyncLocalStorageContextManager(),
|
|
78
|
+
});
|
|
79
|
+
testInstance = {
|
|
80
|
+
spanExporter,
|
|
81
|
+
metricExporter,
|
|
82
|
+
logExporter,
|
|
83
|
+
policyEvaluator,
|
|
84
|
+
reset: () => {
|
|
85
|
+
spanExporter.reset();
|
|
86
|
+
metricExporter.reset();
|
|
87
|
+
logExporter.reset();
|
|
88
|
+
},
|
|
89
|
+
shutdown: async () => {
|
|
90
|
+
await tracerProvider?.shutdown();
|
|
91
|
+
testInstance = undefined;
|
|
92
|
+
tracerProvider = undefined;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
return testInstance;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the test telemetry instance.
|
|
99
|
+
*
|
|
100
|
+
* @throws Error if not initialized
|
|
101
|
+
*/
|
|
102
|
+
function getTestTelemetryInstance() {
|
|
103
|
+
if (!testInstance) {
|
|
104
|
+
throw new Error("[TestTelemetry] Not initialized. Call initTestTelemetry() first.");
|
|
105
|
+
}
|
|
106
|
+
return testInstance;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Reset the test telemetry (for cleanup between test files).
|
|
110
|
+
*/
|
|
111
|
+
async function resetTestTelemetry() {
|
|
112
|
+
if (testInstance) {
|
|
113
|
+
await testInstance.shutdown();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get a tracer for tests.
|
|
118
|
+
*
|
|
119
|
+
* @param name - Tracer name
|
|
120
|
+
* @returns Tracer instance
|
|
121
|
+
*/
|
|
122
|
+
function getTestTracer(name = "test") {
|
|
123
|
+
return api_1.trace.getTracer(name);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Run a function within a test span.
|
|
127
|
+
* Useful for testing span creation.
|
|
128
|
+
*
|
|
129
|
+
* @param name - Span name
|
|
130
|
+
* @param fn - Function to run
|
|
131
|
+
* @returns Function result
|
|
132
|
+
*/
|
|
133
|
+
async function withTestSpan(name, fn) {
|
|
134
|
+
const tracer = getTestTracer();
|
|
135
|
+
return tracer.startActiveSpan(name, async (span) => {
|
|
136
|
+
try {
|
|
137
|
+
return await fn();
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
span.end();
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=test-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-init.js","sourceRoot":"","sources":["../../src/testing/test-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Types
|
|
3
|
+
*
|
|
4
|
+
* Re-exports policy types and config interfaces.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./policy.js";
|
|
7
|
+
/**
|
|
8
|
+
* Base configuration for telemetry initialization.
|
|
9
|
+
*/
|
|
10
|
+
export interface BaseTelemetryConfig {
|
|
11
|
+
/** Service name (e.g., 'superblocks-server') */
|
|
12
|
+
serviceName: string;
|
|
13
|
+
/** Service version (e.g., '1.0.0') */
|
|
14
|
+
serviceVersion: string;
|
|
15
|
+
/** Deployment environment (e.g., 'production', 'staging', 'development') */
|
|
16
|
+
environment: string;
|
|
17
|
+
/** Additional resource attributes */
|
|
18
|
+
resourceAttributes?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Configuration for keyed HMAC hashing of Tier 2 span attributes (e.g. organization-id).
|
|
22
|
+
* When not provided, hashed attributes are redacted instead of hashed.
|
|
23
|
+
*/
|
|
24
|
+
export interface TraceSanitizerHashConfig {
|
|
25
|
+
secretKey: Buffer;
|
|
26
|
+
salt: string;
|
|
27
|
+
algorithm: "sha256" | "sha384" | "sha512";
|
|
28
|
+
outputLengthBytes: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Node.js specific telemetry configuration.
|
|
32
|
+
*/
|
|
33
|
+
export interface NodeTelemetryConfig extends BaseTelemetryConfig {
|
|
34
|
+
/** OTLP collector URL (e.g., http://localhost:4318) */
|
|
35
|
+
otlpUrl?: string;
|
|
36
|
+
/** Headers sent to each OTLP exporter, such as proxy authentication. */
|
|
37
|
+
otlpHeaders?: Record<string, string>;
|
|
38
|
+
/** OpenTelemetry instrumentations to enable */
|
|
39
|
+
instrumentations?: unknown[];
|
|
40
|
+
/** Whether to enable metrics collection */
|
|
41
|
+
metricsEnabled?: boolean;
|
|
42
|
+
/** Whether to enable log collection */
|
|
43
|
+
logsEnabled?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Optional hash config for Tier 2 trace sanitization (organization-id, session.id, etc.).
|
|
46
|
+
* When omitted, hashed attributes are redacted. For cloud-prem, supply from secrets.
|
|
47
|
+
*/
|
|
48
|
+
traceSanitizerHashConfig?: TraceSanitizerHashConfig | null;
|
|
49
|
+
/**
|
|
50
|
+
* Optional structured logger (e.g. safe logger) for telemetry internal messages
|
|
51
|
+
* (e.g. init, span export failures). When set, logs are structured and ingested into Datadog.
|
|
52
|
+
*/
|
|
53
|
+
logger?: {
|
|
54
|
+
error?(obj: object, msg?: string): void;
|
|
55
|
+
error?(msg: string): void;
|
|
56
|
+
info?(obj: object, msg?: string): void;
|
|
57
|
+
info?(msg: string): void;
|
|
58
|
+
warn(obj: object, msg?: string): void;
|
|
59
|
+
warn(msg: string): void;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Optional provider for attributes that are only known after telemetry is
|
|
63
|
+
* initialized (e.g. the application/user/org identity a dev-server learns at
|
|
64
|
+
* connect time, when the SDK must already be running to instrument startup).
|
|
65
|
+
* Called on every span start and every log-record emit and merged onto the
|
|
66
|
+
* signal, so late-known identity lands on spans and logs without
|
|
67
|
+
* re-initializing the SDK. Metrics deliberately do not pick it up (identity
|
|
68
|
+
* would multiply time-series cardinality). Omit for a static resource only;
|
|
69
|
+
* the server and other services do not set it.
|
|
70
|
+
*/
|
|
71
|
+
dynamicAttributes?: () => Record<string, string>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Browser specific telemetry configuration.
|
|
75
|
+
*/
|
|
76
|
+
export interface BrowserTelemetryConfig extends BaseTelemetryConfig {
|
|
77
|
+
/** OTLP base URL (e.g. "http://localhost:4318"). Signal-specific paths (/v1/traces, /v1/metrics, /v1/logs) are appended automatically. */
|
|
78
|
+
otlpUrl: string;
|
|
79
|
+
/** URL patterns to inject traceparent header into (for cross-origin propagation) */
|
|
80
|
+
propagateTraceUrls?: RegExp[];
|
|
81
|
+
/** URL patterns to skip instrumenting entirely */
|
|
82
|
+
ignoreUrls?: RegExp[];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IAEvB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IAEpB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC;IAE7B,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAE3D;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;IAEF;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,0IAA0I;IAC1I,OAAO,EAAE,MAAM,CAAC;IAEhB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Telemetry Types
|
|
4
|
+
*
|
|
5
|
+
* Re-exports policy types and config interfaces.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./policy.js"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,8CAA4B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Policy Types
|
|
3
|
+
*
|
|
4
|
+
* NOTE: In the hybrid tier architecture, the OTEL Collector handles
|
|
5
|
+
* sanitization, hashing, and routing. The SDK just emits full-fidelity data.
|
|
6
|
+
* See obs/otel-collector/config-tiered.yaml for Collector configuration.
|
|
7
|
+
*/
|
|
8
|
+
import { DeploymentTypeEnum } from "@superblocksteam/shared";
|
|
9
|
+
export { DeploymentTypeEnum as DeploymentType };
|
|
10
|
+
/**
|
|
11
|
+
* Telemetry tier definitions.
|
|
12
|
+
*
|
|
13
|
+
* Tier 1 (Local): Full fidelity data for debugging. Stored in customer LGTM.
|
|
14
|
+
* Tier 2 (Operational): Sanitized metrics/traces for ops. Exported to Superblocks.
|
|
15
|
+
* Tier 3 (Analytics): AI experience telemetry. Exported with content controls.
|
|
16
|
+
*
|
|
17
|
+
* In the hybrid architecture:
|
|
18
|
+
* - SDK emits all data to the Collector
|
|
19
|
+
* - Collector transforms and routes to appropriate tier pipelines
|
|
20
|
+
* - Tier tagging, hashing, and filtering happen at Collector level
|
|
21
|
+
*/
|
|
22
|
+
export declare enum TelemetryTier {
|
|
23
|
+
/** Full fidelity debugging data - prompts, code, tool IO, stack traces */
|
|
24
|
+
TIER_1_LOCAL = "tier_1_local",
|
|
25
|
+
/** Sanitized operational metrics and traces for dashboards/billing */
|
|
26
|
+
TIER_2_OPERATIONAL = "tier_2_operational",
|
|
27
|
+
/** AI experience telemetry - prompts, responses, quality signals (no tool outputs) */
|
|
28
|
+
TIER_3_AI_EXPERIENCE = "tier_3_ai_experience"
|
|
29
|
+
}
|
|
30
|
+
export declare enum EnforcementMode {
|
|
31
|
+
/** Log violations but allow */
|
|
32
|
+
AUDIT = "audit",
|
|
33
|
+
/** Block violations */
|
|
34
|
+
ENFORCE = "enforce"
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Tier 3 content export policy for runtime control during incidents.
|
|
38
|
+
*/
|
|
39
|
+
export interface Tier3ContentPolicy {
|
|
40
|
+
/** Export AI prompts/responses. Kill switch for incidents. */
|
|
41
|
+
contentExportEnabled: boolean;
|
|
42
|
+
/** Redact detected secrets (JWTs, API keys, PEM blocks) from content */
|
|
43
|
+
secretRedactionEnabled: boolean;
|
|
44
|
+
/** Block export if tool output patterns detected in response */
|
|
45
|
+
toolOutputFilteringEnabled: boolean;
|
|
46
|
+
/** Max prompt length in bytes */
|
|
47
|
+
maxPromptBytes: number;
|
|
48
|
+
/** Max response length in bytes */
|
|
49
|
+
maxResponseBytes: number;
|
|
50
|
+
}
|
|
51
|
+
export interface TierConfig {
|
|
52
|
+
/** Is this tier enabled for local retention? */
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
/** Is this tier enabled for export? */
|
|
55
|
+
exportEnabled: boolean;
|
|
56
|
+
/** Sampling rate for this tier (0.0 - 1.0) */
|
|
57
|
+
sampleRate: number;
|
|
58
|
+
}
|
|
59
|
+
export interface TelemetryPolicy {
|
|
60
|
+
/** Deployment context */
|
|
61
|
+
deploymentType: DeploymentTypeEnum;
|
|
62
|
+
/** Per-tier configuration */
|
|
63
|
+
tiers: {
|
|
64
|
+
[TelemetryTier.TIER_1_LOCAL]: TierConfig;
|
|
65
|
+
[TelemetryTier.TIER_2_OPERATIONAL]: TierConfig;
|
|
66
|
+
[TelemetryTier.TIER_3_AI_EXPERIENCE]: TierConfig;
|
|
67
|
+
};
|
|
68
|
+
/** Tier 3 content export controls (prompts, responses). */
|
|
69
|
+
tier3Content: Tier3ContentPolicy;
|
|
70
|
+
/** Enforcement behavior */
|
|
71
|
+
enforcementMode: EnforcementMode;
|
|
72
|
+
/** Optional org-specific overrides */
|
|
73
|
+
orgOverrides?: Record<string, Partial<TelemetryPolicy>>;
|
|
74
|
+
}
|
|
75
|
+
/** Default Tier 3 content policy (enabled with all guardrails) */
|
|
76
|
+
export declare const TIER3_CONTENT_POLICY_DEFAULT: Tier3ContentPolicy;
|
|
77
|
+
/** Tier 3 content policy: disabled (kill switch) */
|
|
78
|
+
export declare const TIER3_CONTENT_POLICY_DISABLED: Tier3ContentPolicy;
|
|
79
|
+
/**
|
|
80
|
+
* Cloud deployment: all tiers enabled and exported.
|
|
81
|
+
*/
|
|
82
|
+
export declare const CLOUD_DEFAULT_POLICY: TelemetryPolicy;
|
|
83
|
+
/**
|
|
84
|
+
* Cloud-Prem deployment: Tier 1 local only, Tier 2/3 exported.
|
|
85
|
+
* Hashing/sanitization handled by OTEL Collector.
|
|
86
|
+
*/
|
|
87
|
+
export declare const CLOUD_PREM_DEFAULT_POLICY: TelemetryPolicy;
|
|
88
|
+
/**
|
|
89
|
+
* Get the default policy for a deployment type.
|
|
90
|
+
*/
|
|
91
|
+
export declare function getDefaultPolicy(deploymentType: DeploymentTypeEnum): TelemetryPolicy;
|
|
92
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/types/policy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,IAAI,cAAc,EAAE,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,oBAAY,aAAa;IACvB,0EAA0E;IAC1E,YAAY,iBAAiB;IAE7B,sEAAsE;IACtE,kBAAkB,uBAAuB;IAEzC,sFAAsF;IACtF,oBAAoB,yBAAyB;CAC9C;AAED,oBAAY,eAAe;IACzB,+BAA+B;IAC/B,KAAK,UAAU;IACf,uBAAuB;IACvB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,oBAAoB,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,sBAAsB,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,0BAA0B,EAAE,OAAO,CAAC;IACpC,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,cAAc,EAAE,kBAAkB,CAAC;IAEnC,6BAA6B;IAC7B,KAAK,EAAE;QACL,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;QACzC,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;QAC/C,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC;KAClD,CAAC;IAEF,2DAA2D;IAC3D,YAAY,EAAE,kBAAkB,CAAC;IAEjC,2BAA2B;IAC3B,eAAe,EAAE,eAAe,CAAC;IAEjC,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACzD;AAMD,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,EAAE,kBAM1C,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,6BAA6B,EAAE,kBAM3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAqBlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,eAqBvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,kBAAkB,GACjC,eAAe,CASjB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLOUD_PREM_DEFAULT_POLICY = exports.CLOUD_DEFAULT_POLICY = exports.TIER3_CONTENT_POLICY_DISABLED = exports.TIER3_CONTENT_POLICY_DEFAULT = exports.EnforcementMode = exports.TelemetryTier = exports.DeploymentType = void 0;
|
|
4
|
+
exports.getDefaultPolicy = getDefaultPolicy;
|
|
5
|
+
/**
|
|
6
|
+
* Telemetry Policy Types
|
|
7
|
+
*
|
|
8
|
+
* NOTE: In the hybrid tier architecture, the OTEL Collector handles
|
|
9
|
+
* sanitization, hashing, and routing. The SDK just emits full-fidelity data.
|
|
10
|
+
* See obs/otel-collector/config-tiered.yaml for Collector configuration.
|
|
11
|
+
*/
|
|
12
|
+
const shared_1 = require("@superblocksteam/shared");
|
|
13
|
+
Object.defineProperty(exports, "DeploymentType", { enumerable: true, get: function () { return shared_1.DeploymentTypeEnum; } });
|
|
14
|
+
/**
|
|
15
|
+
* Telemetry tier definitions.
|
|
16
|
+
*
|
|
17
|
+
* Tier 1 (Local): Full fidelity data for debugging. Stored in customer LGTM.
|
|
18
|
+
* Tier 2 (Operational): Sanitized metrics/traces for ops. Exported to Superblocks.
|
|
19
|
+
* Tier 3 (Analytics): AI experience telemetry. Exported with content controls.
|
|
20
|
+
*
|
|
21
|
+
* In the hybrid architecture:
|
|
22
|
+
* - SDK emits all data to the Collector
|
|
23
|
+
* - Collector transforms and routes to appropriate tier pipelines
|
|
24
|
+
* - Tier tagging, hashing, and filtering happen at Collector level
|
|
25
|
+
*/
|
|
26
|
+
var TelemetryTier;
|
|
27
|
+
(function (TelemetryTier) {
|
|
28
|
+
/** Full fidelity debugging data - prompts, code, tool IO, stack traces */
|
|
29
|
+
TelemetryTier["TIER_1_LOCAL"] = "tier_1_local";
|
|
30
|
+
/** Sanitized operational metrics and traces for dashboards/billing */
|
|
31
|
+
TelemetryTier["TIER_2_OPERATIONAL"] = "tier_2_operational";
|
|
32
|
+
/** AI experience telemetry - prompts, responses, quality signals (no tool outputs) */
|
|
33
|
+
TelemetryTier["TIER_3_AI_EXPERIENCE"] = "tier_3_ai_experience";
|
|
34
|
+
})(TelemetryTier || (exports.TelemetryTier = TelemetryTier = {}));
|
|
35
|
+
var EnforcementMode;
|
|
36
|
+
(function (EnforcementMode) {
|
|
37
|
+
/** Log violations but allow */
|
|
38
|
+
EnforcementMode["AUDIT"] = "audit";
|
|
39
|
+
/** Block violations */
|
|
40
|
+
EnforcementMode["ENFORCE"] = "enforce";
|
|
41
|
+
})(EnforcementMode || (exports.EnforcementMode = EnforcementMode = {}));
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Default Policies
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/** Default Tier 3 content policy (enabled with all guardrails) */
|
|
46
|
+
exports.TIER3_CONTENT_POLICY_DEFAULT = {
|
|
47
|
+
contentExportEnabled: true,
|
|
48
|
+
secretRedactionEnabled: true,
|
|
49
|
+
toolOutputFilteringEnabled: true,
|
|
50
|
+
maxPromptBytes: 32768,
|
|
51
|
+
maxResponseBytes: 65536,
|
|
52
|
+
};
|
|
53
|
+
/** Tier 3 content policy: disabled (kill switch) */
|
|
54
|
+
exports.TIER3_CONTENT_POLICY_DISABLED = {
|
|
55
|
+
contentExportEnabled: false,
|
|
56
|
+
secretRedactionEnabled: true,
|
|
57
|
+
toolOutputFilteringEnabled: true,
|
|
58
|
+
maxPromptBytes: 32768,
|
|
59
|
+
maxResponseBytes: 65536,
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Cloud deployment: all tiers enabled and exported.
|
|
63
|
+
*/
|
|
64
|
+
exports.CLOUD_DEFAULT_POLICY = {
|
|
65
|
+
deploymentType: shared_1.DeploymentTypeEnum.CLOUD,
|
|
66
|
+
tiers: {
|
|
67
|
+
[TelemetryTier.TIER_1_LOCAL]: {
|
|
68
|
+
enabled: true,
|
|
69
|
+
exportEnabled: true,
|
|
70
|
+
sampleRate: 1.0,
|
|
71
|
+
},
|
|
72
|
+
[TelemetryTier.TIER_2_OPERATIONAL]: {
|
|
73
|
+
enabled: true,
|
|
74
|
+
exportEnabled: true,
|
|
75
|
+
sampleRate: 1.0,
|
|
76
|
+
},
|
|
77
|
+
[TelemetryTier.TIER_3_AI_EXPERIENCE]: {
|
|
78
|
+
enabled: true,
|
|
79
|
+
exportEnabled: true,
|
|
80
|
+
sampleRate: 1.0,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
tier3Content: exports.TIER3_CONTENT_POLICY_DEFAULT,
|
|
84
|
+
enforcementMode: EnforcementMode.ENFORCE,
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Cloud-Prem deployment: Tier 1 local only, Tier 2/3 exported.
|
|
88
|
+
* Hashing/sanitization handled by OTEL Collector.
|
|
89
|
+
*/
|
|
90
|
+
exports.CLOUD_PREM_DEFAULT_POLICY = {
|
|
91
|
+
deploymentType: shared_1.DeploymentTypeEnum.CLOUD_PREM,
|
|
92
|
+
tiers: {
|
|
93
|
+
[TelemetryTier.TIER_1_LOCAL]: {
|
|
94
|
+
enabled: true,
|
|
95
|
+
exportEnabled: false,
|
|
96
|
+
sampleRate: 1.0,
|
|
97
|
+
},
|
|
98
|
+
[TelemetryTier.TIER_2_OPERATIONAL]: {
|
|
99
|
+
enabled: true,
|
|
100
|
+
exportEnabled: true,
|
|
101
|
+
sampleRate: 1.0,
|
|
102
|
+
},
|
|
103
|
+
[TelemetryTier.TIER_3_AI_EXPERIENCE]: {
|
|
104
|
+
enabled: true,
|
|
105
|
+
exportEnabled: true,
|
|
106
|
+
sampleRate: 1.0,
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
tier3Content: exports.TIER3_CONTENT_POLICY_DEFAULT,
|
|
110
|
+
enforcementMode: EnforcementMode.ENFORCE,
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Get the default policy for a deployment type.
|
|
114
|
+
*/
|
|
115
|
+
function getDefaultPolicy(deploymentType) {
|
|
116
|
+
switch (deploymentType) {
|
|
117
|
+
case shared_1.DeploymentTypeEnum.CLOUD:
|
|
118
|
+
return exports.CLOUD_DEFAULT_POLICY;
|
|
119
|
+
case shared_1.DeploymentTypeEnum.CLOUD_PREM:
|
|
120
|
+
return exports.CLOUD_PREM_DEFAULT_POLICY;
|
|
121
|
+
default:
|
|
122
|
+
return exports.CLOUD_DEFAULT_POLICY;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/types/policy.ts"],"names":[],"mappings":";;;AAsKA,4CAWC;AAjLD;;;;;;GAMG;AACH,oDAA6D;AAG9B,+FAHtB,2BAAkB,OAGkB;AAE7C;;;;;;;;;;;GAWG;AACH,IAAY,aASX;AATD,WAAY,aAAa;IACvB,0EAA0E;IAC1E,8CAA6B,CAAA;IAE7B,sEAAsE;IACtE,0DAAyC,CAAA;IAEzC,sFAAsF;IACtF,8DAA6C,CAAA;AAC/C,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,+BAA+B;IAC/B,kCAAe,CAAA;IACf,uBAAuB;IACvB,sCAAmB,CAAA;AACrB,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAgDD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,kEAAkE;AACrD,QAAA,4BAA4B,GAAuB;IAC9D,oBAAoB,EAAE,IAAI;IAC1B,sBAAsB,EAAE,IAAI;IAC5B,0BAA0B,EAAE,IAAI;IAChC,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAEF,oDAAoD;AACvC,QAAA,6BAA6B,GAAuB;IAC/D,oBAAoB,EAAE,KAAK;IAC3B,sBAAsB,EAAE,IAAI;IAC5B,0BAA0B,EAAE,IAAI;IAChC,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAoB;IACnD,cAAc,EAAE,2BAAkB,CAAC,KAAK;IACxC,KAAK,EAAE;QACL,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;YAClC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;YACpC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,GAAG;SAChB;KACF;IACD,YAAY,EAAE,oCAA4B;IAC1C,eAAe,EAAE,eAAe,CAAC,OAAO;CACzC,CAAC;AAEF;;;GAGG;AACU,QAAA,yBAAyB,GAAoB;IACxD,cAAc,EAAE,2BAAkB,CAAC,UAAU;IAC7C,KAAK,EAAE;QACL,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;YAClC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,GAAG;SAChB;QACD,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;YACpC,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,GAAG;SAChB;KACF;IACD,YAAY,EAAE,oCAA4B;IAC1C,eAAe,EAAE,eAAe,CAAC,OAAO;CACzC,CAAC;AAEF;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,cAAkC;IAElC,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,2BAAkB,CAAC,KAAK;YAC3B,OAAO,4BAAoB,CAAC;QAC9B,KAAK,2BAAkB,CAAC,UAAU;YAChC,OAAO,iCAAyB,CAAC;QACnC;YACE,OAAO,4BAAoB,CAAC;IAChC,CAAC;AACH,CAAC"}
|