@openreplay/tracker 14.0.10-beta.2 → 14.0.10
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/{cjs → dist/cjs}/index.js +27 -49
- package/dist/cjs/index.js.map +1 -0
- package/{cjs → dist/cjs/main}/app/index.d.ts +17 -5
- package/{lib → dist/cjs/main}/app/messages.gen.d.ts +2 -2
- package/{lib/app/nodes.d.ts → dist/cjs/main/app/nodes/index.d.ts} +14 -7
- package/dist/cjs/main/app/nodes/maintainer.d.ts +28 -0
- package/{lib → dist/cjs/main}/app/observer/iframe_offsets.d.ts +1 -1
- package/{lib → dist/cjs/main}/app/observer/observer.d.ts +3 -1
- package/{lib → dist/cjs/main}/app/observer/top_observer.d.ts +5 -1
- package/{cjs → dist/cjs/main}/app/sanitizer.d.ts +5 -2
- package/{cjs → dist/cjs/main}/app/session.d.ts +6 -3
- package/{cjs → dist/cjs/main}/index.d.ts +2 -2
- package/{cjs → dist/cjs/main}/modules/attributeSender.d.ts +5 -2
- package/{cjs → dist/cjs/main}/modules/conditionsManager.d.ts +1 -1
- package/{cjs → dist/cjs/main}/modules/tagWatcher.d.ts +8 -4
- package/{lib → dist/cjs/main}/modules/userTesting/SignalManager.d.ts +2 -2
- package/{lib → dist/cjs/main}/utils.d.ts +4 -3
- package/dist/lib/index.js +9323 -0
- package/dist/lib/index.js.map +1 -0
- package/{lib → dist/lib/main}/app/index.d.ts +17 -5
- package/{cjs → dist/lib/main}/app/messages.gen.d.ts +2 -2
- package/{cjs/app/nodes.d.ts → dist/lib/main/app/nodes/index.d.ts} +14 -7
- package/dist/lib/main/app/nodes/maintainer.d.ts +28 -0
- package/{cjs → dist/lib/main}/app/observer/iframe_offsets.d.ts +1 -1
- package/{cjs → dist/lib/main}/app/observer/observer.d.ts +3 -1
- package/{cjs → dist/lib/main}/app/observer/top_observer.d.ts +5 -1
- package/{lib → dist/lib/main}/app/sanitizer.d.ts +5 -2
- package/{lib → dist/lib/main}/app/session.d.ts +6 -3
- package/{lib → dist/lib/main}/index.d.ts +2 -2
- package/{lib → dist/lib/main}/modules/attributeSender.d.ts +5 -2
- package/{lib → dist/lib/main}/modules/conditionsManager.d.ts +1 -1
- package/{lib → dist/lib/main}/modules/tagWatcher.d.ts +8 -4
- package/{cjs → dist/lib/main}/modules/userTesting/SignalManager.d.ts +2 -2
- package/{cjs → dist/lib/main}/utils.d.ts +4 -3
- package/package.json +29 -10
- package/.eslintignore +0 -11
- package/.nvmrc +0 -1
- package/.prettierignore +0 -1
- package/CHANGELOG.md +0 -297
- package/bun.lockb +0 -0
- package/cjs/app/canvas.js +0 -204
- package/cjs/app/guards.js +0 -37
- package/cjs/app/index.js +0 -1397
- package/cjs/app/logger.js +0 -37
- package/cjs/app/messages.gen.js +0 -702
- package/cjs/app/nodes.js +0 -111
- package/cjs/app/observer/iframe_observer.js +0 -35
- package/cjs/app/observer/iframe_offsets.js +0 -56
- package/cjs/app/observer/observer.js +0 -383
- package/cjs/app/observer/shadow_root_observer.js +0 -24
- package/cjs/app/observer/top_observer.js +0 -134
- package/cjs/app/sanitizer.js +0 -82
- package/cjs/app/session.js +0 -140
- package/cjs/app/ticker.js +0 -48
- package/cjs/common/interaction.js +0 -2
- package/cjs/common/messages.gen.js +0 -4
- package/cjs/modules/attributeSender.js +0 -51
- package/cjs/modules/axiosSpy.js +0 -122
- package/cjs/modules/conditionsManager.js +0 -343
- package/cjs/modules/connection.js +0 -15
- package/cjs/modules/console.js +0 -127
- package/cjs/modules/constructedStyleSheets.js +0 -138
- package/cjs/modules/cssrules.js +0 -99
- package/cjs/modules/exception.js +0 -85
- package/cjs/modules/featureFlags.js +0 -89
- package/cjs/modules/focus.js +0 -45
- package/cjs/modules/fonts.js +0 -57
- package/cjs/modules/img.js +0 -110
- package/cjs/modules/input.js +0 -203
- package/cjs/modules/mouse.js +0 -195
- package/cjs/modules/network.js +0 -244
- package/cjs/modules/performance.js +0 -53
- package/cjs/modules/scroll.js +0 -84
- package/cjs/modules/selection.js +0 -37
- package/cjs/modules/tabs.js +0 -13
- package/cjs/modules/tagWatcher.js +0 -76
- package/cjs/modules/timing.js +0 -173
- package/cjs/modules/userTesting/SignalManager.js +0 -83
- package/cjs/modules/userTesting/dnd.js +0 -40
- package/cjs/modules/userTesting/index.js +0 -464
- package/cjs/modules/userTesting/recorder.js +0 -101
- package/cjs/modules/userTesting/styles.js +0 -266
- package/cjs/modules/userTesting/utils.js +0 -87
- package/cjs/modules/viewport.js +0 -43
- package/cjs/package.json +0 -1
- package/cjs/utils.js +0 -249
- package/coverage/clover.xml +0 -4304
- package/coverage/coverage-final.json +0 -55
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -206
- package/coverage/lcov-report/main/app/canvas.ts.html +0 -712
- package/coverage/lcov-report/main/app/guards.ts.html +0 -232
- package/coverage/lcov-report/main/app/index.html +0 -236
- package/coverage/lcov-report/main/app/index.ts.html +0 -3955
- package/coverage/lcov-report/main/app/logger.ts.html +0 -211
- package/coverage/lcov-report/main/app/messages.gen.ts.html +0 -3034
- package/coverage/lcov-report/main/app/nodes.ts.html +0 -406
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +0 -148
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +0 -289
- package/coverage/lcov-report/main/app/observer/index.html +0 -161
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +0 -142
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +0 -541
- package/coverage/lcov-report/main/app/sanitizer.ts.html +0 -403
- package/coverage/lcov-report/main/app/session.ts.html +0 -622
- package/coverage/lcov-report/main/app/ticker.ts.html +0 -250
- package/coverage/lcov-report/main/index.html +0 -131
- package/coverage/lcov-report/main/index.ts.html +0 -1597
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +0 -400
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +0 -1075
- package/coverage/lcov-report/main/modules/Network/index.html +0 -191
- package/coverage/lcov-report/main/modules/Network/index.ts.html +0 -244
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +0 -400
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +0 -709
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +0 -877
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +0 -241
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +0 -709
- package/coverage/lcov-report/main/modules/conditionsManager.ts.html +0 -1381
- package/coverage/lcov-report/main/modules/connection.ts.html +0 -160
- package/coverage/lcov-report/main/modules/console.ts.html +0 -541
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +0 -571
- package/coverage/lcov-report/main/modules/cssrules.ts.html +0 -418
- package/coverage/lcov-report/main/modules/exception.ts.html +0 -385
- package/coverage/lcov-report/main/modules/featureFlags.ts.html +0 -415
- package/coverage/lcov-report/main/modules/focus.ts.html +0 -220
- package/coverage/lcov-report/main/modules/fonts.ts.html +0 -289
- package/coverage/lcov-report/main/modules/img.ts.html +0 -436
- package/coverage/lcov-report/main/modules/index.html +0 -431
- package/coverage/lcov-report/main/modules/input.ts.html +0 -826
- package/coverage/lcov-report/main/modules/mouse.ts.html +0 -826
- package/coverage/lcov-report/main/modules/network.ts.html +0 -1123
- package/coverage/lcov-report/main/modules/performance.ts.html +0 -367
- package/coverage/lcov-report/main/modules/scroll.ts.html +0 -364
- package/coverage/lcov-report/main/modules/selection.ts.html +0 -202
- package/coverage/lcov-report/main/modules/tabs.ts.html +0 -124
- package/coverage/lcov-report/main/modules/tagWatcher.ts.html +0 -337
- package/coverage/lcov-report/main/modules/timing.ts.html +0 -877
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +0 -370
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +0 -220
- package/coverage/lcov-report/main/modules/userTesting/index.html +0 -191
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +0 -1909
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +0 -430
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +0 -937
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +0 -364
- package/coverage/lcov-report/main/modules/viewport.ts.html +0 -250
- package/coverage/lcov-report/main/utils.ts.html +0 -814
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +0 -499
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +0 -1021
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +0 -436
- package/coverage/lcov-report/webworker/QueueSender.ts.html +0 -547
- package/coverage/lcov-report/webworker/index.html +0 -176
- package/coverage/lcov-report/webworker/index.ts.html +0 -667
- package/coverage/lcov.info +0 -8425
- package/jest.config.js +0 -13
- package/lib/app/canvas.js +0 -202
- package/lib/app/guards.js +0 -26
- package/lib/app/index.js +0 -1367
- package/lib/app/logger.js +0 -33
- package/lib/app/messages.gen.js +0 -622
- package/lib/app/nodes.js +0 -108
- package/lib/app/observer/iframe_observer.js +0 -29
- package/lib/app/observer/iframe_offsets.js +0 -53
- package/lib/app/observer/observer.js +0 -380
- package/lib/app/observer/shadow_root_observer.js +0 -18
- package/lib/app/observer/top_observer.js +0 -128
- package/lib/app/sanitizer.js +0 -77
- package/lib/app/session.js +0 -137
- package/lib/app/ticker.js +0 -45
- package/lib/common/interaction.js +0 -1
- package/lib/common/messages.gen.js +0 -3
- package/lib/common/tsconfig.tsbuildinfo +0 -1
- package/lib/index.js +0 -423
- package/lib/modules/attributeSender.js +0 -46
- package/lib/modules/axiosSpy.js +0 -119
- package/lib/modules/conditionsManager.js +0 -340
- package/lib/modules/connection.js +0 -12
- package/lib/modules/console.js +0 -124
- package/lib/modules/constructedStyleSheets.js +0 -133
- package/lib/modules/cssrules.js +0 -97
- package/lib/modules/exception.js +0 -76
- package/lib/modules/featureFlags.js +0 -86
- package/lib/modules/focus.js +0 -42
- package/lib/modules/fonts.js +0 -54
- package/lib/modules/img.js +0 -107
- package/lib/modules/input.js +0 -198
- package/lib/modules/mouse.js +0 -192
- package/lib/modules/network.js +0 -238
- package/lib/modules/performance.js +0 -49
- package/lib/modules/scroll.js +0 -81
- package/lib/modules/selection.js +0 -35
- package/lib/modules/tabs.js +0 -10
- package/lib/modules/tagWatcher.js +0 -73
- package/lib/modules/timing.js +0 -170
- package/lib/modules/userTesting/SignalManager.js +0 -80
- package/lib/modules/userTesting/dnd.js +0 -37
- package/lib/modules/userTesting/index.js +0 -435
- package/lib/modules/userTesting/recorder.js +0 -97
- package/lib/modules/userTesting/styles.js +0 -263
- package/lib/modules/userTesting/utils.js +0 -79
- package/lib/modules/viewport.js +0 -40
- package/lib/utils.js +0 -230
- package/rollup.config.js +0 -12
- package/scripts/checkver.cjs +0 -7
- package/tsconfig-base.json +0 -16
- /package/{cjs → dist/cjs}/common/interaction.d.ts +0 -0
- /package/{cjs → dist/cjs}/common/messages.gen.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/canvas.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/guards.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/logger.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/observer/iframe_observer.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/observer/shadow_root_observer.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/ticker.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/axiosSpy.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/connection.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/console.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/constructedStyleSheets.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/cssrules.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/exception.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/featureFlags.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/focus.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/fonts.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/img.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/input.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/mouse.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/network.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/performance.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/scroll.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/selection.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/tabs.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/timing.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/dnd.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/index.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/recorder.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/styles.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/utils.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/viewport.d.ts +0 -0
- /package/{lib → dist/lib}/common/interaction.d.ts +0 -0
- /package/{lib → dist/lib}/common/messages.gen.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/canvas.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/guards.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/logger.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/observer/iframe_observer.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/observer/shadow_root_observer.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/ticker.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/axiosSpy.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/connection.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/console.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/constructedStyleSheets.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/cssrules.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/exception.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/featureFlags.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/focus.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/fonts.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/img.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/input.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/mouse.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/network.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/performance.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/scroll.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/selection.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/tabs.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/timing.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/dnd.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/index.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/recorder.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/styles.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/utils.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/viewport.d.ts +0 -0
|
@@ -1,57 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
28
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
4
|
exports.SanitizeLevel = exports.Messages = exports.App = void 0;
|
|
30
|
-
const
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const index_js_1 = tslib_1.__importStar(require("./app/index.js"));
|
|
31
7
|
var index_js_2 = require("./app/index.js");
|
|
32
|
-
Object.defineProperty(exports, "App", { enumerable: true, get: function () { return __importDefault(index_js_2).default; } });
|
|
8
|
+
Object.defineProperty(exports, "App", { enumerable: true, get: function () { return tslib_1.__importDefault(index_js_2).default; } });
|
|
33
9
|
const messages_gen_js_1 = require("./app/messages.gen.js");
|
|
34
|
-
const _Messages = __importStar(require("./app/messages.gen.js"));
|
|
10
|
+
const _Messages = tslib_1.__importStar(require("./app/messages.gen.js"));
|
|
35
11
|
exports.Messages = _Messages;
|
|
36
12
|
var sanitizer_js_1 = require("./app/sanitizer.js");
|
|
37
13
|
Object.defineProperty(exports, "SanitizeLevel", { enumerable: true, get: function () { return sanitizer_js_1.SanitizeLevel; } });
|
|
38
|
-
const connection_js_1 = __importDefault(require("./modules/connection.js"));
|
|
39
|
-
const console_js_1 = __importDefault(require("./modules/console.js"));
|
|
40
|
-
const exception_js_1 = __importStar(require("./modules/exception.js"));
|
|
41
|
-
const img_js_1 = __importDefault(require("./modules/img.js"));
|
|
42
|
-
const input_js_1 = __importDefault(require("./modules/input.js"));
|
|
43
|
-
const mouse_js_1 = __importDefault(require("./modules/mouse.js"));
|
|
44
|
-
const timing_js_1 = __importDefault(require("./modules/timing.js"));
|
|
45
|
-
const performance_js_1 = __importDefault(require("./modules/performance.js"));
|
|
46
|
-
const scroll_js_1 = __importDefault(require("./modules/scroll.js"));
|
|
47
|
-
const viewport_js_1 = __importDefault(require("./modules/viewport.js"));
|
|
48
|
-
const cssrules_js_1 = __importDefault(require("./modules/cssrules.js"));
|
|
49
|
-
const focus_js_1 = __importDefault(require("./modules/focus.js"));
|
|
50
|
-
const fonts_js_1 = __importDefault(require("./modules/fonts.js"));
|
|
51
|
-
const network_js_1 = __importDefault(require("./modules/network.js"));
|
|
52
|
-
const constructedStyleSheets_js_1 = __importDefault(require("./modules/constructedStyleSheets.js"));
|
|
53
|
-
const selection_js_1 = __importDefault(require("./modules/selection.js"));
|
|
54
|
-
const tabs_js_1 = __importDefault(require("./modules/tabs.js"));
|
|
14
|
+
const connection_js_1 = tslib_1.__importDefault(require("./modules/connection.js"));
|
|
15
|
+
const console_js_1 = tslib_1.__importDefault(require("./modules/console.js"));
|
|
16
|
+
const exception_js_1 = tslib_1.__importStar(require("./modules/exception.js"));
|
|
17
|
+
const img_js_1 = tslib_1.__importDefault(require("./modules/img.js"));
|
|
18
|
+
const input_js_1 = tslib_1.__importDefault(require("./modules/input.js"));
|
|
19
|
+
const mouse_js_1 = tslib_1.__importDefault(require("./modules/mouse.js"));
|
|
20
|
+
const timing_js_1 = tslib_1.__importDefault(require("./modules/timing.js"));
|
|
21
|
+
const performance_js_1 = tslib_1.__importDefault(require("./modules/performance.js"));
|
|
22
|
+
const scroll_js_1 = tslib_1.__importDefault(require("./modules/scroll.js"));
|
|
23
|
+
const viewport_js_1 = tslib_1.__importDefault(require("./modules/viewport.js"));
|
|
24
|
+
const cssrules_js_1 = tslib_1.__importDefault(require("./modules/cssrules.js"));
|
|
25
|
+
const focus_js_1 = tslib_1.__importDefault(require("./modules/focus.js"));
|
|
26
|
+
const fonts_js_1 = tslib_1.__importDefault(require("./modules/fonts.js"));
|
|
27
|
+
const network_js_1 = tslib_1.__importDefault(require("./modules/network.js"));
|
|
28
|
+
const constructedStyleSheets_js_1 = tslib_1.__importDefault(require("./modules/constructedStyleSheets.js"));
|
|
29
|
+
const selection_js_1 = tslib_1.__importDefault(require("./modules/selection.js"));
|
|
30
|
+
const tabs_js_1 = tslib_1.__importDefault(require("./modules/tabs.js"));
|
|
55
31
|
const utils_js_1 = require("./utils.js");
|
|
56
32
|
const DOCS_SETUP = '/installation/javascript-sdk';
|
|
57
33
|
function processOptions(obj) {
|
|
@@ -98,7 +74,7 @@ class API {
|
|
|
98
74
|
const orig = this.options.ingestPoint || index_js_1.DEFAULT_INGEST_POINT;
|
|
99
75
|
req.open('POST', orig + '/v1/web/not-started');
|
|
100
76
|
req.send(JSON.stringify({
|
|
101
|
-
trackerVersion: '14.0.10
|
|
77
|
+
trackerVersion: '14.0.10',
|
|
102
78
|
projectKey: this.options.projectKey,
|
|
103
79
|
doNotTrack,
|
|
104
80
|
reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,
|
|
@@ -130,7 +106,8 @@ class API {
|
|
|
130
106
|
if (!utils_js_1.IN_BROWSER || !processOptions(options)) {
|
|
131
107
|
return;
|
|
132
108
|
}
|
|
133
|
-
if (window.__OPENREPLAY__
|
|
109
|
+
if (window.__OPENREPLAY__ ||
|
|
110
|
+
(!this.crossdomainMode && (0, utils_js_1.inIframe)() && window.top?.__OPENREPLAY__)) {
|
|
134
111
|
console.error('OpenReplay: one tracker instance has been initialised already');
|
|
135
112
|
return;
|
|
136
113
|
}
|
|
@@ -453,3 +430,4 @@ class API {
|
|
|
453
430
|
}
|
|
454
431
|
}
|
|
455
432
|
exports.default = API;
|
|
433
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/main/index.ts"],"sourcesContent":["import App, { DEFAULT_INGEST_POINT } from './app/index.js'\n\nexport { default as App } from './app/index.js'\n\nimport { UserAnonymousID, CustomEvent, CustomIssue } from './app/messages.gen.js'\nimport * as _Messages from './app/messages.gen.js'\n\nexport const Messages = _Messages\nexport { SanitizeLevel } from './app/sanitizer.js'\n\nimport Connection from './modules/connection.js'\nimport Console from './modules/console.js'\nimport Exception, {\n getExceptionMessageFromEvent,\n getExceptionMessage,\n} from './modules/exception.js'\nimport Img from './modules/img.js'\nimport Input from './modules/input.js'\nimport Mouse from './modules/mouse.js'\nimport Timing from './modules/timing.js'\nimport Performance from './modules/performance.js'\nimport Scroll from './modules/scroll.js'\nimport Viewport from './modules/viewport.js'\nimport CSSRules from './modules/cssrules.js'\nimport Focus from './modules/focus.js'\nimport Fonts from './modules/fonts.js'\nimport Network from './modules/network.js'\nimport ConstructedStyleSheets from './modules/constructedStyleSheets.js'\nimport Selection from './modules/selection.js'\nimport Tabs from './modules/tabs.js'\n\nimport { IN_BROWSER, deprecationWarn, DOCS_HOST, inIframe } from './utils.js'\nimport FeatureFlags, { IFeatureFlag } from './modules/featureFlags.js'\nimport type { Options as AppOptions } from './app/index.js'\nimport type { Options as ConsoleOptions } from './modules/console.js'\nimport type { Options as ExceptionOptions } from './modules/exception.js'\nimport type { Options as InputOptions } from './modules/input.js'\nimport type { Options as PerformanceOptions } from './modules/performance.js'\nimport type { Options as TimingOptions } from './modules/timing.js'\nimport type { Options as NetworkOptions } from './modules/network.js'\nimport type { MouseHandlerOptions } from './modules/mouse.js'\nimport type { SessionInfo } from './app/session.js'\n\nimport type { StartOptions } from './app/index.js'\n//TODO: unique options init\nimport type { StartPromiseReturn } from './app/index.js'\n\nexport type Options = Partial<\n AppOptions & ConsoleOptions & ExceptionOptions & InputOptions & PerformanceOptions & TimingOptions\n> & {\n projectID?: number // For the back compatibility only (deprecated)\n projectKey: string\n sessionToken?: string\n respectDoNotTrack?: boolean\n autoResetOnWindowOpen?: boolean\n resetTabOnWindowOpen?: boolean\n network?: Partial<NetworkOptions>\n mouse?: Partial<MouseHandlerOptions>\n flags?: {\n onFlagsLoad?: (flags: IFeatureFlag[]) => void\n }\n // dev only\n __DISABLE_SECURE_MODE?: boolean\n}\n\nconst DOCS_SETUP = '/installation/javascript-sdk'\n\nfunction processOptions(obj: any): obj is Options {\n if (obj == null) {\n console.error(\n `OpenReplay: invalid options argument type. Please, check documentation on ${DOCS_HOST}${DOCS_SETUP}`,\n )\n return false\n }\n if (typeof obj.projectKey !== 'string') {\n if (typeof obj.projectKey !== 'number') {\n if (typeof obj.projectID !== 'number') {\n // Back compatability\n console.error(\n `OpenReplay: projectKey is missing or wrong type (string is expected). Please, check ${DOCS_HOST}${DOCS_SETUP} for more information.`,\n )\n return false\n } else {\n obj.projectKey = obj.projectID.toString()\n deprecationWarn('`projectID` option', '`projectKey` option', DOCS_SETUP)\n }\n } else {\n console.warn('OpenReplay: projectKey is expected to have a string type.')\n obj.projectKey = obj.projectKey.toString()\n }\n }\n if (obj.sessionToken != null) {\n deprecationWarn('`sessionToken` option', '`sessionHash` start() option', '/')\n }\n return true\n}\n\nexport default class API {\n public featureFlags: FeatureFlags\n\n private readonly app: App | null = null\n private readonly crossdomainMode: boolean = false\n\n constructor(private readonly options: Options) {\n this.crossdomainMode = Boolean(inIframe() && options.crossdomain?.enabled)\n if (!IN_BROWSER || !processOptions(options)) {\n return\n }\n if (\n (window as any).__OPENREPLAY__ ||\n (!this.crossdomainMode && inIframe() && (window.top as any)?.__OPENREPLAY__)\n ) {\n console.error('OpenReplay: one tracker instance has been initialised already')\n return\n }\n if (!options.__DISABLE_SECURE_MODE && location.protocol !== 'https:') {\n console.error(\n 'OpenReplay: Your website must be publicly accessible and running on SSL in order for OpenReplay to properly capture and replay the user session. You can disable this check by setting `__DISABLE_SECURE_MODE` option to `true` if you are testing in localhost. Keep in mind, that asset files on a local machine are not available to the outside world. This might affect tracking if you use css files.',\n )\n return\n }\n const doNotTrack = this.checkDoNotTrack()\n const failReason: string[] = []\n const conditions: string[] = [\n 'Map',\n 'Set',\n 'MutationObserver',\n 'performance',\n 'timing',\n 'startsWith',\n 'Blob',\n 'Worker',\n ]\n\n if (doNotTrack) {\n failReason.push('doNotTrack')\n } else {\n for (const condition of conditions) {\n if (condition === 'timing') {\n if ('performance' in window && !(condition in performance)) {\n failReason.push(condition)\n break\n }\n } else if (condition === 'startsWith') {\n if (!(condition in String.prototype)) {\n failReason.push(condition)\n break\n }\n } else {\n if (!(condition in window)) {\n failReason.push(condition)\n break\n }\n }\n }\n }\n if (failReason.length > 0) {\n const missingApi = failReason.join(',')\n console.error(\n `OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${missingApi}`,\n )\n this.signalStartIssue('missing_api', failReason)\n return\n }\n\n const app = new App(\n options.projectKey,\n options.sessionToken,\n options,\n this.signalStartIssue,\n this.crossdomainMode,\n )\n this.app = app\n if (!this.crossdomainMode) {\n // no need to send iframe viewport data since its a node for us\n Viewport(app)\n // calculated in main window\n Connection(app)\n // while we can calculate it here, trying to compute it for all parts is hard\n Performance(app, options)\n // no tabs in iframes yet\n Tabs(app)\n }\n Mouse(app, options.mouse)\n // inside iframe, we ignore viewport scroll\n Scroll(app, this.crossdomainMode)\n CSSRules(app)\n ConstructedStyleSheets(app)\n Console(app, options)\n Exception(app, options)\n Img(app)\n Input(app, options)\n Timing(app, options)\n Focus(app)\n Fonts(app)\n Network(app, options.network)\n Selection(app)\n ;(window as any).__OPENREPLAY__ = this\n\n if (options.flags && options.flags.onFlagsLoad) {\n this.onFlagsLoad(options.flags.onFlagsLoad)\n }\n const wOpen = window.open\n if (options.autoResetOnWindowOpen || options.resetTabOnWindowOpen) {\n app.attachStartCallback(() => {\n const tabId = app.getTabId()\n const sessStorage = app.sessionStorage ?? window.sessionStorage\n window.open = function (...args) {\n if (options.autoResetOnWindowOpen) {\n app.resetNextPageSession(true)\n }\n if (options.resetTabOnWindowOpen) {\n sessStorage.removeItem(options.session_tabid_key || '__openreplay_tabid')\n }\n app.resetNextPageSession(false)\n sessStorage.setItem(options.session_tabid_key || '__openreplay_tabid', tabId)\n return wOpen.call(window, ...args)\n }\n })\n app.attachStopCallback(() => {\n window.open = wOpen\n })\n }\n }\n\n checkDoNotTrack = () => {\n return (\n this.options.respectDoNotTrack &&\n (navigator.doNotTrack == '1' ||\n // @ts-ignore\n window.doNotTrack == '1')\n )\n }\n\n signalStartIssue = (reason: string, missingApi: string[]) => {\n const doNotTrack = this.checkDoNotTrack()\n const req = new XMLHttpRequest()\n const orig = this.options.ingestPoint || DEFAULT_INGEST_POINT\n req.open('POST', orig + '/v1/web/not-started')\n req.send(\n JSON.stringify({\n trackerVersion: 'TRACKER_VERSION',\n projectKey: this.options.projectKey,\n doNotTrack,\n reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,\n }),\n )\n }\n\n isFlagEnabled(flagName: string): boolean {\n return this.featureFlags.isFlagEnabled(flagName)\n }\n\n onFlagsLoad(callback: (flags: IFeatureFlag[]) => void): void {\n this.app?.featureFlags.onFlagsLoad(callback)\n }\n\n clearPersistFlags() {\n this.app?.featureFlags.clearPersistFlags()\n }\n\n reloadFlags() {\n return this.app?.featureFlags.reloadFlags()\n }\n\n getFeatureFlag(flagName: string): IFeatureFlag | undefined {\n return this.app?.featureFlags.getFeatureFlag(flagName)\n }\n\n getAllFeatureFlags() {\n return this.app?.featureFlags.flags\n }\n\n public restartCanvasTracking = () => {\n if (this.app === null) {\n return\n }\n this.app.restartCanvasTracking()\n }\n\n use<T>(fn: (app: App | null, options?: Options) => T): T {\n return fn(this.app, this.options)\n }\n\n isActive(): boolean {\n if (this.app === null) {\n return false\n }\n return this.app.active()\n }\n\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * msg direction is \"down\" (incoming) by default\n *\n * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}\n * */\n trackWs(channelName: string) {\n if (this.app === null) {\n return\n }\n return this.app.trackWs(channelName)\n }\n\n start(startOpts?: Partial<StartOptions>): Promise<StartPromiseReturn> {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject(\"Browser doesn't support required api, or doNotTrack is active.\")\n }\n return this.app.start(startOpts)\n } else {\n return Promise.reject('Trying to start not in browser.')\n }\n }\n\n browserEnvCheck() {\n if (!IN_BROWSER) {\n console.error(\n `OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \\`tracker.start()\\` line. Check documentation on ${DOCS_HOST}${DOCS_SETUP}`,\n )\n return false\n }\n return true\n }\n\n /**\n * start buffering messages without starting the actual session, which gives user 30 seconds to \"activate\" and record\n * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost\n * */\n coldStart(startOpts?: Partial<StartOptions>, conditional?: boolean) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized')\n }\n void this.app.coldStart(startOpts, conditional)\n } else {\n return Promise.reject('Trying to start not in browser.')\n }\n }\n\n /**\n * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.\n * (no backend delay sync)\n *\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * @returns methods to manipulate buffer:\n *\n * saveBuffer - to save it in localStorage\n *\n * getBuffer - returns current buffer\n *\n * setBuffer - replaces current buffer with given\n * */\n startOfflineRecording(startOpts: Partial<StartOptions>, onSessionSent: () => void) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized')\n }\n return this.app.offlineRecording(startOpts, onSessionSent)\n } else {\n return Promise.reject('Trying to start not in browser.')\n }\n }\n\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded into service worker successfully\n * @reject {string} - error message\n * */\n uploadOfflineRecording() {\n if (this.app === null) {\n return\n }\n return this.app.uploadOfflineRecording()\n }\n\n stop(): string | undefined {\n if (this.app === null) {\n return\n }\n this.app.stop()\n return this.app.session.getSessionHash()\n }\n\n forceFlushBatch() {\n if (this.app === null) {\n return\n }\n this.app.forceFlushBatch()\n }\n\n getSessionToken(): string | null | undefined {\n if (this.app === null) {\n return null\n }\n return this.app.getSessionToken()\n }\n\n getSessionInfo(): SessionInfo | null {\n if (this.app === null) {\n return null\n }\n return this.app.session.getInfo()\n }\n\n getSessionID(): string | null | undefined {\n if (this.app === null) {\n return null\n }\n return this.app.getSessionID()\n }\n\n getTabId() {\n if (this.app === null) {\n return null\n }\n return this.app.getTabId()\n }\n\n getUxId() {\n if (this.app === null) {\n return null\n }\n return this.app.getUxtId()\n }\n\n sessionID(): string | null | undefined {\n deprecationWarn(\"'sessionID' method\", \"'getSessionID' method\", '/')\n return this.getSessionID()\n }\n\n getSessionURL(options?: { withCurrentTime?: boolean }): string | undefined {\n if (this.app === null) {\n return undefined\n }\n return this.app.getSessionURL(options)\n }\n\n setUserID(id: string): void {\n if (typeof id === 'string' && this.app !== null) {\n this.app.session.setUserID(id)\n }\n }\n\n userID(id: string): void {\n deprecationWarn(\"'userID' method\", \"'setUserID' method\", '/')\n this.setUserID(id)\n }\n\n setUserAnonymousID(id: string): void {\n if (typeof id === 'string' && this.app !== null) {\n this.app.send(UserAnonymousID(id))\n }\n }\n\n userAnonymousID(id: string): void {\n deprecationWarn(\"'userAnonymousID' method\", \"'setUserAnonymousID' method\", '/')\n this.setUserAnonymousID(id)\n }\n\n setMetadata(key: string, value: string): void {\n if (typeof key === 'string' && typeof value === 'string' && this.app !== null) {\n this.app.session.setMetadata(key, value)\n }\n }\n\n metadata(key: string, value: string): void {\n deprecationWarn(\"'metadata' method\", \"'setMetadata' method\", '/')\n this.setMetadata(key, value)\n }\n\n event(key: string, payload: any = null, issue = false): void {\n if (typeof key === 'string' && this.app !== null) {\n if (issue) {\n return this.issue(key, payload)\n } else {\n try {\n payload = JSON.stringify(payload)\n } catch (e) {\n return\n }\n this.app.send(CustomEvent(key, payload))\n }\n }\n }\n\n issue(key: string, payload: any = null): void {\n if (typeof key === 'string' && this.app !== null) {\n try {\n payload = JSON.stringify(payload)\n } catch (e) {\n return\n }\n this.app.send(CustomIssue(key, payload))\n }\n }\n\n handleError = (\n e: Error | ErrorEvent | PromiseRejectionEvent,\n metadata: Record<string, any> = {},\n ) => {\n if (this.app === null) {\n return\n }\n if (e instanceof Error) {\n const msg = getExceptionMessage(e, [], metadata)\n this.app.send(msg)\n } else if (\n e instanceof ErrorEvent ||\n ('PromiseRejectionEvent' in window && e instanceof PromiseRejectionEvent)\n ) {\n const msg = getExceptionMessageFromEvent(e, undefined, metadata)\n if (msg != null) {\n this.app.send(msg)\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Options as WebworkerOptions } from '
|
|
1
|
+
import type { Options as WebworkerOptions } from '../../common/interaction.js';
|
|
2
2
|
import AttributeSender from '../modules/attributeSender.js';
|
|
3
3
|
import FeatureFlags from '../modules/featureFlags.js';
|
|
4
4
|
import type { Options as NetworkOptions } from '../modules/network.js';
|
|
5
5
|
import Logger, { ILogLevel } from './logger.js';
|
|
6
6
|
import Message from './messages.gen.js';
|
|
7
|
-
import Nodes from './nodes.js';
|
|
7
|
+
import Nodes from './nodes/index.js';
|
|
8
8
|
import type { Options as ObserverOptions } from './observer/top_observer.js';
|
|
9
9
|
import Observer from './observer/top_observer.js';
|
|
10
10
|
import type { Options as SanitizerOptions } from './sanitizer.js';
|
|
@@ -12,6 +12,7 @@ import Sanitizer from './sanitizer.js';
|
|
|
12
12
|
import type { Options as SessOptions } from './session.js';
|
|
13
13
|
import Session from './session.js';
|
|
14
14
|
import Ticker from './ticker.js';
|
|
15
|
+
import { MaintainerOptions } from './nodes/maintainer.js';
|
|
15
16
|
export interface StartOptions {
|
|
16
17
|
userID?: string;
|
|
17
18
|
metadata?: Record<string, string>;
|
|
@@ -107,11 +108,22 @@ type AppOptions = {
|
|
|
107
108
|
};
|
|
108
109
|
network?: NetworkOptions;
|
|
109
110
|
/**
|
|
110
|
-
* use this flag
|
|
111
|
+
* use this flag to force angular detection to be offline
|
|
112
|
+
*
|
|
111
113
|
* basically goes around window.Zone api changes to mutation observer
|
|
112
114
|
* and event listeners
|
|
113
115
|
* */
|
|
114
|
-
|
|
116
|
+
forceNgOff?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* This option is used to change how tracker handles potentially detached nodes
|
|
119
|
+
*
|
|
120
|
+
* defaults here are tested and proven to be lightweight and easy on cpu
|
|
121
|
+
*
|
|
122
|
+
* consult the docs before changing it
|
|
123
|
+
* */
|
|
124
|
+
nodes?: {
|
|
125
|
+
maintainer: Partial<MaintainerOptions>;
|
|
126
|
+
};
|
|
115
127
|
} & WebworkerOptions & SessOptions;
|
|
116
128
|
export type Options = AppOptions & ObserverOptions & SanitizerOptions;
|
|
117
129
|
export declare const DEFAULT_INGEST_POINT = "https://api.openreplay.com/ingest";
|
|
@@ -220,7 +232,7 @@ export default class App {
|
|
|
220
232
|
metadata: Record<string, string>;
|
|
221
233
|
userID: string | null;
|
|
222
234
|
timestamp: number;
|
|
223
|
-
projectID?: string
|
|
235
|
+
projectID?: string;
|
|
224
236
|
};
|
|
225
237
|
getSessionToken(): string | undefined;
|
|
226
238
|
getSessionID(): string | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as Messages from '
|
|
2
|
-
export { default, Type } from '
|
|
1
|
+
import * as Messages from '../../common/messages.gen.js';
|
|
2
|
+
export { default, Type } from '../../common/messages.gen.js';
|
|
3
3
|
export declare function Timestamp(timestamp: number): Messages.Timestamp;
|
|
4
4
|
export declare function SetPageLocationDeprecated(url: string, referrer: string, navigationStart: number): Messages.SetPageLocationDeprecated;
|
|
5
5
|
export declare function SetViewportSize(width: number, height: number): Messages.SetViewportSize;
|
|
@@ -1,23 +1,30 @@
|
|
|
1
|
+
import { MaintainerOptions } from './maintainer.js';
|
|
1
2
|
type NodeCallback = (node: Node, isStart: boolean) => void;
|
|
3
|
+
export interface NodesOptions {
|
|
4
|
+
node_id: string;
|
|
5
|
+
forceNgOff: boolean;
|
|
6
|
+
maintainer?: Partial<MaintainerOptions>;
|
|
7
|
+
}
|
|
2
8
|
export default class Nodes {
|
|
3
|
-
private readonly
|
|
4
|
-
private readonly angularMode;
|
|
5
|
-
private nodes;
|
|
9
|
+
private readonly nodes;
|
|
6
10
|
private totalNodeAmount;
|
|
7
11
|
private readonly nodeCallbacks;
|
|
8
12
|
private readonly elementListeners;
|
|
9
13
|
private nextNodeId;
|
|
10
|
-
|
|
14
|
+
private readonly node_id;
|
|
15
|
+
private readonly forceNgOff;
|
|
16
|
+
private readonly maintainer;
|
|
17
|
+
constructor(params: NodesOptions);
|
|
11
18
|
syntheticMode(frameOrder: number): void;
|
|
12
|
-
attachNodeCallback(nodeCallback: NodeCallback):
|
|
19
|
+
attachNodeCallback(nodeCallback: NodeCallback): number;
|
|
13
20
|
scanTree: (cb: (node: Node | void) => void) => void;
|
|
14
21
|
attachNodeListener: (node: Node, type: string, listener: EventListener, useCapture?: boolean) => void;
|
|
15
22
|
registerNode(node: Node): [/*id:*/ number, /*isNew:*/ boolean];
|
|
16
|
-
unregisterNode(node: Node)
|
|
23
|
+
unregisterNode: (node: Node) => number | undefined;
|
|
17
24
|
cleanTree(): void;
|
|
18
25
|
callNodeCallbacks(node: Node, isStart: boolean): void;
|
|
19
26
|
getID(node: Node): number | undefined;
|
|
20
|
-
getNode(id: number): void | Node;
|
|
27
|
+
getNode(id: number): void | Node | undefined;
|
|
21
28
|
getNodeCount(): number;
|
|
22
29
|
clear(): void;
|
|
23
30
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface MaintainerOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Run cleanup each X ms
|
|
4
|
+
*
|
|
5
|
+
* @default 30 * 1000
|
|
6
|
+
* */
|
|
7
|
+
interval: number;
|
|
8
|
+
/**
|
|
9
|
+
* Maintainer checks nodes in small batches over 50ms timeouts
|
|
10
|
+
*
|
|
11
|
+
* @default 2500
|
|
12
|
+
* */
|
|
13
|
+
batchSize: number;
|
|
14
|
+
/**
|
|
15
|
+
* @default true
|
|
16
|
+
* */
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
}
|
|
19
|
+
declare class Maintainer {
|
|
20
|
+
private readonly nodes;
|
|
21
|
+
private readonly unregisterNode;
|
|
22
|
+
private interval;
|
|
23
|
+
private readonly options;
|
|
24
|
+
constructor(nodes: Map<number, Node | void>, unregisterNode: (node: Node) => void, options?: Partial<MaintainerOptions>);
|
|
25
|
+
start: () => void;
|
|
26
|
+
stop: () => void;
|
|
27
|
+
}
|
|
28
|
+
export default Maintainer;
|
|
@@ -11,7 +11,9 @@ export default abstract class Observer {
|
|
|
11
11
|
constructor(app: App, isTopContext?: boolean);
|
|
12
12
|
private clear;
|
|
13
13
|
/**
|
|
14
|
-
* Unbinds the removed nodes in case of iframe src change.
|
|
14
|
+
* EXPERIMENTAL: Unbinds the removed nodes in case of iframe src change.
|
|
15
|
+
*
|
|
16
|
+
* right now, we're relying on nodes.maintainer
|
|
15
17
|
*/
|
|
16
18
|
private handleIframeSrcChange;
|
|
17
19
|
private sendNodeAttribute;
|
|
@@ -9,7 +9,11 @@ type ContextCallback = (context: Context) => void;
|
|
|
9
9
|
export default class TopObserver extends Observer {
|
|
10
10
|
private readonly options;
|
|
11
11
|
private readonly iframeOffsets;
|
|
12
|
-
|
|
12
|
+
readonly app: App;
|
|
13
|
+
constructor(params: {
|
|
14
|
+
app: App;
|
|
15
|
+
options: Partial<Options>;
|
|
16
|
+
});
|
|
13
17
|
private readonly contextCallbacks;
|
|
14
18
|
private readonly contextsSet;
|
|
15
19
|
attachContextCallback(cb: ContextCallback): void;
|
|
@@ -11,11 +11,14 @@ export interface Options {
|
|
|
11
11
|
}
|
|
12
12
|
export declare const stringWiper: (input: string) => string;
|
|
13
13
|
export default class Sanitizer {
|
|
14
|
-
private readonly app;
|
|
15
14
|
private readonly obscured;
|
|
16
15
|
private readonly hidden;
|
|
17
16
|
private readonly options;
|
|
18
|
-
|
|
17
|
+
private readonly app;
|
|
18
|
+
constructor(params: {
|
|
19
|
+
app: App;
|
|
20
|
+
options?: Partial<Options>;
|
|
21
|
+
});
|
|
19
22
|
handleNode(id: number, parentID: number, node: Node): void;
|
|
20
23
|
sanitize(id: number, data: string): string;
|
|
21
24
|
isObscured(id: number): boolean;
|
|
@@ -21,8 +21,6 @@ export type Options = {
|
|
|
21
21
|
session_tabid_key: string;
|
|
22
22
|
};
|
|
23
23
|
export default class Session {
|
|
24
|
-
private readonly app;
|
|
25
|
-
private readonly options;
|
|
26
24
|
private metadata;
|
|
27
25
|
private userID;
|
|
28
26
|
private sessionID;
|
|
@@ -32,7 +30,12 @@ export default class Session {
|
|
|
32
30
|
private tabId;
|
|
33
31
|
userInfo: UserInfo;
|
|
34
32
|
private token;
|
|
35
|
-
|
|
33
|
+
private readonly app;
|
|
34
|
+
private readonly options;
|
|
35
|
+
constructor(params: {
|
|
36
|
+
app: App;
|
|
37
|
+
options: Options;
|
|
38
|
+
});
|
|
36
39
|
attachUpdateCallback(cb: OnUpdateCallback): void;
|
|
37
40
|
private handleUpdate;
|
|
38
41
|
assign(newInfo: Partial<SessionInfo>): void;
|
|
@@ -77,8 +77,8 @@ export default class API {
|
|
|
77
77
|
* */
|
|
78
78
|
startOfflineRecording(startOpts: Partial<StartOptions>, onSessionSent: () => void): Promise<never> | {
|
|
79
79
|
saveBuffer: () => void;
|
|
80
|
-
getBuffer: () =>
|
|
81
|
-
setBuffer: (buffer:
|
|
80
|
+
getBuffer: () => _Messages.default[];
|
|
81
|
+
setBuffer: (buffer: _Messages.default[]) => void;
|
|
82
82
|
};
|
|
83
83
|
/**
|
|
84
84
|
* Uploads the stored session buffer to backend
|
|
@@ -5,10 +5,13 @@ export declare class StringDictionary {
|
|
|
5
5
|
getKey(str: string): [number, boolean];
|
|
6
6
|
}
|
|
7
7
|
export default class AttributeSender {
|
|
8
|
+
private dict;
|
|
8
9
|
private readonly app;
|
|
9
10
|
private readonly isDictDisabled;
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
constructor(options: {
|
|
12
|
+
app: App;
|
|
13
|
+
isDictDisabled: boolean;
|
|
14
|
+
});
|
|
12
15
|
sendSetAttribute(id: number, name: string, value: string): void;
|
|
13
16
|
private applyDict;
|
|
14
17
|
clear(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Message, { CustomEvent, JSException, MouseClick, NetworkRequest, SetPageLocation } from '
|
|
1
|
+
import Message, { CustomEvent, JSException, MouseClick, NetworkRequest, SetPageLocation } from '../../common/messages.gen.js';
|
|
2
2
|
import App, { StartOptions } from '../app/index.js';
|
|
3
3
|
import { IFeatureFlag } from './featureFlags.js';
|
|
4
4
|
interface Filter {
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
export declare const WATCHED_TAGS_KEY = "__or__watched_tags__";
|
|
2
2
|
declare class TagWatcher {
|
|
3
|
-
private readonly sessionStorage;
|
|
4
|
-
private readonly errLog;
|
|
5
|
-
private readonly onTag;
|
|
6
3
|
intervals: Record<string, ReturnType<typeof setInterval>>;
|
|
7
4
|
tags: {
|
|
8
5
|
id: number;
|
|
9
6
|
selector: string;
|
|
10
7
|
}[];
|
|
11
8
|
observer: IntersectionObserver;
|
|
12
|
-
|
|
9
|
+
private readonly sessionStorage;
|
|
10
|
+
private readonly errLog;
|
|
11
|
+
private readonly onTag;
|
|
12
|
+
constructor(params: {
|
|
13
|
+
sessionStorage: Storage;
|
|
14
|
+
errLog: (args: any[]) => void;
|
|
15
|
+
onTag: (tag: number) => void;
|
|
16
|
+
});
|
|
13
17
|
fetchTags(ingest: string, token: string): Promise<void>;
|
|
14
18
|
setTags(tags: {
|
|
15
19
|
id: number;
|
|
@@ -24,6 +24,6 @@ export default class SignalManager {
|
|
|
24
24
|
started: number;
|
|
25
25
|
}[];
|
|
26
26
|
}) => void;
|
|
27
|
-
signalTask: (taskId: number, status:
|
|
28
|
-
signalTest: (status:
|
|
27
|
+
signalTask: (taskId: number, status: "begin" | "done" | "skipped", taskAnswer?: string) => void | Promise<Response>;
|
|
28
|
+
signalTest: (status: "begin" | "done" | "skipped") => Promise<Response>;
|
|
29
29
|
}
|
|
@@ -15,6 +15,7 @@ export declare function hasOpenreplayAttribute(e: Element, attr: string): boolea
|
|
|
15
15
|
* checks if iframe is accessible
|
|
16
16
|
**/
|
|
17
17
|
export declare function canAccessIframe(iframe: HTMLIFrameElement): boolean;
|
|
18
|
+
export declare function canAccessTarget(target: EventTarget): boolean;
|
|
18
19
|
export declare function generateRandomId(len?: number): string;
|
|
19
20
|
export declare function inIframe(): boolean | null;
|
|
20
21
|
/**
|
|
@@ -22,8 +23,8 @@ export declare function inIframe(): boolean | null;
|
|
|
22
23
|
* we need to use this to achieve safe behavior
|
|
23
24
|
* */
|
|
24
25
|
export declare function ngSafeBrowserMethod(method: string): string;
|
|
25
|
-
export declare function createMutationObserver(cb: MutationCallback,
|
|
26
|
-
export declare function createEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean,
|
|
27
|
-
export declare function deleteEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean,
|
|
26
|
+
export declare function createMutationObserver(cb: MutationCallback, forceNgOff?: boolean): MutationObserver;
|
|
27
|
+
export declare function createEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean, forceNgOff?: boolean): void;
|
|
28
|
+
export declare function deleteEventListener(target: EventTarget, event: string, cb: EventListenerOrEventListenerObject, capture?: boolean, forceNgOff?: boolean): void;
|
|
28
29
|
export declare function requestIdleCb(callback: () => void): void;
|
|
29
30
|
export declare function simpleMerge<T>(defaultObj: T, givenObj: Partial<T>): T;
|