@superblocksteam/telemetry 2.0.105-next.0 → 2.0.105-next.1

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.
Files changed (93) hide show
  1. package/dist/browser/console-logging.d.ts +18 -0
  2. package/dist/browser/console-logging.d.ts.map +1 -0
  3. package/dist/browser/console-logging.js +32 -0
  4. package/dist/browser/console-logging.js.map +1 -0
  5. package/dist/browser/early-console-buffer.d.ts +39 -0
  6. package/dist/browser/early-console-buffer.d.ts.map +1 -0
  7. package/dist/browser/early-console-buffer.js +157 -0
  8. package/dist/browser/early-console-buffer.js.map +1 -0
  9. package/dist/browser/index.d.ts +7 -0
  10. package/dist/browser/index.d.ts.map +1 -1
  11. package/dist/browser/index.js +22 -1
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/init.d.ts +27 -3
  14. package/dist/browser/init.d.ts.map +1 -1
  15. package/dist/browser/init.js +159 -14
  16. package/dist/browser/init.js.map +1 -1
  17. package/dist/browser/instrumentations.d.ts +61 -0
  18. package/dist/browser/instrumentations.d.ts.map +1 -0
  19. package/dist/browser/instrumentations.js +74 -0
  20. package/dist/browser/instrumentations.js.map +1 -0
  21. package/dist/browser/logs.d.ts +52 -0
  22. package/dist/browser/logs.d.ts.map +1 -0
  23. package/dist/browser/logs.js +85 -0
  24. package/dist/browser/logs.js.map +1 -0
  25. package/dist/browser/metrics.d.ts +25 -0
  26. package/dist/browser/metrics.d.ts.map +1 -0
  27. package/dist/browser/metrics.js +37 -0
  28. package/dist/browser/metrics.js.map +1 -0
  29. package/dist/browser/sanitizer.d.ts +35 -0
  30. package/dist/browser/sanitizer.d.ts.map +1 -0
  31. package/dist/browser/sanitizer.js +211 -0
  32. package/dist/browser/sanitizer.js.map +1 -0
  33. package/dist/browser/traced-socket.d.ts +102 -0
  34. package/dist/browser/traced-socket.d.ts.map +1 -0
  35. package/dist/browser/traced-socket.js +186 -0
  36. package/dist/browser/traced-socket.js.map +1 -0
  37. package/dist/common/index.d.ts +1 -0
  38. package/dist/common/index.d.ts.map +1 -1
  39. package/dist/common/index.js +1 -0
  40. package/dist/common/index.js.map +1 -1
  41. package/dist/common/traced-socket-types.d.ts +43 -0
  42. package/dist/common/traced-socket-types.d.ts.map +1 -0
  43. package/dist/common/traced-socket-types.js +17 -0
  44. package/dist/common/traced-socket-types.js.map +1 -0
  45. package/dist/types/index.d.ts +5 -1
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist-esm/browser/console-logging.d.ts +18 -0
  48. package/dist-esm/browser/console-logging.d.ts.map +1 -0
  49. package/dist-esm/browser/console-logging.js +27 -0
  50. package/dist-esm/browser/console-logging.js.map +1 -0
  51. package/dist-esm/browser/early-console-buffer.d.ts +39 -0
  52. package/dist-esm/browser/early-console-buffer.d.ts.map +1 -0
  53. package/dist-esm/browser/early-console-buffer.js +155 -0
  54. package/dist-esm/browser/early-console-buffer.js.map +1 -0
  55. package/dist-esm/browser/index.d.ts +7 -0
  56. package/dist-esm/browser/index.d.ts.map +1 -1
  57. package/dist-esm/browser/index.js +7 -0
  58. package/dist-esm/browser/index.js.map +1 -1
  59. package/dist-esm/browser/init.d.ts +27 -3
  60. package/dist-esm/browser/init.d.ts.map +1 -1
  61. package/dist-esm/browser/init.js +161 -16
  62. package/dist-esm/browser/init.js.map +1 -1
  63. package/dist-esm/browser/instrumentations.d.ts +61 -0
  64. package/dist-esm/browser/instrumentations.d.ts.map +1 -0
  65. package/dist-esm/browser/instrumentations.js +70 -0
  66. package/dist-esm/browser/instrumentations.js.map +1 -0
  67. package/dist-esm/browser/logs.d.ts +52 -0
  68. package/dist-esm/browser/logs.d.ts.map +1 -0
  69. package/dist-esm/browser/logs.js +78 -0
  70. package/dist-esm/browser/logs.js.map +1 -0
  71. package/dist-esm/browser/metrics.d.ts +25 -0
  72. package/dist-esm/browser/metrics.d.ts.map +1 -0
  73. package/dist-esm/browser/metrics.js +34 -0
  74. package/dist-esm/browser/metrics.js.map +1 -0
  75. package/dist-esm/browser/sanitizer.d.ts +35 -0
  76. package/dist-esm/browser/sanitizer.d.ts.map +1 -0
  77. package/dist-esm/browser/sanitizer.js +207 -0
  78. package/dist-esm/browser/sanitizer.js.map +1 -0
  79. package/dist-esm/browser/traced-socket.d.ts +102 -0
  80. package/dist-esm/browser/traced-socket.d.ts.map +1 -0
  81. package/dist-esm/browser/traced-socket.js +182 -0
  82. package/dist-esm/browser/traced-socket.js.map +1 -0
  83. package/dist-esm/common/index.d.ts +1 -0
  84. package/dist-esm/common/index.d.ts.map +1 -1
  85. package/dist-esm/common/index.js +1 -0
  86. package/dist-esm/common/index.js.map +1 -1
  87. package/dist-esm/common/traced-socket-types.d.ts +43 -0
  88. package/dist-esm/common/traced-socket-types.d.ts.map +1 -0
  89. package/dist-esm/common/traced-socket-types.js +16 -0
  90. package/dist-esm/common/traced-socket-types.js.map +1 -0
  91. package/dist-esm/types/index.d.ts +5 -1
  92. package/dist-esm/types/index.d.ts.map +1 -1
  93. package/package.json +6 -3
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Early Console Buffer
3
+ *
4
+ * Patches console.log/info/debug/warn/error as early as possible (before OTel
5
+ * initialises) to capture logs in a ring buffer. On OTel init, the buffer is
6
+ * flushed to the OTel Logger and all subsequent console calls are forwarded
7
+ * directly.
8
+ *
9
+ * IMPORTANT: Each patched method ALWAYS calls through to the original console
10
+ * method first, so downstream patchers (Datadog RUM, PostHog, etc.) that wrap
11
+ * console after us continue to receive every call.
12
+ */
13
+ import { SeverityNumber } from "@opentelemetry/api-logs";
14
+ import { ConsoleLogAttributes } from "./console-logging.js";
15
+ function mergeAllConsoleLogAttributes(args) {
16
+ if (args.length === 0)
17
+ return undefined;
18
+ return args.reduce((merged, arg) => {
19
+ if (arg instanceof ConsoleLogAttributes) {
20
+ return { ...merged, ...arg.attributes };
21
+ }
22
+ return merged;
23
+ }, {});
24
+ }
25
+ class EarlyConsoleBuffer {
26
+ static instance;
27
+ buffer = [];
28
+ maxBufferSize = 1000;
29
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
30
+ originalMethods = {};
31
+ otelLogger = undefined;
32
+ isPatched = false;
33
+ static getInstance() {
34
+ if (!EarlyConsoleBuffer.instance) {
35
+ EarlyConsoleBuffer.instance = new EarlyConsoleBuffer();
36
+ }
37
+ return EarlyConsoleBuffer.instance;
38
+ }
39
+ /**
40
+ * Patch console methods immediately with buffering.
41
+ * Safe to call multiple times — subsequent calls are no-ops.
42
+ */
43
+ patchEarly() {
44
+ if (this.isPatched)
45
+ return;
46
+ // Capture current console methods (which may already be patched by Datadog
47
+ // RUM or PostHog). We keep calling through to whatever was here at the time
48
+ // patchEarly() was invoked.
49
+ // eslint-disable-next-line no-console
50
+ this.originalMethods.log = console.log.bind(console);
51
+ this.originalMethods.info = console.info.bind(console);
52
+ this.originalMethods.debug = console.debug.bind(console);
53
+ this.originalMethods.warn = console.warn.bind(console);
54
+ this.originalMethods.error = console.error.bind(console);
55
+ this.patchMethod("log");
56
+ this.patchMethod("info");
57
+ this.patchMethod("debug");
58
+ this.patchMethod("warn");
59
+ this.patchMethod("error");
60
+ this.isPatched = true;
61
+ // Announce via original info to avoid touching the newly patched method
62
+ // (which would buffer this diagnostic message unnecessarily).
63
+ this.originalMethods.info("[EarlyConsoleBuffer] Console patching enabled — buffering logs until OpenTelemetry initializes");
64
+ }
65
+ patchMethod(level) {
66
+ const originalMethod = this.originalMethods[level];
67
+ console[level] = (...args) => {
68
+ // ALWAYS call through to the original first so downstream patchers work.
69
+ originalMethod(...args);
70
+ // Route to OTel or buffer depending on initialization state.
71
+ if (this.otelLogger) {
72
+ this.sendToOpenTelemetry(level, args);
73
+ }
74
+ else {
75
+ this.bufferLog(level, args);
76
+ }
77
+ };
78
+ }
79
+ bufferLog(level, args) {
80
+ if (this.buffer.length >= this.maxBufferSize) {
81
+ this.buffer.shift(); // drop oldest entry
82
+ }
83
+ this.buffer.push({ level, args, timestamp: Date.now() });
84
+ }
85
+ /**
86
+ * Called once OTel is ready. Flushes buffered entries then routes all future
87
+ * console calls directly to the OTel logger.
88
+ */
89
+ enableOpenTelemetry(otelLogger) {
90
+ console.info("[EarlyConsoleBuffer] Enabling OpenTelemetry integration");
91
+ this.otelLogger = otelLogger;
92
+ this.flushBuffer();
93
+ }
94
+ flushBuffer() {
95
+ if (!this.otelLogger)
96
+ return;
97
+ const count = this.buffer.length;
98
+ if (count === 0) {
99
+ console.info("[EarlyConsoleBuffer] No buffered logs to flush");
100
+ return;
101
+ }
102
+ console.info(`[EarlyConsoleBuffer] Flushing ${count} buffered logs to OpenTelemetry`);
103
+ for (const entry of this.buffer) {
104
+ this.sendToOpenTelemetry(entry.level, entry.args, entry.timestamp, true);
105
+ }
106
+ this.buffer = [];
107
+ console.info(`[EarlyConsoleBuffer] Successfully sent ${count} buffered logs to OpenTelemetry logger`);
108
+ }
109
+ sendToOpenTelemetry(level, args, timestamp, fromBuffer) {
110
+ if (!this.otelLogger)
111
+ return;
112
+ const severityMap = {
113
+ debug: SeverityNumber.DEBUG,
114
+ log: SeverityNumber.INFO,
115
+ info: SeverityNumber.INFO,
116
+ warn: SeverityNumber.WARN,
117
+ error: SeverityNumber.ERROR,
118
+ };
119
+ const attributes = {
120
+ ...(fromBuffer ? { source: "early-console-buffer" } : {}),
121
+ ...mergeAllConsoleLogAttributes(args),
122
+ };
123
+ this.otelLogger.emit({
124
+ severityNumber: severityMap[level],
125
+ severityText: level,
126
+ body: this.formatConsoleArgs(args),
127
+ timestamp,
128
+ attributes: attributes,
129
+ });
130
+ }
131
+ formatConsoleArgs(args) {
132
+ return args
133
+ .filter((arg) => !(arg instanceof ConsoleLogAttributes))
134
+ .map((arg) => {
135
+ if (typeof arg === "string")
136
+ return arg;
137
+ if (arg === null)
138
+ return "null";
139
+ if (arg === undefined)
140
+ return "undefined";
141
+ if (typeof arg === "object") {
142
+ try {
143
+ return JSON.stringify(arg, null, 2);
144
+ }
145
+ catch {
146
+ return "[object Object]";
147
+ }
148
+ }
149
+ return String(arg);
150
+ })
151
+ .join(" ");
152
+ }
153
+ }
154
+ export default EarlyConsoleBuffer;
155
+ //# sourceMappingURL=early-console-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-console-buffer.js","sourceRoot":"","sources":["../../src/browser/early-console-buffer.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,12 @@
4
4
  * This is the ONLY approved way to initialize telemetry in browser contexts.
5
5
  */
6
6
  export { initBrowserTelemetry, getBrowserTelemetryInstance, isBrowserTelemetryInitialized, resetBrowserTelemetry, getEnvironmentFromHostname, type BrowserTelemetryInstance, } from "./init.js";
7
+ export { initBrowserLogs, resetBrowserLogs, type BrowserLogsConfig, type BrowserLogsInstance, } from "./logs.js";
8
+ export { initBrowserMetrics, type BrowserMetricsConfig, type BrowserMetricsInstance, } from "./metrics.js";
9
+ export { createSanitizingSpanProcessor, createSanitizingLogProcessor, type SanitizingConfig, } from "./sanitizer.js";
10
+ export { createBrowserInstrumentations, registerBrowserContextManager, type BrowserInstrumentationConfig, } from "./instrumentations.js";
11
+ export { ConsoleLogAttributes, consoleLogAttributes, } from "./console-logging.js";
12
+ export { default as EarlyConsoleBuffer } from "./early-console-buffer.js";
7
13
  export { getDefaultPolicy, DeploymentType } from "../types/policy.js";
14
+ export { BrowserTracedSocket, type BrowserTracedSocketConfig, type WebSocketLike, } from "./traced-socket.js";
8
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,KAAK,4BAA4B,GAClC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC"}
@@ -4,6 +4,13 @@
4
4
  * This is the ONLY approved way to initialize telemetry in browser contexts.
5
5
  */
6
6
  export { initBrowserTelemetry, getBrowserTelemetryInstance, isBrowserTelemetryInitialized, resetBrowserTelemetry, getEnvironmentFromHostname, } from "./init.js";
7
+ export { initBrowserLogs, resetBrowserLogs, } from "./logs.js";
8
+ export { initBrowserMetrics, } from "./metrics.js";
9
+ export { createSanitizingSpanProcessor, createSanitizingLogProcessor, } from "./sanitizer.js";
10
+ export { createBrowserInstrumentations, registerBrowserContextManager, } from "./instrumentations.js";
11
+ export { ConsoleLogAttributes, consoleLogAttributes, } from "./console-logging.js";
12
+ export { default as EarlyConsoleBuffer } from "./early-console-buffer.js";
7
13
  // Re-export policy utilities for convenience
8
14
  export { getDefaultPolicy, DeploymentType } from "../types/policy.js";
15
+ export { BrowserTracedSocket, } from "./traced-socket.js";
9
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,WAAW,CAAC;AAEnB,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,eAAe,EACf,gBAAgB,GAGjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAE7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAE9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EACL,mBAAmB,GAGpB,MAAM,oBAAoB,CAAC"}
@@ -3,8 +3,14 @@
3
3
  *
4
4
  * This is the ONLY approved way to initialize telemetry in browser contexts.
5
5
  * Direct WebTracerProvider usage outside this package is prohibited.
6
+ *
7
+ * Composes all browser signals: traces, metrics, logs, sanitizers, and
8
+ * auto-instrumentations into a single init call.
6
9
  */
7
- import { Tracer } from "@opentelemetry/api";
10
+ import { type Tracer } from "@opentelemetry/api";
11
+ import type { Meter } from "@opentelemetry/api";
12
+ import type { Logger } from "@opentelemetry/api-logs";
13
+ import { type SpanProcessor } from "@opentelemetry/sdk-trace-base";
8
14
  import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
9
15
  import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js";
10
16
  import type { BrowserTelemetryConfig } from "../types/index.js";
@@ -19,6 +25,14 @@ export interface BrowserTelemetryInstance {
19
25
  policyEvaluator: TelemetryPolicyEvaluator;
20
26
  /** Get a tracer */
21
27
  getTracer: (name?: string) => Tracer;
28
+ /** Get a meter for recording metrics */
29
+ getMeter: (name?: string) => Meter;
30
+ /** Get a logger for emitting log records */
31
+ getLogger: (name?: string) => Logger;
32
+ /** Set attributes that are injected into every new span (dynamic context like org, user) */
33
+ setGlobalSpanAttributes: (attrs: Record<string, string>) => void;
34
+ /** Register an additional SpanProcessor on the provider (e.g. LocalStorageExporter) */
35
+ addSpanProcessor: (processor: SpanProcessor) => void;
22
36
  /** Graceful shutdown */
23
37
  shutdown: () => Promise<void>;
24
38
  }
@@ -28,7 +42,15 @@ export interface BrowserTelemetryInstance {
28
42
  * Browser telemetry is always sanitized (Tier 2) since it runs in untrusted context.
29
43
  * Full fidelity Tier 1 data should never be emitted from the browser.
30
44
  *
31
- * @param config - Browser configuration
45
+ * Composes:
46
+ * - Traces: WebTracerProvider with sanitizing + batch processors
47
+ * - Metrics: MeterProvider via initBrowserMetrics
48
+ * - Logs: LoggerProvider via initBrowserLogs (with EarlyConsoleBuffer)
49
+ * - Sanitizers: PII redaction for spans and logs
50
+ * - Instrumentations: XHR + Fetch auto-instrumentation
51
+ * - Context: StackContextManager for async context propagation
52
+ *
53
+ * @param config - Browser configuration (otlpUrl is treated as base URL)
32
54
  * @param policy - Telemetry policy (REQUIRED)
33
55
  * @returns Browser telemetry instance
34
56
  *
@@ -42,10 +64,12 @@ export interface BrowserTelemetryInstance {
42
64
  * serviceName: 'superblocks-ui',
43
65
  * serviceVersion: '1.0.0',
44
66
  * environment: 'production',
45
- * otlpUrl: 'https://app.superblocks.com/api/v1/traces',
67
+ * otlpUrl: 'https://app.superblocks.com/api',
46
68
  * }, policy);
47
69
  *
48
70
  * const tracer = telemetry.getTracer();
71
+ * const meter = telemetry.getMeter();
72
+ * const logger = telemetry.getLogger();
49
73
  * ```
50
74
  */
51
75
  export declare function initBrowserTelemetry(config: BrowserTelemetryConfig, policy: TelemetryPolicy): BrowserTelemetryInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/browser/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,EAAE,wBAAwB,CAAC;IAC1C,mBAAmB;IACnB,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,wBAAwB;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,eAAe,GACtB,wBAAwB,CAkE1B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAOtE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWnE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/browser/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAQtD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAUpE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,EAAE,wBAAwB,CAAC;IAC1C,mBAAmB;IACnB,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IACnC,4CAA4C;IAC5C,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,4FAA4F;IAC5F,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACjE,uFAAuF;IACvF,gBAAgB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACrD,wBAAwB;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AA2GD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,eAAe,GACtB,wBAAwB,CA4I1B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAOtE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWnE"}
@@ -3,16 +3,24 @@
3
3
  *
4
4
  * This is the ONLY approved way to initialize telemetry in browser contexts.
5
5
  * Direct WebTracerProvider usage outside this package is prohibited.
6
+ *
7
+ * Composes all browser signals: traces, metrics, logs, sanitizers, and
8
+ * auto-instrumentations into a single init call.
6
9
  */
7
- import { trace } from "@opentelemetry/api";
10
+ import { context, metrics, trace } from "@opentelemetry/api";
8
11
  import { W3CTraceContextPropagator, W3CBaggagePropagator, CompositePropagator, } from "@opentelemetry/core";
9
12
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
10
- import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
13
+ import { registerInstrumentations } from "@opentelemetry/instrumentation";
14
+ import { BatchSpanProcessor, } from "@opentelemetry/sdk-trace-base";
11
15
  import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
12
16
  import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js";
13
17
  import { buildResource } from "../common/resource.js";
14
18
  import { TelemetryTier } from "../types/policy.js";
19
+ import { createBrowserInstrumentations, registerBrowserContextManager, } from "./instrumentations.js";
20
+ import { initBrowserLogs, resetBrowserLogs } from "./logs.js";
21
+ import { initBrowserMetrics } from "./metrics.js";
15
22
  import { BrowserResilientExporter } from "./resilient-exporter.js";
23
+ import { createSanitizingSpanProcessor } from "./sanitizer.js";
16
24
  // Singleton instance
17
25
  let instance;
18
26
  /**
@@ -41,13 +49,84 @@ function validateBrowserTelemetryConfig(config) {
41
49
  throw new Error(`[Telemetry] Invalid otlpUrl: ${config.otlpUrl} (${error.message})`);
42
50
  }
43
51
  }
52
+ /**
53
+ * Strips trailing slash from a URL string.
54
+ */
55
+ function normalizeBaseUrl(url) {
56
+ return url.replace(/\/+$/, "");
57
+ }
58
+ /**
59
+ * SpanProcessor that injects mutable global attributes into every span on start.
60
+ * Since OTel Resource is immutable, dynamic context (org ID, user ID, app ID)
61
+ * must be applied at the span level.
62
+ */
63
+ class GlobalAttributeSpanProcessor {
64
+ attrs = {};
65
+ setAttributes(attrs) {
66
+ this.attrs = { ...attrs };
67
+ }
68
+ onStart(span, _parentContext) {
69
+ for (const [key, value] of Object.entries(this.attrs)) {
70
+ span.setAttribute(key, value);
71
+ }
72
+ }
73
+ onEnd(_span) { }
74
+ async shutdown() { }
75
+ async forceFlush() { }
76
+ }
77
+ /**
78
+ * Composite SpanProcessor that delegates to a mutable list of inner processors.
79
+ * In OTel SDK v2.x, `addSpanProcessor` was removed from BasicTracerProvider,
80
+ * so we wrap the processor list ourselves to support runtime additions
81
+ * (e.g. UI's LocalStorageExporter).
82
+ */
83
+ class DynamicCompositeSpanProcessor {
84
+ processors = [];
85
+ add(processor) {
86
+ this.processors.push(processor);
87
+ }
88
+ onStart(span, parentContext) {
89
+ for (const p of this.processors) {
90
+ try {
91
+ p.onStart(span, parentContext);
92
+ }
93
+ catch (err) {
94
+ console.error("[Telemetry] SpanProcessor.onStart failed", err);
95
+ }
96
+ }
97
+ }
98
+ onEnd(span) {
99
+ for (const p of this.processors) {
100
+ try {
101
+ p.onEnd(span);
102
+ }
103
+ catch (err) {
104
+ console.error("[Telemetry] SpanProcessor.onEnd failed", err);
105
+ }
106
+ }
107
+ }
108
+ async shutdown() {
109
+ await Promise.all(this.processors.map((p) => p.shutdown()));
110
+ }
111
+ async forceFlush() {
112
+ await Promise.all(this.processors.map((p) => p.forceFlush()));
113
+ }
114
+ }
44
115
  /**
45
116
  * Initialize browser telemetry with policy enforcement.
46
117
  *
47
118
  * Browser telemetry is always sanitized (Tier 2) since it runs in untrusted context.
48
119
  * Full fidelity Tier 1 data should never be emitted from the browser.
49
120
  *
50
- * @param config - Browser configuration
121
+ * Composes:
122
+ * - Traces: WebTracerProvider with sanitizing + batch processors
123
+ * - Metrics: MeterProvider via initBrowserMetrics
124
+ * - Logs: LoggerProvider via initBrowserLogs (with EarlyConsoleBuffer)
125
+ * - Sanitizers: PII redaction for spans and logs
126
+ * - Instrumentations: XHR + Fetch auto-instrumentation
127
+ * - Context: StackContextManager for async context propagation
128
+ *
129
+ * @param config - Browser configuration (otlpUrl is treated as base URL)
51
130
  * @param policy - Telemetry policy (REQUIRED)
52
131
  * @returns Browser telemetry instance
53
132
  *
@@ -61,10 +140,12 @@ function validateBrowserTelemetryConfig(config) {
61
140
  * serviceName: 'superblocks-ui',
62
141
  * serviceVersion: '1.0.0',
63
142
  * environment: 'production',
64
- * otlpUrl: 'https://app.superblocks.com/api/v1/traces',
143
+ * otlpUrl: 'https://app.superblocks.com/api',
65
144
  * }, policy);
66
145
  *
67
146
  * const tracer = telemetry.getTracer();
147
+ * const meter = telemetry.getMeter();
148
+ * const logger = telemetry.getLogger();
68
149
  * ```
69
150
  */
70
151
  export function initBrowserTelemetry(config, policy) {
@@ -79,21 +160,31 @@ export function initBrowserTelemetry(config, policy) {
79
160
  console.warn("[Telemetry] Browser provider already initialized");
80
161
  return instance;
81
162
  }
163
+ const baseUrl = normalizeBaseUrl(config.otlpUrl);
164
+ // 1. Register StackContextManager for async context propagation
165
+ registerBrowserContextManager();
82
166
  const policyEvaluator = new TelemetryPolicyEvaluator(policy);
83
167
  const resource = buildResource(config);
84
- // Build span processors based on policy
85
- // Use isExportEnabled (not canExport) - sampling applies at runtime, not initialization
86
- const spanProcessors = policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)
87
- ? [
88
- new BatchSpanProcessor(new BrowserResilientExporter({
89
- delegate: new OTLPTraceExporter({ url: config.otlpUrl }),
90
- })),
91
- ]
92
- : [];
93
- // Create provider with span processors in constructor (OTEL v2.x API)
168
+ // 2. Build span processors: global attrs -> sanitizer -> batch exporter
169
+ // Wrapped in a DynamicCompositeSpanProcessor so addSpanProcessor() works
170
+ // at runtime (OTel SDK v2.x removed addSpanProcessor from the provider).
171
+ const globalAttrProcessor = new GlobalAttributeSpanProcessor();
172
+ const compositeProcessor = new DynamicCompositeSpanProcessor();
173
+ compositeProcessor.add(globalAttrProcessor);
174
+ // Add sanitizing processor (always on in browser)
175
+ compositeProcessor.add(createSanitizingSpanProcessor());
176
+ // Add batch exporter if policy allows export
177
+ if (policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)) {
178
+ compositeProcessor.add(new BatchSpanProcessor(new BrowserResilientExporter({
179
+ delegate: new OTLPTraceExporter({
180
+ url: `${baseUrl}/v1/traces`,
181
+ }),
182
+ })));
183
+ }
184
+ // Create provider with the composite processor (OTEL v2.x API)
94
185
  const provider = new WebTracerProvider({
95
186
  resource,
96
- spanProcessors,
187
+ spanProcessors: [compositeProcessor],
97
188
  });
98
189
  // Register with composite propagator for W3C TraceContext and Baggage
99
190
  provider.register({
@@ -104,13 +195,66 @@ export function initBrowserTelemetry(config, policy) {
104
195
  ],
105
196
  }),
106
197
  });
107
- console.debug(`[Telemetry] Browser tracing initialized for ${config.serviceName} (${policy.deploymentType})`);
198
+ // 3. Create auto-instrumentations (XHR + fetch)
199
+ const instrumentations = createBrowserInstrumentations({
200
+ propagateTraceUrls: config.propagateTraceUrls,
201
+ ignoreUrls: config.ignoreUrls,
202
+ });
203
+ registerInstrumentations({
204
+ instrumentations,
205
+ tracerProvider: provider,
206
+ });
207
+ // 4. Initialize metrics
208
+ let metricsInstance;
209
+ if (policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)) {
210
+ metricsInstance = initBrowserMetrics({
211
+ otlpUrl: `${baseUrl}/v1/metrics`,
212
+ serviceName: config.serviceName,
213
+ });
214
+ }
215
+ // 5. Initialize logs (with EarlyConsoleBuffer flush)
216
+ const logsInstance = policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)
217
+ ? initBrowserLogs({
218
+ otlpUrl: `${baseUrl}/v1/logs`,
219
+ serviceName: config.serviceName,
220
+ })
221
+ : undefined;
222
+ console.debug(`[Telemetry] Browser telemetry initialized for ${config.serviceName} (${policy.deploymentType}) — traces, metrics, logs`);
108
223
  instance = {
109
224
  provider,
110
225
  policyEvaluator,
111
226
  getTracer: (name) => trace.getTracer(name ?? config.serviceName, config.serviceVersion),
227
+ getMeter: (name) => {
228
+ if (metricsInstance) {
229
+ return metricsInstance.getMeter(name);
230
+ }
231
+ // Return a no-op meter from the global API when metrics are disabled
232
+ return metrics.getMeter(name ?? config.serviceName);
233
+ },
234
+ getLogger: (name) => {
235
+ if (logsInstance) {
236
+ return logsInstance.getLogger(name);
237
+ }
238
+ // Return a no-op logger when logs are disabled
239
+ return {
240
+ emit: () => { },
241
+ };
242
+ },
243
+ setGlobalSpanAttributes: (attrs) => {
244
+ globalAttrProcessor.setAttributes(attrs);
245
+ },
246
+ addSpanProcessor: (processor) => {
247
+ compositeProcessor.add(processor);
248
+ },
112
249
  shutdown: async () => {
113
250
  await provider.shutdown();
251
+ if (metricsInstance) {
252
+ await metricsInstance.shutdown();
253
+ }
254
+ if (logsInstance) {
255
+ await logsInstance.shutdown();
256
+ }
257
+ context.disable();
114
258
  instance = undefined;
115
259
  },
116
260
  };
@@ -139,6 +283,7 @@ export function isBrowserTelemetryInitialized() {
139
283
  */
140
284
  export function resetBrowserTelemetry() {
141
285
  instance = undefined;
286
+ resetBrowserLogs();
142
287
  }
143
288
  /**
144
289
  * Derive environment from hostname.
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/browser/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/browser/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAe,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,kBAAkB,GAInB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAmB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAA+B,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAwB/D,qBAAqB;AACrB,IAAI,QAA8C,CAAC;AAEnD;;;;;GAKG;AACH,SAAS,8BAA8B,CAAC,MAA8B;IACpE,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,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,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,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,OAAO,KAAM,KAAe,CAAC,OAAO,GAAG,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,4BAA4B;IACxB,KAAK,GAA2B,EAAE,CAAC;IAE3C,aAAa,CAAC,KAA6B;QACzC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,cAAuB;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAmB,IAAS,CAAC;IACnC,KAAK,CAAC,QAAQ,KAAmB,CAAC;IAClC,KAAK,CAAC,UAAU,KAAmB,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,6BAA6B;IAChB,UAAU,GAAoB,EAAE,CAAC;IAElD,GAAG,CAAC,SAAwB;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,aAAsB;QACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,aAAqD,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA8B,EAC9B,MAAuB;IAEvB,qBAAqB;IACrB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,kDAAkD;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjD,gEAAgE;IAChE,6BAA6B,EAAE,CAAC;IAEhC,MAAM,eAAe,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEvC,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,mBAAmB,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAC/D,MAAM,kBAAkB,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAE/D,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAE5C,kDAAkD;IAClD,kBAAkB,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAExD,6CAA6C;IAC7C,IAAI,eAAe,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtE,kBAAkB,CAAC,GAAG,CACpB,IAAI,kBAAkB,CACpB,IAAI,wBAAwB,CAAC;YAC3B,QAAQ,EAAE,IAAI,iBAAiB,CAAC;gBAC9B,GAAG,EAAE,GAAG,OAAO,YAAY;aAC5B,CAAC;SACH,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,QAAQ;QACR,cAAc,EAAE,CAAC,kBAAkB,CAAC;KACrC,CAAC,CAAC;IAEH,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC;QAChB,UAAU,EAAE,IAAI,mBAAmB,CAAC;YAClC,WAAW,EAAE;gBACX,IAAI,oBAAoB,EAAE;gBAC1B,IAAI,yBAAyB,EAAE;aAChC;SACF,CAAC;KACH,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;QACrD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;IAEH,wBAAwB,CAAC;QACvB,gBAAgB;QAChB,cAAc,EAAE,QAAQ;KACzB,CAAC,CAAC;IAEH,wBAAwB;IACxB,IAAI,eAAmD,CAAC;IACxD,IAAI,eAAe,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtE,eAAe,GAAG,kBAAkB,CAAC;YACnC,OAAO,EAAE,GAAG,OAAO,aAAa;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAClD,aAAa,CAAC,kBAAkB,CACjC;QACC,CAAC,CAAC,eAAe,CAAC;YACd,OAAO,EAAE,GAAG,OAAO,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CAAC,KAAK,CACX,iDAAiD,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,cAAc,2BAA2B,CACzH,CAAC;IAEF,QAAQ,GAAG;QACT,QAAQ;QACR,eAAe;QACf,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAC3B,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC;QACpE,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE;YAC1B,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YACD,qEAAqE;YACrE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;QACD,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YAC3B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,+CAA+C;YAC/C,OAAO;gBACL,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;aACM,CAAC;QACzB,CAAC;QACD,uBAAuB,EAAE,CAAC,KAA6B,EAAE,EAAE;YACzD,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,gBAAgB,EAAE,CAAC,SAAwB,EAAE,EAAE;YAC7C,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC;YACnC,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,QAAQ,KAAK,SAAS,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,QAAQ,GAAG,SAAS,CAAC;IACrB,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACjE,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,61 @@
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
+ /**
26
+ * Create auto-instrumentations for browser telemetry.
27
+ *
28
+ * Returns an array containing XMLHttpRequestInstrumentation and
29
+ * FetchInstrumentation.
30
+ *
31
+ * Both instrumentations use the provided ignoreUrls to filter out asset
32
+ * downloads, and propagate trace context only to URLs matching propagateTraceUrls.
33
+ *
34
+ * @param config - Optional instrumentation configuration
35
+ * @returns Array of configured Instrumentation instances
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const instrumentations = createBrowserInstrumentations({
40
+ * propagateTraceUrls: [/https:\/\/api\.superblocks\.com/],
41
+ * ignoreUrls: [/\/static\//],
42
+ * });
43
+ * registerInstrumentations({ instrumentations });
44
+ * ```
45
+ */
46
+ export declare function createBrowserInstrumentations(config?: BrowserInstrumentationConfig): Instrumentation[];
47
+ /**
48
+ * Register the StackContextManager for async context propagation in the browser.
49
+ *
50
+ * This must be called before using `context.with()` in browser environments.
51
+ * Without this, Redux middleware and other async code cannot thread trace
52
+ * context through async operations.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * registerBrowserContextManager();
57
+ * // context.with() now works correctly in browser async flows
58
+ * ```
59
+ */
60
+ export declare function registerBrowserContextManager(): void;
61
+ //# 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;AAYtE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,CAAC,EAAE,4BAA4B,GACpC,eAAe,EAAE,CAcnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAIpD"}