@sailfish-ai/recorder 1.8.21 → 1.8.22

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/index.js CHANGED
@@ -39,6 +39,8 @@ const INCLUDE = "include";
39
39
  const SAME_ORIGIN = "same-origin";
40
40
  const ALLOWED_HEADERS_HEADER = "access-control-allow-headers";
41
41
  const OPTIONS = "OPTIONS";
42
+ const AUTHORIZATION_HEADER_KEY_LOWER = "authorization";
43
+ const AUTHORIZATION_HEADER_KEY = "Authorization";
42
44
  const ActionType = {
43
45
  PROPAGATE: "propagate",
44
46
  IGNORE: "ignore",
@@ -83,6 +85,41 @@ export const DEFAULT_CONSOLE_RECORDING_SETTINGS = {
83
85
  // recordBody: true,
84
86
  // recordInitialRequests: false,
85
87
  // };
88
+ function maskAuthorizationHeader(requestHeaders) {
89
+ const authKey = requestHeaders[AUTHORIZATION_HEADER_KEY_LOWER]
90
+ ? AUTHORIZATION_HEADER_KEY_LOWER
91
+ : requestHeaders[AUTHORIZATION_HEADER_KEY]
92
+ ? AUTHORIZATION_HEADER_KEY
93
+ : null;
94
+ if (!authKey) {
95
+ return;
96
+ }
97
+ const authValue = requestHeaders[authKey];
98
+ const spaceIndex = authValue.indexOf(" ");
99
+ if (spaceIndex !== -1) {
100
+ const scheme = authValue.slice(0, spaceIndex + 1); // "Bearer "
101
+ const token = authValue.slice(spaceIndex + 1);
102
+ if (token.length > 8) {
103
+ requestHeaders[authKey] =
104
+ scheme +
105
+ token.slice(0, 4) +
106
+ "*".repeat(token.length - 8) +
107
+ token.slice(-4);
108
+ }
109
+ else {
110
+ requestHeaders[authKey] = scheme + "*".repeat(token.length);
111
+ }
112
+ }
113
+ else if (authValue.length > 8) {
114
+ requestHeaders[authKey] =
115
+ authValue.slice(0, 4) +
116
+ "*".repeat(authValue.length - 8) +
117
+ authValue.slice(-4);
118
+ }
119
+ else {
120
+ requestHeaders[authKey] = "*".repeat(authValue.length);
121
+ }
122
+ }
86
123
  function trackDomainChangesOnce() {
87
124
  const g = (window.__sailfish_recorder ||= {});
88
125
  if (g.routeWatcherIntervalId) {
@@ -403,12 +440,11 @@ function setupXMLHttpRequestInterceptor(domainsToNotPropagateHeaderTo = []) {
403
440
  const startTime = Date.now();
404
441
  let finished = false;
405
442
  const requestBody = args[0]; // Capture the request body/payload
406
- const requestHeaders = { ...this._capturedRequestHeaders }; // Capture request headers
407
- // Filter out internal Sailfish headers from the captured headers
408
- delete requestHeaders[xSf3RidHeader];
409
- if (funcSpanHeader) {
410
- delete requestHeaders[funcSpanHeader.name];
411
- }
443
+ // Note: _capturedRequestHeaders already includes x-sf3-rid and funcSpan headers
444
+ // because setRequestHeader() above goes through our intercepted version
445
+ const requestHeaders = { ...this._capturedRequestHeaders };
446
+ // Mask authorization header for privacy (preserve scheme like "Bearer", mask the token)
447
+ maskAuthorizationHeader(requestHeaders);
412
448
  // 4️⃣ Helper to emit networkRequestFinished
413
449
  const emitFinished = (success, status, errorMsg, responseData, responseHeaders) => {
414
450
  if (finished)
@@ -576,20 +612,28 @@ function setupFetchInterceptor(domainsToNotPropagateHeadersTo = []) {
576
612
  console.warn("[Sailfish] Failed to capture request data:", e);
577
613
  }
578
614
  }
579
- // Filter out internal Sailfish headers from captured headers
615
+ // Remove any existing Sailfish headers (in case app already set them)
580
616
  delete requestHeaders[xSf3RidHeader];
581
- const funcSpanHeaderName = getFuncSpanHeader()?.name;
582
- if (funcSpanHeaderName) {
583
- delete requestHeaders[funcSpanHeaderName];
617
+ const funcSpanHeader = getFuncSpanHeader();
618
+ if (funcSpanHeader) {
619
+ delete requestHeaders[funcSpanHeader.name];
620
+ }
621
+ // Add Sailfish headers with correct values
622
+ const xSf3RidValue = `${sessionId}/${urlAndStoredUuids.page_visit_uuid}/${networkUUID}`;
623
+ requestHeaders[xSf3RidHeader] = xSf3RidValue;
624
+ if (funcSpanHeader) {
625
+ requestHeaders[funcSpanHeader.name] = funcSpanHeader.value;
584
626
  }
627
+ // Mask authorization header for privacy (preserve scheme like "Bearer", mask the token)
628
+ maskAuthorizationHeader(requestHeaders);
585
629
  try {
586
630
  let response = await injectHeader(target, thisArg, input, init, sessionId, urlAndStoredUuids.page_visit_uuid, networkUUID);
587
631
  let isRetry = false;
588
632
  // Retry logic for 400/403 before logging finished event
589
633
  if (BAD_HTTP_STATUS.includes(response.status)) {
590
634
  DEBUG && console.log("Perform retry as status was fail:", response);
591
- // Generate a NEW UUID for the retry request so each request has a unique ID
592
- networkUUID = uuidv4();
635
+ // Remove x-sf3-rid from captured headers since retry doesn't include it
636
+ delete requestHeaders[xSf3RidHeader];
593
637
  response = await retryWithoutPropagateHeaders(target, thisArg, args, url);
594
638
  isRetry = true;
595
639
  }
package/dist/recorder.cjs CHANGED
@@ -465,7 +465,7 @@ function initializeWebSocket(e, a, u, m2) {
465
465
  const a2 = document.createElement("a");
466
466
  return a2.href = e2, `${a2.hostname}${a2.port ? `:${a2.port}` : ""}`;
467
467
  })(e);
468
- let b2 = `${"https:" === new URL(e).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a}&sessionId=${u}&sender=JS%2FTS&version=1.8.21`;
468
+ let b2 = `${"https:" === new URL(e).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a}&sessionId=${u}&sender=JS%2FTS&version=1.8.22`;
469
469
  m2 && (b2 += `&envValue=${encodeURIComponent(m2)}`);
470
470
  return oe = new U(b2, [], { connectionTimeout: 3e4 }), oe.addEventListener("open", () => {
471
471
  ne && (console.log("[Sailfish] WebSocket connection opened"), console.log("[Sailfish] Function span tracking state: " + (ce ? "ENABLED" : "DISABLED"))), (async () => {
@@ -7791,7 +7791,16 @@ async function initializeRecording(e, a, u, m2, w2) {
7791
7791
  return b2;
7792
7792
  }
7793
7793
  let wd = null, Sd = null;
7794
- const bd = readDebugFlag(), vd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], kd = [400, 403], xd = "CORS", Cd = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, Id = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7794
+ const bd = readDebugFlag(), vd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], kd = [400, 403], xd = "CORS", Cd = "authorization", Id = "Authorization", Md = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, Ed = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7795
+ function maskAuthorizationHeader(e) {
7796
+ const a = e[Cd] ? Cd : e[Id] ? Id : null;
7797
+ if (!a) return;
7798
+ const u = e[a], m2 = u.indexOf(" ");
7799
+ if (-1 !== m2) {
7800
+ const w2 = u.slice(0, m2 + 1), b2 = u.slice(m2 + 1);
7801
+ b2.length > 8 ? e[a] = w2 + b2.slice(0, 4) + "*".repeat(b2.length - 8) + b2.slice(-4) : e[a] = w2 + "*".repeat(b2.length);
7802
+ } else u.length > 8 ? e[a] = u.slice(0, 4) + "*".repeat(u.length - 8) + u.slice(-4) : e[a] = "*".repeat(u.length);
7803
+ }
7795
7804
  function trackDomainChangesOnce() {
7796
7805
  const e = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7797
7806
  if (e.routeWatcherIntervalId) return;
@@ -7871,7 +7880,7 @@ function setupFetchInterceptor(e = []) {
7871
7880
  x2 = C2.href;
7872
7881
  }
7873
7882
  return shouldSkipHeadersPropagation(x2, e) ? a2.apply(m2, w2) : (async function injectHeaderWrapper(e2, a3, u2, m3, w3, x3, C3) {
7874
- var _a2, _b, _c2;
7883
+ var _a2, _b;
7875
7884
  if (!x3) return e2.apply(a3, u2);
7876
7885
  let I3 = v4();
7877
7886
  const E2 = getUrlAndStoredUuids(), _2 = w3.method || "GET", O2 = Date.now();
@@ -7896,8 +7905,11 @@ function setupFetchInterceptor(e = []) {
7896
7905
  bd && console.warn("[Sailfish] Failed to capture request data:", e3);
7897
7906
  }
7898
7907
  delete D2[b];
7899
- const $2 = (_a2 = getFuncSpanHeader()) == null ? void 0 : _a2.name;
7900
- $2 && delete D2[$2];
7908
+ const $2 = getFuncSpanHeader();
7909
+ $2 && delete D2[$2.name];
7910
+ const B2 = `${x3}/${E2.page_visit_uuid}/${I3}`;
7911
+ D2[b] = B2, $2 && (D2[$2.name] = $2.value);
7912
+ maskAuthorizationHeader(D2);
7901
7913
  try {
7902
7914
  let $3 = await (async function injectHeader(e3, a4, u3, m4, w4, x4, C4) {
7903
7915
  const I4 = getFuncSpanHeader();
@@ -7911,8 +7923,8 @@ function setupFetchInterceptor(e = []) {
7911
7923
  const E3 = { ...m4 }, _3 = new Headers(m4.headers || {});
7912
7924
  return _3.set(b, `${w4}/${x4}/${C4}`), I4 && (_3.set(I4.name, I4.value), bd && console.log("[Sailfish] Added funcspan header to HTTP fetch:", { url: "string" == typeof u3 ? u3 : u3.href, header: I4.name })), E3.headers = _3, await e3.call(a4, u3, E3);
7913
7925
  }
7914
- })(e2, a3, m3, w3, x3, E2.page_visit_uuid, I3), B2 = false;
7915
- kd.includes($3.status) && (bd && console.log("Perform retry as status was fail:", $3), I3 = v4(), $3 = await (async function retryWithoutPropagateHeaders(e3, a4, u3, m4) {
7926
+ })(e2, a3, m3, w3, x3, E2.page_visit_uuid, I3), B3 = false;
7927
+ kd.includes($3.status) && (bd && console.log("Perform retry as status was fail:", $3), delete D2[b], $3 = await (async function retryWithoutPropagateHeaders(e3, a4, u3, m4) {
7916
7928
  try {
7917
7929
  let m5 = u3[0], w4 = u3[1] || {};
7918
7930
  if ("string" == typeof m5 || m5 instanceof URL) {
@@ -7930,7 +7942,7 @@ function setupFetchInterceptor(e = []) {
7930
7942
  } catch (e4) {
7931
7943
  throw bd && console.log(`Retry without ${b} for ${m4} also failed:`, e4), e4;
7932
7944
  }
7933
- })(e2, a3, u2, C3), B2 = true);
7945
+ })(e2, a3, u2, C3), B3 = true);
7934
7946
  const U2 = Date.now(), j2 = $3.status, z2 = $3.ok, q2 = z2 ? "" : `Request Error: ${$3.statusText}`;
7935
7947
  let V2;
7936
7948
  try {
@@ -7947,11 +7959,11 @@ function setupFetchInterceptor(e = []) {
7947
7959
  } catch (e3) {
7948
7960
  bd && console.warn("[Sailfish] Failed to capture response headers:", e3), H2 = null;
7949
7961
  }
7950
- return sendEvent({ type: 27, timestamp: U2, sessionId: x3, data: { request_id: I3, session_id: x3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: C3, retry_without_trace_id: B2, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7962
+ return sendEvent({ type: 27, timestamp: U2, sessionId: x3, data: { request_id: I3, session_id: x3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: C3, retry_without_trace_id: B3, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7951
7963
  } catch (m4) {
7952
- const w4 = Date.now(), b2 = false, $3 = ((_b = m4.response) == null ? void 0 : _b.status) || 500, B2 = m4.message || "Fetch request failed";
7953
- if (m4 instanceof TypeError && ((_c2 = m4 == null ? void 0 : m4.message) == null ? void 0 : _c2.toLowerCase().includes(xd.toLowerCase()))) return e2.apply(a3, u2);
7954
- throw sendEvent({ type: 27, timestamp: w4, sessionId: x3, data: { request_id: I3, session_id: x3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: b2, error: B2, method: _2, url: C3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7964
+ const w4 = Date.now(), b2 = false, $3 = ((_a2 = m4.response) == null ? void 0 : _a2.status) || 500, B3 = m4.message || "Fetch request failed";
7965
+ if (m4 instanceof TypeError && ((_b = m4 == null ? void 0 : m4.message) == null ? void 0 : _b.toLowerCase().includes(xd.toLowerCase()))) return e2.apply(a3, u2);
7966
+ throw sendEvent({ type: 27, timestamp: w4, sessionId: x3, data: { request_id: I3, session_id: x3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: b2, error: B3, method: _2, url: C3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7955
7967
  }
7956
7968
  })(a2, m2, w2, C2, I2, u, x2);
7957
7969
  } });
@@ -7984,7 +7996,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
7984
7996
  })(), D2 = getOrSetSessionId(), $2 = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7985
7997
  if ($2.sessionId = D2, $2.apiKey = e, $2.backendApi = a, $2.serviceAdditionalMetadata = I2, $2.initialized && $2.sessionId === D2 && $2.ws && 1 === $2.ws.readyState) trackDomainChangesOnce();
7986
7998
  else {
7987
- $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(Id, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
7999
+ $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(Ed, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
7988
8000
  window.addEventListener("error", (e2) => {
7989
8001
  captureError(e2.error || e2.message);
7990
8002
  }), window.addEventListener("unhandledrejection", (e2) => {
@@ -8022,7 +8034,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
8022
8034
  const _3 = Date.now();
8023
8035
  let O3 = false;
8024
8036
  const F3 = a3[0], D3 = { ...this._capturedRequestHeaders };
8025
- delete D3[b], E3 && delete D3[E3.name];
8037
+ maskAuthorizationHeader(D3);
8026
8038
  const emitFinished = (e3, a4, u3, b2, x4) => {
8027
8039
  if (O3) return;
8028
8040
  O3 = true;
@@ -8061,7 +8073,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
8061
8073
  sendMessage({ type: "deviceInfo", data: { deviceInfo: { language: navigator.language, userAgent: navigator.userAgent } } });
8062
8074
  })();
8063
8075
  try {
8064
- const u2 = await fetchCaptureSettings(e, a), m3 = ((_a2 = u2.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || Cd;
8076
+ const u2 = await fetchCaptureSettings(e, a), m3 = ((_a2 = u2.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || Md;
8065
8077
  if ($2.ws && 1 === $2.ws.readyState) return;
8066
8078
  const b2 = withAppUrlMetadata(I2), C3 = await startRecordingSession(e, D2, a, _2, O2, F2, E2, "JS/TS", b2);
8067
8079
  if ((_b = C3.data) == null ? void 0 : _b.startRecordingSession) {
@@ -8105,7 +8117,7 @@ H && (!(function sendUserDeviceUuid() {
8105
8117
  }), H && window.addEventListener("beforeunload", () => {
8106
8118
  clearPageVisitDataFromSessionStorage();
8107
8119
  });
8108
- exports.DEFAULT_CAPTURE_SETTINGS = Cd, exports.DEFAULT_CONSOLE_RECORDING_SETTINGS = Id, exports.STORAGE_VERSION = 1, exports.addOrUpdateMetadata = function addOrUpdateMetadata(e) {
8120
+ exports.DEFAULT_CAPTURE_SETTINGS = Md, exports.DEFAULT_CONSOLE_RECORDING_SETTINGS = Ed, exports.STORAGE_VERSION = 1, exports.addOrUpdateMetadata = function addOrUpdateMetadata(e) {
8109
8121
  const a = { type: "addOrUpdateMetadata", metadata: e };
8110
8122
  Sd && JSON.stringify(Sd) === JSON.stringify(e) || (Sd = e, sendMessage(a));
8111
8123
  }, exports.buildBatches = buildBatches, exports.clearStaleFuncSpanState = clearStaleFuncSpanState, exports.createTriageAndIssueFromRecorder = createTriageAndIssueFromRecorder, exports.createTriageFromRecorder = createTriageFromRecorder, exports.disableFunctionSpanTracking = disableFunctionSpanTracking, exports.enableFunctionSpanTracking = enableFunctionSpanTracking, exports.eventSize = eventSize, exports.fetchCaptureSettings = fetchCaptureSettings, exports.fetchEngineeringTicketPlatformIntegrations = fetchEngineeringTicketPlatformIntegrations, exports.fetchFunctionSpanTrackingEnabled = fetchFunctionSpanTrackingEnabled, exports.flushBufferedEvents = flushBufferedEvents, exports.getFuncSpanHeader = getFuncSpanHeader, exports.getOrSetSessionId = getOrSetSessionId, exports.getUrlAndStoredUuids = getUrlAndStoredUuids, exports.identify = function identify(e, a = {}, u = false) {
package/dist/recorder.js CHANGED
@@ -465,7 +465,7 @@ function initializeWebSocket(e, a, u, m2) {
465
465
  const a2 = document.createElement("a");
466
466
  return a2.href = e2, `${a2.hostname}${a2.port ? `:${a2.port}` : ""}`;
467
467
  })(e);
468
- let b2 = `${"https:" === new URL(e).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a}&sessionId=${u}&sender=JS%2FTS&version=1.8.21`;
468
+ let b2 = `${"https:" === new URL(e).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a}&sessionId=${u}&sender=JS%2FTS&version=1.8.22`;
469
469
  m2 && (b2 += `&envValue=${encodeURIComponent(m2)}`);
470
470
  return se = new U(b2, [], { connectionTimeout: 3e4 }), se.addEventListener("open", () => {
471
471
  re && (console.log("[Sailfish] WebSocket connection opened"), console.log("[Sailfish] Function span tracking state: " + (de ? "ENABLED" : "DISABLED"))), (async () => {
@@ -1490,7 +1490,7 @@ function renderDynamicFields(e, a) {
1490
1490
  })();
1491
1491
  if (!m2 || 0 === m2.length) return void (u.innerHTML = "");
1492
1492
  const b2 = m2.map((e2) => (function renderDynamicField(e3, a2, u2 = []) {
1493
- var _a2, _b, _c2, _d;
1493
+ var _a2, _b, _c2, _d2;
1494
1494
  const m3 = e3.fieldId || e3.key, w3 = e3.name, b3 = (_a2 = e3.schema) == null ? void 0 : _a2.type, C2 = (_b = e3.schema) == null ? void 0 : _b.system, x2 = (_c2 = e3.schema) == null ? void 0 : _c2.custom, I2 = e3.required || false, E2 = e3.allowedValues, _2 = ["summary", "description", "project", "issuetype", "priority"];
1495
1495
  if (_2.includes(m3) || _2.includes(C2)) return null;
1496
1496
  const O2 = I2 ? '<span style="color:#ef4444;">*</span>' : "", F2 = "width:100%; padding:8px 12px; font-size:14px; border:1px solid #cbd5e1; border-radius:6px; outline:none;";
@@ -1635,7 +1635,7 @@ function renderDynamicFields(e, a) {
1635
1635
  </div>
1636
1636
  `;
1637
1637
  default:
1638
- return ((_d = e3.operations) == null ? void 0 : _d.includes("set")) ? `
1638
+ return ((_d2 = e3.operations) == null ? void 0 : _d2.includes("set")) ? `
1639
1639
  <div>
1640
1640
  <label for="${m3}" style="display:block; font-size:14px; font-weight:500; margin-bottom:6px;">
1641
1641
  ${w3} ${O2}
@@ -7805,7 +7805,16 @@ function addOrUpdateMetadata(e) {
7805
7805
  function trackingEvent(e) {
7806
7806
  sendMessage({ type: "trackingEvent", trackingData: e, timestamp: ne() });
7807
7807
  }
7808
- const vd = readDebugFlag(), kd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], Cd = [400, 403], xd = "CORS", Id = 1, Md = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, Ed = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7808
+ const vd = readDebugFlag(), kd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], Cd = [400, 403], xd = "CORS", Id = 1, Md = "authorization", Ed = "Authorization", _d = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, Od = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7809
+ function maskAuthorizationHeader(e) {
7810
+ const a = e[Md] ? Md : e[Ed] ? Ed : null;
7811
+ if (!a) return;
7812
+ const u = e[a], m2 = u.indexOf(" ");
7813
+ if (-1 !== m2) {
7814
+ const w2 = u.slice(0, m2 + 1), b2 = u.slice(m2 + 1);
7815
+ b2.length > 8 ? e[a] = w2 + b2.slice(0, 4) + "*".repeat(b2.length - 8) + b2.slice(-4) : e[a] = w2 + "*".repeat(b2.length);
7816
+ } else u.length > 8 ? e[a] = u.slice(0, 4) + "*".repeat(u.length - 8) + u.slice(-4) : e[a] = "*".repeat(u.length);
7817
+ }
7809
7818
  function trackDomainChangesOnce() {
7810
7819
  const e = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7811
7820
  if (e.routeWatcherIntervalId) return;
@@ -7885,7 +7894,7 @@ function setupFetchInterceptor(e = []) {
7885
7894
  C2 = x2.href;
7886
7895
  }
7887
7896
  return shouldSkipHeadersPropagation(C2, e) ? a2.apply(m2, w2) : (async function injectHeaderWrapper(e2, a3, u2, m3, w3, C3, x3) {
7888
- var _a2, _b, _c2;
7897
+ var _a2, _b;
7889
7898
  if (!C3) return e2.apply(a3, u2);
7890
7899
  let I3 = v4();
7891
7900
  const E2 = getUrlAndStoredUuids(), _2 = w3.method || "GET", O2 = Date.now();
@@ -7910,8 +7919,11 @@ function setupFetchInterceptor(e = []) {
7910
7919
  vd && console.warn("[Sailfish] Failed to capture request data:", e3);
7911
7920
  }
7912
7921
  delete D2[b];
7913
- const $2 = (_a2 = getFuncSpanHeader()) == null ? void 0 : _a2.name;
7914
- $2 && delete D2[$2];
7922
+ const $2 = getFuncSpanHeader();
7923
+ $2 && delete D2[$2.name];
7924
+ const B2 = `${C3}/${E2.page_visit_uuid}/${I3}`;
7925
+ D2[b] = B2, $2 && (D2[$2.name] = $2.value);
7926
+ maskAuthorizationHeader(D2);
7915
7927
  try {
7916
7928
  let $3 = await (async function injectHeader(e3, a4, u3, m4, w4, C4, x4) {
7917
7929
  const I4 = getFuncSpanHeader();
@@ -7925,8 +7937,8 @@ function setupFetchInterceptor(e = []) {
7925
7937
  const E3 = { ...m4 }, _3 = new Headers(m4.headers || {});
7926
7938
  return _3.set(b, `${w4}/${C4}/${x4}`), I4 && (_3.set(I4.name, I4.value), vd && console.log("[Sailfish] Added funcspan header to HTTP fetch:", { url: "string" == typeof u3 ? u3 : u3.href, header: I4.name })), E3.headers = _3, await e3.call(a4, u3, E3);
7927
7939
  }
7928
- })(e2, a3, m3, w3, C3, E2.page_visit_uuid, I3), B2 = false;
7929
- Cd.includes($3.status) && (vd && console.log("Perform retry as status was fail:", $3), I3 = v4(), $3 = await (async function retryWithoutPropagateHeaders(e3, a4, u3, m4) {
7940
+ })(e2, a3, m3, w3, C3, E2.page_visit_uuid, I3), B3 = false;
7941
+ Cd.includes($3.status) && (vd && console.log("Perform retry as status was fail:", $3), delete D2[b], $3 = await (async function retryWithoutPropagateHeaders(e3, a4, u3, m4) {
7930
7942
  try {
7931
7943
  let m5 = u3[0], w4 = u3[1] || {};
7932
7944
  if ("string" == typeof m5 || m5 instanceof URL) {
@@ -7944,7 +7956,7 @@ function setupFetchInterceptor(e = []) {
7944
7956
  } catch (e4) {
7945
7957
  throw vd && console.log(`Retry without ${b} for ${m4} also failed:`, e4), e4;
7946
7958
  }
7947
- })(e2, a3, u2, x3), B2 = true);
7959
+ })(e2, a3, u2, x3), B3 = true);
7948
7960
  const U2 = Date.now(), j2 = $3.status, z2 = $3.ok, q2 = z2 ? "" : `Request Error: ${$3.statusText}`;
7949
7961
  let V2;
7950
7962
  try {
@@ -7961,11 +7973,11 @@ function setupFetchInterceptor(e = []) {
7961
7973
  } catch (e3) {
7962
7974
  vd && console.warn("[Sailfish] Failed to capture response headers:", e3), H2 = null;
7963
7975
  }
7964
- return sendEvent({ type: 27, timestamp: U2, sessionId: C3, data: { request_id: I3, session_id: C3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: x3, retry_without_trace_id: B2, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7976
+ return sendEvent({ type: 27, timestamp: U2, sessionId: C3, data: { request_id: I3, session_id: C3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: x3, retry_without_trace_id: B3, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7965
7977
  } catch (m4) {
7966
- const w4 = Date.now(), b2 = false, $3 = ((_b = m4.response) == null ? void 0 : _b.status) || 500, B2 = m4.message || "Fetch request failed";
7967
- if (m4 instanceof TypeError && ((_c2 = m4 == null ? void 0 : m4.message) == null ? void 0 : _c2.toLowerCase().includes(xd.toLowerCase()))) return e2.apply(a3, u2);
7968
- throw sendEvent({ type: 27, timestamp: w4, sessionId: C3, data: { request_id: I3, session_id: C3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: b2, error: B2, method: _2, url: x3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7978
+ const w4 = Date.now(), b2 = false, $3 = ((_a2 = m4.response) == null ? void 0 : _a2.status) || 500, B3 = m4.message || "Fetch request failed";
7979
+ if (m4 instanceof TypeError && ((_b = m4 == null ? void 0 : m4.message) == null ? void 0 : _b.toLowerCase().includes(xd.toLowerCase()))) return e2.apply(a3, u2);
7980
+ throw sendEvent({ type: 27, timestamp: w4, sessionId: C3, data: { request_id: I3, session_id: C3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: b2, error: B3, method: _2, url: x3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7969
7981
  }
7970
7982
  })(a2, m2, w2, x2, I2, u, C2);
7971
7983
  } });
@@ -7998,7 +8010,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
7998
8010
  })(), D2 = getOrSetSessionId(), $2 = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7999
8011
  if ($2.sessionId = D2, $2.apiKey = e, $2.backendApi = a, $2.serviceAdditionalMetadata = I2, $2.initialized && $2.sessionId === D2 && $2.ws && 1 === $2.ws.readyState) trackDomainChangesOnce();
8000
8012
  else {
8001
- $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(Ed, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
8013
+ $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(Od, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
8002
8014
  window.addEventListener("error", (e2) => {
8003
8015
  captureError(e2.error || e2.message);
8004
8016
  }), window.addEventListener("unhandledrejection", (e2) => {
@@ -8036,7 +8048,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
8036
8048
  const _3 = Date.now();
8037
8049
  let O3 = false;
8038
8050
  const F3 = a3[0], D3 = { ...this._capturedRequestHeaders };
8039
- delete D3[b], E3 && delete D3[E3.name];
8051
+ maskAuthorizationHeader(D3);
8040
8052
  const emitFinished = (e3, a4, u3, b2, C4) => {
8041
8053
  if (O3) return;
8042
8054
  O3 = true;
@@ -8075,7 +8087,7 @@ async function startRecording({ apiKey: e, backendApi: a = "https://api-service.
8075
8087
  sendMessage({ type: "deviceInfo", data: { deviceInfo: { language: navigator.language, userAgent: navigator.userAgent } } });
8076
8088
  })();
8077
8089
  try {
8078
- const u2 = await fetchCaptureSettings(e, a), m3 = ((_a2 = u2.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || Md;
8090
+ const u2 = await fetchCaptureSettings(e, a), m3 = ((_a2 = u2.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || _d;
8079
8091
  if ($2.ws && 1 === $2.ws.readyState) return;
8080
8092
  const b2 = withAppUrlMetadata(I2), x3 = await startRecordingSession(e, D2, a, _2, O2, F2, E2, "JS/TS", b2);
8081
8093
  if ((_b = x3.data) == null ? void 0 : _b.startRecordingSession) {
@@ -8138,8 +8150,8 @@ const initRecorder = async (e) => {
8138
8150
  })), a.initPromise);
8139
8151
  };
8140
8152
  export {
8141
- Md as DEFAULT_CAPTURE_SETTINGS,
8142
- Ed as DEFAULT_CONSOLE_RECORDING_SETTINGS,
8153
+ _d as DEFAULT_CAPTURE_SETTINGS,
8154
+ Od as DEFAULT_CONSOLE_RECORDING_SETTINGS,
8143
8155
  Id as STORAGE_VERSION,
8144
8156
  addOrUpdateMetadata,
8145
8157
  buildBatches,
Binary file
Binary file
@@ -467,7 +467,7 @@
467
467
  const a3 = document.createElement("a");
468
468
  return a3.href = e3, `${a3.hostname}${a3.port ? `:${a3.port}` : ""}`;
469
469
  })(e2);
470
- let b2 = `${"https:" === new URL(e2).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a2}&sessionId=${u2}&sender=JS%2FTS&version=1.8.21`;
470
+ let b2 = `${"https:" === new URL(e2).protocol ? "wss" : "ws"}://${w2}/ws/notify/?apiKey=${a2}&sessionId=${u2}&sender=JS%2FTS&version=1.8.22`;
471
471
  m2 && (b2 += `&envValue=${encodeURIComponent(m2)}`);
472
472
  return se = new j(b2, [], { connectionTimeout: 3e4 }), se.addEventListener("open", () => {
473
473
  re && (console.log("[Sailfish] WebSocket connection opened"), console.log("[Sailfish] Function span tracking state: " + (de ? "ENABLED" : "DISABLED"))), (async () => {
@@ -1492,7 +1492,7 @@
1492
1492
  })();
1493
1493
  if (!m2 || 0 === m2.length) return void (u2.innerHTML = "");
1494
1494
  const b2 = m2.map((e3) => (function renderDynamicField(e4, a3, u3 = []) {
1495
- var _a2, _b, _c2, _d;
1495
+ var _a2, _b, _c2, _d2;
1496
1496
  const m3 = e4.fieldId || e4.key, w3 = e4.name, b3 = (_a2 = e4.schema) == null ? void 0 : _a2.type, C2 = (_b = e4.schema) == null ? void 0 : _b.system, x2 = (_c2 = e4.schema) == null ? void 0 : _c2.custom, I2 = e4.required || false, E2 = e4.allowedValues, _2 = ["summary", "description", "project", "issuetype", "priority"];
1497
1497
  if (_2.includes(m3) || _2.includes(C2)) return null;
1498
1498
  const O2 = I2 ? '<span style="color:#ef4444;">*</span>' : "", F2 = "width:100%; padding:8px 12px; font-size:14px; border:1px solid #cbd5e1; border-radius:6px; outline:none;";
@@ -1637,7 +1637,7 @@
1637
1637
  </div>
1638
1638
  `;
1639
1639
  default:
1640
- return ((_d = e4.operations) == null ? void 0 : _d.includes("set")) ? `
1640
+ return ((_d2 = e4.operations) == null ? void 0 : _d2.includes("set")) ? `
1641
1641
  <div>
1642
1642
  <label for="${m3}" style="display:block; font-size:14px; font-weight:500; margin-bottom:6px;">
1643
1643
  ${w3} ${O2}
@@ -7793,7 +7793,16 @@
7793
7793
  return b2;
7794
7794
  }
7795
7795
  let bd = null, Sd = null;
7796
- const vd = readDebugFlag(), kd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], Cd = [400, 403], xd = "CORS", Id = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, Md = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7796
+ const vd = readDebugFlag(), kd = ["t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com", "*.zdassets.com"], Cd = [400, 403], xd = "CORS", Id = "authorization", Md = "Authorization", Ed = { recordCanvas: false, recordCrossOriginIframes: false, collectFonts: false, inlineImages: false, recordPassword: false, recordRealName: true, recordCreditCardInfo: false, recordSsn: false, recordDob: false, sampling: {} }, _d = { level: ["info", "log", "warn", "error"], lengthThreshold: 1e4, stringifyOptions: { stringLengthLimit: 1e3, numOfKeysLimit: 20, depthOfLimit: 4 }, logger: "console" };
7797
+ function maskAuthorizationHeader(e2) {
7798
+ const a2 = e2[Id] ? Id : e2[Md] ? Md : null;
7799
+ if (!a2) return;
7800
+ const u2 = e2[a2], m2 = u2.indexOf(" ");
7801
+ if (-1 !== m2) {
7802
+ const w2 = u2.slice(0, m2 + 1), b2 = u2.slice(m2 + 1);
7803
+ b2.length > 8 ? e2[a2] = w2 + b2.slice(0, 4) + "*".repeat(b2.length - 8) + b2.slice(-4) : e2[a2] = w2 + "*".repeat(b2.length);
7804
+ } else u2.length > 8 ? e2[a2] = u2.slice(0, 4) + "*".repeat(u2.length - 8) + u2.slice(-4) : e2[a2] = "*".repeat(u2.length);
7805
+ }
7797
7806
  function trackDomainChangesOnce() {
7798
7807
  const e2 = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7799
7808
  if (e2.routeWatcherIntervalId) return;
@@ -7873,7 +7882,7 @@
7873
7882
  b2 = x2.href;
7874
7883
  }
7875
7884
  return shouldSkipHeadersPropagation(b2, e2) ? a3.apply(m2, w2) : (async function injectHeaderWrapper(e3, a4, u3, m3, w3, b3, x3) {
7876
- var _a2, _b, _c2;
7885
+ var _a2, _b;
7877
7886
  if (!b3) return e3.apply(a4, u3);
7878
7887
  let I3 = v4();
7879
7888
  const E2 = getUrlAndStoredUuids(), _2 = w3.method || "GET", O2 = Date.now();
@@ -7898,8 +7907,11 @@
7898
7907
  vd && console.warn("[Sailfish] Failed to capture request data:", e4);
7899
7908
  }
7900
7909
  delete D2[C];
7901
- const $2 = (_a2 = getFuncSpanHeader()) == null ? void 0 : _a2.name;
7902
- $2 && delete D2[$2];
7910
+ const $2 = getFuncSpanHeader();
7911
+ $2 && delete D2[$2.name];
7912
+ const B2 = `${b3}/${E2.page_visit_uuid}/${I3}`;
7913
+ D2[C] = B2, $2 && (D2[$2.name] = $2.value);
7914
+ maskAuthorizationHeader(D2);
7903
7915
  try {
7904
7916
  let $3 = await (async function injectHeader(e4, a5, u4, m4, w4, b4, x4) {
7905
7917
  const I4 = getFuncSpanHeader();
@@ -7913,8 +7925,8 @@
7913
7925
  const E3 = { ...m4 }, _3 = new Headers(m4.headers || {});
7914
7926
  return _3.set(C, `${w4}/${b4}/${x4}`), I4 && (_3.set(I4.name, I4.value), vd && console.log("[Sailfish] Added funcspan header to HTTP fetch:", { url: "string" == typeof u4 ? u4 : u4.href, header: I4.name })), E3.headers = _3, await e4.call(a5, u4, E3);
7915
7927
  }
7916
- })(e3, a4, m3, w3, b3, E2.page_visit_uuid, I3), B2 = false;
7917
- Cd.includes($3.status) && (vd && console.log("Perform retry as status was fail:", $3), I3 = v4(), $3 = await (async function retryWithoutPropagateHeaders(e4, a5, u4, m4) {
7928
+ })(e3, a4, m3, w3, b3, E2.page_visit_uuid, I3), B3 = false;
7929
+ Cd.includes($3.status) && (vd && console.log("Perform retry as status was fail:", $3), delete D2[C], $3 = await (async function retryWithoutPropagateHeaders(e4, a5, u4, m4) {
7918
7930
  try {
7919
7931
  let m5 = u4[0], w4 = u4[1] || {};
7920
7932
  if ("string" == typeof m5 || m5 instanceof URL) {
@@ -7932,7 +7944,7 @@
7932
7944
  } catch (e5) {
7933
7945
  throw vd && console.log(`Retry without ${C} for ${m4} also failed:`, e5), e5;
7934
7946
  }
7935
- })(e3, a4, u3, x3), B2 = true);
7947
+ })(e3, a4, u3, x3), B3 = true);
7936
7948
  const U2 = Date.now(), j2 = $3.status, z2 = $3.ok, q2 = z2 ? "" : `Request Error: ${$3.statusText}`;
7937
7949
  let V2;
7938
7950
  try {
@@ -7949,11 +7961,11 @@
7949
7961
  } catch (e4) {
7950
7962
  vd && console.warn("[Sailfish] Failed to capture response headers:", e4), H2 = null;
7951
7963
  }
7952
- return sendEvent({ type: 27, timestamp: U2, sessionId: b3, data: { request_id: I3, session_id: b3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: x3, retry_without_trace_id: B2, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7964
+ return sendEvent({ type: 27, timestamp: U2, sessionId: b3, data: { request_id: I3, session_id: b3, timestamp_start: O2, timestamp_end: U2, response_code: j2, success: z2, error: q2, method: _2, url: x3, retry_without_trace_id: B3, request_headers: D2, request_body: F2, response_headers: H2, response_body: V2 }, ...E2 }), $3;
7953
7965
  } catch (m4) {
7954
- const w4 = Date.now(), C2 = false, $3 = ((_b = m4.response) == null ? void 0 : _b.status) || 500, B2 = m4.message || "Fetch request failed";
7955
- if (m4 instanceof TypeError && ((_c2 = m4 == null ? void 0 : m4.message) == null ? void 0 : _c2.toLowerCase().includes(xd.toLowerCase()))) return e3.apply(a4, u3);
7956
- throw sendEvent({ type: 27, timestamp: w4, sessionId: b3, data: { request_id: I3, session_id: b3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: C2, error: B2, method: _2, url: x3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7966
+ const w4 = Date.now(), C2 = false, $3 = ((_a2 = m4.response) == null ? void 0 : _a2.status) || 500, B3 = m4.message || "Fetch request failed";
7967
+ if (m4 instanceof TypeError && ((_b = m4 == null ? void 0 : m4.message) == null ? void 0 : _b.toLowerCase().includes(xd.toLowerCase()))) return e3.apply(a4, u3);
7968
+ throw sendEvent({ type: 27, timestamp: w4, sessionId: b3, data: { request_id: I3, session_id: b3, timestamp_start: O2, timestamp_end: w4, response_code: $3, success: C2, error: B3, method: _2, url: x3, request_headers: D2, request_body: F2, response_body: null }, ...E2 }), m4;
7957
7969
  }
7958
7970
  })(a3, m2, w2, x2, I2, u2, b2);
7959
7971
  } });
@@ -7986,7 +7998,7 @@
7986
7998
  })(), D2 = getOrSetSessionId(), $2 = window.__sailfish_recorder || (window.__sailfish_recorder = {});
7987
7999
  if ($2.sessionId = D2, $2.apiKey = e2, $2.backendApi = a2, $2.serviceAdditionalMetadata = I2, $2.initialized && $2.sessionId === D2 && $2.ws && 1 === $2.ws.readyState) trackDomainChangesOnce();
7988
8000
  else {
7989
- $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(Md, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
8001
+ $2.domEventsInit || (initializeDomContentEvents(D2), $2.domEventsInit = true), $2.consoleInit || (initializeConsolePlugin(_d, D2), $2.consoleInit = true), $2.errorInit || (!(function initializeErrorInterceptor() {
7990
8002
  window.addEventListener("error", (e3) => {
7991
8003
  captureError(e3.error || e3.message);
7992
8004
  }), window.addEventListener("unhandledrejection", (e3) => {
@@ -8024,7 +8036,7 @@
8024
8036
  const _3 = Date.now();
8025
8037
  let O3 = false;
8026
8038
  const F3 = a4[0], D3 = { ...this._capturedRequestHeaders };
8027
- delete D3[C], E3 && delete D3[E3.name];
8039
+ maskAuthorizationHeader(D3);
8028
8040
  const emitFinished = (e4, a5, u4, b4, C2) => {
8029
8041
  if (O3) return;
8030
8042
  O3 = true;
@@ -8063,7 +8075,7 @@
8063
8075
  sendMessage({ type: "deviceInfo", data: { deviceInfo: { language: navigator.language, userAgent: navigator.userAgent } } });
8064
8076
  })();
8065
8077
  try {
8066
- const u3 = await fetchCaptureSettings(e2, a2), m3 = ((_a2 = u3.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || Id;
8078
+ const u3 = await fetchCaptureSettings(e2, a2), m3 = ((_a2 = u3.data) == null ? void 0 : _a2.captureSettingsFromApiKey) || Ed;
8067
8079
  if ($2.ws && 1 === $2.ws.readyState) return;
8068
8080
  const C2 = withAppUrlMetadata(I2), x3 = await startRecordingSession(e2, D2, a2, _2, O2, F2, E2, "JS/TS", C2);
8069
8081
  if ((_b = x3.data) == null ? void 0 : _b.startRecordingSession) {
@@ -8107,7 +8119,7 @@
8107
8119
  }), J && window.addEventListener("beforeunload", () => {
8108
8120
  clearPageVisitDataFromSessionStorage();
8109
8121
  });
8110
- e.DEFAULT_CAPTURE_SETTINGS = Id, e.DEFAULT_CONSOLE_RECORDING_SETTINGS = Md, e.STORAGE_VERSION = 1, e.addOrUpdateMetadata = function addOrUpdateMetadata(e2) {
8122
+ e.DEFAULT_CAPTURE_SETTINGS = Ed, e.DEFAULT_CONSOLE_RECORDING_SETTINGS = _d, e.STORAGE_VERSION = 1, e.addOrUpdateMetadata = function addOrUpdateMetadata(e2) {
8111
8123
  const a2 = { type: "addOrUpdateMetadata", metadata: e2 };
8112
8124
  Sd && JSON.stringify(Sd) === JSON.stringify(e2) || (Sd = e2, sendMessage(a2));
8113
8125
  }, e.buildBatches = buildBatches, e.clearStaleFuncSpanState = clearStaleFuncSpanState, e.createTriageAndIssueFromRecorder = createTriageAndIssueFromRecorder, e.createTriageFromRecorder = createTriageFromRecorder, e.disableFunctionSpanTracking = disableFunctionSpanTracking, e.enableFunctionSpanTracking = enableFunctionSpanTracking, e.eventSize = eventSize, e.fetchCaptureSettings = fetchCaptureSettings, e.fetchEngineeringTicketPlatformIntegrations = fetchEngineeringTicketPlatformIntegrations, e.fetchFunctionSpanTrackingEnabled = fetchFunctionSpanTrackingEnabled, e.flushBufferedEvents = flushBufferedEvents, e.getFuncSpanHeader = getFuncSpanHeader, e.getOrSetSessionId = getOrSetSessionId, e.getUrlAndStoredUuids = getUrlAndStoredUuids, e.identify = function identify(e2, a2 = {}, u2 = false) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sailfish-ai/recorder",
3
- "version": "1.8.21",
3
+ "version": "1.8.22",
4
4
  "publishPublicly": true,
5
5
  "type": "module",
6
6
  "main": "dist/recorder.cjs",