@softprobe/web-record 0.1.7 → 0.1.8

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/README.md CHANGED
@@ -1,55 +1,50 @@
1
1
  # @softprobe/web-record
2
2
 
3
- Browser session recording SDK. Captures DOM mutations with [rrweb](https://github.com/rrweb-io/rrweb)
4
- and exports batches to Softprobe **thelake** via OTLP `POST {baseUrl}/v1/traces`.
3
+ Browser session recording and request tracing SDK. For a one-tag setup, use [`@softprobe/web`](https://www.npmjs.com/package/@softprobe/web).
5
4
 
6
5
  ## Install
7
6
 
8
- ```bash
7
+ ```sh
9
8
  npm install @softprobe/web-record
10
9
  ```
11
10
 
12
- ## Usage
11
+ ## Start capture
12
+
13
+ Initialize once when your app starts. The Agent API key is visible in browser code, so use an ingest-only key.
13
14
 
14
15
  ```ts
15
16
  import { RecordSdk } from "@softprobe/web-record";
16
17
 
17
- const recorder = RecordSdk.init({
18
- publicKey: process.env.SOFTPROBE_PUBLIC_KEY!,
19
- baseUrl: process.env.SOFTPROBE_BASE_URL!,
20
- sessionId: openCodeSessionId, // becomes sp.session.id
21
- serviceName: "softprobe-code",
22
- maskAllInputs: true,
18
+ RecordSdk.init({
19
+ apiKey: "<Agent API key>",
20
+ baseUrl: "https://explorer.softprobe.ai/api/thelake",
21
+ serviceName: "my-web-app",
22
+ environment: "production",
23
+ apiOrigins: ["https://api.example.com"],
24
+ httpBodyCapture: {
25
+ maxBodyBytes: 65536,
26
+ routes: [
27
+ {
28
+ origin: "https://api.example.com",
29
+ method: "POST",
30
+ path: "/api/orders",
31
+ redactJsonPaths: ["$.payment.cardNumber", "$.payment.cvv"],
32
+ },
33
+ ],
34
+ },
23
35
  });
24
-
25
- // When the chat session changes:
26
- recorder.setSessionId(nextSessionId);
27
-
28
- // On teardown:
29
- recorder.stop();
30
36
  ```
31
37
 
32
- Missing credentials soft-disable the SDK (warn + no-op) so hosts keep running.
33
-
34
- ## Session header
38
+ The SDK creates a Session ID and keeps it in this tab across page loads. Set `sessionId` if your app already has a non-secret ID for the same user journey.
35
39
 
36
- While recording is enabled, the SDK patches `fetch` / XHR to inject
37
- `x-sp-session-id` on **same-origin** requests only (relative URLs and
38
- `location.origin`). Third-party / CDN calls are left untouched.
40
+ ## Choose browser bodies
39
41
 
40
- ## OTLP contract
42
+ List each route by exact origin, method, and path. Its origin must also appear in `apiOrigins`. The SDK captures JSON bodies up to `maxBodyBytes`, replaces the configured JSON fields with `[REDACTED]`, and omits other content types and oversized bodies.
41
43
 
42
- Each flush emits one span:
44
+ `apiOrigins` controls which API calls receive `traceparent` and `tracestate` headers. If the API has a different origin from the website, allow these headers in its CORS settings.
43
45
 
44
- | Field | Value |
45
- |---|---|
46
- | name | `softprobe.web.recording` |
47
- | `sp.observation.type` | `recording` |
48
- | `sp.session.id` | correlation id |
49
- | `sp.recording.batch_index` | monotonic batch counter |
50
- | event `sp.recording.batch` | attribute `sp.recording.events` = JSON rrweb events |
46
+ ## Configure backend bodies
51
47
 
52
- Auth: `Authorization: Bearer <publicKey>`.
48
+ Browser body rules do not configure OBI. Add the backend and outgoing HTTP routes to OBI's native `payload_extraction` rules. Keep the default body action set to `exclude`, then include and redact the routes you need. See the [OBI Config v2 guide](https://opentelemetry.io/docs/zero-code/obi/configure/config-v2/) and [payload-capture limits](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/blob/main/devdocs/features.md#payload-capture).
53
49
 
54
- Credentials and `{baseUrl}/v1/traces` derivation come from `@softprobe/tracing/config`
55
- (same product semantics as the LLM SDK).
50
+ Input masking applies to the browser recording. It does not redact HTTP bodies. Use `redactJsonPaths` for browser bodies and OBI obfuscation rules for backend and outgoing bodies.
@@ -1,12 +1,24 @@
1
- type SessionIdProvider = () => string;
2
- export declare function getSessionIdHeaderName(): string;
1
+ import type { HttpBodyCaptureOptions } from "./types.js";
2
+ export type CapturedHttpBodies = {
3
+ requestBody?: string;
4
+ responseBody?: string;
5
+ };
6
+ export type RequestTraceHandle = {
7
+ traceparent: string;
8
+ tracestate?: string;
9
+ finish: (status: number, error?: unknown, bodies?: CapturedHttpBodies) => void;
10
+ };
11
+ export type RequestSpanFactory = (method: string, url: string) => RequestTraceHandle | null;
12
+ export type HttpInterceptorOptions = {
13
+ /** Exact HTTP(S) origins allowed to receive W3C trace context. */
14
+ apiOrigins?: string[];
15
+ httpBodyCapture?: HttpBodyCaptureOptions;
16
+ createRequestSpan?: RequestSpanFactory;
17
+ };
3
18
  /**
4
- * Patches XHR + fetch to inject `x-sp-session-id` on same-origin requests only.
5
- * Provider is consulted on each request so session switches take effect.
19
+ * Patches XHR + fetch to inject W3C trace context only on explicitly selected
20
+ * API origins. Session correlation is carried by exported spans, not request
21
+ * headers.
6
22
  */
7
- export declare function initializeHttpInterceptor(getSessionId: SessionIdProvider): void;
8
- export declare function updateHttpInterceptorSessionId(getSessionId: SessionIdProvider): void;
9
- /** Relative URLs and same `location.origin` only — skip third-party/CDN. */
10
- export declare function isSameOriginRequest(resource: RequestInfo | URL): boolean;
11
- export {};
23
+ export declare function initializeHttpInterceptor(options?: HttpInterceptorOptions): void;
12
24
  //# sourceMappingURL=http-interceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-interceptor.d.ts","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAAG,MAAM,MAAM,CAAC;AAItC,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAI/E;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAEpF;AAMD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,GAAG,GAAG,OAAO,CA2BxE"}
1
+ {"version":3,"file":"http-interceptor.d.ts","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAwB,MAAM,YAAY,CAAC;AAM/E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,KACR,kBAAkB,GAAG,IAAI,CAAC;AAE/B,MAAM,MAAM,sBAAsB,GAAG;IACnC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;CACxC,CAAC;AAkBF;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,sBAA2B,GACnC,IAAI,CAMN"}
@@ -1,51 +1,234 @@
1
- const HEADER_X_SP_SESSION_ID = "x-sp-session-id";
2
- let sessionIdProvider = null;
3
- export function getSessionIdHeaderName() {
4
- return HEADER_X_SP_SESSION_ID;
5
- }
1
+ const DEFAULT_MAX_BODY_BYTES = 64 * 1024;
2
+ const MAX_BODY_BYTES = 256 * 1024;
3
+ const REDACTED_VALUE = "[REDACTED]";
4
+ let selectedApiOrigins = new Set();
5
+ let requestSpanFactory = null;
6
+ let bodyCapture = null;
6
7
  /**
7
- * Patches XHR + fetch to inject `x-sp-session-id` on same-origin requests only.
8
- * Provider is consulted on each request so session switches take effect.
8
+ * Patches XHR + fetch to inject W3C trace context only on explicitly selected
9
+ * API origins. Session correlation is carried by exported spans, not request
10
+ * headers.
9
11
  */
10
- export function initializeHttpInterceptor(getSessionId) {
11
- sessionIdProvider = getSessionId;
12
+ export function initializeHttpInterceptor(options = {}) {
13
+ selectedApiOrigins = normalizeApiOrigins(options.apiOrigins ?? []);
14
+ requestSpanFactory = options.createRequestSpan ?? null;
15
+ bodyCapture = normalizeBodyCapture(options.httpBodyCapture);
12
16
  patchXMLHttpRequest();
13
17
  patchFetchAPI();
14
18
  }
15
- export function updateHttpInterceptorSessionId(getSessionId) {
16
- sessionIdProvider = getSessionId;
19
+ function normalizeApiOrigins(origins) {
20
+ const result = new Set();
21
+ for (const candidate of origins) {
22
+ try {
23
+ const parsed = new URL(candidate);
24
+ if ((parsed.protocol === "https:" || parsed.protocol === "http:") &&
25
+ !parsed.username &&
26
+ !parsed.password &&
27
+ parsed.pathname === "/" &&
28
+ !parsed.search &&
29
+ !parsed.hash) {
30
+ result.add(parsed.origin);
31
+ }
32
+ }
33
+ catch {
34
+ // Invalid entries never widen trace-context injection.
35
+ }
36
+ }
37
+ return result;
17
38
  }
18
- function currentSessionId() {
19
- return sessionIdProvider?.() ?? "";
39
+ function resourceUrl(resource) {
40
+ if (typeof Request !== "undefined" && resource instanceof Request) {
41
+ return resource.url;
42
+ }
43
+ return resource instanceof URL ? resource.href : String(resource);
20
44
  }
21
- /** Relative URLs and same `location.origin` only — skip third-party/CDN. */
22
- export function isSameOriginRequest(resource) {
45
+ function selectedOriginFor(resource) {
23
46
  try {
24
- let href;
25
- if (typeof Request !== "undefined" && resource instanceof Request) {
26
- href = resource.url;
47
+ const href = resourceUrl(resource);
48
+ const base = typeof location !== "undefined" ? location.href : undefined;
49
+ const parsed = base ? new URL(href, base) : new URL(href);
50
+ return selectedApiOrigins.has(parsed.origin) ? parsed.origin : null;
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ function createRequestTrace(resource, method) {
57
+ if (!requestSpanFactory || !selectedOriginFor(resource))
58
+ return null;
59
+ try {
60
+ return requestSpanFactory(method.toUpperCase(), resourceUrl(resource));
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ function normalizeBodyCapture(options) {
67
+ if (!options || !Array.isArray(options.routes))
68
+ return null;
69
+ const maxBodyBytes = options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;
70
+ if (!Number.isInteger(maxBodyBytes) || maxBodyBytes <= 0 || maxBodyBytes > MAX_BODY_BYTES) {
71
+ return null;
72
+ }
73
+ const routes = new Map();
74
+ for (const candidate of options.routes) {
75
+ if (!candidate || typeof candidate !== "object")
76
+ continue;
77
+ const method = typeof candidate.method === "string" ? candidate.method.trim().toUpperCase() : "";
78
+ const path = typeof candidate.path === "string" ? candidate.path.trim() : "";
79
+ if (!/^[A-Z]+$/.test(method) || !path.startsWith("/") || path.includes("?") || path.includes("#")) {
80
+ continue;
27
81
  }
28
- else if (resource instanceof URL) {
29
- href = resource.href;
82
+ let origin;
83
+ try {
84
+ const parsed = new URL(candidate.origin);
85
+ if ((parsed.protocol !== "https:" && parsed.protocol !== "http:") ||
86
+ parsed.username || parsed.password || parsed.pathname !== "/" ||
87
+ parsed.search || parsed.hash) {
88
+ continue;
89
+ }
90
+ origin = parsed.origin;
30
91
  }
31
- else {
32
- href = String(resource);
92
+ catch {
93
+ continue;
33
94
  }
34
- // Scheme-relative or absolute with a scheme → compare origins.
35
- // Bare paths (`/api`, `./x`) resolve against location and are same-origin.
36
- if (typeof location === "undefined") {
37
- // No browsing context (e.g. unit tests without jsdom location): treat
38
- // relative paths as same-origin; absolute http(s) as cross-origin.
39
- if (!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(href) && !href.startsWith("//")) {
40
- return true;
95
+ const redactionPaths = candidate.redactJsonPaths ?? [];
96
+ if (!Array.isArray(redactionPaths))
97
+ continue;
98
+ const parsedPaths = redactionPaths.map(parseRedactionPath);
99
+ if (parsedPaths.some((parts) => parts === null))
100
+ continue;
101
+ const route = {
102
+ origin,
103
+ method,
104
+ path,
105
+ redactionPaths: parsedPaths,
106
+ };
107
+ routes.set(bodyCaptureRouteKey(origin, method, path), route);
108
+ }
109
+ return routes.size > 0 ? { maxBodyBytes, routes } : null;
110
+ }
111
+ function parseRedactionPath(path) {
112
+ if (typeof path !== "string" || !path.startsWith("$."))
113
+ return null;
114
+ const parts = path.slice(2).split(".");
115
+ if (parts.length === 0 || parts.some((part) => !/^[A-Za-z_][A-Za-z0-9_-]*$/.test(part) ||
116
+ part === "__proto__" || part === "prototype" || part === "constructor"))
117
+ return null;
118
+ return parts;
119
+ }
120
+ function bodyCaptureRouteFor(resource, method) {
121
+ if (!bodyCapture || !selectedOriginFor(resource))
122
+ return null;
123
+ try {
124
+ const base = typeof location !== "undefined" ? location.href : undefined;
125
+ const parsed = new URL(typeof resource === "string" ? resource : resourceUrl(resource), base);
126
+ return bodyCapture.routes.get(bodyCaptureRouteKey(parsed.origin, method.toUpperCase(), parsed.pathname)) ?? null;
127
+ }
128
+ catch {
129
+ return null;
130
+ }
131
+ }
132
+ function bodyCaptureRouteKey(origin, method, path) {
133
+ return `${origin}\n${method}\n${path}`;
134
+ }
135
+ function isJsonContentType(contentType) {
136
+ return contentType !== null && /^application\/(?:[a-z0-9._-]+\+)?json(?:\s*;|$)/i.test(contentType.trim());
137
+ }
138
+ function sanitizedJsonBody(text, route, maxBodyBytes) {
139
+ if (new TextEncoder().encode(text).byteLength > maxBodyBytes)
140
+ return undefined;
141
+ let value;
142
+ try {
143
+ value = JSON.parse(text);
144
+ }
145
+ catch {
146
+ return undefined;
147
+ }
148
+ for (const path of route.redactionPaths)
149
+ redactJsonPath(value, path);
150
+ const sanitized = JSON.stringify(value);
151
+ return new TextEncoder().encode(sanitized).byteLength <= maxBodyBytes ? sanitized : undefined;
152
+ }
153
+ function redactJsonPath(value, path, index = 0) {
154
+ if (value === null || typeof value !== "object")
155
+ return;
156
+ const key = path[index];
157
+ if (!Object.hasOwn(value, key))
158
+ return;
159
+ if (index === path.length - 1) {
160
+ value[key] = REDACTED_VALUE;
161
+ return;
162
+ }
163
+ redactJsonPath(value[key], path, index + 1);
164
+ }
165
+ async function readBoundedJsonStream(stream, contentType, route, maxBodyBytes) {
166
+ if (!stream || !isJsonContentType(contentType))
167
+ return undefined;
168
+ let reader;
169
+ try {
170
+ reader = stream.getReader();
171
+ }
172
+ catch {
173
+ return undefined;
174
+ }
175
+ const chunks = [];
176
+ let size = 0;
177
+ try {
178
+ while (true) {
179
+ const part = await reader.read();
180
+ if (part.done)
181
+ break;
182
+ size += part.value.byteLength;
183
+ if (size > maxBodyBytes) {
184
+ void reader.cancel().catch(() => undefined);
185
+ return undefined;
41
186
  }
42
- return false;
187
+ chunks.push(part.value);
43
188
  }
44
- const resolved = new URL(href, location.href);
45
- return resolved.origin === location.origin;
46
189
  }
47
190
  catch {
48
- return false;
191
+ return undefined;
192
+ }
193
+ finally {
194
+ try {
195
+ reader.releaseLock();
196
+ }
197
+ catch { /* a canceled stream may still hold its lock */ }
198
+ }
199
+ const bytes = new Uint8Array(size);
200
+ let offset = 0;
201
+ for (const chunk of chunks) {
202
+ bytes.set(chunk, offset);
203
+ offset += chunk.byteLength;
204
+ }
205
+ return sanitizedJsonBody(new TextDecoder().decode(bytes), route, maxBodyBytes);
206
+ }
207
+ function captureFetchRequestBody(resource, options, headers, route, maxBodyBytes) {
208
+ if (!isJsonContentType(headers.get("content-type")))
209
+ return Promise.resolve(undefined);
210
+ if (options && Object.hasOwn(options, "body")) {
211
+ return Promise.resolve(typeof options.body === "string"
212
+ ? sanitizedJsonBody(options.body, route, maxBodyBytes)
213
+ : undefined);
214
+ }
215
+ if (typeof Request === "undefined" || !(resource instanceof Request) || !resource.body) {
216
+ return Promise.resolve(undefined);
217
+ }
218
+ try {
219
+ const clone = resource.clone();
220
+ return readBoundedJsonStream(clone.body, headers.get("content-type"), route, maxBodyBytes);
221
+ }
222
+ catch {
223
+ return Promise.resolve(undefined);
224
+ }
225
+ }
226
+ function finishRequestTrace(span, status, error, bodies) {
227
+ try {
228
+ span?.finish(status, error, bodies);
229
+ }
230
+ catch {
231
+ // Tracing must never change application request behavior.
49
232
  }
50
233
  }
51
234
  function patchXMLHttpRequest() {
@@ -56,21 +239,84 @@ function patchXMLHttpRequest() {
56
239
  }
57
240
  const originalOpen = XMLHttpRequest.prototype.open;
58
241
  const originalSend = XMLHttpRequest.prototype.send;
242
+ const originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
243
+ XMLHttpRequest.prototype.setRequestHeader = function (name, value) {
244
+ const result = originalSetRequestHeader.call(this, name, value);
245
+ const traced = this;
246
+ try {
247
+ traced.__sp_request_headers ??= new Headers();
248
+ traced.__sp_request_headers.append(name, value);
249
+ }
250
+ catch {
251
+ // Header observation must not change the application request.
252
+ }
253
+ return result;
254
+ };
59
255
  XMLHttpRequest.prototype.open = function (method, url, async, username, password) {
60
- this.__sp_request_url =
61
- url;
256
+ const traced = this;
257
+ traced.__sp_request_url = url;
258
+ traced.__sp_request_method = method;
259
+ traced.__sp_request_headers = new Headers();
62
260
  return originalOpen.call(this, method, url, async ?? true, username, password);
63
261
  };
64
262
  XMLHttpRequest.prototype.send = function (body) {
65
- const sid = currentSessionId();
66
- const url = this
67
- .__sp_request_url;
68
- if (sid && url !== undefined && isSameOriginRequest(url)) {
263
+ const traced = this;
264
+ const url = traced.__sp_request_url;
265
+ const method = traced.__sp_request_method ?? "GET";
266
+ const span = url === undefined
267
+ ? null
268
+ : createRequestTrace(url, method);
269
+ const route = url === undefined ? null : bodyCaptureRouteFor(url, method);
270
+ const requestBody = route && bodyCapture
271
+ && isJsonContentType(traced.__sp_request_headers?.get("content-type") ?? null)
272
+ && typeof body === "string"
273
+ ? sanitizedJsonBody(body, route, bodyCapture.maxBodyBytes)
274
+ : undefined;
275
+ if (span) {
69
276
  try {
70
- this.setRequestHeader(HEADER_X_SP_SESSION_ID, sid);
277
+ this.setRequestHeader("traceparent", span.traceparent);
278
+ if (span.tracestate)
279
+ this.setRequestHeader("tracestate", span.tracestate);
71
280
  }
72
281
  catch {
73
- // Headers may already be sent; never block the request.
282
+ // A failed propagation header must not block the application request.
283
+ }
284
+ let finished = false;
285
+ const finish = () => {
286
+ if (finished)
287
+ return;
288
+ finished = true;
289
+ const status = this.status;
290
+ let responseBody;
291
+ let responseContentType = null;
292
+ try {
293
+ responseContentType = this.getResponseHeader("content-type");
294
+ }
295
+ catch { /* Failed requests may have no response headers. */ }
296
+ if (route && bodyCapture && isJsonContentType(responseContentType)) {
297
+ try {
298
+ const raw = this.responseType === "json"
299
+ ? JSON.stringify(this.response)
300
+ : this.responseType === "" || this.responseType === "text"
301
+ ? this.responseText
302
+ : undefined;
303
+ if (typeof raw === "string") {
304
+ responseBody = sanitizedJsonBody(raw, route, bodyCapture.maxBodyBytes);
305
+ }
306
+ }
307
+ catch {
308
+ responseBody = undefined;
309
+ }
310
+ }
311
+ finishRequestTrace(span, status, status === 0 ? new Error("XHR request did not receive a response") : undefined, route ? { requestBody, responseBody } : undefined);
312
+ };
313
+ this.addEventListener("loadend", finish, { once: true });
314
+ try {
315
+ return originalSend.call(this, body);
316
+ }
317
+ catch (error) {
318
+ finishRequestTrace(span, 0, error, route ? { requestBody } : undefined);
319
+ throw error;
74
320
  }
75
321
  }
76
322
  return originalSend.call(this, body);
@@ -85,40 +331,61 @@ function patchFetchAPI() {
85
331
  return;
86
332
  const originalFetch = g.fetch.bind(globalThis);
87
333
  g.fetch = (async function patchedFetch(resource, options) {
88
- const sid = currentSessionId();
89
- if (!sid || !isSameOriginRequest(resource)) {
334
+ const method = options?.method ??
335
+ (typeof Request !== "undefined" && resource instanceof Request
336
+ ? resource.method
337
+ : "GET");
338
+ const span = createRequestTrace(resource, method);
339
+ if (!span)
90
340
  return originalFetch(resource, options);
91
- }
341
+ const route = bodyCaptureRouteFor(resource, method);
342
+ let requestOptions = options;
343
+ let headers;
92
344
  try {
93
- if (typeof Request !== "undefined" && resource instanceof Request) {
94
- const headers = new Headers(resource.headers);
95
- if (options?.headers) {
96
- new Headers(options.headers).forEach((value, key) => {
97
- headers.set(key, value);
98
- });
99
- }
100
- headers.set(HEADER_X_SP_SESSION_ID, sid);
101
- return originalFetch(resource, { ...options, headers });
345
+ headers = new Headers(typeof Request !== "undefined" && resource instanceof Request
346
+ ? resource.headers
347
+ : options?.headers);
348
+ if (typeof Request !== "undefined" && resource instanceof Request && options?.headers) {
349
+ new Headers(options.headers).forEach((value, key) => headers.set(key, value));
102
350
  }
103
- const next = { ...(options ?? {}) };
104
- const headers = next.headers ?? {};
105
- if (headers instanceof Headers) {
106
- headers.set(HEADER_X_SP_SESSION_ID, sid);
107
- next.headers = headers;
351
+ if (span) {
352
+ headers.set("traceparent", span.traceparent);
353
+ if (span.tracestate)
354
+ headers.set("tracestate", span.tracestate);
108
355
  }
109
- else if (Array.isArray(headers)) {
110
- next.headers = [...headers, [HEADER_X_SP_SESSION_ID, sid]];
356
+ requestOptions = { ...(options ?? {}), headers };
357
+ }
358
+ catch {
359
+ // Invalid or unsupported header input should not block the application request.
360
+ finishRequestTrace(span, 0, new Error("Unable to inject request headers"));
361
+ return originalFetch(resource, options);
362
+ }
363
+ const requestCapture = route && bodyCapture
364
+ ? captureFetchRequestBody(resource, requestOptions, headers, route, bodyCapture.maxBodyBytes)
365
+ : Promise.resolve(undefined);
366
+ try {
367
+ const response = await originalFetch(resource, requestOptions);
368
+ if (route && bodyCapture) {
369
+ const responseCapture = readBoundedJsonStream(response.clone().body, response.headers.get("content-type"), route, bodyCapture.maxBodyBytes);
370
+ void Promise.all([requestCapture, responseCapture]).then(([requestBody, responseBody]) => {
371
+ finishRequestTrace(span, response.status, undefined, { requestBody, responseBody });
372
+ }, (error) => {
373
+ finishRequestTrace(span, response.status, error);
374
+ });
111
375
  }
112
376
  else {
113
- next.headers = {
114
- ...headers,
115
- [HEADER_X_SP_SESSION_ID]: sid,
116
- };
377
+ finishRequestTrace(span, response.status);
117
378
  }
118
- return originalFetch(resource, next);
379
+ return response;
119
380
  }
120
- catch {
121
- return originalFetch(resource, options);
381
+ catch (error) {
382
+ if (route && bodyCapture) {
383
+ void requestCapture.then((requestBody) => finishRequestTrace(span, 0, error, { requestBody }), () => finishRequestTrace(span, 0, error));
384
+ }
385
+ else {
386
+ finishRequestTrace(span, 0, error);
387
+ }
388
+ throw error;
122
389
  }
123
390
  });
124
391
  g.fetch.__sp_sdk_patched_fetch = true;
@@ -1 +1 @@
1
- {"version":3,"file":"http-interceptor.js","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-interceptor.js","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { RecordSdk } from "./sdk.js";
2
- export { buildRecordingExport, msToUnixNano, randomHexId, EVENT_NAME, EVENTS_ATTR, SPAN_NAME, } from "./otlp.js";
3
- export { getSessionIdHeaderName, initializeHttpInterceptor, updateHttpInterceptorSessionId, } from "./http-interceptor.js";
4
- export type { CompressedRrwebEvent, RecordingHandle, RrwebEventBatchItem, SystemInfo, Tags, WebRecordController, WebRecordCredentials, WebRecordInitOptions, } from "./types.js";
2
+ export { buildRecordingExport, msToUnixNano, randomHexId, EVENT_NAME, EVENTS_ATTR, buildClientRequestExport, SPAN_NAME, } from "./otlp.js";
3
+ export type { BuildClientRequestSpanInput } from "./otlp.js";
4
+ export { initializeHttpInterceptor, } from "./http-interceptor.js";
5
+ export type { CapturedHttpBodies, HttpInterceptorOptions, RequestSpanFactory, RequestTraceHandle, } from "./http-interceptor.js";
6
+ export type { CompressedRrwebEvent, HttpBodyCaptureOptions, HttpBodyCaptureRoute, RecordingHandle, RrwebEventBatchItem, RecordingUploadStatus, SystemInfo, Tags, WebRecordController, WebRecordCredentials, WebRecordInitOptions, } from "./types.js";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,IAAI,EACJ,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,IAAI,EACJ,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { RecordSdk } from "./sdk.js";
2
- export { buildRecordingExport, msToUnixNano, randomHexId, EVENT_NAME, EVENTS_ATTR, SPAN_NAME, } from "./otlp.js";
3
- export { getSessionIdHeaderName, initializeHttpInterceptor, updateHttpInterceptorSessionId, } from "./http-interceptor.js";
2
+ export { buildRecordingExport, msToUnixNano, randomHexId, EVENT_NAME, EVENTS_ATTR, buildClientRequestExport, SPAN_NAME, } from "./otlp.js";
3
+ export { initializeHttpInterceptor, } from "./http-interceptor.js";
4
4
  //# sourceMappingURL=index.js.map