@openreplay/tracker 5.0.2-beta → 5.0.2
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/app/guards.d.ts +21 -0
- package/cjs/app/guards.js +37 -0
- package/cjs/app/index.d.ts +118 -0
- package/cjs/app/index.js +438 -0
- package/cjs/app/logger.d.ts +26 -0
- package/cjs/app/logger.js +45 -0
- package/cjs/app/messages.gen.d.ts +63 -0
- package/cjs/app/messages.gen.js +551 -0
- package/cjs/app/nodes.d.ts +18 -0
- package/cjs/app/nodes.js +82 -0
- package/cjs/app/observer/iframe_observer.d.ts +4 -0
- package/cjs/app/observer/iframe_observer.js +23 -0
- package/cjs/app/observer/iframe_offsets.d.ts +8 -0
- package/cjs/app/observer/iframe_offsets.js +59 -0
- package/cjs/app/observer/observer.d.ts +23 -0
- package/cjs/app/observer/observer.js +340 -0
- package/cjs/app/observer/shadow_root_observer.d.ts +4 -0
- package/cjs/app/observer/shadow_root_observer.js +21 -0
- package/cjs/app/observer/top_observer.d.ts +24 -0
- package/cjs/app/observer/top_observer.js +113 -0
- package/cjs/app/sanitizer.d.ts +24 -0
- package/cjs/app/sanitizer.js +76 -0
- package/cjs/app/session.d.ts +38 -0
- package/cjs/app/session.js +114 -0
- package/cjs/app/ticker.d.ts +12 -0
- package/cjs/app/ticker.js +42 -0
- package/cjs/common/interaction.d.ts +24 -0
- package/cjs/common/interaction.js +2 -0
- package/cjs/common/messages.gen.d.ts +427 -0
- package/cjs/common/messages.gen.js +4 -0
- package/cjs/index.d.ts +47 -0
- package/cjs/index.js +254 -0
- package/cjs/modules/connection.d.ts +2 -0
- package/cjs/modules/connection.js +15 -0
- package/cjs/modules/console.d.ts +6 -0
- package/cjs/modules/console.js +119 -0
- package/cjs/modules/constructedStyleSheets.d.ts +4 -0
- package/cjs/modules/constructedStyleSheets.js +131 -0
- package/cjs/modules/cssrules.d.ts +2 -0
- package/cjs/modules/cssrules.js +99 -0
- package/cjs/modules/exception.d.ts +16 -0
- package/cjs/modules/exception.js +77 -0
- package/cjs/modules/focus.d.ts +2 -0
- package/cjs/modules/focus.js +45 -0
- package/cjs/modules/fonts.d.ts +2 -0
- package/cjs/modules/fonts.js +57 -0
- package/cjs/modules/img.d.ts +2 -0
- package/cjs/modules/img.js +110 -0
- package/cjs/modules/input.d.ts +16 -0
- package/cjs/modules/input.js +163 -0
- package/cjs/modules/mouse.d.ts +2 -0
- package/cjs/modules/mouse.js +148 -0
- package/cjs/modules/network.d.ts +28 -0
- package/cjs/modules/network.js +203 -0
- package/cjs/modules/performance.d.ts +7 -0
- package/cjs/modules/performance.js +53 -0
- package/cjs/modules/scroll.d.ts +2 -0
- package/cjs/modules/scroll.js +79 -0
- package/cjs/modules/timing.d.ts +7 -0
- package/cjs/modules/timing.js +160 -0
- package/cjs/modules/viewport.d.ts +2 -0
- package/cjs/modules/viewport.js +43 -0
- package/cjs/package.json +1 -0
- package/cjs/utils.d.ts +13 -0
- package/cjs/utils.js +71 -0
- package/cjs/vendors/finder/finder.d.ts +12 -0
- package/cjs/vendors/finder/finder.js +352 -0
- package/lib/app/guards.d.ts +21 -0
- package/lib/app/guards.js +26 -0
- package/lib/app/index.d.ts +118 -0
- package/lib/app/index.js +434 -0
- package/lib/app/logger.d.ts +26 -0
- package/lib/app/logger.js +41 -0
- package/lib/app/messages.gen.d.ts +63 -0
- package/lib/app/messages.gen.js +486 -0
- package/lib/app/nodes.d.ts +18 -0
- package/lib/app/nodes.js +79 -0
- package/lib/app/observer/iframe_observer.d.ts +4 -0
- package/lib/app/observer/iframe_observer.js +20 -0
- package/lib/app/observer/iframe_offsets.d.ts +8 -0
- package/lib/app/observer/iframe_offsets.js +56 -0
- package/lib/app/observer/observer.d.ts +23 -0
- package/lib/app/observer/observer.js +337 -0
- package/lib/app/observer/shadow_root_observer.d.ts +4 -0
- package/lib/app/observer/shadow_root_observer.js +18 -0
- package/lib/app/observer/top_observer.d.ts +24 -0
- package/lib/app/observer/top_observer.js +110 -0
- package/lib/app/sanitizer.d.ts +24 -0
- package/lib/app/sanitizer.js +72 -0
- package/lib/app/session.d.ts +38 -0
- package/lib/app/session.js +111 -0
- package/lib/app/ticker.d.ts +12 -0
- package/lib/app/ticker.js +39 -0
- package/lib/common/interaction.d.ts +24 -0
- package/lib/common/interaction.js +1 -0
- package/lib/common/messages.gen.d.ts +427 -0
- package/lib/common/messages.gen.js +3 -0
- package/lib/common/tsconfig.tsbuildinfo +1 -0
- package/lib/index.d.ts +47 -0
- package/lib/index.js +248 -0
- package/lib/modules/connection.d.ts +2 -0
- package/lib/modules/connection.js +12 -0
- package/lib/modules/console.d.ts +6 -0
- package/lib/modules/console.js +116 -0
- package/lib/modules/constructedStyleSheets.d.ts +4 -0
- package/lib/modules/constructedStyleSheets.js +126 -0
- package/lib/modules/cssrules.d.ts +2 -0
- package/lib/modules/cssrules.js +97 -0
- package/lib/modules/exception.d.ts +16 -0
- package/lib/modules/exception.js +71 -0
- package/lib/modules/focus.d.ts +2 -0
- package/lib/modules/focus.js +42 -0
- package/lib/modules/fonts.d.ts +2 -0
- package/lib/modules/fonts.js +54 -0
- package/lib/modules/img.d.ts +2 -0
- package/lib/modules/img.js +107 -0
- package/lib/modules/input.d.ts +16 -0
- package/lib/modules/input.js +158 -0
- package/lib/modules/mouse.d.ts +2 -0
- package/lib/modules/mouse.js +145 -0
- package/lib/modules/network.d.ts +28 -0
- package/lib/modules/network.js +200 -0
- package/lib/modules/performance.d.ts +7 -0
- package/lib/modules/performance.js +49 -0
- package/lib/modules/scroll.d.ts +2 -0
- package/lib/modules/scroll.js +76 -0
- package/lib/modules/timing.d.ts +7 -0
- package/lib/modules/timing.js +157 -0
- package/lib/modules/viewport.d.ts +2 -0
- package/lib/modules/viewport.js +40 -0
- package/lib/utils.d.ts +13 -0
- package/lib/utils.js +61 -0
- package/lib/vendors/finder/finder.d.ts +12 -0
- package/lib/vendors/finder/finder.js +348 -0
- package/package.json +1 -1
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
// Auto-generated, do not edit
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export function Timestamp(timestamp) {
|
|
4
|
+
return [
|
|
5
|
+
0 /* Messages.Type.Timestamp */,
|
|
6
|
+
timestamp,
|
|
7
|
+
];
|
|
8
|
+
}
|
|
9
|
+
export function SetPageLocation(url, referrer, navigationStart) {
|
|
10
|
+
return [
|
|
11
|
+
4 /* Messages.Type.SetPageLocation */,
|
|
12
|
+
url,
|
|
13
|
+
referrer,
|
|
14
|
+
navigationStart,
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
export function SetViewportSize(width, height) {
|
|
18
|
+
return [
|
|
19
|
+
5 /* Messages.Type.SetViewportSize */,
|
|
20
|
+
width,
|
|
21
|
+
height,
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
export function SetViewportScroll(x, y) {
|
|
25
|
+
return [
|
|
26
|
+
6 /* Messages.Type.SetViewportScroll */,
|
|
27
|
+
x,
|
|
28
|
+
y,
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
export function CreateDocument() {
|
|
32
|
+
return [
|
|
33
|
+
7 /* Messages.Type.CreateDocument */,
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
export function CreateElementNode(id, parentID, index, tag, svg) {
|
|
37
|
+
return [
|
|
38
|
+
8 /* Messages.Type.CreateElementNode */,
|
|
39
|
+
id,
|
|
40
|
+
parentID,
|
|
41
|
+
index,
|
|
42
|
+
tag,
|
|
43
|
+
svg,
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
export function CreateTextNode(id, parentID, index) {
|
|
47
|
+
return [
|
|
48
|
+
9 /* Messages.Type.CreateTextNode */,
|
|
49
|
+
id,
|
|
50
|
+
parentID,
|
|
51
|
+
index,
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
export function MoveNode(id, parentID, index) {
|
|
55
|
+
return [
|
|
56
|
+
10 /* Messages.Type.MoveNode */,
|
|
57
|
+
id,
|
|
58
|
+
parentID,
|
|
59
|
+
index,
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
export function RemoveNode(id) {
|
|
63
|
+
return [
|
|
64
|
+
11 /* Messages.Type.RemoveNode */,
|
|
65
|
+
id,
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
export function SetNodeAttribute(id, name, value) {
|
|
69
|
+
return [
|
|
70
|
+
12 /* Messages.Type.SetNodeAttribute */,
|
|
71
|
+
id,
|
|
72
|
+
name,
|
|
73
|
+
value,
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
export function RemoveNodeAttribute(id, name) {
|
|
77
|
+
return [
|
|
78
|
+
13 /* Messages.Type.RemoveNodeAttribute */,
|
|
79
|
+
id,
|
|
80
|
+
name,
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
export function SetNodeData(id, data) {
|
|
84
|
+
return [
|
|
85
|
+
14 /* Messages.Type.SetNodeData */,
|
|
86
|
+
id,
|
|
87
|
+
data,
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
export function SetNodeScroll(id, x, y) {
|
|
91
|
+
return [
|
|
92
|
+
16 /* Messages.Type.SetNodeScroll */,
|
|
93
|
+
id,
|
|
94
|
+
x,
|
|
95
|
+
y,
|
|
96
|
+
];
|
|
97
|
+
}
|
|
98
|
+
export function SetInputTarget(id, label) {
|
|
99
|
+
return [
|
|
100
|
+
17 /* Messages.Type.SetInputTarget */,
|
|
101
|
+
id,
|
|
102
|
+
label,
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
export function SetInputValue(id, value, mask) {
|
|
106
|
+
return [
|
|
107
|
+
18 /* Messages.Type.SetInputValue */,
|
|
108
|
+
id,
|
|
109
|
+
value,
|
|
110
|
+
mask,
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
export function SetInputChecked(id, checked) {
|
|
114
|
+
return [
|
|
115
|
+
19 /* Messages.Type.SetInputChecked */,
|
|
116
|
+
id,
|
|
117
|
+
checked,
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
export function MouseMove(x, y) {
|
|
121
|
+
return [
|
|
122
|
+
20 /* Messages.Type.MouseMove */,
|
|
123
|
+
x,
|
|
124
|
+
y,
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
export function NetworkRequest(type, method, url, request, response, status, timestamp, duration) {
|
|
128
|
+
return [
|
|
129
|
+
21 /* Messages.Type.NetworkRequest */,
|
|
130
|
+
type,
|
|
131
|
+
method,
|
|
132
|
+
url,
|
|
133
|
+
request,
|
|
134
|
+
response,
|
|
135
|
+
status,
|
|
136
|
+
timestamp,
|
|
137
|
+
duration,
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
export function ConsoleLog(level, value) {
|
|
141
|
+
return [
|
|
142
|
+
22 /* Messages.Type.ConsoleLog */,
|
|
143
|
+
level,
|
|
144
|
+
value,
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
export function PageLoadTiming(requestStart, responseStart, responseEnd, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart, loadEventEnd, firstPaint, firstContentfulPaint) {
|
|
148
|
+
return [
|
|
149
|
+
23 /* Messages.Type.PageLoadTiming */,
|
|
150
|
+
requestStart,
|
|
151
|
+
responseStart,
|
|
152
|
+
responseEnd,
|
|
153
|
+
domContentLoadedEventStart,
|
|
154
|
+
domContentLoadedEventEnd,
|
|
155
|
+
loadEventStart,
|
|
156
|
+
loadEventEnd,
|
|
157
|
+
firstPaint,
|
|
158
|
+
firstContentfulPaint,
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
export function PageRenderTiming(speedIndex, visuallyComplete, timeToInteractive) {
|
|
162
|
+
return [
|
|
163
|
+
24 /* Messages.Type.PageRenderTiming */,
|
|
164
|
+
speedIndex,
|
|
165
|
+
visuallyComplete,
|
|
166
|
+
timeToInteractive,
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
export function CustomEvent(name, payload) {
|
|
170
|
+
return [
|
|
171
|
+
27 /* Messages.Type.CustomEvent */,
|
|
172
|
+
name,
|
|
173
|
+
payload,
|
|
174
|
+
];
|
|
175
|
+
}
|
|
176
|
+
export function UserID(id) {
|
|
177
|
+
return [
|
|
178
|
+
28 /* Messages.Type.UserID */,
|
|
179
|
+
id,
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
export function UserAnonymousID(id) {
|
|
183
|
+
return [
|
|
184
|
+
29 /* Messages.Type.UserAnonymousID */,
|
|
185
|
+
id,
|
|
186
|
+
];
|
|
187
|
+
}
|
|
188
|
+
export function Metadata(key, value) {
|
|
189
|
+
return [
|
|
190
|
+
30 /* Messages.Type.Metadata */,
|
|
191
|
+
key,
|
|
192
|
+
value,
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
export function CSSInsertRule(id, rule, index) {
|
|
196
|
+
return [
|
|
197
|
+
37 /* Messages.Type.CSSInsertRule */,
|
|
198
|
+
id,
|
|
199
|
+
rule,
|
|
200
|
+
index,
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
export function CSSDeleteRule(id, index) {
|
|
204
|
+
return [
|
|
205
|
+
38 /* Messages.Type.CSSDeleteRule */,
|
|
206
|
+
id,
|
|
207
|
+
index,
|
|
208
|
+
];
|
|
209
|
+
}
|
|
210
|
+
export function Fetch(method, url, request, response, status, timestamp, duration) {
|
|
211
|
+
return [
|
|
212
|
+
39 /* Messages.Type.Fetch */,
|
|
213
|
+
method,
|
|
214
|
+
url,
|
|
215
|
+
request,
|
|
216
|
+
response,
|
|
217
|
+
status,
|
|
218
|
+
timestamp,
|
|
219
|
+
duration,
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
export function Profiler(name, duration, args, result) {
|
|
223
|
+
return [
|
|
224
|
+
40 /* Messages.Type.Profiler */,
|
|
225
|
+
name,
|
|
226
|
+
duration,
|
|
227
|
+
args,
|
|
228
|
+
result,
|
|
229
|
+
];
|
|
230
|
+
}
|
|
231
|
+
export function OTable(key, value) {
|
|
232
|
+
return [
|
|
233
|
+
41 /* Messages.Type.OTable */,
|
|
234
|
+
key,
|
|
235
|
+
value,
|
|
236
|
+
];
|
|
237
|
+
}
|
|
238
|
+
export function StateAction(type) {
|
|
239
|
+
return [
|
|
240
|
+
42 /* Messages.Type.StateAction */,
|
|
241
|
+
type,
|
|
242
|
+
];
|
|
243
|
+
}
|
|
244
|
+
export function Redux(action, state, duration) {
|
|
245
|
+
return [
|
|
246
|
+
44 /* Messages.Type.Redux */,
|
|
247
|
+
action,
|
|
248
|
+
state,
|
|
249
|
+
duration,
|
|
250
|
+
];
|
|
251
|
+
}
|
|
252
|
+
export function Vuex(mutation, state) {
|
|
253
|
+
return [
|
|
254
|
+
45 /* Messages.Type.Vuex */,
|
|
255
|
+
mutation,
|
|
256
|
+
state,
|
|
257
|
+
];
|
|
258
|
+
}
|
|
259
|
+
export function MobX(type, payload) {
|
|
260
|
+
return [
|
|
261
|
+
46 /* Messages.Type.MobX */,
|
|
262
|
+
type,
|
|
263
|
+
payload,
|
|
264
|
+
];
|
|
265
|
+
}
|
|
266
|
+
export function NgRx(action, state, duration) {
|
|
267
|
+
return [
|
|
268
|
+
47 /* Messages.Type.NgRx */,
|
|
269
|
+
action,
|
|
270
|
+
state,
|
|
271
|
+
duration,
|
|
272
|
+
];
|
|
273
|
+
}
|
|
274
|
+
export function GraphQL(operationKind, operationName, variables, response) {
|
|
275
|
+
return [
|
|
276
|
+
48 /* Messages.Type.GraphQL */,
|
|
277
|
+
operationKind,
|
|
278
|
+
operationName,
|
|
279
|
+
variables,
|
|
280
|
+
response,
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
export function PerformanceTrack(frames, ticks, totalJSHeapSize, usedJSHeapSize) {
|
|
284
|
+
return [
|
|
285
|
+
49 /* Messages.Type.PerformanceTrack */,
|
|
286
|
+
frames,
|
|
287
|
+
ticks,
|
|
288
|
+
totalJSHeapSize,
|
|
289
|
+
usedJSHeapSize,
|
|
290
|
+
];
|
|
291
|
+
}
|
|
292
|
+
export function StringDict(key, value) {
|
|
293
|
+
return [
|
|
294
|
+
50 /* Messages.Type.StringDict */,
|
|
295
|
+
key,
|
|
296
|
+
value,
|
|
297
|
+
];
|
|
298
|
+
}
|
|
299
|
+
export function SetNodeAttributeDict(id, nameKey, valueKey) {
|
|
300
|
+
return [
|
|
301
|
+
51 /* Messages.Type.SetNodeAttributeDict */,
|
|
302
|
+
id,
|
|
303
|
+
nameKey,
|
|
304
|
+
valueKey,
|
|
305
|
+
];
|
|
306
|
+
}
|
|
307
|
+
export function ResourceTiming(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator) {
|
|
308
|
+
return [
|
|
309
|
+
53 /* Messages.Type.ResourceTiming */,
|
|
310
|
+
timestamp,
|
|
311
|
+
duration,
|
|
312
|
+
ttfb,
|
|
313
|
+
headerSize,
|
|
314
|
+
encodedBodySize,
|
|
315
|
+
decodedBodySize,
|
|
316
|
+
url,
|
|
317
|
+
initiator,
|
|
318
|
+
];
|
|
319
|
+
}
|
|
320
|
+
export function ConnectionInformation(downlink, type) {
|
|
321
|
+
return [
|
|
322
|
+
54 /* Messages.Type.ConnectionInformation */,
|
|
323
|
+
downlink,
|
|
324
|
+
type,
|
|
325
|
+
];
|
|
326
|
+
}
|
|
327
|
+
export function SetPageVisibility(hidden) {
|
|
328
|
+
return [
|
|
329
|
+
55 /* Messages.Type.SetPageVisibility */,
|
|
330
|
+
hidden,
|
|
331
|
+
];
|
|
332
|
+
}
|
|
333
|
+
export function LoadFontFace(parentID, family, source, descriptors) {
|
|
334
|
+
return [
|
|
335
|
+
57 /* Messages.Type.LoadFontFace */,
|
|
336
|
+
parentID,
|
|
337
|
+
family,
|
|
338
|
+
source,
|
|
339
|
+
descriptors,
|
|
340
|
+
];
|
|
341
|
+
}
|
|
342
|
+
export function SetNodeFocus(id) {
|
|
343
|
+
return [
|
|
344
|
+
58 /* Messages.Type.SetNodeFocus */,
|
|
345
|
+
id,
|
|
346
|
+
];
|
|
347
|
+
}
|
|
348
|
+
export function LongTask(timestamp, duration, context, containerType, containerSrc, containerId, containerName) {
|
|
349
|
+
return [
|
|
350
|
+
59 /* Messages.Type.LongTask */,
|
|
351
|
+
timestamp,
|
|
352
|
+
duration,
|
|
353
|
+
context,
|
|
354
|
+
containerType,
|
|
355
|
+
containerSrc,
|
|
356
|
+
containerId,
|
|
357
|
+
containerName,
|
|
358
|
+
];
|
|
359
|
+
}
|
|
360
|
+
export function SetNodeAttributeURLBased(id, name, value, baseURL) {
|
|
361
|
+
return [
|
|
362
|
+
60 /* Messages.Type.SetNodeAttributeURLBased */,
|
|
363
|
+
id,
|
|
364
|
+
name,
|
|
365
|
+
value,
|
|
366
|
+
baseURL,
|
|
367
|
+
];
|
|
368
|
+
}
|
|
369
|
+
export function SetCSSDataURLBased(id, data, baseURL) {
|
|
370
|
+
return [
|
|
371
|
+
61 /* Messages.Type.SetCSSDataURLBased */,
|
|
372
|
+
id,
|
|
373
|
+
data,
|
|
374
|
+
baseURL,
|
|
375
|
+
];
|
|
376
|
+
}
|
|
377
|
+
export function TechnicalInfo(type, value) {
|
|
378
|
+
return [
|
|
379
|
+
63 /* Messages.Type.TechnicalInfo */,
|
|
380
|
+
type,
|
|
381
|
+
value,
|
|
382
|
+
];
|
|
383
|
+
}
|
|
384
|
+
export function CustomIssue(name, payload) {
|
|
385
|
+
return [
|
|
386
|
+
64 /* Messages.Type.CustomIssue */,
|
|
387
|
+
name,
|
|
388
|
+
payload,
|
|
389
|
+
];
|
|
390
|
+
}
|
|
391
|
+
export function CSSInsertRuleURLBased(id, rule, index, baseURL) {
|
|
392
|
+
return [
|
|
393
|
+
67 /* Messages.Type.CSSInsertRuleURLBased */,
|
|
394
|
+
id,
|
|
395
|
+
rule,
|
|
396
|
+
index,
|
|
397
|
+
baseURL,
|
|
398
|
+
];
|
|
399
|
+
}
|
|
400
|
+
export function MouseClick(id, hesitationTime, label, selector) {
|
|
401
|
+
return [
|
|
402
|
+
69 /* Messages.Type.MouseClick */,
|
|
403
|
+
id,
|
|
404
|
+
hesitationTime,
|
|
405
|
+
label,
|
|
406
|
+
selector,
|
|
407
|
+
];
|
|
408
|
+
}
|
|
409
|
+
export function CreateIFrameDocument(frameID, id) {
|
|
410
|
+
return [
|
|
411
|
+
70 /* Messages.Type.CreateIFrameDocument */,
|
|
412
|
+
frameID,
|
|
413
|
+
id,
|
|
414
|
+
];
|
|
415
|
+
}
|
|
416
|
+
export function AdoptedSSReplaceURLBased(sheetID, text, baseURL) {
|
|
417
|
+
return [
|
|
418
|
+
71 /* Messages.Type.AdoptedSSReplaceURLBased */,
|
|
419
|
+
sheetID,
|
|
420
|
+
text,
|
|
421
|
+
baseURL,
|
|
422
|
+
];
|
|
423
|
+
}
|
|
424
|
+
export function AdoptedSSInsertRuleURLBased(sheetID, rule, index, baseURL) {
|
|
425
|
+
return [
|
|
426
|
+
73 /* Messages.Type.AdoptedSSInsertRuleURLBased */,
|
|
427
|
+
sheetID,
|
|
428
|
+
rule,
|
|
429
|
+
index,
|
|
430
|
+
baseURL,
|
|
431
|
+
];
|
|
432
|
+
}
|
|
433
|
+
export function AdoptedSSDeleteRule(sheetID, index) {
|
|
434
|
+
return [
|
|
435
|
+
75 /* Messages.Type.AdoptedSSDeleteRule */,
|
|
436
|
+
sheetID,
|
|
437
|
+
index,
|
|
438
|
+
];
|
|
439
|
+
}
|
|
440
|
+
export function AdoptedSSAddOwner(sheetID, id) {
|
|
441
|
+
return [
|
|
442
|
+
76 /* Messages.Type.AdoptedSSAddOwner */,
|
|
443
|
+
sheetID,
|
|
444
|
+
id,
|
|
445
|
+
];
|
|
446
|
+
}
|
|
447
|
+
export function AdoptedSSRemoveOwner(sheetID, id) {
|
|
448
|
+
return [
|
|
449
|
+
77 /* Messages.Type.AdoptedSSRemoveOwner */,
|
|
450
|
+
sheetID,
|
|
451
|
+
id,
|
|
452
|
+
];
|
|
453
|
+
}
|
|
454
|
+
export function JSException(name, message, payload, metadata) {
|
|
455
|
+
return [
|
|
456
|
+
78 /* Messages.Type.JSException */,
|
|
457
|
+
name,
|
|
458
|
+
message,
|
|
459
|
+
payload,
|
|
460
|
+
metadata,
|
|
461
|
+
];
|
|
462
|
+
}
|
|
463
|
+
export function Zustand(mutation, state) {
|
|
464
|
+
return [
|
|
465
|
+
79 /* Messages.Type.Zustand */,
|
|
466
|
+
mutation,
|
|
467
|
+
state,
|
|
468
|
+
];
|
|
469
|
+
}
|
|
470
|
+
export function BatchMetadata(version, pageNo, firstIndex, timestamp, location) {
|
|
471
|
+
return [
|
|
472
|
+
81 /* Messages.Type.BatchMetadata */,
|
|
473
|
+
version,
|
|
474
|
+
pageNo,
|
|
475
|
+
firstIndex,
|
|
476
|
+
timestamp,
|
|
477
|
+
location,
|
|
478
|
+
];
|
|
479
|
+
}
|
|
480
|
+
export function PartitionedMessage(partNo, partTotal) {
|
|
481
|
+
return [
|
|
482
|
+
82 /* Messages.Type.PartitionedMessage */,
|
|
483
|
+
partNo,
|
|
484
|
+
partTotal,
|
|
485
|
+
];
|
|
486
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type NodeCallback = (node: Node, isStart: boolean) => void;
|
|
2
|
+
export default class Nodes {
|
|
3
|
+
private readonly node_id;
|
|
4
|
+
private nodes;
|
|
5
|
+
private readonly nodeCallbacks;
|
|
6
|
+
private readonly elementListeners;
|
|
7
|
+
constructor(node_id: string);
|
|
8
|
+
attachNodeCallback(nodeCallback: NodeCallback): void;
|
|
9
|
+
attachNodeListener(node: Node, type: string, listener: EventListener, useCapture?: boolean): void;
|
|
10
|
+
registerNode(node: Node): [/*id:*/ number, /*isNew:*/ boolean];
|
|
11
|
+
unregisterNode(node: Node): number | undefined;
|
|
12
|
+
cleanTree(): void;
|
|
13
|
+
callNodeCallbacks(node: Node, isStart: boolean): void;
|
|
14
|
+
getID(node: Node): number | undefined;
|
|
15
|
+
getNode(id: number): void | Node;
|
|
16
|
+
clear(): void;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
package/lib/app/nodes.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export default class Nodes {
|
|
2
|
+
constructor(node_id) {
|
|
3
|
+
this.node_id = node_id;
|
|
4
|
+
this.nodes = [];
|
|
5
|
+
this.nodeCallbacks = [];
|
|
6
|
+
this.elementListeners = new Map();
|
|
7
|
+
}
|
|
8
|
+
// Attached once per Tracker instance
|
|
9
|
+
attachNodeCallback(nodeCallback) {
|
|
10
|
+
this.nodeCallbacks.push(nodeCallback);
|
|
11
|
+
}
|
|
12
|
+
attachNodeListener(node, type, listener, useCapture = true) {
|
|
13
|
+
const id = this.getID(node);
|
|
14
|
+
if (id === undefined) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
node.addEventListener(type, listener, useCapture);
|
|
18
|
+
let listeners = this.elementListeners.get(id);
|
|
19
|
+
if (listeners === undefined) {
|
|
20
|
+
listeners = [];
|
|
21
|
+
this.elementListeners.set(id, listeners);
|
|
22
|
+
}
|
|
23
|
+
listeners.push([type, listener, useCapture]);
|
|
24
|
+
}
|
|
25
|
+
registerNode(node) {
|
|
26
|
+
let id = node[this.node_id];
|
|
27
|
+
const isNew = id === undefined;
|
|
28
|
+
if (isNew) {
|
|
29
|
+
id = this.nodes.length;
|
|
30
|
+
this.nodes[id] = node;
|
|
31
|
+
node[this.node_id] = id;
|
|
32
|
+
}
|
|
33
|
+
return [id, isNew];
|
|
34
|
+
}
|
|
35
|
+
unregisterNode(node) {
|
|
36
|
+
const id = node[this.node_id];
|
|
37
|
+
if (id !== undefined) {
|
|
38
|
+
delete node[this.node_id];
|
|
39
|
+
delete this.nodes[id];
|
|
40
|
+
const listeners = this.elementListeners.get(id);
|
|
41
|
+
if (listeners !== undefined) {
|
|
42
|
+
this.elementListeners.delete(id);
|
|
43
|
+
listeners.forEach((listener) => node.removeEventListener(listener[0], listener[1], listener[2]));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return id;
|
|
47
|
+
}
|
|
48
|
+
cleanTree() {
|
|
49
|
+
// sadly we keep empty items in array here resulting in some memory still being used
|
|
50
|
+
// but its still better than keeping dead nodes or undef elements
|
|
51
|
+
// plus we keep our index positions for new/alive nodes
|
|
52
|
+
// performance test: 3ms for 30k nodes with 17k dead ones
|
|
53
|
+
for (let i = 0; i < this.nodes.length; i++) {
|
|
54
|
+
const node = this.nodes[i];
|
|
55
|
+
if (node && !document.contains(node)) {
|
|
56
|
+
this.unregisterNode(node);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
callNodeCallbacks(node, isStart) {
|
|
61
|
+
this.nodeCallbacks.forEach((cb) => cb(node, isStart));
|
|
62
|
+
}
|
|
63
|
+
getID(node) {
|
|
64
|
+
return node[this.node_id];
|
|
65
|
+
}
|
|
66
|
+
getNode(id) {
|
|
67
|
+
return this.nodes[id];
|
|
68
|
+
}
|
|
69
|
+
clear() {
|
|
70
|
+
for (let id = 0; id < this.nodes.length; id++) {
|
|
71
|
+
const node = this.nodes[id];
|
|
72
|
+
if (node === undefined) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
this.unregisterNode(node);
|
|
76
|
+
}
|
|
77
|
+
this.nodes.length = 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Observer from './observer.js';
|
|
2
|
+
import { CreateIFrameDocument } from '../messages.gen.js';
|
|
3
|
+
export default class IFrameObserver extends Observer {
|
|
4
|
+
observe(iframe) {
|
|
5
|
+
const doc = iframe.contentDocument;
|
|
6
|
+
const hostID = this.app.nodes.getID(iframe);
|
|
7
|
+
if (!doc || hostID === undefined) {
|
|
8
|
+
return;
|
|
9
|
+
} //log TODO common app.logger
|
|
10
|
+
// Have to observe document, because the inner <html> might be changed
|
|
11
|
+
this.observeRoot(doc, (docID) => {
|
|
12
|
+
//MBTODO: do not send if empty (send on load? it might be in-place iframe, like our replayer, which does not get loaded)
|
|
13
|
+
if (docID === undefined) {
|
|
14
|
+
console.log('OpenReplay: Iframe document not bound');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this.app.send(CreateIFrameDocument(hostID, docID));
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Le truc - for defining an absolute offset for (nested) iframe documents. (To track mouse movments)
|
|
2
|
+
export default class IFrameOffsets {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.states = new Map();
|
|
5
|
+
}
|
|
6
|
+
calcOffset(state) {
|
|
7
|
+
let parLeft = 0, parTop = 0;
|
|
8
|
+
if (state.parent) {
|
|
9
|
+
;
|
|
10
|
+
[parLeft, parTop] = this.calcOffset(state.parent);
|
|
11
|
+
}
|
|
12
|
+
if (!state.offset) {
|
|
13
|
+
const { left, top } = state.iFrame.getBoundingClientRect();
|
|
14
|
+
state.offset = [left, top];
|
|
15
|
+
}
|
|
16
|
+
const [left, top] = state.offset;
|
|
17
|
+
return [parLeft + left, parTop + top]; // TODO: store absolute sum, invalidate whole subtree. Otherwise it is summated on each mousemove
|
|
18
|
+
}
|
|
19
|
+
getDocumentOffset(doc) {
|
|
20
|
+
const state = this.states.get(doc);
|
|
21
|
+
if (!state) {
|
|
22
|
+
return [0, 0];
|
|
23
|
+
} // topmost doc
|
|
24
|
+
return this.calcOffset(state);
|
|
25
|
+
}
|
|
26
|
+
observe(iFrame) {
|
|
27
|
+
var _a;
|
|
28
|
+
const doc = iFrame.contentDocument;
|
|
29
|
+
if (!doc) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const parentDoc = iFrame.ownerDocument;
|
|
33
|
+
const parentState = this.states.get(parentDoc);
|
|
34
|
+
const state = {
|
|
35
|
+
offset: null,
|
|
36
|
+
iFrame,
|
|
37
|
+
parent: parentState || null,
|
|
38
|
+
clear: () => {
|
|
39
|
+
var _a;
|
|
40
|
+
parentDoc.removeEventListener('scroll', invalidateOffset);
|
|
41
|
+
(_a = parentDoc.defaultView) === null || _a === void 0 ? void 0 : _a.removeEventListener('resize', invalidateOffset);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const invalidateOffset = () => {
|
|
45
|
+
state.offset = null;
|
|
46
|
+
};
|
|
47
|
+
// anything more reliable? This does not cover all cases (layout changes are ignored, for ex.)
|
|
48
|
+
parentDoc.addEventListener('scroll', invalidateOffset);
|
|
49
|
+
(_a = parentDoc.defaultView) === null || _a === void 0 ? void 0 : _a.addEventListener('resize', invalidateOffset);
|
|
50
|
+
this.states.set(doc, state);
|
|
51
|
+
}
|
|
52
|
+
clear() {
|
|
53
|
+
this.states.forEach((s) => s.clear());
|
|
54
|
+
this.states.clear();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import App from '../index.js';
|
|
2
|
+
export default abstract class Observer {
|
|
3
|
+
protected readonly app: App;
|
|
4
|
+
protected readonly isTopContext: boolean;
|
|
5
|
+
private readonly observer;
|
|
6
|
+
private readonly commited;
|
|
7
|
+
private readonly recents;
|
|
8
|
+
private readonly indexes;
|
|
9
|
+
private readonly attributesMap;
|
|
10
|
+
private readonly textSet;
|
|
11
|
+
constructor(app: App, isTopContext?: boolean);
|
|
12
|
+
private clear;
|
|
13
|
+
private sendNodeAttribute;
|
|
14
|
+
private sendNodeData;
|
|
15
|
+
private bindNode;
|
|
16
|
+
private bindTree;
|
|
17
|
+
private unbindTree;
|
|
18
|
+
private _commitNode;
|
|
19
|
+
private commitNode;
|
|
20
|
+
private commitNodes;
|
|
21
|
+
protected observeRoot(node: Node, beforeCommit: (id?: number) => unknown, nodeToBind?: Node): void;
|
|
22
|
+
disconnect(): void;
|
|
23
|
+
}
|