@openreplay/tracker 9.0.12 → 10.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 (110) hide show
  1. package/.nvmrc +1 -0
  2. package/CHANGELOG.md +7 -0
  3. package/README.md +4 -0
  4. package/bun.lockb +0 -0
  5. package/cjs/app/index.js +14 -11
  6. package/cjs/app/logger.d.ts +1 -1
  7. package/cjs/app/messages.gen.d.ts +2 -1
  8. package/cjs/app/messages.gen.js +20 -5
  9. package/cjs/app/nodes.js +4 -3
  10. package/cjs/app/observer/observer.js +2 -1
  11. package/cjs/common/messages.gen.d.ts +17 -4
  12. package/cjs/index.js +1 -1
  13. package/cjs/modules/Network/beaconProxy.d.ts +16 -0
  14. package/cjs/modules/Network/beaconProxy.js +82 -0
  15. package/cjs/modules/Network/fetchProxy.d.ts +0 -1
  16. package/cjs/modules/Network/fetchProxy.js +0 -1
  17. package/cjs/modules/Network/index.js +5 -0
  18. package/cjs/modules/Network/networkMessage.d.ts +1 -1
  19. package/cjs/modules/Network/networkMessage.js +1 -1
  20. package/cjs/modules/Network/xhrProxy.d.ts +0 -9
  21. package/cjs/modules/Network/xhrProxy.js +0 -1
  22. package/cjs/modules/axiosSpy.js +1 -1
  23. package/cjs/modules/constructedStyleSheets.js +25 -21
  24. package/cjs/modules/featureFlags.js +0 -1
  25. package/cjs/modules/img.js +2 -2
  26. package/cjs/modules/network.js +3 -2
  27. package/cjs/utils.d.ts +16 -0
  28. package/cjs/utils.js +53 -1
  29. package/coverage/clover.xml +533 -772
  30. package/coverage/coverage-final.json +8 -12
  31. package/coverage/lcov-report/index.html +27 -42
  32. package/coverage/lcov-report/main/app/guards.ts.html +1 -1
  33. package/coverage/lcov-report/main/app/index.html +14 -14
  34. package/coverage/lcov-report/main/app/index.ts.html +196 -28
  35. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  36. package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
  37. package/coverage/lcov-report/main/app/nodes.ts.html +13 -7
  38. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  39. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  40. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  41. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  42. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  43. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  44. package/coverage/lcov-report/main/app/session.ts.html +20 -8
  45. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  46. package/coverage/lcov-report/main/index.html +23 -23
  47. package/coverage/lcov-report/main/index.ts.html +26 -26
  48. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/Network/index.html +1 -1
  51. package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
  55. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  56. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  58. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  59. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +42 -30
  60. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  61. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  62. package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
  63. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  64. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  65. package/coverage/lcov-report/main/modules/img.ts.html +23 -20
  66. package/coverage/lcov-report/main/modules/index.html +12 -12
  67. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  68. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  69. package/coverage/lcov-report/main/modules/network.ts.html +1 -1
  70. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  71. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  72. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  73. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  74. package/coverage/lcov-report/main/modules/timing.ts.html +30 -6
  75. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  76. package/coverage/lcov-report/main/utils.ts.html +269 -44
  77. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  78. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +1 -1
  79. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  80. package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
  81. package/coverage/lcov-report/webworker/index.html +1 -1
  82. package/coverage/lcov-report/webworker/index.ts.html +1 -1
  83. package/coverage/lcov.info +920 -1285
  84. package/lib/app/index.js +15 -12
  85. package/lib/app/logger.d.ts +1 -1
  86. package/lib/app/messages.gen.d.ts +2 -1
  87. package/lib/app/messages.gen.js +16 -2
  88. package/lib/app/nodes.js +4 -3
  89. package/lib/app/observer/observer.js +2 -1
  90. package/lib/common/messages.gen.d.ts +17 -4
  91. package/lib/common/tsconfig.tsbuildinfo +1 -1
  92. package/lib/index.js +1 -1
  93. package/lib/modules/Network/beaconProxy.d.ts +16 -0
  94. package/lib/modules/Network/beaconProxy.js +77 -0
  95. package/lib/modules/Network/fetchProxy.d.ts +0 -1
  96. package/lib/modules/Network/fetchProxy.js +0 -1
  97. package/lib/modules/Network/index.js +5 -0
  98. package/lib/modules/Network/networkMessage.d.ts +1 -1
  99. package/lib/modules/Network/networkMessage.js +1 -1
  100. package/lib/modules/Network/xhrProxy.d.ts +0 -9
  101. package/lib/modules/Network/xhrProxy.js +0 -1
  102. package/lib/modules/axiosSpy.js +1 -1
  103. package/lib/modules/constructedStyleSheets.js +25 -21
  104. package/lib/modules/featureFlags.js +0 -1
  105. package/lib/modules/img.js +3 -3
  106. package/lib/modules/network.js +3 -2
  107. package/lib/utils.d.ts +16 -0
  108. package/lib/utils.js +47 -0
  109. package/package.json +13 -13
  110. package/rollup.config.js +4 -4
@@ -149,12 +149,13 @@ function default_1(app, opts = {}) {
149
149
  if (!reqResInfo) {
150
150
  return;
151
151
  }
152
- app.send((0, messages_gen_js_1.NetworkRequest)('fetch', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), r.status, startTime + (0, utils_js_1.getTimeOrigin)(), duration));
152
+ app.send((0, messages_gen_js_1.NetworkRequest)('fetch', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), r.status, startTime + (0, utils_js_1.getTimeOrigin)(), duration, 0));
153
153
  })
154
154
  .catch((e) => app.debug.error('Could not process Fetch response:', e));
155
155
  return response;
156
156
  });
157
157
  };
158
+ // @ts-ignore
158
159
  context.fetch = trackFetch;
159
160
  /* ====== <> ====== */
160
161
  /* ====== XHR ====== */
@@ -199,7 +200,7 @@ function default_1(app, opts = {}) {
199
200
  if (!reqResInfo) {
200
201
  return;
201
202
  }
202
- app.send((0, messages_gen_js_1.NetworkRequest)('xhr', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), xhr.status, startTime + (0, utils_js_1.getTimeOrigin)(), duration));
203
+ app.send((0, messages_gen_js_1.NetworkRequest)('xhr', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), xhr.status, startTime + (0, utils_js_1.getTimeOrigin)(), duration, 0));
203
204
  }));
204
205
  //TODO: handle error (though it has no Error API nor any useful information)
205
206
  //xhr.addEventListener('error', (e) => {})
package/cjs/utils.d.ts CHANGED
@@ -17,3 +17,19 @@ export declare function hasOpenreplayAttribute(e: Element, attr: string): boolea
17
17
  export declare function canAccessIframe(iframe: HTMLIFrameElement): boolean;
18
18
  export declare function generateRandomId(len?: number): string;
19
19
  export declare function inIframe(): boolean;
20
+ /**
21
+ * Because angular devs decided that its a good idea to override a browser apis
22
+ * we need to use this to achieve safe behavior
23
+ * */
24
+ export declare function ngSafeBrowserMethod(method: string): string;
25
+ export declare function createMutationObserver(cb: MutationCallback): MutationObserver;
26
+ export declare function createEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean): void;
27
+ export declare function deleteEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean): void;
28
+ /**
29
+ * This is a brief polyfill that suits our needs
30
+ * I took inspiration from Microsoft Clarity polyfill on this one
31
+ * then adapted it a little bit
32
+ *
33
+ * I'm very grateful for their bright idea
34
+ * */
35
+ export declare function requestIdleCb(callback: () => void): number | undefined;
package/cjs/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inIframe = exports.generateRandomId = exports.canAccessIframe = exports.hasOpenreplayAttribute = exports.getLabelAttribute = exports.deprecationWarn = exports.DOCS_HOST = exports.isURL = exports.normSpaces = exports.stars = exports.now = exports.getTimeOrigin = exports.adjustTimeOrigin = exports.MAX_STR_LEN = exports.IS_FIREFOX = exports.IN_BROWSER = void 0;
3
+ exports.requestIdleCb = exports.deleteEventListener = exports.createEventListener = exports.createMutationObserver = exports.ngSafeBrowserMethod = exports.inIframe = exports.generateRandomId = exports.canAccessIframe = exports.hasOpenreplayAttribute = exports.getLabelAttribute = exports.deprecationWarn = exports.DOCS_HOST = exports.isURL = exports.normSpaces = exports.stars = exports.now = exports.getTimeOrigin = exports.adjustTimeOrigin = exports.MAX_STR_LEN = exports.IS_FIREFOX = exports.IN_BROWSER = void 0;
4
4
  const DEPRECATED_ATTRS = { htmlmasked: 'hidden', masked: 'obscured' };
5
5
  exports.IN_BROWSER = !(typeof window === 'undefined');
6
6
  exports.IS_FIREFOX = exports.IN_BROWSER && navigator.userAgent.match(/firefox|fxios/i);
@@ -102,3 +102,55 @@ function inIframe() {
102
102
  }
103
103
  }
104
104
  exports.inIframe = inIframe;
105
+ /**
106
+ * Because angular devs decided that its a good idea to override a browser apis
107
+ * we need to use this to achieve safe behavior
108
+ * */
109
+ function ngSafeBrowserMethod(method) {
110
+ // @ts-ignore
111
+ return window.Zone && '__symbol__' in window.Zone
112
+ ? // @ts-ignore
113
+ window['Zone']['__symbol__'](method)
114
+ : method;
115
+ }
116
+ exports.ngSafeBrowserMethod = ngSafeBrowserMethod;
117
+ function createMutationObserver(cb) {
118
+ const mObserver = ngSafeBrowserMethod('MutationObserver');
119
+ return new window[mObserver](cb);
120
+ }
121
+ exports.createMutationObserver = createMutationObserver;
122
+ function createEventListener(target, event, cb, capture) {
123
+ const safeAddEventListener = ngSafeBrowserMethod('addEventListener');
124
+ target[safeAddEventListener](event, cb, capture);
125
+ }
126
+ exports.createEventListener = createEventListener;
127
+ function deleteEventListener(target, event, cb, capture) {
128
+ const safeRemoveEventListener = ngSafeBrowserMethod('removeEventListener');
129
+ target[safeRemoveEventListener](event, cb, capture);
130
+ }
131
+ exports.deleteEventListener = deleteEventListener;
132
+ /**
133
+ * This is a brief polyfill that suits our needs
134
+ * I took inspiration from Microsoft Clarity polyfill on this one
135
+ * then adapted it a little bit
136
+ *
137
+ * I'm very grateful for their bright idea
138
+ * */
139
+ function requestIdleCb(callback) {
140
+ const taskTimeout = 3000;
141
+ if (window.requestIdleCallback) {
142
+ return window.requestIdleCallback(callback, { timeout: taskTimeout });
143
+ }
144
+ else {
145
+ const channel = new MessageChannel();
146
+ const incoming = channel.port1;
147
+ const outgoing = channel.port2;
148
+ incoming.onmessage = () => {
149
+ callback();
150
+ };
151
+ requestAnimationFrame(() => {
152
+ outgoing.postMessage(1);
153
+ });
154
+ }
155
+ }
156
+ exports.requestIdleCb = requestIdleCb;