clarity-decode 0.6.32 → 0.6.35
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/build/clarity.decode.js +30 -17
- package/build/clarity.decode.min.js +1 -1
- package/build/clarity.decode.module.js +30 -17
- package/package.json +2 -2
- package/src/clarity.ts +12 -5
- package/src/data.ts +7 -0
- package/src/diagnostic.ts +7 -0
- package/src/interaction.ts +2 -1
- package/src/layout.ts +0 -11
- package/types/data.d.ts +7 -4
- package/types/diagnostic.d.ts +3 -1
- package/types/layout.d.ts +1 -2
package/build/clarity.decode.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var version$1 = "0.6.
|
|
5
|
+
var version$1 = "0.6.35";
|
|
6
6
|
var version = version$1;
|
|
7
7
|
|
|
8
8
|
function decode$5(tokens) {
|
|
@@ -71,6 +71,13 @@ function decode$5(tokens) {
|
|
|
71
71
|
variables[tokens[v++]] = typeof tokens[v + 1] == "string" /* String */ ? [tokens[v++]] : tokens[v++];
|
|
72
72
|
}
|
|
73
73
|
return { time: time, event: event, data: variables };
|
|
74
|
+
case 40 /* Extract */:
|
|
75
|
+
var e = 2; // Start from 3rd index since first two are used for time & event
|
|
76
|
+
var extract = {};
|
|
77
|
+
while (e < tokens.length) {
|
|
78
|
+
extract[tokens[e++]] = tokens[e++];
|
|
79
|
+
}
|
|
80
|
+
return { time: time, event: event, data: extract };
|
|
74
81
|
}
|
|
75
82
|
return null;
|
|
76
83
|
}
|
|
@@ -111,6 +118,13 @@ function decode$4(tokens) {
|
|
|
111
118
|
severity: tokens[6]
|
|
112
119
|
};
|
|
113
120
|
return { time: time, event: event, data: log };
|
|
121
|
+
case 41 /* Fraud */:
|
|
122
|
+
var fraud = {
|
|
123
|
+
id: tokens[2],
|
|
124
|
+
target: tokens[3],
|
|
125
|
+
hash: tokens[4]
|
|
126
|
+
};
|
|
127
|
+
return { time: time, event: event, data: fraud };
|
|
114
128
|
}
|
|
115
129
|
return null;
|
|
116
130
|
}
|
|
@@ -148,7 +162,8 @@ function decode$3(tokens) {
|
|
|
148
162
|
text: tokens[10],
|
|
149
163
|
link: tokens[11],
|
|
150
164
|
hash: clickHashes[0],
|
|
151
|
-
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null
|
|
165
|
+
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null,
|
|
166
|
+
trust: tokens.length > 13 ? tokens[13] : 1 /* True */
|
|
152
167
|
};
|
|
153
168
|
return { time: time, event: event, data: clickData };
|
|
154
169
|
case 38 /* Clipboard */:
|
|
@@ -246,17 +261,6 @@ function decode$2(tokens) {
|
|
|
246
261
|
regionData.push(region);
|
|
247
262
|
}
|
|
248
263
|
return { time: time, event: event, data: regionData };
|
|
249
|
-
case 37 /* Box */:
|
|
250
|
-
var boxData = [];
|
|
251
|
-
for (var i = 2; i < tokens.length; i += 3) {
|
|
252
|
-
var box = {
|
|
253
|
-
id: tokens[i],
|
|
254
|
-
width: tokens[i + 1] / 100 /* BoxPrecision */,
|
|
255
|
-
height: tokens[i + 2] / 100 /* BoxPrecision */
|
|
256
|
-
};
|
|
257
|
-
boxData.push(box);
|
|
258
|
-
}
|
|
259
|
-
return { time: time, event: event, data: boxData };
|
|
260
264
|
case 5 /* Discover */:
|
|
261
265
|
case 6 /* Mutation */:
|
|
262
266
|
var lastType = null;
|
|
@@ -562,10 +566,7 @@ function decode(input) {
|
|
|
562
566
|
payload.visibility.push(decode$3(entry));
|
|
563
567
|
break;
|
|
564
568
|
case 37 /* Box */:
|
|
565
|
-
|
|
566
|
-
payload.box = [];
|
|
567
|
-
}
|
|
568
|
-
payload.box.push(decode$2(entry));
|
|
569
|
+
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
569
570
|
break;
|
|
570
571
|
case 7 /* Region */:
|
|
571
572
|
if (payload.region === undefined) {
|
|
@@ -598,6 +599,12 @@ function decode(input) {
|
|
|
598
599
|
}
|
|
599
600
|
payload.log.push(decode$4(entry));
|
|
600
601
|
break;
|
|
602
|
+
case 41 /* Fraud */:
|
|
603
|
+
if (payload.fraud === undefined) {
|
|
604
|
+
payload.fraud = [];
|
|
605
|
+
}
|
|
606
|
+
payload.fraud.push(decode$4(entry));
|
|
607
|
+
break;
|
|
601
608
|
case 29 /* Navigation */:
|
|
602
609
|
if (payload.navigation === undefined) {
|
|
603
610
|
payload.navigation = [];
|
|
@@ -608,6 +615,12 @@ function decode(input) {
|
|
|
608
615
|
case 32 /* ImageError */:
|
|
609
616
|
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
610
617
|
break;
|
|
618
|
+
case 40 /* Extract */:
|
|
619
|
+
if (payload.extract === undefined) {
|
|
620
|
+
payload.extract = [];
|
|
621
|
+
}
|
|
622
|
+
payload.extract.push(decode$5(entry));
|
|
623
|
+
break;
|
|
611
624
|
default:
|
|
612
625
|
console.error("No handler for Event: ".concat(JSON.stringify(entry)));
|
|
613
626
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var e="0.6.
|
|
1
|
+
!function(){"use strict";var e="0.6.35";function t(e){var t=e[0],a=e[1];switch(a){case 25:return{time:t,event:a,data:{gap:e[2]}};case 35:return{time:t,event:a,data:{check:e[2]}};case 24:return{time:t,event:a,data:{key:e[2],value:e[3]}};case 3:return{time:t,event:a,data:{key:e[2]}};case 2:return{time:t,event:a,data:{sequence:e[2],attempts:e[3],status:e[4]}};case 0:for(var r=2,n={};r<e.length;)n[e[r++]]=e[r++];return{time:t,event:a,data:n};case 1:for(var i=2,s={};i<e.length;)s[e[i++]]=e[i++];return{time:t,event:a,data:s};case 36:for(var c=2,o={};c<e.length;){var u=e[c++],d=e[c++];o[u]=[];for(var l=0;l<d.length-1;l+=2)o[u].push([d[l],d[l+1]])}return{time:t,event:a,data:o};case 4:return{time:t,event:a,data:{visible:e[2],docWidth:e[3],docHeight:e[4],screenWidth:e[5],screenHeight:e[6],scrollX:e[7],scrollY:e[8],pointerX:e[9],pointerY:e[10],activityTime:e[11]}};case 34:for(var v=2,p={};v<e.length;)p[e[v++]]="string"==typeof e[v+1]?[e[v++]]:e[v++];return{time:t,event:a,data:p};case 40:for(var h=2,m={};h<e.length;)m[e[h++]]=e[h++];return{time:t,event:a,data:m}}return null}function a(e){var t=e[0],a=e[1];switch(a){case 31:return{time:t,event:a,data:{message:e[2],line:e[3],column:e[4],stack:e[5],source:e[6]}};case 33:return{time:t,event:a,data:{code:e[2],name:e[3],message:e[4],stack:e[5],severity:e[6]}};case 41:return{time:t,event:a,data:{id:e[2],target:e[3],hash:e[4]}}}return null}function r(e){var t=e[0],a=e[1];switch(a){case 13:case 14:case 12:case 15:case 16:case 17:case 20:case 18:case 19:return{time:t,event:a,data:{target:e[2],x:e[3],y:e[4]}};case 9:var r=e[12].split(".");return{time:t,event:a,data:{target:e[2],x:e[3],y:e[4],eX:e[5],eY:e[6],button:e[7],reaction:e[8],context:e[9],text:e[10],link:e[11],hash:r[0],hashBeta:r.length>0?r[1]:null,trust:e.length>13?e[13]:1}};case 38:return{time:t,event:a,data:{target:e[2],action:e[3]}};case 11:return{time:t,event:a,data:{width:e[2],height:e[3]}};case 27:return{time:t,event:a,data:{target:e[2],value:e[3]}};case 21:return{time:t,event:a,data:{start:e[2],startOffset:e[3],end:e[4],endOffset:e[5]}};case 39:return{time:t,event:a,data:{target:e[2]}};case 10:return{time:t,event:a,data:{target:e[2],x:e[3],y:e[4]}};case 22:var n=e[3].split(".");return{time:t,event:a,data:{type:e[2],hash:n[0],x:e[4],y:e[5],reaction:e[6],context:e[7],hashBeta:n.length>0?n[1]:null}};case 28:return{time:t,event:a,data:{visible:e[2]}};case 26:return{time:t,event:a,data:{name:e[2]}}}return null}function n(e){var t=e[0],a=e[1];switch(a){case 8:return{time:t,event:a,data:{width:e[2],height:e[3]}};case 7:for(var r=[],n=void 0,s=2;s<e.length;s+=n){var c=void 0;if("number"==typeof e[s+2])c={id:e[s],interaction:e[s+1],visibility:e[s+2],name:e[s+3]},n=4;else{var o=e[s+1];c={id:e[s],interaction:o>=16?o:16,visibility:o<=13?o:0,name:e[s+2]},n=3}r.push(c)}return{time:t,event:a,data:r};case 5:case 6:var u=null,d=[],l=0,v=[];for(s=2;s<e.length;s++){var p=e[s],h=typeof p;switch(h){case"number":h!==u&&null!==u&&(v.push(i(d,l)),d=[],l=0),d.push(p),l++;break;case"string":d.push(p);break;case"object":if("number"===typeof p[0])for(var m=0,b=p;m<b.length;m++){var g=b[m];d.push(e.length>g?e[g]:null)}}u=h}return v.push(i(d,l)),{time:t,event:a,data:v}}return null}function i(e,t){for(var a=e[t]?e[t].split("~")[0]:e[t],r={id:Math.abs(e[0]),parent:t>1?e[1]:null,previous:t>2?e[2]:null,tag:a},n=e[0]<0,i=!1,o={},u=null,d=t+1;d<e.length;d++){var l=e[d].toString(),v=l.indexOf("="),p=l[0],h=l[l.length-1];if(d===e.length-1&&"STYLE"===r.tag)u=l;else if("*T"!==r.tag&&">"===h&&-1===v);else if("*T"!==r.tag&&"#"===p&&-1===v){var m=l.substr(1).split(".");2===m.length&&(r.width=s(m[0])/100,r.height=s(m[1])/100)}else if("*T"!==r.tag&&v>0){i=!0;var b=l.substr(0,v),g=l.substr(v+1);o[b]=g}else"*T"===r.tag&&(u=n?c(l):l)}return i&&(r.attributes=o),u&&(r.value=u),r}function s(e){return e?parseInt(e,36):null}function c(e){var t=e.trim();if(t.length>0&&-1===t.indexOf(" ")){var a=s(t);if(a>0){for(var r=Math.floor(a/6),n=a%6,i=Array(n+1).join("•"),c=0;c<r;c++)i+=(0===c&&0===n?"•":" ")+Array(6).join("•");return i}}return e}function o(e){var t=e[0],a=e[1];return 29===a?{time:t,event:a,data:{fetchStart:e[2],connectStart:e[3],connectEnd:e[4],requestStart:e[5],responseStart:e[6],responseEnd:e[7],domInteractive:e[8],domComplete:e[9],loadEventStart:e[10],loadEventEnd:e[11],redirectCount:e[12],size:e[13],type:e[14],protocol:e[15],encodedSize:e[16],decodedSize:e[17]}}:null}function u(e){var t={major:0,minor:0,patch:0,beta:0},a=e.split(".");if(3===a.length){var r=a[2].split("-b");t.major=parseInt(a[0],10),t.minor=parseInt(a[1],10),2===r.length?(t.patch=parseInt(r[0],10),t.beta=parseInt(r[1],10)):t.patch=parseInt(a[2],10)}return t}var d=Object.freeze({__proto__:null,decode:function(i){var s,c=JSON.parse(i),d={version:(s=c.e)[0],sequence:s[1],start:s[2],duration:s[3],projectId:s[4],userId:s[5],sessionId:s[6],pageNum:s[7],upload:s[8],end:s[9]},l={timestamp:Date.now(),envelope:d},v=c.p?c.a.concat(c.p):c.a;v=v.sort((function(e,t){return e[0]-t[0]}));var p=u(l.envelope.version),h=u(e);if(p.major!==h.major||Math.abs(p.minor-h.minor)>1)throw new Error("Invalid version. Actual: ".concat(l.envelope.version," | Expected: ").concat(e," (+/- 1) | ").concat(i.substr(0,250)));for(var m=0,b=v;m<b.length;m++){var g=b[m];switch(g[1]){case 4:void 0===l.baseline&&(l.baseline=[]),l.baseline.push(t(g));break;case 25:void 0===l.ping&&(l.ping=[]),l.ping.push(t(g));break;case 35:void 0===l.limit&&(l.limit=[]),l.limit.push(t(g));break;case 3:void 0===l.upgrade&&(l.upgrade=[]),l.upgrade.push(t(g));break;case 0:void 0===l.metric&&(l.metric=[]);var f=t(g);f.data[2]=i.length,l.metric.push(f);break;case 1:void 0===l.dimension&&(l.dimension=[]),l.dimension.push(t(g));break;case 36:void 0===l.summary&&(l.summary=[]),l.summary.push(t(g));break;case 24:void 0===l.custom&&(l.custom=[]),l.custom.push(t(g));break;case 34:void 0===l.variable&&(l.variable=[]),l.variable.push(t(g));break;case 2:void 0===l.upload&&(l.upload=[]),l.upload.push(t(g));break;case 13:case 14:case 12:case 15:case 16:case 17:case 20:case 18:case 19:void 0===l.pointer&&(l.pointer=[]),l.pointer.push(r(g));break;case 9:void 0===l.click&&(l.click=[]);var k=r(g);l.click.push(k);break;case 38:void 0===l.clipboard&&(l.clipboard=[]);var y=r(g);l.clipboard.push(y);break;case 10:void 0===l.scroll&&(l.scroll=[]),l.scroll.push(r(g));break;case 11:void 0===l.resize&&(l.resize=[]),l.resize.push(r(g));break;case 21:void 0===l.selection&&(l.selection=[]),l.selection.push(r(g));break;case 39:void 0===l.submit&&(l.submit=[]);var w=r(g);l.submit.push(w);break;case 22:void 0===l.timeline&&(l.timeline=[]),l.timeline.push(r(g));break;case 27:void 0===l.input&&(l.input=[]),l.input.push(r(g));break;case 26:void 0===l.unload&&(l.unload=[]),l.unload.push(r(g));break;case 28:void 0===l.visibility&&(l.visibility=[]),l.visibility.push(r(g));break;case 37:case 30:case 32:break;case 7:void 0===l.region&&(l.region=[]),l.region.push(n(g));break;case 5:case 6:void 0===l.dom&&(l.dom=[]),l.dom.push(n(g));break;case 8:void 0===l.doc&&(l.doc=[]),l.doc.push(n(g));break;case 31:void 0===l.script&&(l.script=[]),l.script.push(a(g));break;case 33:void 0===l.log&&(l.log=[]),l.log.push(a(g));break;case 41:void 0===l.fraud&&(l.fraud=[]),l.fraud.push(a(g));break;case 29:void 0===l.navigation&&(l.navigation=[]),l.navigation.push(o(g));break;case 40:void 0===l.extract&&(l.extract=[]),l.extract.push(t(g));break;default:console.error("No handler for Event: ".concat(JSON.stringify(g)))}}return l}});"undefined"!=typeof window&&(void 0!==window.clarity&&null!==window.clarity||(window.clarity={}),window.clarity.decode=d)}();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var version$1 = "0.6.
|
|
1
|
+
var version$1 = "0.6.35";
|
|
2
2
|
var version = version$1;
|
|
3
3
|
|
|
4
4
|
function decode$5(tokens) {
|
|
@@ -67,6 +67,13 @@ function decode$5(tokens) {
|
|
|
67
67
|
variables[tokens[v++]] = typeof tokens[v + 1] == "string" /* String */ ? [tokens[v++]] : tokens[v++];
|
|
68
68
|
}
|
|
69
69
|
return { time: time, event: event, data: variables };
|
|
70
|
+
case 40 /* Extract */:
|
|
71
|
+
var e = 2; // Start from 3rd index since first two are used for time & event
|
|
72
|
+
var extract = {};
|
|
73
|
+
while (e < tokens.length) {
|
|
74
|
+
extract[tokens[e++]] = tokens[e++];
|
|
75
|
+
}
|
|
76
|
+
return { time: time, event: event, data: extract };
|
|
70
77
|
}
|
|
71
78
|
return null;
|
|
72
79
|
}
|
|
@@ -107,6 +114,13 @@ function decode$4(tokens) {
|
|
|
107
114
|
severity: tokens[6]
|
|
108
115
|
};
|
|
109
116
|
return { time: time, event: event, data: log };
|
|
117
|
+
case 41 /* Fraud */:
|
|
118
|
+
var fraud = {
|
|
119
|
+
id: tokens[2],
|
|
120
|
+
target: tokens[3],
|
|
121
|
+
hash: tokens[4]
|
|
122
|
+
};
|
|
123
|
+
return { time: time, event: event, data: fraud };
|
|
110
124
|
}
|
|
111
125
|
return null;
|
|
112
126
|
}
|
|
@@ -144,7 +158,8 @@ function decode$3(tokens) {
|
|
|
144
158
|
text: tokens[10],
|
|
145
159
|
link: tokens[11],
|
|
146
160
|
hash: clickHashes[0],
|
|
147
|
-
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null
|
|
161
|
+
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null,
|
|
162
|
+
trust: tokens.length > 13 ? tokens[13] : 1 /* True */
|
|
148
163
|
};
|
|
149
164
|
return { time: time, event: event, data: clickData };
|
|
150
165
|
case 38 /* Clipboard */:
|
|
@@ -242,17 +257,6 @@ function decode$2(tokens) {
|
|
|
242
257
|
regionData.push(region);
|
|
243
258
|
}
|
|
244
259
|
return { time: time, event: event, data: regionData };
|
|
245
|
-
case 37 /* Box */:
|
|
246
|
-
var boxData = [];
|
|
247
|
-
for (var i = 2; i < tokens.length; i += 3) {
|
|
248
|
-
var box = {
|
|
249
|
-
id: tokens[i],
|
|
250
|
-
width: tokens[i + 1] / 100 /* BoxPrecision */,
|
|
251
|
-
height: tokens[i + 2] / 100 /* BoxPrecision */
|
|
252
|
-
};
|
|
253
|
-
boxData.push(box);
|
|
254
|
-
}
|
|
255
|
-
return { time: time, event: event, data: boxData };
|
|
256
260
|
case 5 /* Discover */:
|
|
257
261
|
case 6 /* Mutation */:
|
|
258
262
|
var lastType = null;
|
|
@@ -558,10 +562,7 @@ function decode(input) {
|
|
|
558
562
|
payload.visibility.push(decode$3(entry));
|
|
559
563
|
break;
|
|
560
564
|
case 37 /* Box */:
|
|
561
|
-
|
|
562
|
-
payload.box = [];
|
|
563
|
-
}
|
|
564
|
-
payload.box.push(decode$2(entry));
|
|
565
|
+
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
565
566
|
break;
|
|
566
567
|
case 7 /* Region */:
|
|
567
568
|
if (payload.region === undefined) {
|
|
@@ -594,6 +595,12 @@ function decode(input) {
|
|
|
594
595
|
}
|
|
595
596
|
payload.log.push(decode$4(entry));
|
|
596
597
|
break;
|
|
598
|
+
case 41 /* Fraud */:
|
|
599
|
+
if (payload.fraud === undefined) {
|
|
600
|
+
payload.fraud = [];
|
|
601
|
+
}
|
|
602
|
+
payload.fraud.push(decode$4(entry));
|
|
603
|
+
break;
|
|
597
604
|
case 29 /* Navigation */:
|
|
598
605
|
if (payload.navigation === undefined) {
|
|
599
606
|
payload.navigation = [];
|
|
@@ -604,6 +611,12 @@ function decode(input) {
|
|
|
604
611
|
case 32 /* ImageError */:
|
|
605
612
|
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
606
613
|
break;
|
|
614
|
+
case 40 /* Extract */:
|
|
615
|
+
if (payload.extract === undefined) {
|
|
616
|
+
payload.extract = [];
|
|
617
|
+
}
|
|
618
|
+
payload.extract.push(decode$5(entry));
|
|
619
|
+
break;
|
|
607
620
|
default:
|
|
608
621
|
console.error("No handler for Event: ".concat(JSON.stringify(entry)));
|
|
609
622
|
break;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clarity-decode",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.35",
|
|
4
4
|
"description": "An analytics library that uses web page interactions to generate aggregated insights",
|
|
5
5
|
"author": "Microsoft Corp.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"url": "https://github.com/Microsoft/clarity/issues"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"clarity-js": "^0.6.
|
|
29
|
+
"clarity-js": "^0.6.35"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@rollup/plugin-commonjs": "^19.0.1",
|
package/src/clarity.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Data, version } from "clarity-js";
|
|
2
2
|
import { BaselineEvent, CustomEvent, DecodedPayload, DecodedVersion, DimensionEvent } from "../types/data";
|
|
3
|
-
import { LimitEvent, MetricEvent, PingEvent, SummaryEvent, UpgradeEvent, UploadEvent, VariableEvent } from "../types/data";
|
|
4
|
-
import { LogEvent, ScriptErrorEvent } from "../types/diagnostic";
|
|
3
|
+
import { LimitEvent, MetricEvent, PingEvent, SummaryEvent, UpgradeEvent, UploadEvent, VariableEvent, ExtractEvent } from "../types/data";
|
|
4
|
+
import { FraudEvent, LogEvent, ScriptErrorEvent } from "../types/diagnostic";
|
|
5
5
|
import { ClickEvent, ClipboardEvent, InputEvent, PointerEvent, ResizeEvent, ScrollEvent, SubmitEvent, TimelineEvent } from "../types/interaction";
|
|
6
6
|
import { SelectionEvent, UnloadEvent, VisibilityEvent } from "../types/interaction";
|
|
7
|
-
import {
|
|
7
|
+
import { DocumentEvent, DomEvent, RegionEvent } from "../types/layout";
|
|
8
8
|
import { NavigationEvent } from "../types/performance";
|
|
9
9
|
|
|
10
10
|
import * as data from "./data";
|
|
@@ -140,8 +140,7 @@ export function decode(input: string): DecodedPayload {
|
|
|
140
140
|
payload.visibility.push(interaction.decode(entry) as VisibilityEvent);
|
|
141
141
|
break;
|
|
142
142
|
case Data.Event.Box:
|
|
143
|
-
|
|
144
|
-
payload.box.push(layout.decode(entry) as BoxEvent);
|
|
143
|
+
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
145
144
|
break;
|
|
146
145
|
case Data.Event.Region:
|
|
147
146
|
if (payload.region === undefined) { payload.region = []; }
|
|
@@ -164,6 +163,10 @@ export function decode(input: string): DecodedPayload {
|
|
|
164
163
|
if (payload.log === undefined) { payload.log = []; }
|
|
165
164
|
payload.log.push(diagnostic.decode(entry) as LogEvent);
|
|
166
165
|
break;
|
|
166
|
+
case Data.Event.Fraud:
|
|
167
|
+
if (payload.fraud === undefined) { payload.fraud = []; }
|
|
168
|
+
payload.fraud.push(diagnostic.decode(entry) as FraudEvent);
|
|
169
|
+
break;
|
|
167
170
|
case Data.Event.Navigation:
|
|
168
171
|
if (payload.navigation === undefined) { payload.navigation = []; }
|
|
169
172
|
payload.navigation.push(performance.decode(entry) as NavigationEvent);
|
|
@@ -172,6 +175,10 @@ export function decode(input: string): DecodedPayload {
|
|
|
172
175
|
case Data.Event.ImageError:
|
|
173
176
|
/* Deprecated - Intentionally, no-op. For backward compatibility. */
|
|
174
177
|
break;
|
|
178
|
+
case Data.Event.Extract:
|
|
179
|
+
if (payload.extract === undefined) { payload.extract = []; }
|
|
180
|
+
payload.extract.push(data.decode(entry) as ExtractEvent);
|
|
181
|
+
break;
|
|
175
182
|
default:
|
|
176
183
|
console.error(`No handler for Event: ${JSON.stringify(entry)}`);
|
|
177
184
|
break;
|
package/src/data.ts
CHANGED
|
@@ -67,6 +67,13 @@ export function decode(tokens: Data.Token[]): DataEvent {
|
|
|
67
67
|
variables[tokens[v++] as string] = typeof tokens[v + 1] == Constant.String ? [tokens[v++] as string] : tokens[v++] as string[];
|
|
68
68
|
}
|
|
69
69
|
return { time, event, data: variables };
|
|
70
|
+
case Data.Event.Extract:
|
|
71
|
+
let e = 2; // Start from 3rd index since first two are used for time & event
|
|
72
|
+
let extract: Data.ExtractData = {};
|
|
73
|
+
while (e < tokens.length) {
|
|
74
|
+
extract[tokens[e++] as string | number] = tokens[e++] as string;
|
|
75
|
+
}
|
|
76
|
+
return { time, event, data: extract };
|
|
70
77
|
}
|
|
71
78
|
return null;
|
|
72
79
|
}
|
package/src/diagnostic.ts
CHANGED
|
@@ -23,6 +23,13 @@ export function decode(tokens: Data.Token[]): DiagnosticEvent {
|
|
|
23
23
|
severity: tokens[6] as number
|
|
24
24
|
};
|
|
25
25
|
return { time, event, data: log };
|
|
26
|
+
case Data.Event.Fraud:
|
|
27
|
+
let fraud: Diagnostic.FraudData = {
|
|
28
|
+
id: tokens[2] as number,
|
|
29
|
+
target: tokens[3] as number,
|
|
30
|
+
hash: tokens[4] as string
|
|
31
|
+
};
|
|
32
|
+
return { time, event, data: fraud };
|
|
26
33
|
}
|
|
27
34
|
return null;
|
|
28
35
|
}
|
package/src/interaction.ts
CHANGED
|
@@ -34,7 +34,8 @@ export function decode(tokens: Data.Token[]): InteractionEvent {
|
|
|
34
34
|
text: tokens[10] as string,
|
|
35
35
|
link: tokens[11] as string,
|
|
36
36
|
hash: clickHashes[0],
|
|
37
|
-
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null
|
|
37
|
+
hashBeta: clickHashes.length > 0 ? clickHashes[1] : null,
|
|
38
|
+
trust: tokens.length > 13 ? tokens[13] as number : Data.BooleanFlag.True
|
|
38
39
|
};
|
|
39
40
|
return { time, event, data: clickData };
|
|
40
41
|
case Data.Event.Clipboard:
|
package/src/layout.ts
CHANGED
|
@@ -44,17 +44,6 @@ export function decode(tokens: Data.Token[]): LayoutEvent {
|
|
|
44
44
|
regionData.push(region);
|
|
45
45
|
}
|
|
46
46
|
return { time, event, data: regionData };
|
|
47
|
-
case Data.Event.Box:
|
|
48
|
-
let boxData: Layout.BoxData[] = [];
|
|
49
|
-
for (let i = 2; i < tokens.length; i += 3) {
|
|
50
|
-
let box: Layout.BoxData = {
|
|
51
|
-
id: tokens[i] as number,
|
|
52
|
-
width: tokens[i + 1] as number / Data.Setting.BoxPrecision,
|
|
53
|
-
height: tokens[i + 2] as number / Data.Setting.BoxPrecision
|
|
54
|
-
};
|
|
55
|
-
boxData.push(box);
|
|
56
|
-
}
|
|
57
|
-
return { time, event, data: boxData };
|
|
58
47
|
case Data.Event.Discover:
|
|
59
48
|
case Data.Event.Mutation:
|
|
60
49
|
let lastType = null;
|
package/types/data.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Data } from "clarity-js";
|
|
2
|
-
import { DiagnosticEvent, LogEvent, ScriptErrorEvent } from "./diagnostic";
|
|
2
|
+
import { DiagnosticEvent, FraudEvent, LogEvent, ScriptErrorEvent } from "./diagnostic";
|
|
3
3
|
import { ClickEvent, ClipboardEvent, InputEvent, InteractionEvent, PointerEvent, ResizeEvent, SubmitEvent } from "./interaction";
|
|
4
4
|
import { ScrollEvent, SelectionEvent, TimelineEvent, UnloadEvent, VisibilityEvent } from "./interaction";
|
|
5
|
-
import {
|
|
5
|
+
import { DocumentEvent, DomEvent, LayoutEvent, RegionEvent } from "./layout";
|
|
6
6
|
import { NavigationEvent, PerformanceEvent } from "./performance";
|
|
7
7
|
import { PartialEvent } from "./core";
|
|
8
8
|
|
|
@@ -28,6 +28,7 @@ export interface LimitEvent extends PartialEvent { data: Data.LimitData; }
|
|
|
28
28
|
export interface SummaryEvent extends PartialEvent { data: Data.SummaryData; }
|
|
29
29
|
export interface UpgradeEvent extends PartialEvent { data: Data.UpgradeData; }
|
|
30
30
|
export interface UploadEvent extends PartialEvent { data: Data.UploadData; }
|
|
31
|
+
export interface ExtractEvent extends PartialEvent { data: Data.ExtractData; }
|
|
31
32
|
export interface DataEvent extends PartialEvent {
|
|
32
33
|
data: Data.BaselineData |
|
|
33
34
|
Data.DimensionData |
|
|
@@ -38,7 +39,8 @@ export interface DataEvent extends PartialEvent {
|
|
|
38
39
|
Data.LimitData |
|
|
39
40
|
Data.SummaryData |
|
|
40
41
|
Data.UpgradeData |
|
|
41
|
-
Data.UploadData
|
|
42
|
+
Data.UploadData |
|
|
43
|
+
Data.ExtractData;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
export type DecodedEvent = DataEvent | DiagnosticEvent | InteractionEvent | LayoutEvent | PerformanceEvent;
|
|
@@ -65,15 +67,16 @@ export interface DecodedPayload {
|
|
|
65
67
|
upgrade?: UpgradeEvent[];
|
|
66
68
|
upload?: UploadEvent[];
|
|
67
69
|
visibility?: VisibilityEvent[];
|
|
68
|
-
box?: BoxEvent[];
|
|
69
70
|
region?: RegionEvent[];
|
|
70
71
|
dom?: DomEvent[];
|
|
71
72
|
doc?: DocumentEvent[];
|
|
72
73
|
navigation?: NavigationEvent[];
|
|
73
74
|
log?: LogEvent[];
|
|
75
|
+
fraud?: FraudEvent[];
|
|
74
76
|
baseline?: BaselineEvent[];
|
|
75
77
|
variable?: VariableEvent[];
|
|
76
78
|
custom?: CustomEvent[];
|
|
79
|
+
extract?: ExtractEvent[];
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
export interface DecodedVersion {
|
package/types/diagnostic.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { PartialEvent } from "./core";
|
|
|
3
3
|
|
|
4
4
|
export interface ScriptErrorEvent extends PartialEvent { data: Diagnostic.ScriptErrorData; }
|
|
5
5
|
export interface LogEvent extends PartialEvent { data: Diagnostic.LogData; }
|
|
6
|
+
export interface FraudEvent extends PartialEvent { data: Diagnostic.FraudData; }
|
|
7
|
+
|
|
6
8
|
export interface DiagnosticEvent extends PartialEvent {
|
|
7
|
-
data: Diagnostic.LogData | Diagnostic.ScriptErrorData;
|
|
9
|
+
data: Diagnostic.FraudData | Diagnostic.LogData | Diagnostic.ScriptErrorData;
|
|
8
10
|
}
|
package/types/layout.d.ts
CHANGED
|
@@ -4,9 +4,8 @@ import { PartialEvent } from "./core";
|
|
|
4
4
|
export interface RegionEvent extends PartialEvent { data: Layout.RegionData[]; }
|
|
5
5
|
export interface DocumentEvent extends PartialEvent { data: Layout.DocumentData; }
|
|
6
6
|
export interface DomEvent extends PartialEvent { data: DomData[]; }
|
|
7
|
-
export interface BoxEvent extends PartialEvent { data: Layout.BoxData[]; }
|
|
8
7
|
export interface LayoutEvent extends PartialEvent {
|
|
9
|
-
data: Layout.RegionData[] | Layout.DocumentData | DomData[]
|
|
8
|
+
data: Layout.RegionData[] | Layout.DocumentData | DomData[];
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
/* Redeclare enums */
|