humanbehavior-js 0.4.11 → 0.4.13

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 (40) hide show
  1. package/canvas-recording-demo.html +143 -0
  2. package/dist/cjs/angular/index.cjs +23 -7
  3. package/dist/cjs/angular/index.cjs.map +1 -1
  4. package/dist/cjs/index.cjs +12 -2
  5. package/dist/cjs/index.cjs.map +1 -1
  6. package/dist/cjs/react/index.cjs +20 -12
  7. package/dist/cjs/react/index.cjs.map +1 -1
  8. package/dist/cjs/remix/index.cjs +20 -12
  9. package/dist/cjs/remix/index.cjs.map +1 -1
  10. package/dist/cjs/svelte/index.cjs +14 -4
  11. package/dist/cjs/svelte/index.cjs.map +1 -1
  12. package/dist/cjs/vue/index.cjs +19 -3
  13. package/dist/cjs/vue/index.cjs.map +1 -1
  14. package/dist/esm/angular/index.js +23 -7
  15. package/dist/esm/angular/index.js.map +1 -1
  16. package/dist/esm/index.js +12 -2
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/react/index.js +20 -12
  19. package/dist/esm/react/index.js.map +1 -1
  20. package/dist/esm/remix/index.js +20 -12
  21. package/dist/esm/remix/index.js.map +1 -1
  22. package/dist/esm/svelte/index.js +14 -4
  23. package/dist/esm/svelte/index.js.map +1 -1
  24. package/dist/esm/vue/index.js +19 -3
  25. package/dist/esm/vue/index.js.map +1 -1
  26. package/dist/index.min.js +1 -1
  27. package/dist/index.min.js.map +1 -1
  28. package/dist/types/angular/index.d.ts +21 -2
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/react/index.d.ts +4 -0
  31. package/dist/types/remix/index.d.ts +4 -0
  32. package/dist/types/svelte/index.d.ts +9 -1
  33. package/dist/types/vue/index.d.ts +5 -0
  34. package/package.json +1 -1
  35. package/readme.md +20 -1
  36. package/src/angular/index.ts +31 -6
  37. package/src/react/index.tsx +12 -13
  38. package/src/svelte/index.ts +8 -2
  39. package/src/tracker.ts +14 -2
  40. package/src/vue/index.ts +12 -1
package/dist/esm/index.js CHANGED
@@ -13179,6 +13179,7 @@ class HumanBehaviorTracker {
13179
13179
  * This is the main entry point - call this once per page
13180
13180
  */
13181
13181
  static init(apiKey, options) {
13182
+ var _a;
13182
13183
  // ✅ SUPPRESS COMMON RRWEB ERRORS FOR CLEAN CONSOLE
13183
13184
  if (isBrowser && (options === null || options === void 0 ? void 0 : options.suppressConsoleErrors) !== false) {
13184
13185
  // Suppress canvas security errors
@@ -13237,6 +13238,8 @@ class HumanBehaviorTracker {
13237
13238
  }
13238
13239
  // Create new tracker instance
13239
13240
  const tracker = new HumanBehaviorTracker(apiKey, options === null || options === void 0 ? void 0 : options.ingestionUrl);
13241
+ // Store canvas recording preference
13242
+ tracker.recordCanvas = (_a = options === null || options === void 0 ? void 0 : options.recordCanvas) !== null && _a !== void 0 ? _a : false;
13240
13243
  // Set redacted fields if specified
13241
13244
  if (options === null || options === void 0 ? void 0 : options.redactFields) {
13242
13245
  tracker.setRedactedFields(options.redactFields);
@@ -13275,6 +13278,7 @@ class HumanBehaviorTracker {
13275
13278
  this.sessionStartTime = Date.now();
13276
13279
  this.rrwebRecord = null;
13277
13280
  this.fullSnapshotTimeout = null;
13281
+ this.recordCanvas = false; // Store canvas recording preference
13278
13282
  if (!apiKey) {
13279
13283
  throw new Error('Human Behavior API Key is required');
13280
13284
  }
@@ -13857,9 +13861,15 @@ class HumanBehaviorTracker {
13857
13861
  slimDOMOptions: {},
13858
13862
  // ✅ ERROR SUPPRESSION SETTINGS - Disabled to prevent console noise
13859
13863
  collectFonts: false, // Disable font collection to reduce errors
13860
- inlineStylesheet: false, // Disable inline stylesheet to reduce errors
13864
+ inlineStylesheet: true, // Keep styles for proper session replay
13861
13865
  recordCrossOriginIframes: false, // Prevent cross-origin iframe errors
13862
- recordCanvas: false, // Disabled to prevent large data URIs and canvas errors
13866
+ // CANVAS RECORDING - PostHog-style protection against overwhelm
13867
+ recordCanvas: this.recordCanvas, // Opt-in only
13868
+ sampling: this.recordCanvas ? { canvas: 4 } : undefined, // 4 FPS throttle
13869
+ dataURLOptions: this.recordCanvas ? {
13870
+ type: 'image/webp',
13871
+ quality: 0.4
13872
+ } : undefined, // WebP with 40% quality
13863
13873
  // ✅ FULLSNAPSHOT GENERATION - No periodic snapshots to avoid animation issues
13864
13874
  // Rely on initial FullSnapshot + navigation-triggered ones only
13865
13875
  });