humanbehavior-js 0.2.5 → 0.2.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanbehavior-js",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "SDK for HumanBehavior session and event recording",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
package/src/tracker.ts CHANGED
@@ -762,6 +762,21 @@ export class HumanBehaviorTracker {
762
762
  // Start recording with redaction enabled
763
763
  rrweb.record({
764
764
  emit: (event) => {
765
+ // Add additional validation for FullSnapshot events
766
+ if (event.type === 2) { // FullSnapshot event
767
+ if (!event.data || !event.data.node) {
768
+ logWarn('rrweb generated malformed FullSnapshot event:', {
769
+ hasData: !!event.data,
770
+ hasNode: !!(event.data && event.data.node),
771
+ dataType: typeof event.data,
772
+ eventType: event.type,
773
+ timestamp: event.timestamp
774
+ });
775
+ // Don't skip - let the addEvent method handle it
776
+ } else {
777
+ logDebug('Valid FullSnapshot event received from rrweb');
778
+ }
779
+ }
765
780
  this.addEvent(event);
766
781
  },
767
782
  inlineStylesheet: true,
@@ -770,7 +785,10 @@ export class HumanBehaviorTracker {
770
785
  inlineImages: true,
771
786
  blockClass: 'rr-block',
772
787
  ignoreClass: 'rr-ignore',
773
- maskTextClass: 'rr-ignore'
788
+ maskTextClass: 'rr-ignore',
789
+ // Add more robust configuration
790
+ checkoutEveryNms: 5000, // Take full snapshot every 5 seconds
791
+ checkoutEveryNth: 100 // Take full snapshot every 100 events
774
792
  });
775
793
  }
776
794
 
@@ -793,6 +811,19 @@ export class HumanBehaviorTracker {
793
811
  public async addEvent(event: any) {
794
812
  await this.ensureInitialized();
795
813
 
814
+ // Validate FullSnapshot events before processing
815
+ if (event.type === 2) { // FullSnapshot event
816
+ if (!event.data || !event.data.node) {
817
+ logWarn('Malformed FullSnapshot event detected, skipping:', {
818
+ hasData: !!event.data,
819
+ hasNode: !!(event.data && event.data.node),
820
+ dataType: typeof event.data,
821
+ eventType: event.type
822
+ });
823
+ return; // Skip malformed FullSnapshot events
824
+ }
825
+ }
826
+
796
827
  // Process event through redaction manager if active
797
828
  const processedEvent = this.redactionManager.processEvent(event);
798
829