clarity-decode 0.8.41 → 0.8.42
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/README.md +26 -26
- package/build/clarity.decode.js +752 -752
- package/build/clarity.decode.min.js +1 -1
- package/build/clarity.decode.module.js +752 -752
- package/package.json +65 -65
- package/rollup.config.ts +32 -32
- package/src/clarity.ts +233 -233
- package/src/data.ts +126 -126
- package/src/diagnostic.ts +35 -35
- package/src/global.ts +9 -9
- package/src/index.ts +1 -1
- package/src/interaction.ts +116 -116
- package/src/layout.ts +186 -186
- package/src/performance.ts +30 -30
- package/tsconfig.json +21 -21
- package/tslint.json +32 -32
- package/types/core.d.ts +8 -8
- package/types/data.d.ts +94 -94
- package/types/diagnostic.d.ts +10 -10
- package/types/index.d.ts +10 -10
- package/types/interaction.d.ts +46 -46
- package/types/layout.d.ts +36 -36
- package/types/performance.d.ts +7 -7
package/build/clarity.decode.js
CHANGED
|
@@ -1,769 +1,769 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var version$1 = "0.8.
|
|
3
|
+
var version$1 = "0.8.42";
|
|
4
4
|
var version = version$1;
|
|
5
5
|
|
|
6
|
-
function decode$5(tokens) {
|
|
7
|
-
var time = tokens[0];
|
|
8
|
-
var event = tokens[1];
|
|
9
|
-
switch (event) {
|
|
10
|
-
case 25 /* Data.Event.Ping */:
|
|
11
|
-
var ping = { gap: tokens[2] };
|
|
12
|
-
return { time: time, event: event, data: ping };
|
|
13
|
-
case 35 /* Data.Event.Limit */:
|
|
14
|
-
var limit = { check: tokens[2] };
|
|
15
|
-
return { time: time, event: event, data: limit };
|
|
16
|
-
case 24 /* Data.Event.Custom */:
|
|
17
|
-
var custom = { key: tokens[2], value: tokens[3] };
|
|
18
|
-
return { time: time, event: event, data: custom };
|
|
19
|
-
case 3 /* Data.Event.Upgrade */:
|
|
20
|
-
var upgrade = { key: tokens[2] };
|
|
21
|
-
return { time: time, event: event, data: upgrade };
|
|
22
|
-
case 2 /* Data.Event.Upload */:
|
|
23
|
-
var upload = { sequence: tokens[2], attempts: tokens[3], status: tokens[4] };
|
|
24
|
-
return { time: time, event: event, data: upload };
|
|
25
|
-
case 0 /* Data.Event.Metric */:
|
|
26
|
-
var m = 2; // Start from 3rd index since first two are used for time & event
|
|
27
|
-
var metrics = {};
|
|
28
|
-
while (m < tokens.length) {
|
|
29
|
-
metrics[tokens[m++]] = tokens[m++];
|
|
30
|
-
}
|
|
31
|
-
return { time: time, event: event, data: metrics };
|
|
32
|
-
case 1 /* Data.Event.Dimension */:
|
|
33
|
-
var d = 2; // Start from 3rd index since first two are used for time & event
|
|
34
|
-
var dimensions = {};
|
|
35
|
-
while (d < tokens.length) {
|
|
36
|
-
dimensions[tokens[d++]] = tokens[d++];
|
|
37
|
-
}
|
|
38
|
-
return { time: time, event: event, data: dimensions };
|
|
39
|
-
case 36 /* Data.Event.Summary */:
|
|
40
|
-
var s = 2; // Start from 3rd index since first two are used for time & event
|
|
41
|
-
var summary = {};
|
|
42
|
-
while (s < tokens.length) {
|
|
43
|
-
var key = tokens[s++];
|
|
44
|
-
var values = tokens[s++];
|
|
45
|
-
summary[key] = [];
|
|
46
|
-
for (var i = 0; i < values.length - 1; i += 2) {
|
|
47
|
-
summary[key].push([values[i], values[i + 1]]);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return { time: time, event: event, data: summary };
|
|
51
|
-
case 4 /* Data.Event.Baseline */:
|
|
52
|
-
var tokenLength = tokens.length;
|
|
53
|
-
var baselineData = {
|
|
54
|
-
visible: tokens[2],
|
|
55
|
-
docWidth: tokens[3],
|
|
56
|
-
docHeight: tokens[4],
|
|
57
|
-
screenWidth: tokens[5],
|
|
58
|
-
screenHeight: tokens[6],
|
|
59
|
-
scrollX: tokens[7],
|
|
60
|
-
scrollY: tokens[8],
|
|
61
|
-
pointerX: tokens[9],
|
|
62
|
-
pointerY: tokens[10],
|
|
63
|
-
activityTime: tokens[11],
|
|
64
|
-
scrollTime: tokenLength > 12 ? tokens[12] : null,
|
|
65
|
-
pointerTime: tokenLength > 13 ? tokens[13] : null,
|
|
66
|
-
moveX: tokenLength > 14 ? tokens[14] : null,
|
|
67
|
-
moveY: tokenLength > 15 ? tokens[15] : null,
|
|
68
|
-
moveTime: tokenLength > 16 ? tokens[16] : null,
|
|
69
|
-
downX: tokenLength > 17 ? tokens[17] : null,
|
|
70
|
-
downY: tokenLength > 18 ? tokens[18] : null,
|
|
71
|
-
downTime: tokenLength > 19 ? tokens[19] : null,
|
|
72
|
-
upX: tokenLength > 20 ? tokens[20] : null,
|
|
73
|
-
upY: tokenLength > 21 ? tokens[21] : null,
|
|
74
|
-
upTime: tokenLength > 22 ? tokens[22] : null,
|
|
75
|
-
pointerPrevX: tokenLength > 23 ? tokens[23] : null,
|
|
76
|
-
pointerPrevY: tokenLength > 24 ? tokens[24] : null,
|
|
77
|
-
pointerPrevTime: tokenLength > 25 ? tokens[25] : null,
|
|
78
|
-
modules: tokenLength > 26 ? tokens[26] : null,
|
|
79
|
-
};
|
|
80
|
-
return { time: time, event: event, data: baselineData };
|
|
81
|
-
case 34 /* Data.Event.Variable */:
|
|
82
|
-
var v = 2; // Start from 3rd index since first two are used for time & event
|
|
83
|
-
var variables = {};
|
|
84
|
-
while (v < tokens.length) {
|
|
85
|
-
variables[tokens[v++]] = typeof tokens[v + 1] == "string" /* Constant.String */ ? [tokens[v++]] : tokens[v++];
|
|
86
|
-
}
|
|
87
|
-
return { time: time, event: event, data: variables };
|
|
88
|
-
case 40 /* Data.Event.Extract */:
|
|
89
|
-
var e = 2; // Start from 3rd index since first two are used for time & event
|
|
90
|
-
var extract = {};
|
|
91
|
-
while (e < tokens.length) {
|
|
92
|
-
// For backward compatibility from version 0.7.4
|
|
93
|
-
if (typeof (tokens[e + 1]) == "string" /* Constant.String */) {
|
|
94
|
-
extract[tokens[e++]] = tokens[e++];
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
var key = tokens[e++];
|
|
98
|
-
var values = tokens[e++];
|
|
99
|
-
extract[key] = [];
|
|
100
|
-
for (var i = 0; i < values.length - 1; i += 2) {
|
|
101
|
-
extract[key][values[i]] = values[i + 1];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return { time: time, event: event, data: extract };
|
|
106
|
-
case 47 /* Data.Event.Consent */:
|
|
107
|
-
var consent = { source: tokens[2], ad_Storage: tokens[3], analytics_Storage: tokens[4] };
|
|
108
|
-
return { time: time, event: event, data: consent };
|
|
109
|
-
}
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
function envelope(tokens) {
|
|
113
|
-
return {
|
|
114
|
-
version: tokens[0],
|
|
115
|
-
sequence: tokens[1],
|
|
116
|
-
start: tokens[2],
|
|
117
|
-
duration: tokens[3],
|
|
118
|
-
projectId: tokens[4],
|
|
119
|
-
userId: tokens[5],
|
|
120
|
-
sessionId: tokens[6],
|
|
121
|
-
pageNum: tokens[7],
|
|
122
|
-
upload: tokens[8],
|
|
123
|
-
end: tokens[9],
|
|
124
|
-
applicationPlatform: tokens[10],
|
|
125
|
-
url: tokens[11]
|
|
126
|
-
};
|
|
6
|
+
function decode$5(tokens) {
|
|
7
|
+
var time = tokens[0];
|
|
8
|
+
var event = tokens[1];
|
|
9
|
+
switch (event) {
|
|
10
|
+
case 25 /* Data.Event.Ping */:
|
|
11
|
+
var ping = { gap: tokens[2] };
|
|
12
|
+
return { time: time, event: event, data: ping };
|
|
13
|
+
case 35 /* Data.Event.Limit */:
|
|
14
|
+
var limit = { check: tokens[2] };
|
|
15
|
+
return { time: time, event: event, data: limit };
|
|
16
|
+
case 24 /* Data.Event.Custom */:
|
|
17
|
+
var custom = { key: tokens[2], value: tokens[3] };
|
|
18
|
+
return { time: time, event: event, data: custom };
|
|
19
|
+
case 3 /* Data.Event.Upgrade */:
|
|
20
|
+
var upgrade = { key: tokens[2] };
|
|
21
|
+
return { time: time, event: event, data: upgrade };
|
|
22
|
+
case 2 /* Data.Event.Upload */:
|
|
23
|
+
var upload = { sequence: tokens[2], attempts: tokens[3], status: tokens[4] };
|
|
24
|
+
return { time: time, event: event, data: upload };
|
|
25
|
+
case 0 /* Data.Event.Metric */:
|
|
26
|
+
var m = 2; // Start from 3rd index since first two are used for time & event
|
|
27
|
+
var metrics = {};
|
|
28
|
+
while (m < tokens.length) {
|
|
29
|
+
metrics[tokens[m++]] = tokens[m++];
|
|
30
|
+
}
|
|
31
|
+
return { time: time, event: event, data: metrics };
|
|
32
|
+
case 1 /* Data.Event.Dimension */:
|
|
33
|
+
var d = 2; // Start from 3rd index since first two are used for time & event
|
|
34
|
+
var dimensions = {};
|
|
35
|
+
while (d < tokens.length) {
|
|
36
|
+
dimensions[tokens[d++]] = tokens[d++];
|
|
37
|
+
}
|
|
38
|
+
return { time: time, event: event, data: dimensions };
|
|
39
|
+
case 36 /* Data.Event.Summary */:
|
|
40
|
+
var s = 2; // Start from 3rd index since first two are used for time & event
|
|
41
|
+
var summary = {};
|
|
42
|
+
while (s < tokens.length) {
|
|
43
|
+
var key = tokens[s++];
|
|
44
|
+
var values = tokens[s++];
|
|
45
|
+
summary[key] = [];
|
|
46
|
+
for (var i = 0; i < values.length - 1; i += 2) {
|
|
47
|
+
summary[key].push([values[i], values[i + 1]]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { time: time, event: event, data: summary };
|
|
51
|
+
case 4 /* Data.Event.Baseline */:
|
|
52
|
+
var tokenLength = tokens.length;
|
|
53
|
+
var baselineData = {
|
|
54
|
+
visible: tokens[2],
|
|
55
|
+
docWidth: tokens[3],
|
|
56
|
+
docHeight: tokens[4],
|
|
57
|
+
screenWidth: tokens[5],
|
|
58
|
+
screenHeight: tokens[6],
|
|
59
|
+
scrollX: tokens[7],
|
|
60
|
+
scrollY: tokens[8],
|
|
61
|
+
pointerX: tokens[9],
|
|
62
|
+
pointerY: tokens[10],
|
|
63
|
+
activityTime: tokens[11],
|
|
64
|
+
scrollTime: tokenLength > 12 ? tokens[12] : null,
|
|
65
|
+
pointerTime: tokenLength > 13 ? tokens[13] : null,
|
|
66
|
+
moveX: tokenLength > 14 ? tokens[14] : null,
|
|
67
|
+
moveY: tokenLength > 15 ? tokens[15] : null,
|
|
68
|
+
moveTime: tokenLength > 16 ? tokens[16] : null,
|
|
69
|
+
downX: tokenLength > 17 ? tokens[17] : null,
|
|
70
|
+
downY: tokenLength > 18 ? tokens[18] : null,
|
|
71
|
+
downTime: tokenLength > 19 ? tokens[19] : null,
|
|
72
|
+
upX: tokenLength > 20 ? tokens[20] : null,
|
|
73
|
+
upY: tokenLength > 21 ? tokens[21] : null,
|
|
74
|
+
upTime: tokenLength > 22 ? tokens[22] : null,
|
|
75
|
+
pointerPrevX: tokenLength > 23 ? tokens[23] : null,
|
|
76
|
+
pointerPrevY: tokenLength > 24 ? tokens[24] : null,
|
|
77
|
+
pointerPrevTime: tokenLength > 25 ? tokens[25] : null,
|
|
78
|
+
modules: tokenLength > 26 ? tokens[26] : null,
|
|
79
|
+
};
|
|
80
|
+
return { time: time, event: event, data: baselineData };
|
|
81
|
+
case 34 /* Data.Event.Variable */:
|
|
82
|
+
var v = 2; // Start from 3rd index since first two are used for time & event
|
|
83
|
+
var variables = {};
|
|
84
|
+
while (v < tokens.length) {
|
|
85
|
+
variables[tokens[v++]] = typeof tokens[v + 1] == "string" /* Constant.String */ ? [tokens[v++]] : tokens[v++];
|
|
86
|
+
}
|
|
87
|
+
return { time: time, event: event, data: variables };
|
|
88
|
+
case 40 /* Data.Event.Extract */:
|
|
89
|
+
var e = 2; // Start from 3rd index since first two are used for time & event
|
|
90
|
+
var extract = {};
|
|
91
|
+
while (e < tokens.length) {
|
|
92
|
+
// For backward compatibility from version 0.7.4
|
|
93
|
+
if (typeof (tokens[e + 1]) == "string" /* Constant.String */) {
|
|
94
|
+
extract[tokens[e++]] = tokens[e++];
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
var key = tokens[e++];
|
|
98
|
+
var values = tokens[e++];
|
|
99
|
+
extract[key] = [];
|
|
100
|
+
for (var i = 0; i < values.length - 1; i += 2) {
|
|
101
|
+
extract[key][values[i]] = values[i + 1];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { time: time, event: event, data: extract };
|
|
106
|
+
case 47 /* Data.Event.Consent */:
|
|
107
|
+
var consent = { source: tokens[2], ad_Storage: tokens[3], analytics_Storage: tokens[4] };
|
|
108
|
+
return { time: time, event: event, data: consent };
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
function envelope(tokens) {
|
|
113
|
+
return {
|
|
114
|
+
version: tokens[0],
|
|
115
|
+
sequence: tokens[1],
|
|
116
|
+
start: tokens[2],
|
|
117
|
+
duration: tokens[3],
|
|
118
|
+
projectId: tokens[4],
|
|
119
|
+
userId: tokens[5],
|
|
120
|
+
sessionId: tokens[6],
|
|
121
|
+
pageNum: tokens[7],
|
|
122
|
+
upload: tokens[8],
|
|
123
|
+
end: tokens[9],
|
|
124
|
+
applicationPlatform: tokens[10],
|
|
125
|
+
url: tokens[11]
|
|
126
|
+
};
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
function decode$4(tokens) {
|
|
130
|
-
var time = tokens[0];
|
|
131
|
-
var event = tokens[1];
|
|
132
|
-
switch (event) {
|
|
133
|
-
case 31 /* Data.Event.ScriptError */:
|
|
134
|
-
var scriptError = {
|
|
135
|
-
message: tokens[2],
|
|
136
|
-
line: tokens[3],
|
|
137
|
-
column: tokens[4],
|
|
138
|
-
stack: tokens[5],
|
|
139
|
-
source: tokens[6]
|
|
140
|
-
};
|
|
141
|
-
return { time: time, event: event, data: scriptError };
|
|
142
|
-
case 33 /* Data.Event.Log */:
|
|
143
|
-
var log = {
|
|
144
|
-
code: tokens[2],
|
|
145
|
-
name: tokens[3],
|
|
146
|
-
message: tokens[4],
|
|
147
|
-
stack: tokens[5],
|
|
148
|
-
severity: tokens[6]
|
|
149
|
-
};
|
|
150
|
-
return { time: time, event: event, data: log };
|
|
151
|
-
case 41 /* Data.Event.Fraud */:
|
|
152
|
-
var fraud = {
|
|
153
|
-
id: tokens[2],
|
|
154
|
-
target: tokens[3],
|
|
155
|
-
checksum: tokens[4]
|
|
156
|
-
};
|
|
157
|
-
return { time: time, event: event, data: fraud };
|
|
158
|
-
}
|
|
159
|
-
return null;
|
|
129
|
+
function decode$4(tokens) {
|
|
130
|
+
var time = tokens[0];
|
|
131
|
+
var event = tokens[1];
|
|
132
|
+
switch (event) {
|
|
133
|
+
case 31 /* Data.Event.ScriptError */:
|
|
134
|
+
var scriptError = {
|
|
135
|
+
message: tokens[2],
|
|
136
|
+
line: tokens[3],
|
|
137
|
+
column: tokens[4],
|
|
138
|
+
stack: tokens[5],
|
|
139
|
+
source: tokens[6]
|
|
140
|
+
};
|
|
141
|
+
return { time: time, event: event, data: scriptError };
|
|
142
|
+
case 33 /* Data.Event.Log */:
|
|
143
|
+
var log = {
|
|
144
|
+
code: tokens[2],
|
|
145
|
+
name: tokens[3],
|
|
146
|
+
message: tokens[4],
|
|
147
|
+
stack: tokens[5],
|
|
148
|
+
severity: tokens[6]
|
|
149
|
+
};
|
|
150
|
+
return { time: time, event: event, data: log };
|
|
151
|
+
case 41 /* Data.Event.Fraud */:
|
|
152
|
+
var fraud = {
|
|
153
|
+
id: tokens[2],
|
|
154
|
+
target: tokens[3],
|
|
155
|
+
checksum: tokens[4]
|
|
156
|
+
};
|
|
157
|
+
return { time: time, event: event, data: fraud };
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
function decode$3(tokens) {
|
|
163
|
-
var time = tokens[0];
|
|
164
|
-
var event = tokens[1];
|
|
165
|
-
switch (event) {
|
|
166
|
-
case 13 /* Data.Event.MouseDown */:
|
|
167
|
-
case 14 /* Data.Event.MouseUp */:
|
|
168
|
-
case 12 /* Data.Event.MouseMove */:
|
|
169
|
-
case 15 /* Data.Event.MouseWheel */:
|
|
170
|
-
case 16 /* Data.Event.DoubleClick */:
|
|
171
|
-
case 17 /* Data.Event.TouchStart */:
|
|
172
|
-
case 20 /* Data.Event.TouchCancel */:
|
|
173
|
-
case 18 /* Data.Event.TouchEnd */:
|
|
174
|
-
case 19 /* Data.Event.TouchMove */:
|
|
175
|
-
var pointerData = {
|
|
176
|
-
target: tokens[2],
|
|
177
|
-
x: tokens[3],
|
|
178
|
-
y: tokens[4],
|
|
179
|
-
id: tokens[5],
|
|
180
|
-
};
|
|
181
|
-
return { time: time, event: event, data: pointerData };
|
|
182
|
-
case 9 /* Data.Event.Click */:
|
|
183
|
-
case 48 /* Data.Event.ContextMenu */:
|
|
184
|
-
var clickHashes = tokens[12].split("." /* Data.Constant.Dot */);
|
|
185
|
-
var clickData = {
|
|
186
|
-
target: tokens[2],
|
|
187
|
-
x: tokens[3],
|
|
188
|
-
y: tokens[4],
|
|
189
|
-
eX: tokens[5],
|
|
190
|
-
eY: tokens[6],
|
|
191
|
-
button: tokens[7],
|
|
192
|
-
reaction: tokens[8],
|
|
193
|
-
context: tokens[9],
|
|
194
|
-
text: tokens[10],
|
|
195
|
-
link: tokens[11],
|
|
196
|
-
hash: clickHashes[0],
|
|
197
|
-
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null,
|
|
198
|
-
trust: tokens.length > 13 ? tokens[13] : 1 /* Data.BooleanFlag.True */,
|
|
199
|
-
isFullText: tokens.length > 14 ? tokens[14] : null,
|
|
200
|
-
w: tokens.length > 15 ? tokens[15] : 0,
|
|
201
|
-
h: tokens.length > 16 ? tokens[16] : 0,
|
|
202
|
-
tag: tokens.length > 17 ? tokens[17] : null,
|
|
203
|
-
class: tokens.length > 18 ? tokens[18] : null,
|
|
204
|
-
id: tokens.length > 19 ? tokens[19] : null,
|
|
205
|
-
};
|
|
206
|
-
return { time: time, event: event, data: clickData };
|
|
207
|
-
case 38 /* Data.Event.Clipboard */:
|
|
208
|
-
var clipData = { target: tokens[2], action: tokens[3] };
|
|
209
|
-
return { time: time, event: event, data: clipData };
|
|
210
|
-
case 11 /* Data.Event.Resize */:
|
|
211
|
-
var resizeData = { width: tokens[2], height: tokens[3] };
|
|
212
|
-
return { time: time, event: event, data: resizeData };
|
|
213
|
-
case 27 /* Data.Event.Input */:
|
|
214
|
-
var inputData = { target: tokens[2], value: tokens[3], trust: tokens.length > 4 ? tokens[4] : 1 /* Data.BooleanFlag.True */ };
|
|
215
|
-
return { time: time, event: event, data: inputData };
|
|
216
|
-
case 21 /* Data.Event.Selection */:
|
|
217
|
-
var selectionData = {
|
|
218
|
-
start: tokens[2],
|
|
219
|
-
startOffset: tokens[3],
|
|
220
|
-
end: tokens[4],
|
|
221
|
-
endOffset: tokens[5]
|
|
222
|
-
};
|
|
223
|
-
return { time: time, event: event, data: selectionData };
|
|
224
|
-
case 42 /* Data.Event.Change */:
|
|
225
|
-
var changeData = {
|
|
226
|
-
target: tokens[2],
|
|
227
|
-
type: tokens[3],
|
|
228
|
-
value: tokens[4],
|
|
229
|
-
checksum: tokens[5]
|
|
230
|
-
};
|
|
231
|
-
return { time: time, event: event, data: changeData };
|
|
232
|
-
case 39 /* Data.Event.Submit */:
|
|
233
|
-
var submitData = {
|
|
234
|
-
target: tokens[2]
|
|
235
|
-
};
|
|
236
|
-
return { time: time, event: event, data: submitData };
|
|
237
|
-
case 10 /* Data.Event.Scroll */:
|
|
238
|
-
var scrollData = {
|
|
239
|
-
target: tokens[2],
|
|
240
|
-
x: tokens[3],
|
|
241
|
-
y: tokens[4],
|
|
242
|
-
top: tokens.length > 5 ? tokens[5] : null,
|
|
243
|
-
bottom: tokens.length > 6 ? tokens[6] : null
|
|
244
|
-
};
|
|
245
|
-
return { time: time, event: event, data: scrollData };
|
|
246
|
-
case 22 /* Data.Event.Timeline */:
|
|
247
|
-
var timelineHashes = tokens[3].split("." /* Data.Constant.Dot */);
|
|
248
|
-
var timelineData = {
|
|
249
|
-
type: tokens[2],
|
|
250
|
-
hash: timelineHashes[0 /* Layout.Selector.Alpha */],
|
|
251
|
-
x: tokens[4],
|
|
252
|
-
y: tokens[5],
|
|
253
|
-
reaction: tokens[6],
|
|
254
|
-
context: tokens[7],
|
|
255
|
-
hashBeta: timelineHashes.length > 0 ? timelineHashes[1 /* Layout.Selector.Beta */] : null
|
|
256
|
-
};
|
|
257
|
-
return { time: time, event: event, data: timelineData };
|
|
258
|
-
case 28 /* Data.Event.Visibility */:
|
|
259
|
-
var visibleData = void 0;
|
|
260
|
-
if (typeof tokens[2] === "number") {
|
|
261
|
-
visibleData = { visible: tokens[2] };
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
visibleData = { visible: tokens[2] === "visible" ? 1 /* Data.BooleanFlag.True */ : 0 /* Data.BooleanFlag.False */ };
|
|
265
|
-
}
|
|
266
|
-
return { time: time, event: event, data: visibleData };
|
|
267
|
-
case 50 /* Data.Event.Focus */:
|
|
268
|
-
var focusData = { focused: tokens[2] };
|
|
269
|
-
return { time: time, event: event, data: focusData };
|
|
270
|
-
case 26 /* Data.Event.Unload */:
|
|
271
|
-
var unloadData = { name: tokens[2], persisted: tokens[3] };
|
|
272
|
-
return { time: time, event: event, data: unloadData };
|
|
273
|
-
}
|
|
274
|
-
return null;
|
|
162
|
+
function decode$3(tokens) {
|
|
163
|
+
var time = tokens[0];
|
|
164
|
+
var event = tokens[1];
|
|
165
|
+
switch (event) {
|
|
166
|
+
case 13 /* Data.Event.MouseDown */:
|
|
167
|
+
case 14 /* Data.Event.MouseUp */:
|
|
168
|
+
case 12 /* Data.Event.MouseMove */:
|
|
169
|
+
case 15 /* Data.Event.MouseWheel */:
|
|
170
|
+
case 16 /* Data.Event.DoubleClick */:
|
|
171
|
+
case 17 /* Data.Event.TouchStart */:
|
|
172
|
+
case 20 /* Data.Event.TouchCancel */:
|
|
173
|
+
case 18 /* Data.Event.TouchEnd */:
|
|
174
|
+
case 19 /* Data.Event.TouchMove */:
|
|
175
|
+
var pointerData = {
|
|
176
|
+
target: tokens[2],
|
|
177
|
+
x: tokens[3],
|
|
178
|
+
y: tokens[4],
|
|
179
|
+
id: tokens[5],
|
|
180
|
+
};
|
|
181
|
+
return { time: time, event: event, data: pointerData };
|
|
182
|
+
case 9 /* Data.Event.Click */:
|
|
183
|
+
case 48 /* Data.Event.ContextMenu */:
|
|
184
|
+
var clickHashes = tokens[12].split("." /* Data.Constant.Dot */);
|
|
185
|
+
var clickData = {
|
|
186
|
+
target: tokens[2],
|
|
187
|
+
x: tokens[3],
|
|
188
|
+
y: tokens[4],
|
|
189
|
+
eX: tokens[5],
|
|
190
|
+
eY: tokens[6],
|
|
191
|
+
button: tokens[7],
|
|
192
|
+
reaction: tokens[8],
|
|
193
|
+
context: tokens[9],
|
|
194
|
+
text: tokens[10],
|
|
195
|
+
link: tokens[11],
|
|
196
|
+
hash: clickHashes[0],
|
|
197
|
+
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null,
|
|
198
|
+
trust: tokens.length > 13 ? tokens[13] : 1 /* Data.BooleanFlag.True */,
|
|
199
|
+
isFullText: tokens.length > 14 ? tokens[14] : null,
|
|
200
|
+
w: tokens.length > 15 ? tokens[15] : 0,
|
|
201
|
+
h: tokens.length > 16 ? tokens[16] : 0,
|
|
202
|
+
tag: tokens.length > 17 ? tokens[17] : null,
|
|
203
|
+
class: tokens.length > 18 ? tokens[18] : null,
|
|
204
|
+
id: tokens.length > 19 ? tokens[19] : null,
|
|
205
|
+
};
|
|
206
|
+
return { time: time, event: event, data: clickData };
|
|
207
|
+
case 38 /* Data.Event.Clipboard */:
|
|
208
|
+
var clipData = { target: tokens[2], action: tokens[3] };
|
|
209
|
+
return { time: time, event: event, data: clipData };
|
|
210
|
+
case 11 /* Data.Event.Resize */:
|
|
211
|
+
var resizeData = { width: tokens[2], height: tokens[3] };
|
|
212
|
+
return { time: time, event: event, data: resizeData };
|
|
213
|
+
case 27 /* Data.Event.Input */:
|
|
214
|
+
var inputData = { target: tokens[2], value: tokens[3], trust: tokens.length > 4 ? tokens[4] : 1 /* Data.BooleanFlag.True */ };
|
|
215
|
+
return { time: time, event: event, data: inputData };
|
|
216
|
+
case 21 /* Data.Event.Selection */:
|
|
217
|
+
var selectionData = {
|
|
218
|
+
start: tokens[2],
|
|
219
|
+
startOffset: tokens[3],
|
|
220
|
+
end: tokens[4],
|
|
221
|
+
endOffset: tokens[5]
|
|
222
|
+
};
|
|
223
|
+
return { time: time, event: event, data: selectionData };
|
|
224
|
+
case 42 /* Data.Event.Change */:
|
|
225
|
+
var changeData = {
|
|
226
|
+
target: tokens[2],
|
|
227
|
+
type: tokens[3],
|
|
228
|
+
value: tokens[4],
|
|
229
|
+
checksum: tokens[5]
|
|
230
|
+
};
|
|
231
|
+
return { time: time, event: event, data: changeData };
|
|
232
|
+
case 39 /* Data.Event.Submit */:
|
|
233
|
+
var submitData = {
|
|
234
|
+
target: tokens[2]
|
|
235
|
+
};
|
|
236
|
+
return { time: time, event: event, data: submitData };
|
|
237
|
+
case 10 /* Data.Event.Scroll */:
|
|
238
|
+
var scrollData = {
|
|
239
|
+
target: tokens[2],
|
|
240
|
+
x: tokens[3],
|
|
241
|
+
y: tokens[4],
|
|
242
|
+
top: tokens.length > 5 ? tokens[5] : null,
|
|
243
|
+
bottom: tokens.length > 6 ? tokens[6] : null
|
|
244
|
+
};
|
|
245
|
+
return { time: time, event: event, data: scrollData };
|
|
246
|
+
case 22 /* Data.Event.Timeline */:
|
|
247
|
+
var timelineHashes = tokens[3].split("." /* Data.Constant.Dot */);
|
|
248
|
+
var timelineData = {
|
|
249
|
+
type: tokens[2],
|
|
250
|
+
hash: timelineHashes[0 /* Layout.Selector.Alpha */],
|
|
251
|
+
x: tokens[4],
|
|
252
|
+
y: tokens[5],
|
|
253
|
+
reaction: tokens[6],
|
|
254
|
+
context: tokens[7],
|
|
255
|
+
hashBeta: timelineHashes.length > 0 ? timelineHashes[1 /* Layout.Selector.Beta */] : null
|
|
256
|
+
};
|
|
257
|
+
return { time: time, event: event, data: timelineData };
|
|
258
|
+
case 28 /* Data.Event.Visibility */:
|
|
259
|
+
var visibleData = void 0;
|
|
260
|
+
if (typeof tokens[2] === "number") {
|
|
261
|
+
visibleData = { visible: tokens[2] };
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
visibleData = { visible: tokens[2] === "visible" ? 1 /* Data.BooleanFlag.True */ : 0 /* Data.BooleanFlag.False */ };
|
|
265
|
+
}
|
|
266
|
+
return { time: time, event: event, data: visibleData };
|
|
267
|
+
case 50 /* Data.Event.Focus */:
|
|
268
|
+
var focusData = { focused: tokens[2] };
|
|
269
|
+
return { time: time, event: event, data: focusData };
|
|
270
|
+
case 26 /* Data.Event.Unload */:
|
|
271
|
+
var unloadData = { name: tokens[2], persisted: tokens[3] };
|
|
272
|
+
return { time: time, event: event, data: unloadData };
|
|
273
|
+
}
|
|
274
|
+
return null;
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
-
var AverageWordLength = 6;
|
|
278
|
-
var Space = " ";
|
|
279
|
-
function decode$2(tokens) {
|
|
280
|
-
var time = tokens[0];
|
|
281
|
-
var event = tokens[1];
|
|
282
|
-
switch (event) {
|
|
283
|
-
case 8 /* Data.Event.Document */:
|
|
284
|
-
var documentData = { width: tokens[2], height: tokens[3] };
|
|
285
|
-
return { time: time, event: event, data: documentData };
|
|
286
|
-
case 7 /* Data.Event.Region */:
|
|
287
|
-
var regionData = [];
|
|
288
|
-
// From 0.6.15 we send each reach update in an individual event. This allows us to include time with it.
|
|
289
|
-
// To keep it backward compatible (<= 0.6.14), we look for multiple regions in the same event. This works both with newer and older payloads.
|
|
290
|
-
// In future, we can update the logic to look deterministically for only 3 fields and remove the for loop.
|
|
291
|
-
var increment = void 0;
|
|
292
|
-
for (var i = 2; i < tokens.length; i += increment) {
|
|
293
|
-
var region = void 0;
|
|
294
|
-
if (typeof (tokens[i + 2]) == "number" /* Constant.Number */) {
|
|
295
|
-
region = {
|
|
296
|
-
id: tokens[i],
|
|
297
|
-
interaction: tokens[i + 1],
|
|
298
|
-
visibility: tokens[i + 2],
|
|
299
|
-
name: tokens[i + 3]
|
|
300
|
-
};
|
|
301
|
-
increment = 4;
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
var state = tokens[i + 1];
|
|
305
|
-
region = {
|
|
306
|
-
id: tokens[i],
|
|
307
|
-
// For backward compatibility before 0.6.24 - where region states were sent as a single enum
|
|
308
|
-
// we convert the value into the two states tracked after 0.6.24
|
|
309
|
-
interaction: state >= 16 /* Interaction.None */ ? state : 16 /* Interaction.None */,
|
|
310
|
-
visibility: state <= 13 /* RegionVisibility.ScrolledToEnd */ ? state : 0 /* RegionVisibility.Rendered */,
|
|
311
|
-
name: tokens[i + 2]
|
|
312
|
-
};
|
|
313
|
-
increment = 3;
|
|
314
|
-
}
|
|
315
|
-
regionData.push(region);
|
|
316
|
-
}
|
|
317
|
-
return { time: time, event: event, data: regionData };
|
|
318
|
-
case 45 /* Data.Event.StyleSheetAdoption */:
|
|
319
|
-
var styleSheetAdoptionData = {
|
|
320
|
-
id: tokens[2],
|
|
321
|
-
operation: tokens[3],
|
|
322
|
-
newIds: tokens[4]
|
|
323
|
-
};
|
|
324
|
-
return { time: time, event: event, data: styleSheetAdoptionData };
|
|
325
|
-
case 46 /* Data.Event.StyleSheetUpdate */:
|
|
326
|
-
var styleSheetUpdateData = {
|
|
327
|
-
id: tokens[2],
|
|
328
|
-
operation: tokens[3],
|
|
329
|
-
cssRules: tokens[4]
|
|
330
|
-
};
|
|
331
|
-
return { time: time, event: event, data: styleSheetUpdateData };
|
|
332
|
-
case 44 /* Data.Event.Animation */:
|
|
333
|
-
var animationData = {
|
|
334
|
-
id: tokens[2],
|
|
335
|
-
operation: tokens[3],
|
|
336
|
-
keyFrames: tokens[4],
|
|
337
|
-
timing: tokens[5],
|
|
338
|
-
timeline: tokens[6],
|
|
339
|
-
targetId: tokens[7]
|
|
340
|
-
};
|
|
341
|
-
return { time: time, event: event, data: animationData };
|
|
342
|
-
case 5 /* Data.Event.Discover */:
|
|
343
|
-
case 6 /* Data.Event.Mutation */:
|
|
344
|
-
case 43 /* Data.Event.Snapshot */:
|
|
345
|
-
var lastType = null;
|
|
346
|
-
var node = [];
|
|
347
|
-
var tagIndex = 0;
|
|
348
|
-
var domData = [];
|
|
349
|
-
for (var i = 2; i < tokens.length; i++) {
|
|
350
|
-
var token = tokens[i];
|
|
351
|
-
var type = typeof (token);
|
|
352
|
-
switch (type) {
|
|
353
|
-
case "number":
|
|
354
|
-
if (type !== lastType && lastType !== null) {
|
|
355
|
-
domData.push(process(node, tagIndex));
|
|
356
|
-
node = [];
|
|
357
|
-
tagIndex = 0;
|
|
358
|
-
}
|
|
359
|
-
node.push(token);
|
|
360
|
-
tagIndex++;
|
|
361
|
-
break;
|
|
362
|
-
case "string":
|
|
363
|
-
node.push(token);
|
|
364
|
-
break;
|
|
365
|
-
case "object":
|
|
366
|
-
var subtoken = token[0];
|
|
367
|
-
var subtype = typeof (subtoken);
|
|
368
|
-
switch (subtype) {
|
|
369
|
-
case "number":
|
|
370
|
-
for (var _i = 0, _a = token; _i < _a.length; _i++) {
|
|
371
|
-
var t = _a[_i];
|
|
372
|
-
node.push(tokens.length > t ? tokens[t] : null);
|
|
373
|
-
}
|
|
374
|
-
break;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
lastType = type;
|
|
378
|
-
}
|
|
379
|
-
// Process last node
|
|
380
|
-
domData.push(process(node, tagIndex));
|
|
381
|
-
return { time: time, event: event, data: domData };
|
|
382
|
-
case 51 /* Data.Event.CustomElement */:
|
|
383
|
-
var customElement = { name: tokens[2] };
|
|
384
|
-
return { time: time, event: event, data: customElement };
|
|
385
|
-
}
|
|
386
|
-
return null;
|
|
387
|
-
}
|
|
388
|
-
function process(node, tagIndex) {
|
|
389
|
-
// For backward compatibility, only extract the tag even if position is available as part of the tag name
|
|
390
|
-
// And, continue computing position in the visualization library from decoded payload.
|
|
391
|
-
var tag = node[tagIndex] ? node[tagIndex].split("~")[0] : node[tagIndex];
|
|
392
|
-
var output = {
|
|
393
|
-
id: Math.abs(node[0]),
|
|
394
|
-
parent: tagIndex > 1 ? node[1] : null,
|
|
395
|
-
previous: tagIndex > 2 ? node[2] : null,
|
|
396
|
-
tag: tag
|
|
397
|
-
};
|
|
398
|
-
var masked = node[0] < 0;
|
|
399
|
-
var hasAttribute = false;
|
|
400
|
-
var attributes = {};
|
|
401
|
-
var value = null;
|
|
402
|
-
for (var i = tagIndex + 1; i < node.length; i++) {
|
|
403
|
-
// Explicitly convert the token into a string value
|
|
404
|
-
var token = node[i].toString();
|
|
405
|
-
var keyIndex = token.indexOf("=");
|
|
406
|
-
var firstChar = token[0];
|
|
407
|
-
var lastChar = token[token.length - 1];
|
|
408
|
-
if (i === (node.length - 1) && output.tag === "STYLE") {
|
|
409
|
-
value = token;
|
|
410
|
-
}
|
|
411
|
-
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && lastChar === ">" && keyIndex === -1) ;
|
|
412
|
-
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && firstChar === "#" /* Layout.Constant.Hash */ && keyIndex === -1) {
|
|
413
|
-
var parts = token.substr(1).split("." /* Layout.Constant.Period */);
|
|
414
|
-
if (parts.length === 2) {
|
|
415
|
-
output.width = num(parts[0]) / 100 /* Data.Setting.BoxPrecision */;
|
|
416
|
-
output.height = num(parts[1]) / 100 /* Data.Setting.BoxPrecision */;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && keyIndex > 0) {
|
|
420
|
-
hasAttribute = true;
|
|
421
|
-
var k = token.substr(0, keyIndex);
|
|
422
|
-
var v = token.substr(keyIndex + 1);
|
|
423
|
-
attributes[k] = v;
|
|
424
|
-
}
|
|
425
|
-
else if (output.tag === "*T" /* Layout.Constant.TextTag */) {
|
|
426
|
-
value = masked ? unmask(token) : token;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
if (hasAttribute) {
|
|
430
|
-
output.attributes = attributes;
|
|
431
|
-
}
|
|
432
|
-
if (value) {
|
|
433
|
-
output.value = value;
|
|
434
|
-
}
|
|
435
|
-
return output;
|
|
436
|
-
}
|
|
437
|
-
function num(input) {
|
|
438
|
-
return input ? parseInt(input, 36) : null;
|
|
439
|
-
}
|
|
440
|
-
function unmask(value) {
|
|
441
|
-
var trimmed = value.trim();
|
|
442
|
-
if (trimmed.length > 0 && trimmed.indexOf(Space) === -1) {
|
|
443
|
-
var length_1 = num(trimmed);
|
|
444
|
-
if (length_1 > 0) {
|
|
445
|
-
var quotient = Math.floor(length_1 / AverageWordLength);
|
|
446
|
-
var remainder = length_1 % AverageWordLength;
|
|
447
|
-
var output = Array(remainder + 1).join("\u2022" /* Data.Constant.Mask */);
|
|
448
|
-
for (var i = 0; i < quotient; i++) {
|
|
449
|
-
output += (i === 0 && remainder === 0 ? "\u2022" /* Data.Constant.Mask */ : Space) + Array(AverageWordLength).join("\u2022" /* Data.Constant.Mask */);
|
|
450
|
-
}
|
|
451
|
-
return output;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
return value;
|
|
277
|
+
var AverageWordLength = 6;
|
|
278
|
+
var Space = " ";
|
|
279
|
+
function decode$2(tokens) {
|
|
280
|
+
var time = tokens[0];
|
|
281
|
+
var event = tokens[1];
|
|
282
|
+
switch (event) {
|
|
283
|
+
case 8 /* Data.Event.Document */:
|
|
284
|
+
var documentData = { width: tokens[2], height: tokens[3] };
|
|
285
|
+
return { time: time, event: event, data: documentData };
|
|
286
|
+
case 7 /* Data.Event.Region */:
|
|
287
|
+
var regionData = [];
|
|
288
|
+
// From 0.6.15 we send each reach update in an individual event. This allows us to include time with it.
|
|
289
|
+
// To keep it backward compatible (<= 0.6.14), we look for multiple regions in the same event. This works both with newer and older payloads.
|
|
290
|
+
// In future, we can update the logic to look deterministically for only 3 fields and remove the for loop.
|
|
291
|
+
var increment = void 0;
|
|
292
|
+
for (var i = 2; i < tokens.length; i += increment) {
|
|
293
|
+
var region = void 0;
|
|
294
|
+
if (typeof (tokens[i + 2]) == "number" /* Constant.Number */) {
|
|
295
|
+
region = {
|
|
296
|
+
id: tokens[i],
|
|
297
|
+
interaction: tokens[i + 1],
|
|
298
|
+
visibility: tokens[i + 2],
|
|
299
|
+
name: tokens[i + 3]
|
|
300
|
+
};
|
|
301
|
+
increment = 4;
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
var state = tokens[i + 1];
|
|
305
|
+
region = {
|
|
306
|
+
id: tokens[i],
|
|
307
|
+
// For backward compatibility before 0.6.24 - where region states were sent as a single enum
|
|
308
|
+
// we convert the value into the two states tracked after 0.6.24
|
|
309
|
+
interaction: state >= 16 /* Interaction.None */ ? state : 16 /* Interaction.None */,
|
|
310
|
+
visibility: state <= 13 /* RegionVisibility.ScrolledToEnd */ ? state : 0 /* RegionVisibility.Rendered */,
|
|
311
|
+
name: tokens[i + 2]
|
|
312
|
+
};
|
|
313
|
+
increment = 3;
|
|
314
|
+
}
|
|
315
|
+
regionData.push(region);
|
|
316
|
+
}
|
|
317
|
+
return { time: time, event: event, data: regionData };
|
|
318
|
+
case 45 /* Data.Event.StyleSheetAdoption */:
|
|
319
|
+
var styleSheetAdoptionData = {
|
|
320
|
+
id: tokens[2],
|
|
321
|
+
operation: tokens[3],
|
|
322
|
+
newIds: tokens[4]
|
|
323
|
+
};
|
|
324
|
+
return { time: time, event: event, data: styleSheetAdoptionData };
|
|
325
|
+
case 46 /* Data.Event.StyleSheetUpdate */:
|
|
326
|
+
var styleSheetUpdateData = {
|
|
327
|
+
id: tokens[2],
|
|
328
|
+
operation: tokens[3],
|
|
329
|
+
cssRules: tokens[4]
|
|
330
|
+
};
|
|
331
|
+
return { time: time, event: event, data: styleSheetUpdateData };
|
|
332
|
+
case 44 /* Data.Event.Animation */:
|
|
333
|
+
var animationData = {
|
|
334
|
+
id: tokens[2],
|
|
335
|
+
operation: tokens[3],
|
|
336
|
+
keyFrames: tokens[4],
|
|
337
|
+
timing: tokens[5],
|
|
338
|
+
timeline: tokens[6],
|
|
339
|
+
targetId: tokens[7]
|
|
340
|
+
};
|
|
341
|
+
return { time: time, event: event, data: animationData };
|
|
342
|
+
case 5 /* Data.Event.Discover */:
|
|
343
|
+
case 6 /* Data.Event.Mutation */:
|
|
344
|
+
case 43 /* Data.Event.Snapshot */:
|
|
345
|
+
var lastType = null;
|
|
346
|
+
var node = [];
|
|
347
|
+
var tagIndex = 0;
|
|
348
|
+
var domData = [];
|
|
349
|
+
for (var i = 2; i < tokens.length; i++) {
|
|
350
|
+
var token = tokens[i];
|
|
351
|
+
var type = typeof (token);
|
|
352
|
+
switch (type) {
|
|
353
|
+
case "number":
|
|
354
|
+
if (type !== lastType && lastType !== null) {
|
|
355
|
+
domData.push(process(node, tagIndex));
|
|
356
|
+
node = [];
|
|
357
|
+
tagIndex = 0;
|
|
358
|
+
}
|
|
359
|
+
node.push(token);
|
|
360
|
+
tagIndex++;
|
|
361
|
+
break;
|
|
362
|
+
case "string":
|
|
363
|
+
node.push(token);
|
|
364
|
+
break;
|
|
365
|
+
case "object":
|
|
366
|
+
var subtoken = token[0];
|
|
367
|
+
var subtype = typeof (subtoken);
|
|
368
|
+
switch (subtype) {
|
|
369
|
+
case "number":
|
|
370
|
+
for (var _i = 0, _a = token; _i < _a.length; _i++) {
|
|
371
|
+
var t = _a[_i];
|
|
372
|
+
node.push(tokens.length > t ? tokens[t] : null);
|
|
373
|
+
}
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
lastType = type;
|
|
378
|
+
}
|
|
379
|
+
// Process last node
|
|
380
|
+
domData.push(process(node, tagIndex));
|
|
381
|
+
return { time: time, event: event, data: domData };
|
|
382
|
+
case 51 /* Data.Event.CustomElement */:
|
|
383
|
+
var customElement = { name: tokens[2] };
|
|
384
|
+
return { time: time, event: event, data: customElement };
|
|
385
|
+
}
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
function process(node, tagIndex) {
|
|
389
|
+
// For backward compatibility, only extract the tag even if position is available as part of the tag name
|
|
390
|
+
// And, continue computing position in the visualization library from decoded payload.
|
|
391
|
+
var tag = node[tagIndex] ? node[tagIndex].split("~")[0] : node[tagIndex];
|
|
392
|
+
var output = {
|
|
393
|
+
id: Math.abs(node[0]),
|
|
394
|
+
parent: tagIndex > 1 ? node[1] : null,
|
|
395
|
+
previous: tagIndex > 2 ? node[2] : null,
|
|
396
|
+
tag: tag
|
|
397
|
+
};
|
|
398
|
+
var masked = node[0] < 0;
|
|
399
|
+
var hasAttribute = false;
|
|
400
|
+
var attributes = {};
|
|
401
|
+
var value = null;
|
|
402
|
+
for (var i = tagIndex + 1; i < node.length; i++) {
|
|
403
|
+
// Explicitly convert the token into a string value
|
|
404
|
+
var token = node[i].toString();
|
|
405
|
+
var keyIndex = token.indexOf("=");
|
|
406
|
+
var firstChar = token[0];
|
|
407
|
+
var lastChar = token[token.length - 1];
|
|
408
|
+
if (i === (node.length - 1) && output.tag === "STYLE") {
|
|
409
|
+
value = token;
|
|
410
|
+
}
|
|
411
|
+
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && lastChar === ">" && keyIndex === -1) ;
|
|
412
|
+
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && firstChar === "#" /* Layout.Constant.Hash */ && keyIndex === -1) {
|
|
413
|
+
var parts = token.substr(1).split("." /* Layout.Constant.Period */);
|
|
414
|
+
if (parts.length === 2) {
|
|
415
|
+
output.width = num(parts[0]) / 100 /* Data.Setting.BoxPrecision */;
|
|
416
|
+
output.height = num(parts[1]) / 100 /* Data.Setting.BoxPrecision */;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
else if (output.tag !== "*T" /* Layout.Constant.TextTag */ && keyIndex > 0) {
|
|
420
|
+
hasAttribute = true;
|
|
421
|
+
var k = token.substr(0, keyIndex);
|
|
422
|
+
var v = token.substr(keyIndex + 1);
|
|
423
|
+
attributes[k] = v;
|
|
424
|
+
}
|
|
425
|
+
else if (output.tag === "*T" /* Layout.Constant.TextTag */) {
|
|
426
|
+
value = masked ? unmask(token) : token;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
if (hasAttribute) {
|
|
430
|
+
output.attributes = attributes;
|
|
431
|
+
}
|
|
432
|
+
if (value) {
|
|
433
|
+
output.value = value;
|
|
434
|
+
}
|
|
435
|
+
return output;
|
|
436
|
+
}
|
|
437
|
+
function num(input) {
|
|
438
|
+
return input ? parseInt(input, 36) : null;
|
|
439
|
+
}
|
|
440
|
+
function unmask(value) {
|
|
441
|
+
var trimmed = value.trim();
|
|
442
|
+
if (trimmed.length > 0 && trimmed.indexOf(Space) === -1) {
|
|
443
|
+
var length_1 = num(trimmed);
|
|
444
|
+
if (length_1 > 0) {
|
|
445
|
+
var quotient = Math.floor(length_1 / AverageWordLength);
|
|
446
|
+
var remainder = length_1 % AverageWordLength;
|
|
447
|
+
var output = Array(remainder + 1).join("\u2022" /* Data.Constant.Mask */);
|
|
448
|
+
for (var i = 0; i < quotient; i++) {
|
|
449
|
+
output += (i === 0 && remainder === 0 ? "\u2022" /* Data.Constant.Mask */ : Space) + Array(AverageWordLength).join("\u2022" /* Data.Constant.Mask */);
|
|
450
|
+
}
|
|
451
|
+
return output;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return value;
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
function decode$1(tokens) {
|
|
458
|
-
var time = tokens[0];
|
|
459
|
-
var event = tokens[1];
|
|
460
|
-
switch (event) {
|
|
461
|
-
case 29 /* Data.Event.Navigation */:
|
|
462
|
-
var navigationData = {
|
|
463
|
-
fetchStart: tokens[2],
|
|
464
|
-
connectStart: tokens[3],
|
|
465
|
-
connectEnd: tokens[4],
|
|
466
|
-
requestStart: tokens[5],
|
|
467
|
-
responseStart: tokens[6],
|
|
468
|
-
responseEnd: tokens[7],
|
|
469
|
-
domInteractive: tokens[8],
|
|
470
|
-
domComplete: tokens[9],
|
|
471
|
-
loadEventStart: tokens[10],
|
|
472
|
-
loadEventEnd: tokens[11],
|
|
473
|
-
redirectCount: tokens[12],
|
|
474
|
-
size: tokens[13],
|
|
475
|
-
type: tokens[14],
|
|
476
|
-
protocol: tokens[15],
|
|
477
|
-
encodedSize: tokens[16],
|
|
478
|
-
decodedSize: tokens[17]
|
|
479
|
-
};
|
|
480
|
-
return { time: time, event: event, data: navigationData };
|
|
481
|
-
}
|
|
482
|
-
return null;
|
|
457
|
+
function decode$1(tokens) {
|
|
458
|
+
var time = tokens[0];
|
|
459
|
+
var event = tokens[1];
|
|
460
|
+
switch (event) {
|
|
461
|
+
case 29 /* Data.Event.Navigation */:
|
|
462
|
+
var navigationData = {
|
|
463
|
+
fetchStart: tokens[2],
|
|
464
|
+
connectStart: tokens[3],
|
|
465
|
+
connectEnd: tokens[4],
|
|
466
|
+
requestStart: tokens[5],
|
|
467
|
+
responseStart: tokens[6],
|
|
468
|
+
responseEnd: tokens[7],
|
|
469
|
+
domInteractive: tokens[8],
|
|
470
|
+
domComplete: tokens[9],
|
|
471
|
+
loadEventStart: tokens[10],
|
|
472
|
+
loadEventEnd: tokens[11],
|
|
473
|
+
redirectCount: tokens[12],
|
|
474
|
+
size: tokens[13],
|
|
475
|
+
type: tokens[14],
|
|
476
|
+
protocol: tokens[15],
|
|
477
|
+
encodedSize: tokens[16],
|
|
478
|
+
decodedSize: tokens[17]
|
|
479
|
+
};
|
|
480
|
+
return { time: time, event: event, data: navigationData };
|
|
481
|
+
}
|
|
482
|
+
return null;
|
|
483
483
|
}
|
|
484
484
|
|
|
485
|
-
function decode(input) {
|
|
486
|
-
var json = JSON.parse(input);
|
|
487
|
-
var envelope$1 = envelope(json.e);
|
|
488
|
-
var timestamp = Date.now();
|
|
489
|
-
var payload = { timestamp: timestamp, envelope: envelope$1 };
|
|
490
|
-
// Sort encoded events by time to simplify summary computation
|
|
491
|
-
// It's possible for individual events to be out of order, dependent on how they are buffered on the client
|
|
492
|
-
// E.g. scroll events are queued internally before they are sent over the wire.
|
|
493
|
-
// By comparison, events like resize & click are sent out immediately.
|
|
494
|
-
var encoded = json.p ? json.a.concat(json.p) : json.a;
|
|
495
|
-
encoded = encoded.sort(function (a, b) { return a[0] - b[0]; });
|
|
496
|
-
// Check if the incoming version is compatible with the current running code
|
|
497
|
-
// We do an exact match for the major version and minor version.
|
|
498
|
-
// For patch, we are backward and forward compatible with up to version change.
|
|
499
|
-
var jsonVersion = parseVersion(payload.envelope.version);
|
|
500
|
-
var codeVersion = parseVersion(version);
|
|
501
|
-
if (jsonVersion.major !== codeVersion.major ||
|
|
502
|
-
Math.abs(jsonVersion.minor - codeVersion.minor) > 1) {
|
|
503
|
-
throw new Error("Invalid version. Actual: ".concat(payload.envelope.version, " | Expected: ").concat(version, " (+/- 1) | ").concat(input.substr(0, 250)));
|
|
504
|
-
}
|
|
505
|
-
for (var _i = 0, encoded_1 = encoded; _i < encoded_1.length; _i++) {
|
|
506
|
-
var entry = encoded_1[_i];
|
|
507
|
-
switch (entry[1]) {
|
|
508
|
-
case 4 /* Data.Event.Baseline */:
|
|
509
|
-
if (payload.baseline === undefined) {
|
|
510
|
-
payload.baseline = [];
|
|
511
|
-
}
|
|
512
|
-
payload.baseline.push(decode$5(entry));
|
|
513
|
-
break;
|
|
514
|
-
case 25 /* Data.Event.Ping */:
|
|
515
|
-
if (payload.ping === undefined) {
|
|
516
|
-
payload.ping = [];
|
|
517
|
-
}
|
|
518
|
-
payload.ping.push(decode$5(entry));
|
|
519
|
-
break;
|
|
520
|
-
case 35 /* Data.Event.Limit */:
|
|
521
|
-
if (payload.limit === undefined) {
|
|
522
|
-
payload.limit = [];
|
|
523
|
-
}
|
|
524
|
-
payload.limit.push(decode$5(entry));
|
|
525
|
-
break;
|
|
526
|
-
case 3 /* Data.Event.Upgrade */:
|
|
527
|
-
if (payload.upgrade === undefined) {
|
|
528
|
-
payload.upgrade = [];
|
|
529
|
-
}
|
|
530
|
-
payload.upgrade.push(decode$5(entry));
|
|
531
|
-
break;
|
|
532
|
-
case 0 /* Data.Event.Metric */:
|
|
533
|
-
if (payload.metric === undefined) {
|
|
534
|
-
payload.metric = [];
|
|
535
|
-
}
|
|
536
|
-
var metric = decode$5(entry);
|
|
537
|
-
// It's not possible to accurately include the byte count of the payload within the same payload
|
|
538
|
-
// The value we get from clarity-js lags behind by a payload. To work around that,
|
|
539
|
-
// we increment the bytes from the incoming payload at decode time.
|
|
540
|
-
metric.data[2 /* Data.Metric.TotalBytes */] = input.length;
|
|
541
|
-
payload.metric.push(metric);
|
|
542
|
-
break;
|
|
543
|
-
case 1 /* Data.Event.Dimension */:
|
|
544
|
-
if (payload.dimension === undefined) {
|
|
545
|
-
payload.dimension = [];
|
|
546
|
-
}
|
|
547
|
-
payload.dimension.push(decode$5(entry));
|
|
548
|
-
break;
|
|
549
|
-
case 36 /* Data.Event.Summary */:
|
|
550
|
-
if (payload.summary === undefined) {
|
|
551
|
-
payload.summary = [];
|
|
552
|
-
}
|
|
553
|
-
payload.summary.push(decode$5(entry));
|
|
554
|
-
break;
|
|
555
|
-
case 24 /* Data.Event.Custom */:
|
|
556
|
-
if (payload.custom === undefined) {
|
|
557
|
-
payload.custom = [];
|
|
558
|
-
}
|
|
559
|
-
payload.custom.push(decode$5(entry));
|
|
560
|
-
break;
|
|
561
|
-
case 34 /* Data.Event.Variable */:
|
|
562
|
-
if (payload.variable === undefined) {
|
|
563
|
-
payload.variable = [];
|
|
564
|
-
}
|
|
565
|
-
payload.variable.push(decode$5(entry));
|
|
566
|
-
break;
|
|
567
|
-
case 2 /* Data.Event.Upload */:
|
|
568
|
-
if (payload.upload === undefined) {
|
|
569
|
-
payload.upload = [];
|
|
570
|
-
}
|
|
571
|
-
payload.upload.push(decode$5(entry));
|
|
572
|
-
break;
|
|
573
|
-
case 13 /* Data.Event.MouseDown */:
|
|
574
|
-
case 14 /* Data.Event.MouseUp */:
|
|
575
|
-
case 12 /* Data.Event.MouseMove */:
|
|
576
|
-
case 15 /* Data.Event.MouseWheel */:
|
|
577
|
-
case 16 /* Data.Event.DoubleClick */:
|
|
578
|
-
case 17 /* Data.Event.TouchStart */:
|
|
579
|
-
case 20 /* Data.Event.TouchCancel */:
|
|
580
|
-
case 18 /* Data.Event.TouchEnd */:
|
|
581
|
-
case 19 /* Data.Event.TouchMove */:
|
|
582
|
-
if (payload.pointer === undefined) {
|
|
583
|
-
payload.pointer = [];
|
|
584
|
-
}
|
|
585
|
-
payload.pointer.push(decode$3(entry));
|
|
586
|
-
break;
|
|
587
|
-
case 9 /* Data.Event.Click */:
|
|
588
|
-
if (payload.click === undefined) {
|
|
589
|
-
payload.click = [];
|
|
590
|
-
}
|
|
591
|
-
var clickEntry = decode$3(entry);
|
|
592
|
-
payload.click.push(clickEntry);
|
|
593
|
-
break;
|
|
594
|
-
case 48 /* Data.Event.ContextMenu */:
|
|
595
|
-
if (payload.contextMenu === undefined) {
|
|
596
|
-
payload.contextMenu = [];
|
|
597
|
-
}
|
|
598
|
-
var contextMenuEntry = decode$3(entry);
|
|
599
|
-
payload.contextMenu.push(contextMenuEntry);
|
|
600
|
-
break;
|
|
601
|
-
case 38 /* Data.Event.Clipboard */:
|
|
602
|
-
if (payload.clipboard === undefined) {
|
|
603
|
-
payload.clipboard = [];
|
|
604
|
-
}
|
|
605
|
-
var clipEntry = decode$3(entry);
|
|
606
|
-
payload.clipboard.push(clipEntry);
|
|
607
|
-
break;
|
|
608
|
-
case 10 /* Data.Event.Scroll */:
|
|
609
|
-
if (payload.scroll === undefined) {
|
|
610
|
-
payload.scroll = [];
|
|
611
|
-
}
|
|
612
|
-
payload.scroll.push(decode$3(entry));
|
|
613
|
-
break;
|
|
614
|
-
case 11 /* Data.Event.Resize */:
|
|
615
|
-
if (payload.resize === undefined) {
|
|
616
|
-
payload.resize = [];
|
|
617
|
-
}
|
|
618
|
-
payload.resize.push(decode$3(entry));
|
|
619
|
-
break;
|
|
620
|
-
case 21 /* Data.Event.Selection */:
|
|
621
|
-
if (payload.selection === undefined) {
|
|
622
|
-
payload.selection = [];
|
|
623
|
-
}
|
|
624
|
-
payload.selection.push(decode$3(entry));
|
|
625
|
-
break;
|
|
626
|
-
case 42 /* Data.Event.Change */:
|
|
627
|
-
if (payload.change === undefined) {
|
|
628
|
-
payload.change = [];
|
|
629
|
-
}
|
|
630
|
-
var changeEntry = decode$3(entry);
|
|
631
|
-
payload.change.push(changeEntry);
|
|
632
|
-
break;
|
|
633
|
-
case 39 /* Data.Event.Submit */:
|
|
634
|
-
if (payload.submit === undefined) {
|
|
635
|
-
payload.submit = [];
|
|
636
|
-
}
|
|
637
|
-
var submitEntry = decode$3(entry);
|
|
638
|
-
payload.submit.push(submitEntry);
|
|
639
|
-
break;
|
|
640
|
-
case 22 /* Data.Event.Timeline */:
|
|
641
|
-
if (payload.timeline === undefined) {
|
|
642
|
-
payload.timeline = [];
|
|
643
|
-
}
|
|
644
|
-
payload.timeline.push(decode$3(entry));
|
|
645
|
-
break;
|
|
646
|
-
case 27 /* Data.Event.Input */:
|
|
647
|
-
if (payload.input === undefined) {
|
|
648
|
-
payload.input = [];
|
|
649
|
-
}
|
|
650
|
-
payload.input.push(decode$3(entry));
|
|
651
|
-
break;
|
|
652
|
-
case 26 /* Data.Event.Unload */:
|
|
653
|
-
if (payload.unload === undefined) {
|
|
654
|
-
payload.unload = [];
|
|
655
|
-
}
|
|
656
|
-
payload.unload.push(decode$3(entry));
|
|
657
|
-
break;
|
|
658
|
-
case 28 /* Data.Event.Visibility */:
|
|
659
|
-
if (payload.visibility === undefined) {
|
|
660
|
-
payload.visibility = [];
|
|
661
|
-
}
|
|
662
|
-
payload.visibility.push(decode$3(entry));
|
|
663
|
-
break;
|
|
664
|
-
case 50 /* Data.Event.Focus */:
|
|
665
|
-
if (payload.focus === undefined) {
|
|
666
|
-
payload.focus = [];
|
|
667
|
-
}
|
|
668
|
-
payload.focus.push(decode$3(entry));
|
|
669
|
-
break;
|
|
670
|
-
case 37 /* Data.Event.Box */:
|
|
671
|
-
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
672
|
-
break;
|
|
673
|
-
case 7 /* Data.Event.Region */:
|
|
674
|
-
if (payload.region === undefined) {
|
|
675
|
-
payload.region = [];
|
|
676
|
-
}
|
|
677
|
-
payload.region.push(decode$2(entry));
|
|
678
|
-
break;
|
|
679
|
-
case 5 /* Data.Event.Discover */:
|
|
680
|
-
case 6 /* Data.Event.Mutation */:
|
|
681
|
-
case 43 /* Data.Event.Snapshot */:
|
|
682
|
-
case 45 /* Data.Event.StyleSheetAdoption */:
|
|
683
|
-
case 46 /* Data.Event.StyleSheetUpdate */:
|
|
684
|
-
case 44 /* Data.Event.Animation */:
|
|
685
|
-
if (payload.dom === undefined) {
|
|
686
|
-
payload.dom = [];
|
|
687
|
-
}
|
|
688
|
-
payload.dom.push(decode$2(entry));
|
|
689
|
-
break;
|
|
690
|
-
case 8 /* Data.Event.Document */:
|
|
691
|
-
if (payload.doc === undefined) {
|
|
692
|
-
payload.doc = [];
|
|
693
|
-
}
|
|
694
|
-
payload.doc.push(decode$2(entry));
|
|
695
|
-
break;
|
|
696
|
-
case 31 /* Data.Event.ScriptError */:
|
|
697
|
-
if (payload.script === undefined) {
|
|
698
|
-
payload.script = [];
|
|
699
|
-
}
|
|
700
|
-
payload.script.push(decode$4(entry));
|
|
701
|
-
break;
|
|
702
|
-
case 33 /* Data.Event.Log */:
|
|
703
|
-
if (payload.log === undefined) {
|
|
704
|
-
payload.log = [];
|
|
705
|
-
}
|
|
706
|
-
payload.log.push(decode$4(entry));
|
|
707
|
-
break;
|
|
708
|
-
case 41 /* Data.Event.Fraud */:
|
|
709
|
-
if (payload.fraud === undefined) {
|
|
710
|
-
payload.fraud = [];
|
|
711
|
-
}
|
|
712
|
-
payload.fraud.push(decode$4(entry));
|
|
713
|
-
break;
|
|
714
|
-
case 29 /* Data.Event.Navigation */:
|
|
715
|
-
if (payload.navigation === undefined) {
|
|
716
|
-
payload.navigation = [];
|
|
717
|
-
}
|
|
718
|
-
payload.navigation.push(decode$1(entry));
|
|
719
|
-
break;
|
|
720
|
-
case 30 /* Data.Event.Connection */:
|
|
721
|
-
case 32 /* Data.Event.ImageError */:
|
|
722
|
-
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
723
|
-
break;
|
|
724
|
-
case 40 /* Data.Event.Extract */:
|
|
725
|
-
if (payload.extract === undefined) {
|
|
726
|
-
payload.extract = [];
|
|
727
|
-
}
|
|
728
|
-
payload.extract.push(decode$5(entry));
|
|
729
|
-
break;
|
|
730
|
-
case 47 /* Data.Event.Consent */:
|
|
731
|
-
if (payload.consent === undefined) {
|
|
732
|
-
payload.consent = [];
|
|
733
|
-
}
|
|
734
|
-
payload.consent.push(decode$5(entry));
|
|
735
|
-
break;
|
|
736
|
-
case 51 /* Data.Event.CustomElement */:
|
|
737
|
-
if (payload.customElement === undefined) {
|
|
738
|
-
payload.customElement = [];
|
|
739
|
-
}
|
|
740
|
-
payload.customElement.push(decode$2(entry));
|
|
741
|
-
break;
|
|
742
|
-
default:
|
|
743
|
-
if (typeof entry[1] === "number" && entry[1] < 200) {
|
|
744
|
-
console.error("No handler for Event: ".concat(JSON.stringify(entry)));
|
|
745
|
-
}
|
|
746
|
-
break;
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
return payload;
|
|
750
|
-
}
|
|
751
|
-
function parseVersion(ver) {
|
|
752
|
-
var output = { major: 0, minor: 0, patch: 0, beta: 0 };
|
|
753
|
-
var parts = ver.split(".");
|
|
754
|
-
if (parts.length === 3) {
|
|
755
|
-
var subparts = parts[2].split("-b");
|
|
756
|
-
output.major = parseInt(parts[0], 10);
|
|
757
|
-
output.minor = parseInt(parts[1], 10);
|
|
758
|
-
if (subparts.length === 2) {
|
|
759
|
-
output.patch = parseInt(subparts[0], 10);
|
|
760
|
-
output.beta = parseInt(subparts[1], 10);
|
|
761
|
-
}
|
|
762
|
-
else {
|
|
763
|
-
output.patch = parseInt(parts[2], 10);
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
return output;
|
|
485
|
+
function decode(input) {
|
|
486
|
+
var json = JSON.parse(input);
|
|
487
|
+
var envelope$1 = envelope(json.e);
|
|
488
|
+
var timestamp = Date.now();
|
|
489
|
+
var payload = { timestamp: timestamp, envelope: envelope$1 };
|
|
490
|
+
// Sort encoded events by time to simplify summary computation
|
|
491
|
+
// It's possible for individual events to be out of order, dependent on how they are buffered on the client
|
|
492
|
+
// E.g. scroll events are queued internally before they are sent over the wire.
|
|
493
|
+
// By comparison, events like resize & click are sent out immediately.
|
|
494
|
+
var encoded = json.p ? json.a.concat(json.p) : json.a;
|
|
495
|
+
encoded = encoded.sort(function (a, b) { return a[0] - b[0]; });
|
|
496
|
+
// Check if the incoming version is compatible with the current running code
|
|
497
|
+
// We do an exact match for the major version and minor version.
|
|
498
|
+
// For patch, we are backward and forward compatible with up to version change.
|
|
499
|
+
var jsonVersion = parseVersion(payload.envelope.version);
|
|
500
|
+
var codeVersion = parseVersion(version);
|
|
501
|
+
if (jsonVersion.major !== codeVersion.major ||
|
|
502
|
+
Math.abs(jsonVersion.minor - codeVersion.minor) > 1) {
|
|
503
|
+
throw new Error("Invalid version. Actual: ".concat(payload.envelope.version, " | Expected: ").concat(version, " (+/- 1) | ").concat(input.substr(0, 250)));
|
|
504
|
+
}
|
|
505
|
+
for (var _i = 0, encoded_1 = encoded; _i < encoded_1.length; _i++) {
|
|
506
|
+
var entry = encoded_1[_i];
|
|
507
|
+
switch (entry[1]) {
|
|
508
|
+
case 4 /* Data.Event.Baseline */:
|
|
509
|
+
if (payload.baseline === undefined) {
|
|
510
|
+
payload.baseline = [];
|
|
511
|
+
}
|
|
512
|
+
payload.baseline.push(decode$5(entry));
|
|
513
|
+
break;
|
|
514
|
+
case 25 /* Data.Event.Ping */:
|
|
515
|
+
if (payload.ping === undefined) {
|
|
516
|
+
payload.ping = [];
|
|
517
|
+
}
|
|
518
|
+
payload.ping.push(decode$5(entry));
|
|
519
|
+
break;
|
|
520
|
+
case 35 /* Data.Event.Limit */:
|
|
521
|
+
if (payload.limit === undefined) {
|
|
522
|
+
payload.limit = [];
|
|
523
|
+
}
|
|
524
|
+
payload.limit.push(decode$5(entry));
|
|
525
|
+
break;
|
|
526
|
+
case 3 /* Data.Event.Upgrade */:
|
|
527
|
+
if (payload.upgrade === undefined) {
|
|
528
|
+
payload.upgrade = [];
|
|
529
|
+
}
|
|
530
|
+
payload.upgrade.push(decode$5(entry));
|
|
531
|
+
break;
|
|
532
|
+
case 0 /* Data.Event.Metric */:
|
|
533
|
+
if (payload.metric === undefined) {
|
|
534
|
+
payload.metric = [];
|
|
535
|
+
}
|
|
536
|
+
var metric = decode$5(entry);
|
|
537
|
+
// It's not possible to accurately include the byte count of the payload within the same payload
|
|
538
|
+
// The value we get from clarity-js lags behind by a payload. To work around that,
|
|
539
|
+
// we increment the bytes from the incoming payload at decode time.
|
|
540
|
+
metric.data[2 /* Data.Metric.TotalBytes */] = input.length;
|
|
541
|
+
payload.metric.push(metric);
|
|
542
|
+
break;
|
|
543
|
+
case 1 /* Data.Event.Dimension */:
|
|
544
|
+
if (payload.dimension === undefined) {
|
|
545
|
+
payload.dimension = [];
|
|
546
|
+
}
|
|
547
|
+
payload.dimension.push(decode$5(entry));
|
|
548
|
+
break;
|
|
549
|
+
case 36 /* Data.Event.Summary */:
|
|
550
|
+
if (payload.summary === undefined) {
|
|
551
|
+
payload.summary = [];
|
|
552
|
+
}
|
|
553
|
+
payload.summary.push(decode$5(entry));
|
|
554
|
+
break;
|
|
555
|
+
case 24 /* Data.Event.Custom */:
|
|
556
|
+
if (payload.custom === undefined) {
|
|
557
|
+
payload.custom = [];
|
|
558
|
+
}
|
|
559
|
+
payload.custom.push(decode$5(entry));
|
|
560
|
+
break;
|
|
561
|
+
case 34 /* Data.Event.Variable */:
|
|
562
|
+
if (payload.variable === undefined) {
|
|
563
|
+
payload.variable = [];
|
|
564
|
+
}
|
|
565
|
+
payload.variable.push(decode$5(entry));
|
|
566
|
+
break;
|
|
567
|
+
case 2 /* Data.Event.Upload */:
|
|
568
|
+
if (payload.upload === undefined) {
|
|
569
|
+
payload.upload = [];
|
|
570
|
+
}
|
|
571
|
+
payload.upload.push(decode$5(entry));
|
|
572
|
+
break;
|
|
573
|
+
case 13 /* Data.Event.MouseDown */:
|
|
574
|
+
case 14 /* Data.Event.MouseUp */:
|
|
575
|
+
case 12 /* Data.Event.MouseMove */:
|
|
576
|
+
case 15 /* Data.Event.MouseWheel */:
|
|
577
|
+
case 16 /* Data.Event.DoubleClick */:
|
|
578
|
+
case 17 /* Data.Event.TouchStart */:
|
|
579
|
+
case 20 /* Data.Event.TouchCancel */:
|
|
580
|
+
case 18 /* Data.Event.TouchEnd */:
|
|
581
|
+
case 19 /* Data.Event.TouchMove */:
|
|
582
|
+
if (payload.pointer === undefined) {
|
|
583
|
+
payload.pointer = [];
|
|
584
|
+
}
|
|
585
|
+
payload.pointer.push(decode$3(entry));
|
|
586
|
+
break;
|
|
587
|
+
case 9 /* Data.Event.Click */:
|
|
588
|
+
if (payload.click === undefined) {
|
|
589
|
+
payload.click = [];
|
|
590
|
+
}
|
|
591
|
+
var clickEntry = decode$3(entry);
|
|
592
|
+
payload.click.push(clickEntry);
|
|
593
|
+
break;
|
|
594
|
+
case 48 /* Data.Event.ContextMenu */:
|
|
595
|
+
if (payload.contextMenu === undefined) {
|
|
596
|
+
payload.contextMenu = [];
|
|
597
|
+
}
|
|
598
|
+
var contextMenuEntry = decode$3(entry);
|
|
599
|
+
payload.contextMenu.push(contextMenuEntry);
|
|
600
|
+
break;
|
|
601
|
+
case 38 /* Data.Event.Clipboard */:
|
|
602
|
+
if (payload.clipboard === undefined) {
|
|
603
|
+
payload.clipboard = [];
|
|
604
|
+
}
|
|
605
|
+
var clipEntry = decode$3(entry);
|
|
606
|
+
payload.clipboard.push(clipEntry);
|
|
607
|
+
break;
|
|
608
|
+
case 10 /* Data.Event.Scroll */:
|
|
609
|
+
if (payload.scroll === undefined) {
|
|
610
|
+
payload.scroll = [];
|
|
611
|
+
}
|
|
612
|
+
payload.scroll.push(decode$3(entry));
|
|
613
|
+
break;
|
|
614
|
+
case 11 /* Data.Event.Resize */:
|
|
615
|
+
if (payload.resize === undefined) {
|
|
616
|
+
payload.resize = [];
|
|
617
|
+
}
|
|
618
|
+
payload.resize.push(decode$3(entry));
|
|
619
|
+
break;
|
|
620
|
+
case 21 /* Data.Event.Selection */:
|
|
621
|
+
if (payload.selection === undefined) {
|
|
622
|
+
payload.selection = [];
|
|
623
|
+
}
|
|
624
|
+
payload.selection.push(decode$3(entry));
|
|
625
|
+
break;
|
|
626
|
+
case 42 /* Data.Event.Change */:
|
|
627
|
+
if (payload.change === undefined) {
|
|
628
|
+
payload.change = [];
|
|
629
|
+
}
|
|
630
|
+
var changeEntry = decode$3(entry);
|
|
631
|
+
payload.change.push(changeEntry);
|
|
632
|
+
break;
|
|
633
|
+
case 39 /* Data.Event.Submit */:
|
|
634
|
+
if (payload.submit === undefined) {
|
|
635
|
+
payload.submit = [];
|
|
636
|
+
}
|
|
637
|
+
var submitEntry = decode$3(entry);
|
|
638
|
+
payload.submit.push(submitEntry);
|
|
639
|
+
break;
|
|
640
|
+
case 22 /* Data.Event.Timeline */:
|
|
641
|
+
if (payload.timeline === undefined) {
|
|
642
|
+
payload.timeline = [];
|
|
643
|
+
}
|
|
644
|
+
payload.timeline.push(decode$3(entry));
|
|
645
|
+
break;
|
|
646
|
+
case 27 /* Data.Event.Input */:
|
|
647
|
+
if (payload.input === undefined) {
|
|
648
|
+
payload.input = [];
|
|
649
|
+
}
|
|
650
|
+
payload.input.push(decode$3(entry));
|
|
651
|
+
break;
|
|
652
|
+
case 26 /* Data.Event.Unload */:
|
|
653
|
+
if (payload.unload === undefined) {
|
|
654
|
+
payload.unload = [];
|
|
655
|
+
}
|
|
656
|
+
payload.unload.push(decode$3(entry));
|
|
657
|
+
break;
|
|
658
|
+
case 28 /* Data.Event.Visibility */:
|
|
659
|
+
if (payload.visibility === undefined) {
|
|
660
|
+
payload.visibility = [];
|
|
661
|
+
}
|
|
662
|
+
payload.visibility.push(decode$3(entry));
|
|
663
|
+
break;
|
|
664
|
+
case 50 /* Data.Event.Focus */:
|
|
665
|
+
if (payload.focus === undefined) {
|
|
666
|
+
payload.focus = [];
|
|
667
|
+
}
|
|
668
|
+
payload.focus.push(decode$3(entry));
|
|
669
|
+
break;
|
|
670
|
+
case 37 /* Data.Event.Box */:
|
|
671
|
+
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
672
|
+
break;
|
|
673
|
+
case 7 /* Data.Event.Region */:
|
|
674
|
+
if (payload.region === undefined) {
|
|
675
|
+
payload.region = [];
|
|
676
|
+
}
|
|
677
|
+
payload.region.push(decode$2(entry));
|
|
678
|
+
break;
|
|
679
|
+
case 5 /* Data.Event.Discover */:
|
|
680
|
+
case 6 /* Data.Event.Mutation */:
|
|
681
|
+
case 43 /* Data.Event.Snapshot */:
|
|
682
|
+
case 45 /* Data.Event.StyleSheetAdoption */:
|
|
683
|
+
case 46 /* Data.Event.StyleSheetUpdate */:
|
|
684
|
+
case 44 /* Data.Event.Animation */:
|
|
685
|
+
if (payload.dom === undefined) {
|
|
686
|
+
payload.dom = [];
|
|
687
|
+
}
|
|
688
|
+
payload.dom.push(decode$2(entry));
|
|
689
|
+
break;
|
|
690
|
+
case 8 /* Data.Event.Document */:
|
|
691
|
+
if (payload.doc === undefined) {
|
|
692
|
+
payload.doc = [];
|
|
693
|
+
}
|
|
694
|
+
payload.doc.push(decode$2(entry));
|
|
695
|
+
break;
|
|
696
|
+
case 31 /* Data.Event.ScriptError */:
|
|
697
|
+
if (payload.script === undefined) {
|
|
698
|
+
payload.script = [];
|
|
699
|
+
}
|
|
700
|
+
payload.script.push(decode$4(entry));
|
|
701
|
+
break;
|
|
702
|
+
case 33 /* Data.Event.Log */:
|
|
703
|
+
if (payload.log === undefined) {
|
|
704
|
+
payload.log = [];
|
|
705
|
+
}
|
|
706
|
+
payload.log.push(decode$4(entry));
|
|
707
|
+
break;
|
|
708
|
+
case 41 /* Data.Event.Fraud */:
|
|
709
|
+
if (payload.fraud === undefined) {
|
|
710
|
+
payload.fraud = [];
|
|
711
|
+
}
|
|
712
|
+
payload.fraud.push(decode$4(entry));
|
|
713
|
+
break;
|
|
714
|
+
case 29 /* Data.Event.Navigation */:
|
|
715
|
+
if (payload.navigation === undefined) {
|
|
716
|
+
payload.navigation = [];
|
|
717
|
+
}
|
|
718
|
+
payload.navigation.push(decode$1(entry));
|
|
719
|
+
break;
|
|
720
|
+
case 30 /* Data.Event.Connection */:
|
|
721
|
+
case 32 /* Data.Event.ImageError */:
|
|
722
|
+
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
723
|
+
break;
|
|
724
|
+
case 40 /* Data.Event.Extract */:
|
|
725
|
+
if (payload.extract === undefined) {
|
|
726
|
+
payload.extract = [];
|
|
727
|
+
}
|
|
728
|
+
payload.extract.push(decode$5(entry));
|
|
729
|
+
break;
|
|
730
|
+
case 47 /* Data.Event.Consent */:
|
|
731
|
+
if (payload.consent === undefined) {
|
|
732
|
+
payload.consent = [];
|
|
733
|
+
}
|
|
734
|
+
payload.consent.push(decode$5(entry));
|
|
735
|
+
break;
|
|
736
|
+
case 51 /* Data.Event.CustomElement */:
|
|
737
|
+
if (payload.customElement === undefined) {
|
|
738
|
+
payload.customElement = [];
|
|
739
|
+
}
|
|
740
|
+
payload.customElement.push(decode$2(entry));
|
|
741
|
+
break;
|
|
742
|
+
default:
|
|
743
|
+
if (typeof entry[1] === "number" && entry[1] < 200) {
|
|
744
|
+
console.error("No handler for Event: ".concat(JSON.stringify(entry)));
|
|
745
|
+
}
|
|
746
|
+
break;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
return payload;
|
|
750
|
+
}
|
|
751
|
+
function parseVersion(ver) {
|
|
752
|
+
var output = { major: 0, minor: 0, patch: 0, beta: 0 };
|
|
753
|
+
var parts = ver.split(".");
|
|
754
|
+
if (parts.length === 3) {
|
|
755
|
+
var subparts = parts[2].split("-b");
|
|
756
|
+
output.major = parseInt(parts[0], 10);
|
|
757
|
+
output.minor = parseInt(parts[1], 10);
|
|
758
|
+
if (subparts.length === 2) {
|
|
759
|
+
output.patch = parseInt(subparts[0], 10);
|
|
760
|
+
output.beta = parseInt(subparts[1], 10);
|
|
761
|
+
}
|
|
762
|
+
else {
|
|
763
|
+
output.patch = parseInt(parts[2], 10);
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
return output;
|
|
767
767
|
}
|
|
768
768
|
|
|
769
769
|
exports.decode = decode;
|