@devskin/browser-sdk 1.0.47 → 1.0.49

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.
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/collectors/heatmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkCzC,qBAAa,gBAAgB;IASzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IAXnB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,iBAAiB,CAAO;gBAGtB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM;IAG3B,KAAK,IAAI,IAAI;IAoCb,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;CAc3B"}
1
+ {"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/collectors/heatmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkCzC,qBAAa,gBAAgB;IASzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IAXnB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,iBAAiB,CAAO;gBAGtB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM;IAG3B,KAAK,IAAI,IAAI;IAoCb,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,KAAK;IAyCb,OAAO,CAAC,kBAAkB;CAe3B"}
@@ -1033,7 +1033,8 @@ class HeatmapCollector {
1033
1033
  return `#${element.id}`;
1034
1034
  }
1035
1035
  if (element.className) {
1036
- const classes = element.className.split(' ').filter(c => c);
1036
+ const classStr = typeof element.className === 'string' ? element.className : element.className.baseVal || '';
1037
+ const classes = classStr.split(' ').filter((c) => c);
1037
1038
  if (classes.length > 0) {
1038
1039
  return `${element.tagName.toLowerCase()}.${classes.join('.')}`;
1039
1040
  }
@@ -13625,37 +13626,21 @@ class Transport {
13625
13626
  }
13626
13627
  sendRecordingEvents(sessionId, events) {
13627
13628
  return __awaiter$1(this, void 0, void 0, function* () {
13628
- // Calculate payload size
13629
- const payload = {
13630
- session_id: sessionId,
13631
- events,
13632
- timestamp: new Date().toISOString(),
13633
- apiKey: this.config.apiKey,
13634
- appId: this.config.appId,
13635
- };
13636
- const payloadSize = new Blob([JSON.stringify(payload)]).size;
13637
13629
  // Check if this batch contains FullSnapshot (type 2)
13638
13630
  const hasFullSnapshot = events.some(e => e.type === 2);
13639
- const maxRetries = hasFullSnapshot ? 3 : 1; // Retry FullSnapshot batches up to 3 times
13640
- // Recording events can be large, send immediately with retry logic
13631
+ const maxRetries = hasFullSnapshot ? 3 : 1;
13632
+ // ALWAYS use XHR for recording events to avoid fetch keepalive 64KB limit
13633
+ // The browser silently drops fetch requests with keepalive:true when body > 64KB
13634
+ // FullSnapshot + Meta events commonly fall in the 64KB-100KB range,
13635
+ // causing them to be silently lost while smaller IncrementalSnapshot batches succeed
13641
13636
  let lastError = null;
13642
13637
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
13643
13638
  try {
13644
- // Use XMLHttpRequest for large payloads (more reliable than fetch for large data)
13645
- if (payloadSize > 100000) { // > 100KB
13646
- yield this.sendToBackendXHR('/v1/rum/recordings', {
13647
- session_id: sessionId,
13648
- events,
13649
- timestamp: new Date().toISOString(),
13650
- });
13651
- }
13652
- else {
13653
- yield this.sendToBackend('/v1/rum/recordings', {
13654
- session_id: sessionId,
13655
- events,
13656
- timestamp: new Date().toISOString(),
13657
- });
13658
- }
13639
+ yield this.sendToBackendXHR('/v1/rum/recordings', {
13640
+ session_id: sessionId,
13641
+ events,
13642
+ timestamp: new Date().toISOString(),
13643
+ });
13659
13644
  return; // Success, exit
13660
13645
  }
13661
13646
  catch (error) {