@superblocksteam/telemetry 2.0.173-next.4 → 2.0.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/console-logging.js +7 -2
- package/dist/browser/console-logging.js.map +1 -1
- package/dist/browser/early-console-buffer.js +14 -12
- package/dist/browser/early-console-buffer.js.map +1 -1
- package/dist/browser/index.js +41 -12
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/init.d.ts +1 -1
- package/dist/browser/init.d.ts.map +1 -1
- package/dist/browser/init.js +52 -42
- package/dist/browser/init.js.map +1 -1
- package/dist/browser/instrumentations.js +15 -11
- package/dist/browser/instrumentations.js.map +1 -1
- package/dist/browser/logs.d.ts +1 -1
- package/dist/browser/logs.d.ts.map +1 -1
- package/dist/browser/logs.js +18 -11
- package/dist/browser/logs.js.map +1 -1
- package/dist/browser/metrics.js +12 -9
- package/dist/browser/metrics.js.map +1 -1
- package/dist/browser/resilient-exporter.d.ts +1 -1
- package/dist/browser/resilient-exporter.d.ts.map +1 -1
- package/dist/browser/resilient-exporter.js +12 -8
- package/dist/browser/resilient-exporter.js.map +1 -1
- package/dist/browser/sanitizer.js +6 -2
- package/dist/browser/sanitizer.js.map +1 -1
- package/dist/browser/traced-socket.js +18 -14
- package/dist/browser/traced-socket.js.map +1 -1
- package/dist/common/contracts/tier2-traces.js +44 -33
- package/dist/common/contracts/tier2-traces.js.map +1 -1
- package/dist/common/deployment-type.js +8 -5
- package/dist/common/deployment-type.js.map +1 -1
- package/dist/common/guardrails.js +38 -26
- package/dist/common/guardrails.js.map +1 -1
- package/dist/common/index.js +24 -8
- package/dist/common/index.js.map +1 -1
- package/dist/common/log-sanitizer.js +55 -37
- package/dist/common/log-sanitizer.js.map +1 -1
- package/dist/common/policy-evaluator.d.ts +1 -1
- package/dist/common/policy-evaluator.d.ts.map +1 -1
- package/dist/common/policy-evaluator.js +9 -5
- package/dist/common/policy-evaluator.js.map +1 -1
- package/dist/common/resource.js +25 -18
- package/dist/common/resource.js.map +1 -1
- package/dist/common/tier-hints.js +22 -12
- package/dist/common/tier-hints.js.map +1 -1
- package/dist/common/trace-sanitizer.js +10 -6
- package/dist/common/trace-sanitizer.js.map +1 -1
- package/dist/common/traced-socket-types.js +2 -1
- package/dist/common/traced-socket-types.js.map +1 -1
- package/dist/index.js +38 -6
- package/dist/index.js.map +1 -1
- package/dist/lint/forbidden-attributes.js +24 -19
- package/dist/lint/forbidden-attributes.js.map +1 -1
- package/dist/lint/index.js +8 -1
- package/dist/lint/index.js.map +1 -1
- package/dist/llmobs/index.js +9 -2
- package/dist/llmobs/index.js.map +1 -1
- package/dist/llmobs/tier1-exporter.js +12 -6
- package/dist/llmobs/tier1-exporter.js.map +1 -1
- package/dist/llmobs/tier2-summarizer.js +5 -1
- package/dist/llmobs/tier2-summarizer.js.map +1 -1
- package/dist/node/dynamic-attribute-processor.js +7 -2
- package/dist/node/dynamic-attribute-processor.js.map +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
- package/dist/node/exporters/resilient-exporter.js +12 -8
- package/dist/node/exporters/resilient-exporter.js.map +1 -1
- package/dist/node/index.js +26 -7
- package/dist/node/index.js.map +1 -1
- package/dist/node/init.d.ts +3 -3
- package/dist/node/init.d.ts.map +1 -1
- package/dist/node/init.js +72 -66
- package/dist/node/init.js.map +1 -1
- package/dist/node/local-obs-mode.js +4 -1
- package/dist/node/local-obs-mode.js.map +1 -1
- package/dist/node/log-processor.d.ts +1 -1
- package/dist/node/log-processor.d.ts.map +1 -1
- package/dist/node/log-processor.js +55 -47
- package/dist/node/log-processor.js.map +1 -1
- package/dist/node/metrics-client.js +5 -1
- package/dist/node/metrics-client.js.map +1 -1
- package/dist/node/safe-logger.js +12 -8
- package/dist/node/safe-logger.js.map +1 -1
- package/dist/node/sanitizing-processor.d.ts +2 -2
- package/dist/node/sanitizing-processor.d.ts.map +1 -1
- package/dist/node/sanitizing-processor.js +10 -6
- package/dist/node/sanitizing-processor.js.map +1 -1
- package/dist/node/service-tracers.js +10 -7
- package/dist/node/service-tracers.js.map +1 -1
- package/dist/node/traced-socket.d.ts +3 -3
- package/dist/node/traced-socket.d.ts.map +1 -1
- package/dist/node/traced-socket.js +52 -48
- package/dist/node/traced-socket.js.map +1 -1
- package/dist/npm-registry/emitter.js +47 -34
- package/dist/npm-registry/emitter.js.map +1 -1
- package/dist/npm-registry/index.js +19 -3
- package/dist/npm-registry/index.js.map +1 -1
- package/dist/npm-registry/sanitize.js +27 -16
- package/dist/npm-registry/sanitize.js.map +1 -1
- package/dist/npm-registry/spans.js +12 -7
- package/dist/npm-registry/spans.js.map +1 -1
- package/dist/testing/in-memory-exporter.d.ts +1 -1
- package/dist/testing/in-memory-exporter.d.ts.map +1 -1
- package/dist/testing/in-memory-exporter.js +12 -6
- package/dist/testing/in-memory-exporter.js.map +1 -1
- package/dist/testing/index.js +15 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/metrics-capture.js +15 -12
- package/dist/testing/metrics-capture.js.map +1 -1
- package/dist/testing/test-init.js +31 -24
- package/dist/testing/test-init.js.map +1 -1
- package/dist/types/index.js +17 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/policy.js +24 -21
- package/dist/types/policy.js.map +1 -1
- 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 +181 -0
- package/dist-esm/browser/early-console-buffer.js.map +1 -0
- package/dist-esm/browser/index.d.ts +18 -0
- package/dist-esm/browser/index.d.ts.map +1 -0
- package/dist-esm/browser/index.js +23 -0
- package/dist-esm/browser/index.js.map +1 -0
- package/dist-esm/browser/init.d.ts +100 -0
- package/dist-esm/browser/init.d.ts.map +1 -0
- package/dist-esm/browser/init.js +317 -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 +57 -0
- package/dist-esm/browser/logs.d.ts.map +1 -0
- package/dist-esm/browser/logs.js +80 -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 +132 -0
- package/dist-esm/common/guardrails.d.ts.map +1 -0
- package/dist-esm/common/guardrails.js +230 -0
- package/dist-esm/common/guardrails.js.map +1 -0
- package/dist-esm/common/index.d.ts +17 -0
- package/dist-esm/common/index.d.ts.map +1 -0
- package/dist-esm/common/index.js +17 -0
- package/dist-esm/common/index.js.map +1 -0
- package/dist-esm/common/log-sanitizer.d.ts +163 -0
- package/dist-esm/common/log-sanitizer.d.ts.map +1 -0
- package/dist-esm/common/log-sanitizer.js +745 -0
- package/dist-esm/common/log-sanitizer.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 +330 -0
- package/dist-esm/npm-registry/emitter.d.ts.map +1 -0
- package/dist-esm/npm-registry/emitter.js +546 -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 +17 -11
|
@@ -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,79 @@
|
|
|
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 { context, diag } from "@opentelemetry/api";
|
|
9
|
+
import { FetchInstrumentation } from "@opentelemetry/instrumentation-fetch";
|
|
10
|
+
import { XMLHttpRequestInstrumentation } from "@opentelemetry/instrumentation-xml-http-request";
|
|
11
|
+
import { StackContextManager } from "@opentelemetry/sdk-trace-web";
|
|
12
|
+
/**
|
|
13
|
+
* Default regex for ignoring static asset URLs.
|
|
14
|
+
* Uses ([?#]|$) to also match cache-busted URLs (e.g. app.js?v=abc123).
|
|
15
|
+
* These requests are not worth tracing and would create noise.
|
|
16
|
+
*/
|
|
17
|
+
const DEFAULT_IGNORE_URLS = /\.(js|css|map|png|jpg|jpeg|svg|gif|webp|avif|woff|woff2|ttf|eot|ico)([?#]|$)/i;
|
|
18
|
+
/**
|
|
19
|
+
* Create auto-instrumentations for browser telemetry.
|
|
20
|
+
*
|
|
21
|
+
* Returns an array containing XMLHttpRequestInstrumentation and
|
|
22
|
+
* FetchInstrumentation. Both instrumentations use the provided ignoreUrls to
|
|
23
|
+
* filter out asset downloads, and propagate trace context only to URLs
|
|
24
|
+
* matching propagateTraceUrls.
|
|
25
|
+
*
|
|
26
|
+
* @param config - Optional instrumentation configuration
|
|
27
|
+
* @returns Array of configured Instrumentation instances
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const instrumentations = createBrowserInstrumentations({
|
|
32
|
+
* propagateTraceUrls: [/https:\/\/api\.superblocks\.com/],
|
|
33
|
+
* ignoreUrls: [/\/static\//],
|
|
34
|
+
* });
|
|
35
|
+
* registerInstrumentations({ instrumentations });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function createBrowserInstrumentations(config) {
|
|
39
|
+
const ignoreUrls = config?.ignoreUrls ?? [DEFAULT_IGNORE_URLS];
|
|
40
|
+
const propagateTraceHeaderCorsUrls = config?.propagateTraceUrls ?? [];
|
|
41
|
+
const instrumentations = [
|
|
42
|
+
new XMLHttpRequestInstrumentation({
|
|
43
|
+
ignoreUrls,
|
|
44
|
+
propagateTraceHeaderCorsUrls,
|
|
45
|
+
}),
|
|
46
|
+
];
|
|
47
|
+
if (!config?.disableFetch) {
|
|
48
|
+
try {
|
|
49
|
+
instrumentations.push(new FetchInstrumentation({
|
|
50
|
+
ignoreUrls,
|
|
51
|
+
propagateTraceHeaderCorsUrls,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
// FetchInstrumentation failed; XHR instrumentation continues unaffected.
|
|
56
|
+
diag.warn("[telemetry] FetchInstrumentation failed to initialize", String(err));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return instrumentations;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Register the StackContextManager for async context propagation in the browser.
|
|
63
|
+
*
|
|
64
|
+
* This must be called before using `context.with()` in browser environments.
|
|
65
|
+
* Without this, Redux middleware and other async code cannot thread trace
|
|
66
|
+
* context through async operations.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* registerBrowserContextManager();
|
|
71
|
+
* // context.with() now works correctly in browser async flows
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export function registerBrowserContextManager() {
|
|
75
|
+
const contextManager = new StackContextManager();
|
|
76
|
+
contextManager.enable();
|
|
77
|
+
context.setGlobalContextManager(contextManager);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=instrumentations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/browser/instrumentations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,mBAAmB,GACvB,+EAA+E,CAAC;AA0BlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,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,6BAA6B,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,oBAAoB,CAAC;gBACvB,UAAU;gBACV,4BAA4B;aAC7B,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,IAAI,CAAC,IAAI,CACP,uDAAuD,EACvD,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACjD,cAAc,CAAC,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
/** Export pending logs without shutting down the provider */
|
|
24
|
+
forceFlush: () => Promise<void>;
|
|
25
|
+
/** Gracefully shut down the underlying LoggerProvider */
|
|
26
|
+
shutdown: () => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the browser log provider.
|
|
30
|
+
*
|
|
31
|
+
* - Creates an OTLPLogExporter pointed at `config.otlpUrl`
|
|
32
|
+
* - Wraps it in a BatchLogRecordProcessor
|
|
33
|
+
* - Enables the EarlyConsoleBuffer so buffered pre-init console messages are
|
|
34
|
+
* flushed to OpenTelemetry immediately
|
|
35
|
+
*
|
|
36
|
+
* Calling this more than once returns the existing instance with a warning.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* import { initBrowserLogs } from '@superblocksteam/telemetry/browser';
|
|
41
|
+
*
|
|
42
|
+
* const logs = initBrowserLogs({
|
|
43
|
+
* otlpUrl: 'https://app.superblocks.com/api/v1/logs',
|
|
44
|
+
* serviceName: 'superblocks-ui',
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* const logger = logs.getLogger();
|
|
48
|
+
* logger.emit({ severityNumber: SeverityNumber.INFO, body: 'hello' });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function initBrowserLogs(config: BrowserLogsConfig): BrowserLogsInstance;
|
|
52
|
+
/**
|
|
53
|
+
* Reset the browser log provider singleton (for testing only).
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
export declare function resetBrowserLogs(): void;
|
|
57
|
+
//# 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,6DAA6D;IAC7D,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAcD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,iBAAiB,GACxB,mBAAmB,CAgCrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
|
|
11
|
+
import { BatchLogRecordProcessor, LoggerProvider, } from "@opentelemetry/sdk-logs";
|
|
12
|
+
import EarlyConsoleBuffer from "./early-console-buffer.js";
|
|
13
|
+
import { createSanitizingLogProcessor } from "./sanitizer.js";
|
|
14
|
+
// Singleton
|
|
15
|
+
let instance;
|
|
16
|
+
function validateConfig(config) {
|
|
17
|
+
if (!config.serviceName?.trim()) {
|
|
18
|
+
throw new Error("[Telemetry] serviceName is required and cannot be empty");
|
|
19
|
+
}
|
|
20
|
+
if (!config.otlpUrl?.trim()) {
|
|
21
|
+
throw new Error("[Telemetry] otlpUrl is required for browser logs");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the browser log provider.
|
|
26
|
+
*
|
|
27
|
+
* - Creates an OTLPLogExporter pointed at `config.otlpUrl`
|
|
28
|
+
* - Wraps it in a BatchLogRecordProcessor
|
|
29
|
+
* - Enables the EarlyConsoleBuffer so buffered pre-init console messages are
|
|
30
|
+
* flushed to OpenTelemetry immediately
|
|
31
|
+
*
|
|
32
|
+
* Calling this more than once returns the existing instance with a warning.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { initBrowserLogs } from '@superblocksteam/telemetry/browser';
|
|
37
|
+
*
|
|
38
|
+
* const logs = initBrowserLogs({
|
|
39
|
+
* otlpUrl: 'https://app.superblocks.com/api/v1/logs',
|
|
40
|
+
* serviceName: 'superblocks-ui',
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* const logger = logs.getLogger();
|
|
44
|
+
* logger.emit({ severityNumber: SeverityNumber.INFO, body: 'hello' });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function initBrowserLogs(config) {
|
|
48
|
+
validateConfig(config);
|
|
49
|
+
if (instance) {
|
|
50
|
+
console.warn("[Telemetry] Browser log provider already initialized");
|
|
51
|
+
return instance;
|
|
52
|
+
}
|
|
53
|
+
const exporter = new OTLPLogExporter({ url: config.otlpUrl });
|
|
54
|
+
const sanitizer = createSanitizingLogProcessor();
|
|
55
|
+
const batchProcessor = new BatchLogRecordProcessor({ exporter });
|
|
56
|
+
const provider = new LoggerProvider({
|
|
57
|
+
resource: config.resource,
|
|
58
|
+
processors: [sanitizer, batchProcessor],
|
|
59
|
+
});
|
|
60
|
+
// Wire the EarlyConsoleBuffer so buffered pre-init logs are flushed now.
|
|
61
|
+
const otelLogger = provider.getLogger(config.serviceName, "1.0.0");
|
|
62
|
+
EarlyConsoleBuffer.getInstance().enableOpenTelemetry(otelLogger);
|
|
63
|
+
instance = {
|
|
64
|
+
getLogger: (name) => provider.getLogger(name ?? config.serviceName, "1.0.0"),
|
|
65
|
+
forceFlush: () => provider.forceFlush(),
|
|
66
|
+
shutdown: async () => {
|
|
67
|
+
await provider.shutdown();
|
|
68
|
+
instance = undefined;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
return instance;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reset the browser log provider singleton (for testing only).
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
export function resetBrowserLogs() {
|
|
78
|
+
instance = undefined;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/browser/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,OAAO,EACL,uBAAuB,EACvB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAoB9D,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,MAAM,UAAU,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,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,4BAA4B,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,IAAI,cAAc,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,kBAAkB,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,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;QACvC,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,MAAM,UAAU,gBAAgB;IAC9B,QAAQ,GAAG,SAAS,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Metrics Bootstrap
|
|
3
|
+
*
|
|
4
|
+
* Initializes a MeterProvider for browser contexts using OTLP HTTP export.
|
|
5
|
+
*/
|
|
6
|
+
import { type Meter } from "@opentelemetry/api";
|
|
7
|
+
import type { Resource } from "@opentelemetry/resources";
|
|
8
|
+
export interface BrowserMetricsInstance {
|
|
9
|
+
getMeter: (name?: string) => Meter;
|
|
10
|
+
shutdown: () => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface BrowserMetricsConfig {
|
|
13
|
+
/** Full URL for metrics endpoint (e.g. "http://localhost:4318/v1/metrics") */
|
|
14
|
+
otlpUrl: string;
|
|
15
|
+
serviceName: string;
|
|
16
|
+
/** Resource with service.name / deployment.environment.name for Datadog env tags. */
|
|
17
|
+
resource?: Resource;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize browser metrics with a MeterProvider that exports via OTLP HTTP.
|
|
21
|
+
*
|
|
22
|
+
* Uses DELTA aggregation temporality so each export stands on its own and
|
|
23
|
+
* Datadog does not see counter-reset artifacts from short-lived sessions.
|
|
24
|
+
*
|
|
25
|
+
* @param config - Browser metrics configuration
|
|
26
|
+
* @returns Browser metrics instance with getMeter and shutdown
|
|
27
|
+
*/
|
|
28
|
+
export declare function initBrowserMetrics(config: BrowserMetricsConfig): BrowserMetricsInstance;
|
|
29
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/browser/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,GAC3B,sBAAsB,CAsBxB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Metrics Bootstrap
|
|
3
|
+
*
|
|
4
|
+
* Initializes a MeterProvider for browser contexts using OTLP HTTP export.
|
|
5
|
+
*/
|
|
6
|
+
import { metrics } from "@opentelemetry/api";
|
|
7
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
8
|
+
import { AggregationTemporality, MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
|
|
9
|
+
/**
|
|
10
|
+
* Browser metrics export interval.
|
|
11
|
+
*
|
|
12
|
+
* The OTel default is 60 s, but browser sessions are typically short-lived.
|
|
13
|
+
* A page closed before the first export fires silently loses all recorded
|
|
14
|
+
* metrics (there is no flush-on-unload in PeriodicExportingMetricReader).
|
|
15
|
+
* 10 s keeps the window small enough that most sessions export at least once.
|
|
16
|
+
*/
|
|
17
|
+
const BROWSER_EXPORT_INTERVAL_MS = 10_000;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize browser metrics with a MeterProvider that exports via OTLP HTTP.
|
|
20
|
+
*
|
|
21
|
+
* Uses DELTA aggregation temporality so each export stands on its own and
|
|
22
|
+
* Datadog does not see counter-reset artifacts from short-lived sessions.
|
|
23
|
+
*
|
|
24
|
+
* @param config - Browser metrics configuration
|
|
25
|
+
* @returns Browser metrics instance with getMeter and shutdown
|
|
26
|
+
*/
|
|
27
|
+
export function initBrowserMetrics(config) {
|
|
28
|
+
const exporter = new OTLPMetricExporter({
|
|
29
|
+
url: config.otlpUrl,
|
|
30
|
+
temporalityPreference: AggregationTemporality.DELTA,
|
|
31
|
+
});
|
|
32
|
+
const reader = new PeriodicExportingMetricReader({
|
|
33
|
+
exporter,
|
|
34
|
+
exportIntervalMillis: BROWSER_EXPORT_INTERVAL_MS,
|
|
35
|
+
});
|
|
36
|
+
const provider = new MeterProvider({
|
|
37
|
+
resource: config.resource,
|
|
38
|
+
readers: [reader],
|
|
39
|
+
});
|
|
40
|
+
metrics.setGlobalMeterProvider(provider);
|
|
41
|
+
return {
|
|
42
|
+
getMeter: (name) => provider.getMeter(name ?? config.serviceName),
|
|
43
|
+
shutdown: () => provider.shutdown(),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/browser/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAc,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAE/E,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AAepC;;;;;;;GAOG;AACH,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;QACtC,GAAG,EAAE,MAAM,CAAC,OAAO;QACnB,qBAAqB,EAAE,sBAAsB,CAAC,KAAK;KACpD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,6BAA6B,CAAC;QAC/C,QAAQ;QACR,oBAAoB,EAAE,0BAA0B;KACjD,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,CAAC,MAAM,CAAC;KAClB,CAAC,CAAC;IAEH,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO;QACL,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC;QAC1E,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Resilient Exporter
|
|
3
|
+
*
|
|
4
|
+
* Simplified resilient exporter for browser environments.
|
|
5
|
+
* Ensures export failures don't affect the main thread.
|
|
6
|
+
*/
|
|
7
|
+
import { ExportResult } from "@opentelemetry/core";
|
|
8
|
+
import type { SpanExporter, ReadableSpan } from "@opentelemetry/sdk-trace-base";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the browser resilient exporter.
|
|
11
|
+
*/
|
|
12
|
+
export interface BrowserResilientExporterConfig {
|
|
13
|
+
/** Underlying exporter to wrap */
|
|
14
|
+
delegate: SpanExporter;
|
|
15
|
+
/** Max items to buffer before dropping (default: 512, lower than Node for memory) */
|
|
16
|
+
maxQueueSize?: number;
|
|
17
|
+
/** Export timeout in ms (default: 10000, shorter for browser) */
|
|
18
|
+
exportTimeoutMs?: number;
|
|
19
|
+
/** Callback when items are dropped */
|
|
20
|
+
onDrop?: (count: number, reason: "queue_full" | "export_failed" | "timeout") => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Browser-compatible resilient exporter.
|
|
24
|
+
*
|
|
25
|
+
* CRITICAL: Export failures must never block or affect the main thread.
|
|
26
|
+
* This wrapper catches all errors and timeouts.
|
|
27
|
+
*/
|
|
28
|
+
export declare class BrowserResilientExporter implements SpanExporter {
|
|
29
|
+
private readonly delegate;
|
|
30
|
+
private readonly maxQueueSize;
|
|
31
|
+
private readonly exportTimeoutMs;
|
|
32
|
+
private readonly onDrop;
|
|
33
|
+
private queuedCount;
|
|
34
|
+
private shuttingDown;
|
|
35
|
+
constructor(config: BrowserResilientExporterConfig);
|
|
36
|
+
/**
|
|
37
|
+
* Export spans with resilient error handling.
|
|
38
|
+
*/
|
|
39
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
40
|
+
shutdown(): Promise<void>;
|
|
41
|
+
forceFlush(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resilient-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilient-exporter.d.ts","sourceRoot":"","sources":["../../src/browser/resilient-exporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAC;IACvB,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GAAG,eAAe,GAAG,SAAS,KAC/C,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGb;IAEV,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,8BAA8B;IAOlD;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,YAAY,EAAE,EACrB,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAC7C,IAAI;IAiDD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Resilient Exporter
|
|
3
|
+
*
|
|
4
|
+
* Simplified resilient exporter for browser environments.
|
|
5
|
+
* Ensures export failures don't affect the main thread.
|
|
6
|
+
*/
|
|
7
|
+
import { ExportResultCode } from "@opentelemetry/core";
|
|
8
|
+
/**
|
|
9
|
+
* Browser-compatible resilient exporter.
|
|
10
|
+
*
|
|
11
|
+
* CRITICAL: Export failures must never block or affect the main thread.
|
|
12
|
+
* This wrapper catches all errors and timeouts.
|
|
13
|
+
*/
|
|
14
|
+
export class BrowserResilientExporter {
|
|
15
|
+
delegate;
|
|
16
|
+
maxQueueSize;
|
|
17
|
+
exportTimeoutMs;
|
|
18
|
+
onDrop;
|
|
19
|
+
queuedCount = 0;
|
|
20
|
+
shuttingDown = false;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.delegate = config.delegate;
|
|
23
|
+
this.maxQueueSize = config.maxQueueSize ?? 512;
|
|
24
|
+
this.exportTimeoutMs = config.exportTimeoutMs ?? 10000;
|
|
25
|
+
this.onDrop = config.onDrop ?? (() => { });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Export spans with resilient error handling.
|
|
29
|
+
*/
|
|
30
|
+
export(spans, resultCallback) {
|
|
31
|
+
// Reject during shutdown
|
|
32
|
+
if (this.shuttingDown) {
|
|
33
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// Check backpressure
|
|
37
|
+
if (this.queuedCount + spans.length > this.maxQueueSize) {
|
|
38
|
+
this.onDrop(spans.length, "queue_full");
|
|
39
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.queuedCount += spans.length;
|
|
43
|
+
let completed = false;
|
|
44
|
+
// Timeout handler
|
|
45
|
+
const timeoutId = setTimeout(() => {
|
|
46
|
+
if (completed)
|
|
47
|
+
return;
|
|
48
|
+
completed = true;
|
|
49
|
+
this.queuedCount -= spans.length;
|
|
50
|
+
this.onDrop(spans.length, "timeout");
|
|
51
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
52
|
+
}, this.exportTimeoutMs);
|
|
53
|
+
try {
|
|
54
|
+
this.delegate.export(spans, (result) => {
|
|
55
|
+
if (completed)
|
|
56
|
+
return;
|
|
57
|
+
completed = true;
|
|
58
|
+
clearTimeout(timeoutId);
|
|
59
|
+
this.queuedCount -= spans.length;
|
|
60
|
+
if (result.code !== ExportResultCode.SUCCESS) {
|
|
61
|
+
this.onDrop(spans.length, "export_failed");
|
|
62
|
+
}
|
|
63
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
if (completed)
|
|
68
|
+
return;
|
|
69
|
+
completed = true;
|
|
70
|
+
clearTimeout(timeoutId);
|
|
71
|
+
this.queuedCount -= spans.length;
|
|
72
|
+
this.onDrop(spans.length, "export_failed");
|
|
73
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async shutdown() {
|
|
77
|
+
this.shuttingDown = true;
|
|
78
|
+
return this.delegate.shutdown();
|
|
79
|
+
}
|
|
80
|
+
async forceFlush() {
|
|
81
|
+
return this.delegate.forceFlush?.() ?? Promise.resolve();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=resilient-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilient-exporter.js","sourceRoot":"","sources":["../../src/browser/resilient-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser PII Sanitizing Processors
|
|
3
|
+
*
|
|
4
|
+
* Span and log processors that redact PII before export from the browser.
|
|
5
|
+
* Browser telemetry always runs in untrusted context, so aggressive sanitization
|
|
6
|
+
* is applied unconditionally.
|
|
7
|
+
*
|
|
8
|
+
* - SanitizingSpanProcessor: redacts sensitive span attributes and strips
|
|
9
|
+
* sensitive query params from URL attributes.
|
|
10
|
+
* - SanitizingLogProcessor: redacts sensitive log record attributes and
|
|
11
|
+
* replaces email-like patterns in log body text.
|
|
12
|
+
*/
|
|
13
|
+
import type { LogRecordProcessor } from "@opentelemetry/sdk-logs";
|
|
14
|
+
import type { SpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
15
|
+
export interface SanitizingConfig {
|
|
16
|
+
/** Additional attribute key patterns to redact */
|
|
17
|
+
additionalKeyPatterns?: RegExp[];
|
|
18
|
+
/** Additional URL param names to strip */
|
|
19
|
+
additionalSensitiveParams?: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a SpanProcessor that redacts PII from span attributes before export.
|
|
23
|
+
*
|
|
24
|
+
* @param config - Optional configuration for additional key patterns / URL params
|
|
25
|
+
* @returns A SpanProcessor suitable for use in a browser WebTracerProvider
|
|
26
|
+
*/
|
|
27
|
+
export declare function createSanitizingSpanProcessor(config?: SanitizingConfig): SpanProcessor;
|
|
28
|
+
/**
|
|
29
|
+
* Create a LogRecordProcessor that redacts PII from log records before export.
|
|
30
|
+
*
|
|
31
|
+
* @param config - Optional configuration for additional key patterns
|
|
32
|
+
* @returns A LogRecordProcessor suitable for use in a browser log provider
|
|
33
|
+
*/
|
|
34
|
+
export declare function createSanitizingLogProcessor(config?: SanitizingConfig): LogRecordProcessor;
|
|
35
|
+
//# sourceMappingURL=sanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../src/browser/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,+BAA+B,CAAC;AAwDvC,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,0CAA0C;IAC1C,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAsKD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,gBAAgB,GACxB,kBAAkB,CAEpB"}
|