@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.
- package/.nvmrc +1 -0
- package/CHANGELOG.md +7 -0
- package/README.md +4 -0
- package/bun.lockb +0 -0
- package/cjs/app/index.js +14 -11
- package/cjs/app/logger.d.ts +1 -1
- package/cjs/app/messages.gen.d.ts +2 -1
- package/cjs/app/messages.gen.js +20 -5
- package/cjs/app/nodes.js +4 -3
- package/cjs/app/observer/observer.js +2 -1
- package/cjs/common/messages.gen.d.ts +17 -4
- package/cjs/index.js +1 -1
- package/cjs/modules/Network/beaconProxy.d.ts +16 -0
- package/cjs/modules/Network/beaconProxy.js +82 -0
- package/cjs/modules/Network/fetchProxy.d.ts +0 -1
- package/cjs/modules/Network/fetchProxy.js +0 -1
- package/cjs/modules/Network/index.js +5 -0
- package/cjs/modules/Network/networkMessage.d.ts +1 -1
- package/cjs/modules/Network/networkMessage.js +1 -1
- package/cjs/modules/Network/xhrProxy.d.ts +0 -9
- package/cjs/modules/Network/xhrProxy.js +0 -1
- package/cjs/modules/axiosSpy.js +1 -1
- package/cjs/modules/constructedStyleSheets.js +25 -21
- package/cjs/modules/featureFlags.js +0 -1
- package/cjs/modules/img.js +2 -2
- package/cjs/modules/network.js +3 -2
- package/cjs/utils.d.ts +16 -0
- package/cjs/utils.js +53 -1
- package/coverage/clover.xml +533 -772
- package/coverage/coverage-final.json +8 -12
- package/coverage/lcov-report/index.html +27 -42
- package/coverage/lcov-report/main/app/guards.ts.html +1 -1
- package/coverage/lcov-report/main/app/index.html +14 -14
- package/coverage/lcov-report/main/app/index.ts.html +196 -28
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
- package/coverage/lcov-report/main/app/nodes.ts.html +13 -7
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/index.html +1 -1
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
- package/coverage/lcov-report/main/app/session.ts.html +20 -8
- package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
- package/coverage/lcov-report/main/index.html +23 -23
- package/coverage/lcov-report/main/index.ts.html +26 -26
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/index.html +1 -1
- package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/console.ts.html +1 -1
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +42 -30
- package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
- package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
- package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
- package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
- package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
- package/coverage/lcov-report/main/modules/img.ts.html +23 -20
- package/coverage/lcov-report/main/modules/index.html +12 -12
- package/coverage/lcov-report/main/modules/input.ts.html +1 -1
- package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
- package/coverage/lcov-report/main/modules/network.ts.html +1 -1
- package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
- package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
- package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
- package/coverage/lcov-report/main/modules/timing.ts.html +30 -6
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +269 -44
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +1 -1
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
- package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
- package/coverage/lcov-report/webworker/index.html +1 -1
- package/coverage/lcov-report/webworker/index.ts.html +1 -1
- package/coverage/lcov.info +920 -1285
- package/lib/app/index.js +15 -12
- package/lib/app/logger.d.ts +1 -1
- package/lib/app/messages.gen.d.ts +2 -1
- package/lib/app/messages.gen.js +16 -2
- package/lib/app/nodes.js +4 -3
- package/lib/app/observer/observer.js +2 -1
- package/lib/common/messages.gen.d.ts +17 -4
- package/lib/common/tsconfig.tsbuildinfo +1 -1
- package/lib/index.js +1 -1
- package/lib/modules/Network/beaconProxy.d.ts +16 -0
- package/lib/modules/Network/beaconProxy.js +77 -0
- package/lib/modules/Network/fetchProxy.d.ts +0 -1
- package/lib/modules/Network/fetchProxy.js +0 -1
- package/lib/modules/Network/index.js +5 -0
- package/lib/modules/Network/networkMessage.d.ts +1 -1
- package/lib/modules/Network/networkMessage.js +1 -1
- package/lib/modules/Network/xhrProxy.d.ts +0 -9
- package/lib/modules/Network/xhrProxy.js +0 -1
- package/lib/modules/axiosSpy.js +1 -1
- package/lib/modules/constructedStyleSheets.js +25 -21
- package/lib/modules/featureFlags.js +0 -1
- package/lib/modules/img.js +3 -3
- package/lib/modules/network.js +3 -2
- package/lib/utils.d.ts +16 -0
- package/lib/utils.js +47 -0
- package/package.json +13 -13
- package/rollup.config.js +4 -4
package/cjs/modules/network.js
CHANGED
|
@@ -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;
|