@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,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser Telemetry Bootstrap
|
|
4
|
+
*
|
|
5
|
+
* This is the ONLY approved way to initialize telemetry in browser contexts.
|
|
6
|
+
* Direct WebTracerProvider usage outside this package is prohibited.
|
|
7
|
+
*
|
|
8
|
+
* Composes all browser signals: traces, metrics, logs, sanitizers, and
|
|
9
|
+
* auto-instrumentations into a single init call.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.initBrowserTelemetry = initBrowserTelemetry;
|
|
16
|
+
exports.getBrowserTelemetryInstance = getBrowserTelemetryInstance;
|
|
17
|
+
exports.isBrowserTelemetryInitialized = isBrowserTelemetryInitialized;
|
|
18
|
+
exports.resetBrowserTelemetry = resetBrowserTelemetry;
|
|
19
|
+
exports.getEnvironmentFromHostname = getEnvironmentFromHostname;
|
|
20
|
+
const api_1 = require("@opentelemetry/api");
|
|
21
|
+
const core_1 = require("@opentelemetry/core");
|
|
22
|
+
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
23
|
+
const instrumentation_1 = require("@opentelemetry/instrumentation");
|
|
24
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
25
|
+
const sdk_trace_web_1 = require("@opentelemetry/sdk-trace-web");
|
|
26
|
+
const policy_evaluator_js_1 = require("../common/policy-evaluator.js");
|
|
27
|
+
const resource_js_1 = require("../common/resource.js");
|
|
28
|
+
const policy_js_1 = require("../types/policy.js");
|
|
29
|
+
const early_console_buffer_js_1 = __importDefault(require("./early-console-buffer.js"));
|
|
30
|
+
const instrumentations_js_1 = require("./instrumentations.js");
|
|
31
|
+
const logs_js_1 = require("./logs.js");
|
|
32
|
+
const metrics_js_1 = require("./metrics.js");
|
|
33
|
+
const resilient_exporter_js_1 = require("./resilient-exporter.js");
|
|
34
|
+
const sanitizer_js_1 = require("./sanitizer.js");
|
|
35
|
+
// Singleton instance
|
|
36
|
+
let instance;
|
|
37
|
+
/**
|
|
38
|
+
* Validate browser telemetry configuration.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Configuration to validate
|
|
41
|
+
* @throws Error if configuration is invalid
|
|
42
|
+
*/
|
|
43
|
+
function validateBrowserTelemetryConfig(config) {
|
|
44
|
+
if (!config.serviceName?.trim()) {
|
|
45
|
+
throw new Error("[Telemetry] serviceName is required and cannot be empty");
|
|
46
|
+
}
|
|
47
|
+
if (!config.serviceVersion?.trim()) {
|
|
48
|
+
throw new Error("[Telemetry] serviceVersion is required and cannot be empty");
|
|
49
|
+
}
|
|
50
|
+
if (!config.environment?.trim()) {
|
|
51
|
+
throw new Error("[Telemetry] environment is required and cannot be empty");
|
|
52
|
+
}
|
|
53
|
+
if (!config.otlpUrl?.trim()) {
|
|
54
|
+
throw new Error("[Telemetry] otlpUrl is required for browser telemetry");
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
new URL(config.otlpUrl);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new Error(`[Telemetry] Invalid otlpUrl: ${config.otlpUrl} (${error.message})`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Strips trailing slash from a URL string.
|
|
65
|
+
*/
|
|
66
|
+
function normalizeBaseUrl(url) {
|
|
67
|
+
return url.replace(/\/+$/, "");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* SpanProcessor that injects mutable global attributes into every span on start.
|
|
71
|
+
* Since OTel Resource is immutable, dynamic context (org ID, user ID, app ID)
|
|
72
|
+
* must be applied at the span level.
|
|
73
|
+
*/
|
|
74
|
+
class GlobalAttributeSpanProcessor {
|
|
75
|
+
attrs = {};
|
|
76
|
+
setAttributes(attrs) {
|
|
77
|
+
this.attrs = { ...attrs };
|
|
78
|
+
}
|
|
79
|
+
onStart(span, _parentContext) {
|
|
80
|
+
for (const [key, value] of Object.entries(this.attrs)) {
|
|
81
|
+
span.setAttribute(key, value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
onEnd(_span) { }
|
|
85
|
+
async shutdown() { }
|
|
86
|
+
async forceFlush() { }
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Composite SpanProcessor that delegates to a mutable list of inner processors.
|
|
90
|
+
* In OTel SDK v2.x, `addSpanProcessor` was removed from BasicTracerProvider,
|
|
91
|
+
* so we wrap the processor list ourselves to support runtime additions
|
|
92
|
+
* (e.g. UI's LocalStorageExporter).
|
|
93
|
+
*/
|
|
94
|
+
class DynamicCompositeSpanProcessor {
|
|
95
|
+
processors = [];
|
|
96
|
+
add(processor) {
|
|
97
|
+
this.processors.push(processor);
|
|
98
|
+
}
|
|
99
|
+
onStart(span, parentContext) {
|
|
100
|
+
for (const p of this.processors) {
|
|
101
|
+
try {
|
|
102
|
+
p.onStart(span, parentContext);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
console.error("[Telemetry] SpanProcessor.onStart failed", err);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
onEnd(span) {
|
|
110
|
+
for (const p of this.processors) {
|
|
111
|
+
try {
|
|
112
|
+
p.onEnd(span);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
console.error("[Telemetry] SpanProcessor.onEnd failed", err);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async shutdown() {
|
|
120
|
+
await Promise.all(this.processors.map((p) => p.shutdown()));
|
|
121
|
+
}
|
|
122
|
+
async forceFlush() {
|
|
123
|
+
await Promise.all(this.processors.map((p) => p.forceFlush()));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Initialize browser telemetry with policy enforcement.
|
|
128
|
+
*
|
|
129
|
+
* Browser telemetry is always sanitized (Tier 2) since it runs in untrusted context.
|
|
130
|
+
* Full fidelity Tier 1 data should never be emitted from the browser.
|
|
131
|
+
*
|
|
132
|
+
* Composes:
|
|
133
|
+
* - Traces: WebTracerProvider with sanitizing + batch processors
|
|
134
|
+
* - Metrics: MeterProvider via initBrowserMetrics
|
|
135
|
+
* - Logs: LoggerProvider via initBrowserLogs (with EarlyConsoleBuffer)
|
|
136
|
+
* - Sanitizers: PII redaction for spans and logs
|
|
137
|
+
* - Instrumentations: XHR + Fetch auto-instrumentation
|
|
138
|
+
* - Context: StackContextManager for async context propagation
|
|
139
|
+
*
|
|
140
|
+
* @param config - Browser configuration (otlpUrl is treated as base URL)
|
|
141
|
+
* @param policy - Telemetry policy (REQUIRED)
|
|
142
|
+
* @returns Browser telemetry instance
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
|
|
147
|
+
* import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
|
|
148
|
+
*
|
|
149
|
+
* const policy = getDefaultPolicy(DeploymentType.CLOUD);
|
|
150
|
+
* const telemetry = initBrowserTelemetry({
|
|
151
|
+
* serviceName: 'superblocks-ui',
|
|
152
|
+
* serviceVersion: '1.0.0',
|
|
153
|
+
* environment: 'production',
|
|
154
|
+
* otlpUrl: 'https://app.superblocks.com/api',
|
|
155
|
+
* }, policy);
|
|
156
|
+
*
|
|
157
|
+
* const tracer = telemetry.getTracer();
|
|
158
|
+
* const meter = telemetry.getMeter();
|
|
159
|
+
* const logger = telemetry.getLogger();
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
function initBrowserTelemetry(config, policy) {
|
|
163
|
+
// Policy is required
|
|
164
|
+
if (!policy) {
|
|
165
|
+
throw new Error("[Telemetry] Policy is required. Cannot initialize telemetry without a policy.");
|
|
166
|
+
}
|
|
167
|
+
// Validate config
|
|
168
|
+
validateBrowserTelemetryConfig(config);
|
|
169
|
+
// Return existing instance if already initialized
|
|
170
|
+
if (instance) {
|
|
171
|
+
console.warn("[Telemetry] Browser provider already initialized");
|
|
172
|
+
return instance;
|
|
173
|
+
}
|
|
174
|
+
const baseUrl = normalizeBaseUrl(config.otlpUrl);
|
|
175
|
+
// 1. Register StackContextManager for async context propagation
|
|
176
|
+
(0, instrumentations_js_1.registerBrowserContextManager)();
|
|
177
|
+
const policyEvaluator = new policy_evaluator_js_1.TelemetryPolicyEvaluator(policy);
|
|
178
|
+
const resource = (0, resource_js_1.buildResource)(config);
|
|
179
|
+
// 2. Build span processors: global attrs -> sanitizer -> batch exporter
|
|
180
|
+
// Wrapped in a DynamicCompositeSpanProcessor so addSpanProcessor() works
|
|
181
|
+
// at runtime (OTel SDK v2.x removed addSpanProcessor from the provider).
|
|
182
|
+
const globalAttrProcessor = new GlobalAttributeSpanProcessor();
|
|
183
|
+
const compositeProcessor = new DynamicCompositeSpanProcessor();
|
|
184
|
+
compositeProcessor.add(globalAttrProcessor);
|
|
185
|
+
// Add sanitizing processor (always on in browser)
|
|
186
|
+
compositeProcessor.add((0, sanitizer_js_1.createSanitizingSpanProcessor)());
|
|
187
|
+
// Add batch exporter if policy allows export
|
|
188
|
+
if (policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL)) {
|
|
189
|
+
compositeProcessor.add(new sdk_trace_base_1.BatchSpanProcessor(new resilient_exporter_js_1.BrowserResilientExporter({
|
|
190
|
+
delegate: new exporter_trace_otlp_http_1.OTLPTraceExporter({
|
|
191
|
+
url: `${baseUrl}/v1/traces`,
|
|
192
|
+
}),
|
|
193
|
+
})));
|
|
194
|
+
}
|
|
195
|
+
// Create provider with the composite processor (OTEL v2.x API)
|
|
196
|
+
const provider = new sdk_trace_web_1.WebTracerProvider({
|
|
197
|
+
resource,
|
|
198
|
+
spanProcessors: [compositeProcessor],
|
|
199
|
+
});
|
|
200
|
+
// Register with composite propagator for W3C TraceContext and Baggage
|
|
201
|
+
provider.register({
|
|
202
|
+
propagator: new core_1.CompositePropagator({
|
|
203
|
+
propagators: [
|
|
204
|
+
new core_1.W3CBaggagePropagator(),
|
|
205
|
+
new core_1.W3CTraceContextPropagator(),
|
|
206
|
+
],
|
|
207
|
+
}),
|
|
208
|
+
});
|
|
209
|
+
// 3. Create auto-instrumentations (XHR + fetch)
|
|
210
|
+
const instrumentations = (0, instrumentations_js_1.createBrowserInstrumentations)({
|
|
211
|
+
propagateTraceUrls: config.propagateTraceUrls,
|
|
212
|
+
ignoreUrls: config.ignoreUrls,
|
|
213
|
+
});
|
|
214
|
+
(0, instrumentation_1.registerInstrumentations)({
|
|
215
|
+
instrumentations,
|
|
216
|
+
tracerProvider: provider,
|
|
217
|
+
});
|
|
218
|
+
// 4. Initialize metrics
|
|
219
|
+
let metricsInstance;
|
|
220
|
+
if (policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL)) {
|
|
221
|
+
metricsInstance = (0, metrics_js_1.initBrowserMetrics)({
|
|
222
|
+
otlpUrl: `${baseUrl}/v1/metrics`,
|
|
223
|
+
serviceName: config.serviceName,
|
|
224
|
+
resource,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// 5. Initialize logs (with EarlyConsoleBuffer flush)
|
|
228
|
+
let logsInstance;
|
|
229
|
+
if (policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL)) {
|
|
230
|
+
logsInstance = (0, logs_js_1.initBrowserLogs)({
|
|
231
|
+
otlpUrl: `${baseUrl}/v1/logs`,
|
|
232
|
+
serviceName: config.serviceName,
|
|
233
|
+
resource,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// Log export disabled (e.g. on-premise) — disable the EarlyConsoleBuffer
|
|
238
|
+
// so it stops buffering indefinitely and restores original console methods.
|
|
239
|
+
early_console_buffer_js_1.default.getInstance().disable();
|
|
240
|
+
}
|
|
241
|
+
console.debug(`[Telemetry] Browser telemetry initialized for ${config.serviceName} (${policy.deploymentType}) — traces, metrics, logs`);
|
|
242
|
+
instance = {
|
|
243
|
+
provider,
|
|
244
|
+
policyEvaluator,
|
|
245
|
+
getTracer: (name) => api_1.trace.getTracer(name ?? config.serviceName, config.serviceVersion),
|
|
246
|
+
getMeter: (name) => {
|
|
247
|
+
if (metricsInstance) {
|
|
248
|
+
return metricsInstance.getMeter(name);
|
|
249
|
+
}
|
|
250
|
+
// Return a no-op meter from the global API when metrics are disabled
|
|
251
|
+
return api_1.metrics.getMeter(name ?? config.serviceName);
|
|
252
|
+
},
|
|
253
|
+
getLogger: (name) => {
|
|
254
|
+
if (logsInstance) {
|
|
255
|
+
return logsInstance.getLogger(name);
|
|
256
|
+
}
|
|
257
|
+
// Return a no-op logger when logs are disabled
|
|
258
|
+
return {
|
|
259
|
+
emit: () => { },
|
|
260
|
+
};
|
|
261
|
+
},
|
|
262
|
+
setGlobalSpanAttributes: (attrs) => {
|
|
263
|
+
globalAttrProcessor.setAttributes(attrs);
|
|
264
|
+
},
|
|
265
|
+
addSpanProcessor: (processor) => {
|
|
266
|
+
compositeProcessor.add(processor);
|
|
267
|
+
},
|
|
268
|
+
forceFlush: async () => {
|
|
269
|
+
await provider.forceFlush();
|
|
270
|
+
},
|
|
271
|
+
shutdown: async () => {
|
|
272
|
+
await provider.shutdown();
|
|
273
|
+
if (metricsInstance) {
|
|
274
|
+
await metricsInstance.shutdown();
|
|
275
|
+
}
|
|
276
|
+
if (logsInstance) {
|
|
277
|
+
await logsInstance.shutdown();
|
|
278
|
+
}
|
|
279
|
+
api_1.context.disable();
|
|
280
|
+
instance = undefined;
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
return instance;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get the current browser telemetry instance.
|
|
287
|
+
*
|
|
288
|
+
* @throws Error if not initialized
|
|
289
|
+
*/
|
|
290
|
+
function getBrowserTelemetryInstance() {
|
|
291
|
+
if (!instance) {
|
|
292
|
+
throw new Error("[Telemetry] Not initialized. Call initBrowserTelemetry() first.");
|
|
293
|
+
}
|
|
294
|
+
return instance;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Check if browser telemetry is initialized.
|
|
298
|
+
*/
|
|
299
|
+
function isBrowserTelemetryInitialized() {
|
|
300
|
+
return instance !== undefined;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Reset browser telemetry (for testing only).
|
|
304
|
+
* @internal
|
|
305
|
+
*/
|
|
306
|
+
function resetBrowserTelemetry() {
|
|
307
|
+
instance = undefined;
|
|
308
|
+
(0, logs_js_1.resetBrowserLogs)();
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Derive environment from hostname.
|
|
312
|
+
* Utility for browser context where env vars aren't available.
|
|
313
|
+
*
|
|
314
|
+
* @param hostname - The hostname to analyze
|
|
315
|
+
* @returns Environment string
|
|
316
|
+
*/
|
|
317
|
+
function getEnvironmentFromHostname(hostname) {
|
|
318
|
+
if (hostname.includes("localhost") || hostname.includes("127.0.0.1")) {
|
|
319
|
+
return "local";
|
|
320
|
+
}
|
|
321
|
+
if (hostname.includes("staging") || hostname.includes("stg")) {
|
|
322
|
+
return "staging";
|
|
323
|
+
}
|
|
324
|
+
if (hostname.includes("dev") || hostname.includes("development")) {
|
|
325
|
+
return "development";
|
|
326
|
+
}
|
|
327
|
+
return "production";
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/browser/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Auto-Instrumentations Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates and configures auto-instrumentations for browser telemetry.
|
|
5
|
+
* Handles XHR and Fetch requests with configurable URL filtering and
|
|
6
|
+
* trace context propagation.
|
|
7
|
+
*/
|
|
8
|
+
import type { Instrumentation } from "@opentelemetry/instrumentation";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for browser auto-instrumentations.
|
|
11
|
+
*/
|
|
12
|
+
export interface BrowserInstrumentationConfig {
|
|
13
|
+
/**
|
|
14
|
+
* URL patterns to inject traceparent header into.
|
|
15
|
+
* Only requests matching these patterns will have W3C trace context propagated.
|
|
16
|
+
* Defaults to empty (no cross-origin propagation).
|
|
17
|
+
*/
|
|
18
|
+
propagateTraceUrls?: RegExp[];
|
|
19
|
+
/**
|
|
20
|
+
* URL patterns to skip instrumenting entirely.
|
|
21
|
+
* Defaults to common static asset extensions.
|
|
22
|
+
*/
|
|
23
|
+
ignoreUrls?: RegExp[];
|
|
24
|
+
/**
|
|
25
|
+
* Set to true to skip FetchInstrumentation entirely.
|
|
26
|
+
* Acts as an escape valve if the Fetch instrumentation regresses in production
|
|
27
|
+
* without requiring a full revert.
|
|
28
|
+
* Defaults to false.
|
|
29
|
+
*/
|
|
30
|
+
disableFetch?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create auto-instrumentations for browser telemetry.
|
|
34
|
+
*
|
|
35
|
+
* Returns an array containing XMLHttpRequestInstrumentation and
|
|
36
|
+
* FetchInstrumentation. Both instrumentations use the provided ignoreUrls to
|
|
37
|
+
* filter out asset downloads, and propagate trace context only to URLs
|
|
38
|
+
* matching propagateTraceUrls.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Optional instrumentation configuration
|
|
41
|
+
* @returns Array of configured Instrumentation instances
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const instrumentations = createBrowserInstrumentations({
|
|
46
|
+
* propagateTraceUrls: [/https:\/\/api\.superblocks\.com/],
|
|
47
|
+
* ignoreUrls: [/\/static\//],
|
|
48
|
+
* });
|
|
49
|
+
* registerInstrumentations({ instrumentations });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function createBrowserInstrumentations(config?: BrowserInstrumentationConfig): Instrumentation[];
|
|
53
|
+
/**
|
|
54
|
+
* Register the StackContextManager for async context propagation in the browser.
|
|
55
|
+
*
|
|
56
|
+
* This must be called before using `context.with()` in browser environments.
|
|
57
|
+
* Without this, Redux middleware and other async code cannot thread trace
|
|
58
|
+
* context through async operations.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* registerBrowserContextManager();
|
|
63
|
+
* // context.with() now works correctly in browser async flows
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function registerBrowserContextManager(): void;
|
|
67
|
+
//# sourceMappingURL=instrumentations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentations.d.ts","sourceRoot":"","sources":["../../src/browser/instrumentations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAatE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,CAAC,EAAE,4BAA4B,GACpC,eAAe,EAAE,CA6BnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAIpD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser Auto-Instrumentations Factory
|
|
4
|
+
*
|
|
5
|
+
* Creates and configures auto-instrumentations for browser telemetry.
|
|
6
|
+
* Handles XHR and Fetch requests with configurable URL filtering and
|
|
7
|
+
* trace context propagation.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createBrowserInstrumentations = createBrowserInstrumentations;
|
|
11
|
+
exports.registerBrowserContextManager = registerBrowserContextManager;
|
|
12
|
+
const api_1 = require("@opentelemetry/api");
|
|
13
|
+
const instrumentation_fetch_1 = require("@opentelemetry/instrumentation-fetch");
|
|
14
|
+
const instrumentation_xml_http_request_1 = require("@opentelemetry/instrumentation-xml-http-request");
|
|
15
|
+
const sdk_trace_web_1 = require("@opentelemetry/sdk-trace-web");
|
|
16
|
+
/**
|
|
17
|
+
* Default regex for ignoring static asset URLs.
|
|
18
|
+
* Uses ([?#]|$) to also match cache-busted URLs (e.g. app.js?v=abc123).
|
|
19
|
+
* These requests are not worth tracing and would create noise.
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_IGNORE_URLS = /\.(js|css|map|png|jpg|jpeg|svg|gif|webp|avif|woff|woff2|ttf|eot|ico)([?#]|$)/i;
|
|
22
|
+
/**
|
|
23
|
+
* Create auto-instrumentations for browser telemetry.
|
|
24
|
+
*
|
|
25
|
+
* Returns an array containing XMLHttpRequestInstrumentation and
|
|
26
|
+
* FetchInstrumentation. Both instrumentations use the provided ignoreUrls to
|
|
27
|
+
* filter out asset downloads, and propagate trace context only to URLs
|
|
28
|
+
* matching propagateTraceUrls.
|
|
29
|
+
*
|
|
30
|
+
* @param config - Optional instrumentation configuration
|
|
31
|
+
* @returns Array of configured Instrumentation instances
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const instrumentations = createBrowserInstrumentations({
|
|
36
|
+
* propagateTraceUrls: [/https:\/\/api\.superblocks\.com/],
|
|
37
|
+
* ignoreUrls: [/\/static\//],
|
|
38
|
+
* });
|
|
39
|
+
* registerInstrumentations({ instrumentations });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
function createBrowserInstrumentations(config) {
|
|
43
|
+
const ignoreUrls = config?.ignoreUrls ?? [DEFAULT_IGNORE_URLS];
|
|
44
|
+
const propagateTraceHeaderCorsUrls = config?.propagateTraceUrls ?? [];
|
|
45
|
+
const instrumentations = [
|
|
46
|
+
new instrumentation_xml_http_request_1.XMLHttpRequestInstrumentation({
|
|
47
|
+
ignoreUrls,
|
|
48
|
+
propagateTraceHeaderCorsUrls,
|
|
49
|
+
}),
|
|
50
|
+
];
|
|
51
|
+
if (!config?.disableFetch) {
|
|
52
|
+
try {
|
|
53
|
+
instrumentations.push(new instrumentation_fetch_1.FetchInstrumentation({
|
|
54
|
+
ignoreUrls,
|
|
55
|
+
propagateTraceHeaderCorsUrls,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// FetchInstrumentation failed; XHR instrumentation continues unaffected.
|
|
60
|
+
api_1.diag.warn("[telemetry] FetchInstrumentation failed to initialize", String(err));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return instrumentations;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Register the StackContextManager for async context propagation in the browser.
|
|
67
|
+
*
|
|
68
|
+
* This must be called before using `context.with()` in browser environments.
|
|
69
|
+
* Without this, Redux middleware and other async code cannot thread trace
|
|
70
|
+
* context through async operations.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* registerBrowserContextManager();
|
|
75
|
+
* // context.with() now works correctly in browser async flows
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
function registerBrowserContextManager() {
|
|
79
|
+
const contextManager = new sdk_trace_web_1.StackContextManager();
|
|
80
|
+
contextManager.enable();
|
|
81
|
+
api_1.context.setGlobalContextManager(contextManager);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=instrumentations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/browser/instrumentations.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA4DH,sEA+BC;AAeD,sEAIC;AA5GD,4CAAmD;AAEnD,gFAA4E;AAC5E,sGAAgG;AAChG,gEAAmE;AAEnE;;;;GAIG;AACH,MAAM,mBAAmB,GACvB,+EAA+E,CAAC;AA0BlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,6BAA6B,CAC3C,MAAqC;IAErC,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,4BAA4B,GAAG,MAAM,EAAE,kBAAkB,IAAI,EAAE,CAAC;IAEtE,MAAM,gBAAgB,GAAsB;QAC1C,IAAI,gEAA6B,CAAC;YAChC,UAAU;YACV,4BAA4B;SAC7B,CAAC;KACH,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,gBAAgB,CAAC,IAAI,CACnB,IAAI,4CAAoB,CAAC;gBACvB,UAAU;gBACV,4BAA4B;aAC7B,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,UAAI,CAAC,IAAI,CACP,uDAAuD,EACvD,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,6BAA6B;IAC3C,MAAM,cAAc,GAAG,IAAI,mCAAmB,EAAE,CAAC;IACjD,cAAc,CAAC,MAAM,EAAE,CAAC;IACxB,aAAO,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Log Provider
|
|
3
|
+
*
|
|
4
|
+
* Initializes the OTel LoggerProvider for browser contexts. Pairs with the
|
|
5
|
+
* EarlyConsoleBuffer to ensure pre-init console messages are captured and
|
|
6
|
+
* forwarded to the OTLP endpoint.
|
|
7
|
+
*
|
|
8
|
+
* This is the ONLY approved way to init log telemetry in browser contexts.
|
|
9
|
+
*/
|
|
10
|
+
import { type Logger } from "@opentelemetry/api-logs";
|
|
11
|
+
import type { Resource } from "@opentelemetry/resources";
|
|
12
|
+
export interface BrowserLogsConfig {
|
|
13
|
+
/** Full URL for the OTLP logs endpoint, e.g. "https://app.example.com/api/v1/logs" */
|
|
14
|
+
otlpUrl: string;
|
|
15
|
+
/** Logical service name recorded in every log record */
|
|
16
|
+
serviceName: string;
|
|
17
|
+
/** Resource with service.name / deployment.environment.name for Datadog env tags. */
|
|
18
|
+
resource?: Resource;
|
|
19
|
+
}
|
|
20
|
+
export interface BrowserLogsInstance {
|
|
21
|
+
/** Get a named Logger (uses serviceName when name is omitted) */
|
|
22
|
+
getLogger: (name?: string) => Logger;
|
|
23
|
+
/** Gracefully shut down the underlying LoggerProvider */
|
|
24
|
+
shutdown: () => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the browser log provider.
|
|
28
|
+
*
|
|
29
|
+
* - Creates an OTLPLogExporter pointed at `config.otlpUrl`
|
|
30
|
+
* - Wraps it in a BatchLogRecordProcessor
|
|
31
|
+
* - Enables the EarlyConsoleBuffer so buffered pre-init console messages are
|
|
32
|
+
* flushed to OpenTelemetry immediately
|
|
33
|
+
*
|
|
34
|
+
* Calling this more than once returns the existing instance with a warning.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { initBrowserLogs } from '@superblocksteam/telemetry/browser';
|
|
39
|
+
*
|
|
40
|
+
* const logs = initBrowserLogs({
|
|
41
|
+
* otlpUrl: 'https://app.superblocks.com/api/v1/logs',
|
|
42
|
+
* serviceName: 'superblocks-ui',
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const logger = logs.getLogger();
|
|
46
|
+
* logger.emit({ severityNumber: SeverityNumber.INFO, body: 'hello' });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function initBrowserLogs(config: BrowserLogsConfig): BrowserLogsInstance;
|
|
50
|
+
/**
|
|
51
|
+
* Reset the browser log provider singleton (for testing only).
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export declare function resetBrowserLogs(): void;
|
|
55
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/browser/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASzD,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAcD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,iBAAiB,GACxB,mBAAmB,CA+BrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser Log Provider
|
|
4
|
+
*
|
|
5
|
+
* Initializes the OTel LoggerProvider for browser contexts. Pairs with the
|
|
6
|
+
* EarlyConsoleBuffer to ensure pre-init console messages are captured and
|
|
7
|
+
* forwarded to the OTLP endpoint.
|
|
8
|
+
*
|
|
9
|
+
* This is the ONLY approved way to init log telemetry in browser contexts.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.initBrowserLogs = initBrowserLogs;
|
|
16
|
+
exports.resetBrowserLogs = resetBrowserLogs;
|
|
17
|
+
const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
|
|
18
|
+
const sdk_logs_1 = require("@opentelemetry/sdk-logs");
|
|
19
|
+
const early_console_buffer_js_1 = __importDefault(require("./early-console-buffer.js"));
|
|
20
|
+
const sanitizer_js_1 = require("./sanitizer.js");
|
|
21
|
+
// Singleton
|
|
22
|
+
let instance;
|
|
23
|
+
function validateConfig(config) {
|
|
24
|
+
if (!config.serviceName?.trim()) {
|
|
25
|
+
throw new Error("[Telemetry] serviceName is required and cannot be empty");
|
|
26
|
+
}
|
|
27
|
+
if (!config.otlpUrl?.trim()) {
|
|
28
|
+
throw new Error("[Telemetry] otlpUrl is required for browser logs");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Initialize the browser log provider.
|
|
33
|
+
*
|
|
34
|
+
* - Creates an OTLPLogExporter pointed at `config.otlpUrl`
|
|
35
|
+
* - Wraps it in a BatchLogRecordProcessor
|
|
36
|
+
* - Enables the EarlyConsoleBuffer so buffered pre-init console messages are
|
|
37
|
+
* flushed to OpenTelemetry immediately
|
|
38
|
+
*
|
|
39
|
+
* Calling this more than once returns the existing instance with a warning.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* import { initBrowserLogs } from '@superblocksteam/telemetry/browser';
|
|
44
|
+
*
|
|
45
|
+
* const logs = initBrowserLogs({
|
|
46
|
+
* otlpUrl: 'https://app.superblocks.com/api/v1/logs',
|
|
47
|
+
* serviceName: 'superblocks-ui',
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* const logger = logs.getLogger();
|
|
51
|
+
* logger.emit({ severityNumber: SeverityNumber.INFO, body: 'hello' });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
function initBrowserLogs(config) {
|
|
55
|
+
validateConfig(config);
|
|
56
|
+
if (instance) {
|
|
57
|
+
console.warn("[Telemetry] Browser log provider already initialized");
|
|
58
|
+
return instance;
|
|
59
|
+
}
|
|
60
|
+
const exporter = new exporter_logs_otlp_http_1.OTLPLogExporter({ url: config.otlpUrl });
|
|
61
|
+
const sanitizer = (0, sanitizer_js_1.createSanitizingLogProcessor)();
|
|
62
|
+
const batchProcessor = new sdk_logs_1.BatchLogRecordProcessor({ exporter });
|
|
63
|
+
const provider = new sdk_logs_1.LoggerProvider({
|
|
64
|
+
resource: config.resource,
|
|
65
|
+
processors: [sanitizer, batchProcessor],
|
|
66
|
+
});
|
|
67
|
+
// Wire the EarlyConsoleBuffer so buffered pre-init logs are flushed now.
|
|
68
|
+
const otelLogger = provider.getLogger(config.serviceName, "1.0.0");
|
|
69
|
+
early_console_buffer_js_1.default.getInstance().enableOpenTelemetry(otelLogger);
|
|
70
|
+
instance = {
|
|
71
|
+
getLogger: (name) => provider.getLogger(name ?? config.serviceName, "1.0.0"),
|
|
72
|
+
shutdown: async () => {
|
|
73
|
+
await provider.shutdown();
|
|
74
|
+
instance = undefined;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
return instance;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reset the browser log provider singleton (for testing only).
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
function resetBrowserLogs() {
|
|
84
|
+
instance = undefined;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/browser/logs.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAgEH,0CAiCC;AAMD,4CAEC;AAtGD,oFAAyE;AAEzE,sDAGiC;AAEjC,wFAA2D;AAC3D,iDAA8D;AAkB9D,YAAY;AACZ,IAAI,QAAyC,CAAC;AAE9C,SAAS,cAAc,CAAC,MAAyB;IAC/C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,eAAe,CAC7B,MAAyB;IAEzB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,yCAAe,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAA,2CAA4B,GAAE,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,kCAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,IAAI,yBAAc,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;KACxC,CAAC,CAAC;IAEH,yEAAyE;IACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,iCAAkB,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEjE,QAAQ,GAAG;QACT,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAC3B,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;QACzD,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1B,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,QAAQ,GAAG,SAAS,CAAC;AACvB,CAAC"}
|