@openreplay/tracker 11.0.6 → 12.0.0

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 (113) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/cjs/app/index.d.ts +84 -6
  3. package/cjs/app/index.js +427 -58
  4. package/cjs/app/logger.d.ts +7 -17
  5. package/cjs/app/logger.js +11 -19
  6. package/cjs/app/messages.gen.d.ts +2 -0
  7. package/cjs/app/messages.gen.js +20 -1
  8. package/cjs/app/observer/iframe_observer.js +4 -1
  9. package/cjs/app/observer/shadow_root_observer.js +4 -1
  10. package/cjs/app/observer/top_observer.js +7 -4
  11. package/cjs/common/interaction.d.ts +5 -2
  12. package/cjs/common/messages.gen.d.ts +17 -2
  13. package/cjs/index.d.ts +45 -2
  14. package/cjs/index.js +237 -106
  15. package/cjs/modules/Network/beaconProxy.js +4 -1
  16. package/cjs/modules/Network/fetchProxy.js +24 -1
  17. package/cjs/modules/Network/index.js +6 -3
  18. package/cjs/modules/Network/xhrProxy.js +24 -1
  19. package/cjs/modules/conditionsManager.d.ts +84 -0
  20. package/cjs/modules/conditionsManager.js +343 -0
  21. package/cjs/modules/exception.js +4 -1
  22. package/cjs/modules/featureFlags.d.ts +1 -1
  23. package/cjs/modules/featureFlags.js +36 -46
  24. package/cjs/modules/network.js +5 -2
  25. package/cjs/modules/tagWatcher.d.ts +21 -0
  26. package/cjs/modules/tagWatcher.js +77 -0
  27. package/cjs/modules/userTesting/index.js +30 -4
  28. package/cjs/modules/userTesting/recorder.js +71 -88
  29. package/coverage/clover.xml +577 -544
  30. package/coverage/coverage-final.json +8 -8
  31. package/coverage/lcov-report/index.html +28 -28
  32. package/coverage/lcov-report/main/app/canvas.ts.html +97 -46
  33. package/coverage/lcov-report/main/app/guards.ts.html +1 -1
  34. package/coverage/lcov-report/main/app/index.html +19 -19
  35. package/coverage/lcov-report/main/app/index.ts.html +62 -35
  36. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  37. package/coverage/lcov-report/main/app/messages.gen.ts.html +32 -5
  38. package/coverage/lcov-report/main/app/nodes.ts.html +17 -5
  39. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  40. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  41. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  42. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  43. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  44. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  45. package/coverage/lcov-report/main/app/session.ts.html +1 -1
  46. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  47. package/coverage/lcov-report/main/index.html +9 -9
  48. package/coverage/lcov-report/main/index.ts.html +27 -6
  49. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
  51. package/coverage/lcov-report/main/modules/Network/index.html +1 -1
  52. package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
  55. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
  56. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  58. package/coverage/lcov-report/main/modules/conditionsManager.ts.html +92 -38
  59. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  60. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  61. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  62. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  63. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  64. package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
  65. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  66. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  67. package/coverage/lcov-report/main/modules/img.ts.html +1 -1
  68. package/coverage/lcov-report/main/modules/index.html +21 -21
  69. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  70. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  71. package/coverage/lcov-report/main/modules/network.ts.html +1 -1
  72. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  73. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  74. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  75. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  76. package/coverage/lcov-report/main/modules/tagWatcher.ts.html +54 -27
  77. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  78. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
  79. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
  80. package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
  81. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
  82. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
  83. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
  84. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
  85. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  86. package/coverage/lcov-report/main/utils.ts.html +1 -1
  87. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  88. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +17 -5
  89. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  90. package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
  91. package/coverage/lcov-report/webworker/index.html +7 -7
  92. package/coverage/lcov-report/webworker/index.ts.html +1 -1
  93. package/coverage/lcov.info +1100 -1033
  94. package/lib/app/index.d.ts +84 -6
  95. package/lib/app/index.js +387 -44
  96. package/lib/app/logger.d.ts +7 -17
  97. package/lib/app/logger.js +11 -19
  98. package/lib/app/messages.gen.d.ts +2 -0
  99. package/lib/app/messages.gen.js +17 -0
  100. package/lib/common/interaction.d.ts +5 -2
  101. package/lib/common/messages.gen.d.ts +17 -2
  102. package/lib/common/tsconfig.tsbuildinfo +1 -1
  103. package/lib/index.d.ts +45 -2
  104. package/lib/index.js +191 -86
  105. package/lib/modules/conditionsManager.d.ts +84 -0
  106. package/lib/modules/conditionsManager.js +340 -0
  107. package/lib/modules/featureFlags.d.ts +1 -1
  108. package/lib/modules/featureFlags.js +36 -46
  109. package/lib/modules/tagWatcher.d.ts +21 -0
  110. package/lib/modules/tagWatcher.js +74 -0
  111. package/lib/modules/userTesting/recorder.js +71 -88
  112. package/package.json +1 -1
  113. package/tsconfig-base.json +3 -2
@@ -5,22 +5,12 @@ export declare const LogLevel: {
5
5
  readonly Errors: 2;
6
6
  readonly Silent: 0;
7
7
  };
8
- type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
9
- type CustomLevel = {
10
- error: boolean;
11
- warn: boolean;
12
- log: boolean;
13
- };
14
- interface _Options {
15
- level: LogLevel | CustomLevel;
16
- messages?: number[];
17
- }
18
- export type Options = true | _Options | LogLevel;
8
+ export type ILogLevel = (typeof LogLevel)[keyof typeof LogLevel];
19
9
  export default class Logger {
20
- private readonly options;
21
- constructor(options?: Options);
22
- log(...args: any): void;
23
- warn(...args: any): void;
24
- error(...args: any): void;
10
+ private readonly level;
11
+ constructor(debugLevel?: ILogLevel);
12
+ private shouldLog;
13
+ log(...args: any[]): void;
14
+ warn(...args: any[]): void;
15
+ error(...args: any[]): void;
25
16
  }
26
- export {};
package/cjs/app/logger.js CHANGED
@@ -8,36 +8,28 @@ exports.LogLevel = {
8
8
  Errors: 2,
9
9
  Silent: 0,
10
10
  };
11
- function IsCustomLevel(l) {
12
- return typeof l === 'object';
13
- }
14
11
  class Logger {
15
- constructor(options = exports.LogLevel.Silent) {
16
- this.options =
17
- options === true
18
- ? { level: exports.LogLevel.Verbose }
19
- : typeof options === 'number'
20
- ? { level: options }
21
- : options;
12
+ constructor(debugLevel = exports.LogLevel.Silent) {
13
+ this.level = debugLevel;
14
+ }
15
+ shouldLog(level) {
16
+ return this.level >= level;
22
17
  }
23
18
  log(...args) {
24
- if (IsCustomLevel(this.options.level)
25
- ? this.options.level.log
26
- : this.options.level >= exports.LogLevel.Log) {
19
+ if (this.shouldLog(exports.LogLevel.Log)) {
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
27
21
  console.log(...args);
28
22
  }
29
23
  }
30
24
  warn(...args) {
31
- if (IsCustomLevel(this.options.level)
32
- ? this.options.level.warn
33
- : this.options.level >= exports.LogLevel.Warnings) {
25
+ if (this.shouldLog(exports.LogLevel.Warnings)) {
26
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
34
27
  console.warn(...args);
35
28
  }
36
29
  }
37
30
  error(...args) {
38
- if (IsCustomLevel(this.options.level)
39
- ? this.options.level.error
40
- : this.options.level >= exports.LogLevel.Errors) {
31
+ if (this.shouldLog(exports.LogLevel.Errors)) {
32
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
41
33
  console.error(...args);
42
34
  }
43
35
  }
@@ -62,6 +62,7 @@ export declare function Zustand(mutation: string, state: string): Messages.Zusta
62
62
  export declare function BatchMetadata(version: number, pageNo: number, firstIndex: number, timestamp: number, location: string): Messages.BatchMetadata;
63
63
  export declare function PartitionedMessage(partNo: number, partTotal: number): Messages.PartitionedMessage;
64
64
  export declare function NetworkRequest(type: string, method: string, url: string, request: string, response: string, status: number, timestamp: number, duration: number, transferredBodySize: number): Messages.NetworkRequest;
65
+ export declare function WSChannel(chType: string, channelName: string, data: string, timestamp: number, dir: string, messageType: string): Messages.WSChannel;
65
66
  export declare function InputChange(id: number, value: string, valueMasked: boolean, label: string, hesitationTime: number, inputDuration: number): Messages.InputChange;
66
67
  export declare function SelectionChange(selectionStart: number, selectionEnd: number, selection: string): Messages.SelectionChange;
67
68
  export declare function MouseThrashing(timestamp: number): Messages.MouseThrashing;
@@ -70,3 +71,4 @@ export declare function ResourceTiming(timestamp: number, duration: number, ttfb
70
71
  export declare function TabChange(tabId: string): Messages.TabChange;
71
72
  export declare function TabData(tabId: string): Messages.TabData;
72
73
  export declare function CanvasNode(nodeId: string, timestamp: number): Messages.CanvasNode;
74
+ export declare function TagTrigger(tagId: number): Messages.TagTrigger;
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.CSSInsertRuleURLBased = exports.CustomIssue = exports.TechnicalInfo = exports.SetCSSDataURLBased = exports.SetNodeAttributeURLBased = exports.LongTask = exports.SetNodeFocus = exports.LoadFontFace = exports.SetPageVisibility = exports.ConnectionInformation = exports.ResourceTimingDeprecated = exports.SetNodeAttributeDict = exports.StringDict = exports.PerformanceTrack = exports.GraphQL = exports.NgRx = exports.MobX = exports.Vuex = exports.Redux = exports.StateAction = exports.OTable = exports.Profiler = exports.Fetch = exports.CSSDeleteRule = exports.CSSInsertRule = exports.Metadata = exports.UserAnonymousID = exports.UserID = exports.CustomEvent = exports.PageRenderTiming = exports.PageLoadTiming = exports.ConsoleLog = exports.NetworkRequestDeprecated = exports.MouseMove = exports.SetInputChecked = exports.SetInputValue = exports.SetInputTarget = exports.SetNodeScroll = exports.SetNodeData = exports.RemoveNodeAttribute = exports.SetNodeAttribute = exports.RemoveNode = exports.MoveNode = exports.CreateTextNode = exports.CreateElementNode = exports.CreateDocument = exports.SetViewportScroll = exports.SetViewportSize = exports.SetPageLocation = exports.Timestamp = void 0;
6
- exports.CanvasNode = exports.TabData = exports.TabChange = exports.ResourceTiming = exports.UnbindNodes = exports.MouseThrashing = exports.SelectionChange = exports.InputChange = exports.NetworkRequest = exports.PartitionedMessage = exports.BatchMetadata = exports.Zustand = exports.JSException = exports.AdoptedSSRemoveOwner = exports.AdoptedSSAddOwner = exports.AdoptedSSDeleteRule = exports.AdoptedSSInsertRuleURLBased = exports.AdoptedSSReplaceURLBased = exports.CreateIFrameDocument = exports.MouseClick = void 0;
6
+ exports.TagTrigger = exports.CanvasNode = exports.TabData = exports.TabChange = exports.ResourceTiming = exports.UnbindNodes = exports.MouseThrashing = exports.SelectionChange = exports.InputChange = exports.WSChannel = exports.NetworkRequest = exports.PartitionedMessage = exports.BatchMetadata = exports.Zustand = exports.JSException = exports.AdoptedSSRemoveOwner = exports.AdoptedSSAddOwner = exports.AdoptedSSDeleteRule = exports.AdoptedSSInsertRuleURLBased = exports.AdoptedSSReplaceURLBased = exports.CreateIFrameDocument = exports.MouseClick = void 0;
7
7
  function Timestamp(timestamp) {
8
8
  return [
9
9
  0 /* Messages.Type.Timestamp */,
@@ -564,6 +564,18 @@ function NetworkRequest(type, method, url, request, response, status, timestamp,
564
564
  ];
565
565
  }
566
566
  exports.NetworkRequest = NetworkRequest;
567
+ function WSChannel(chType, channelName, data, timestamp, dir, messageType) {
568
+ return [
569
+ 84 /* Messages.Type.WSChannel */,
570
+ chType,
571
+ channelName,
572
+ data,
573
+ timestamp,
574
+ dir,
575
+ messageType,
576
+ ];
577
+ }
578
+ exports.WSChannel = WSChannel;
567
579
  function InputChange(id, value, valueMasked, label, hesitationTime, inputDuration) {
568
580
  return [
569
581
  112 /* Messages.Type.InputChange */,
@@ -637,3 +649,10 @@ function CanvasNode(nodeId, timestamp) {
637
649
  ];
638
650
  }
639
651
  exports.CanvasNode = CanvasNode;
652
+ function TagTrigger(tagId) {
653
+ return [
654
+ 120 /* Messages.Type.TagTrigger */,
655
+ tagId,
656
+ ];
657
+ }
658
+ exports.TagTrigger = TagTrigger;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const observer_js_1 = require("./observer.js");
6
+ const observer_js_1 = __importDefault(require("./observer.js"));
4
7
  const messages_gen_js_1 = require("../messages.gen.js");
5
8
  class IFrameObserver extends observer_js_1.default {
6
9
  observe(iframe) {
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const observer_js_1 = require("./observer.js");
6
+ const observer_js_1 = __importDefault(require("./observer.js"));
4
7
  const messages_gen_js_1 = require("../messages.gen.js");
5
8
  class ShadowRootObserver extends observer_js_1.default {
6
9
  observe(el) {
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const observer_js_1 = require("./observer.js");
6
+ const observer_js_1 = __importDefault(require("./observer.js"));
4
7
  const guards_js_1 = require("../guards.js");
5
- const iframe_observer_js_1 = require("./iframe_observer.js");
6
- const shadow_root_observer_js_1 = require("./shadow_root_observer.js");
7
- const iframe_offsets_js_1 = require("./iframe_offsets.js");
8
+ const iframe_observer_js_1 = __importDefault(require("./iframe_observer.js"));
9
+ const shadow_root_observer_js_1 = __importDefault(require("./shadow_root_observer.js"));
10
+ const iframe_offsets_js_1 = __importDefault(require("./iframe_offsets.js"));
8
11
  const messages_gen_js_1 = require("../messages.gen.js");
9
12
  const utils_js_1 = require("../../utils.js");
10
13
  const attachShadowNativeFn = utils_js_1.IN_BROWSER ? Element.prototype.attachShadow : () => new ShadowRoot();
@@ -22,13 +22,16 @@ export type ToWorkerData = null | 'stop' | Start | Auth | Array<Message> | {
22
22
  } | {
23
23
  type: 'uncompressed';
24
24
  batch: Uint8Array;
25
- } | 'forceFlushBatch';
25
+ } | 'forceFlushBatch' | 'check_queue';
26
26
  type Failure = {
27
27
  type: 'failure';
28
28
  reason: string;
29
29
  };
30
+ type QEmpty = {
31
+ type: 'queue_empty';
32
+ };
30
33
  export type FromWorkerData = 'restart' | Failure | 'not_init' | {
31
34
  type: 'compress';
32
35
  batch: Uint8Array;
33
- };
36
+ } | QEmpty;
34
37
  export {};
@@ -61,6 +61,7 @@ export declare const enum Type {
61
61
  BatchMetadata = 81,
62
62
  PartitionedMessage = 82,
63
63
  NetworkRequest = 83,
64
+ WSChannel = 84,
64
65
  InputChange = 112,
65
66
  SelectionChange = 113,
66
67
  MouseThrashing = 114,
@@ -68,7 +69,8 @@ export declare const enum Type {
68
69
  ResourceTiming = 116,
69
70
  TabChange = 117,
70
71
  TabData = 118,
71
- CanvasNode = 119
72
+ CanvasNode = 119,
73
+ TagTrigger = 120
72
74
  }
73
75
  export type Timestamp = [
74
76
  Type.Timestamp,
@@ -444,6 +446,15 @@ export type NetworkRequest = [
444
446
  number,
445
447
  number
446
448
  ];
449
+ export type WSChannel = [
450
+ Type.WSChannel,
451
+ string,
452
+ string,
453
+ string,
454
+ number,
455
+ string,
456
+ string
457
+ ];
447
458
  export type InputChange = [
448
459
  Type.InputChange,
449
460
  number,
@@ -493,5 +504,9 @@ export type CanvasNode = [
493
504
  string,
494
505
  number
495
506
  ];
496
- type Message = Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetNodeScroll | SetInputTarget | SetInputValue | SetInputChecked | MouseMove | NetworkRequestDeprecated | ConsoleLog | PageLoadTiming | PageRenderTiming | CustomEvent | UserID | UserAnonymousID | Metadata | CSSInsertRule | CSSDeleteRule | Fetch | Profiler | OTable | StateAction | Redux | Vuex | MobX | NgRx | GraphQL | PerformanceTrack | StringDict | SetNodeAttributeDict | ResourceTimingDeprecated | ConnectionInformation | SetPageVisibility | LoadFontFace | SetNodeFocus | LongTask | SetNodeAttributeURLBased | SetCSSDataURLBased | TechnicalInfo | CustomIssue | CSSInsertRuleURLBased | MouseClick | CreateIFrameDocument | AdoptedSSReplaceURLBased | AdoptedSSInsertRuleURLBased | AdoptedSSDeleteRule | AdoptedSSAddOwner | AdoptedSSRemoveOwner | JSException | Zustand | BatchMetadata | PartitionedMessage | NetworkRequest | InputChange | SelectionChange | MouseThrashing | UnbindNodes | ResourceTiming | TabChange | TabData | CanvasNode;
507
+ export type TagTrigger = [
508
+ Type.TagTrigger,
509
+ number
510
+ ];
511
+ type Message = Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetNodeScroll | SetInputTarget | SetInputValue | SetInputChecked | MouseMove | NetworkRequestDeprecated | ConsoleLog | PageLoadTiming | PageRenderTiming | CustomEvent | UserID | UserAnonymousID | Metadata | CSSInsertRule | CSSDeleteRule | Fetch | Profiler | OTable | StateAction | Redux | Vuex | MobX | NgRx | GraphQL | PerformanceTrack | StringDict | SetNodeAttributeDict | ResourceTimingDeprecated | ConnectionInformation | SetPageVisibility | LoadFontFace | SetNodeFocus | LongTask | SetNodeAttributeURLBased | SetCSSDataURLBased | TechnicalInfo | CustomIssue | CSSInsertRuleURLBased | MouseClick | CreateIFrameDocument | AdoptedSSReplaceURLBased | AdoptedSSInsertRuleURLBased | AdoptedSSDeleteRule | AdoptedSSAddOwner | AdoptedSSRemoveOwner | JSException | Zustand | BatchMetadata | PartitionedMessage | NetworkRequest | WSChannel | InputChange | SelectionChange | MouseThrashing | UnbindNodes | ResourceTiming | TabChange | TabData | CanvasNode | TagTrigger;
497
512
  export default Message;
package/cjs/index.d.ts CHANGED
@@ -33,16 +33,59 @@ export default class API {
33
33
  featureFlags: FeatureFlags;
34
34
  private readonly app;
35
35
  constructor(options: Options);
36
+ checkDoNotTrack: () => boolean | undefined;
37
+ signalStartIssue: (reason: string, missingApi: string[]) => void;
36
38
  isFlagEnabled(flagName: string): boolean;
37
39
  onFlagsLoad(callback: (flags: IFeatureFlag[]) => void): void;
38
40
  clearPersistFlags(): void;
39
- reloadFlags(): Promise<void>;
41
+ reloadFlags(): Promise<void> | undefined;
40
42
  getFeatureFlag(flagName: string): IFeatureFlag | undefined;
41
- getAllFeatureFlags(): IFeatureFlag[];
43
+ getAllFeatureFlags(): IFeatureFlag[] | undefined;
42
44
  restartCanvasTracking: () => void;
43
45
  use<T>(fn: (app: App | null, options?: Options) => T): T;
44
46
  isActive(): boolean;
47
+ /**
48
+ * Creates a named hook that expects event name, data string and msg direction (up/down),
49
+ * it will skip any message bigger than 5 mb or event name bigger than 255 symbols
50
+ * msg direction is "down" (incoming) by default
51
+ *
52
+ * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}
53
+ * */
54
+ trackWs(channelName: string): ((msgType: string, data: string, dir: "up" | "down") => void) | undefined;
45
55
  start(startOpts?: Partial<StartOptions>): Promise<StartPromiseReturn>;
56
+ browserEnvCheck(): boolean;
57
+ /**
58
+ * start buffering messages without starting the actual session, which gives user 30 seconds to "activate" and record
59
+ * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost
60
+ * */
61
+ coldStart(startOpts?: Partial<StartOptions>, conditional?: boolean): Promise<never> | undefined;
62
+ /**
63
+ * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.
64
+ * (no backend delay sync)
65
+ *
66
+ * @param {Object} startOpts - options for session start, same as .start()
67
+ * @param {Function} onSessionSent - callback that will be called once session is fully sent
68
+ * @returns methods to manipulate buffer:
69
+ *
70
+ * saveBuffer - to save it in localStorage
71
+ *
72
+ * getBuffer - returns current buffer
73
+ *
74
+ * setBuffer - replaces current buffer with given
75
+ * */
76
+ startOfflineRecording(startOpts: Partial<StartOptions>, onSessionSent: () => void): Promise<never> | {
77
+ saveBuffer: () => void;
78
+ getBuffer: () => import("./common/messages.gen.js").default[];
79
+ setBuffer: (buffer: import("./common/messages.gen.js").default[]) => void;
80
+ };
81
+ /**
82
+ * Uploads the stored session buffer to backend
83
+ * @returns promise that resolves once messages are loaded, it has to be awaited
84
+ * so the session can be uploaded properly
85
+ * @resolve - if messages were loaded into service worker successfully
86
+ * @reject {string} - error message
87
+ * */
88
+ uploadOfflineRecording(): Promise<void> | undefined;
46
89
  stop(): string | undefined;
47
90
  forceFlushBatch(): void;
48
91
  getSessionToken(): string | null | undefined;