clarity-js 0.8.10-beta → 0.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.lintstagedrc.yml +3 -0
- package/biome.json +43 -0
- package/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +3581 -3019
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +3581 -3019
- package/build/clarity.performance.js +1 -1
- package/package.json +17 -10
- package/rollup.config.ts +84 -88
- package/src/clarity.ts +34 -28
- package/src/core/config.ts +2 -2
- package/src/core/event.ts +36 -32
- package/src/core/hash.ts +5 -6
- package/src/core/history.ts +10 -11
- package/src/core/index.ts +21 -11
- package/src/core/measure.ts +9 -5
- package/src/core/report.ts +9 -5
- package/src/core/scrub.ts +29 -20
- package/src/core/task.ts +73 -45
- package/src/core/time.ts +3 -3
- package/src/core/timeout.ts +2 -2
- package/src/core/version.ts +1 -1
- package/src/data/baseline.ts +60 -55
- package/src/data/consent.ts +2 -2
- package/src/data/custom.ts +8 -13
- package/src/data/dimension.ts +11 -7
- package/src/data/encode.ts +36 -30
- package/src/data/envelope.ts +38 -38
- package/src/data/extract.ts +86 -77
- package/src/data/index.ts +10 -6
- package/src/data/limit.ts +1 -1
- package/src/data/metadata.ts +305 -266
- package/src/data/metric.ts +18 -8
- package/src/data/ping.ts +8 -4
- package/src/data/signal.ts +18 -18
- package/src/data/summary.ts +6 -4
- package/src/data/token.ts +10 -8
- package/src/data/upgrade.ts +7 -3
- package/src/data/upload.ts +100 -49
- package/src/data/variable.ts +27 -20
- package/src/diagnostic/encode.ts +2 -2
- package/src/diagnostic/fraud.ts +3 -4
- package/src/diagnostic/internal.ts +11 -5
- package/src/diagnostic/script.ts +12 -8
- package/src/global.ts +1 -1
- package/src/insight/blank.ts +4 -4
- package/src/insight/encode.ts +23 -17
- package/src/insight/snapshot.ts +57 -37
- package/src/interaction/change.ts +9 -6
- package/src/interaction/click.ts +34 -28
- package/src/interaction/clipboard.ts +2 -2
- package/src/interaction/encode.ts +35 -31
- package/src/interaction/input.ts +11 -9
- package/src/interaction/pointer.ts +41 -30
- package/src/interaction/resize.ts +5 -5
- package/src/interaction/scroll.ts +20 -17
- package/src/interaction/selection.ts +12 -8
- package/src/interaction/submit.ts +2 -2
- package/src/interaction/timeline.ts +13 -9
- package/src/interaction/unload.ts +1 -1
- package/src/interaction/visibility.ts +2 -2
- package/src/layout/animation.ts +47 -41
- package/src/layout/discover.ts +5 -5
- package/src/layout/document.ts +31 -19
- package/src/layout/dom.ts +141 -91
- package/src/layout/encode.ts +52 -37
- package/src/layout/mutation.ts +321 -318
- package/src/layout/node.ts +104 -81
- package/src/layout/offset.ts +7 -6
- package/src/layout/region.ts +66 -43
- package/src/layout/schema.ts +15 -8
- package/src/layout/selector.ts +47 -25
- package/src/layout/style.ts +44 -36
- package/src/layout/target.ts +14 -10
- package/src/layout/traverse.ts +17 -11
- package/src/performance/blank.ts +1 -1
- package/src/performance/encode.ts +4 -4
- package/src/performance/interaction.ts +58 -70
- package/src/performance/navigation.ts +2 -2
- package/src/performance/observer.ts +59 -26
- package/src/queue.ts +16 -9
- package/tsconfig.json +2 -2
- package/tslint.json +25 -32
- package/types/core.d.ts +13 -13
- package/types/data.d.ts +32 -29
- package/types/diagnostic.d.ts +1 -1
- package/types/interaction.d.ts +5 -4
- package/types/layout.d.ts +36 -21
- package/types/performance.d.ts +6 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return mt},get start(){return gt},get stop(){return yt},get track(){return lt}}),e=Object.freeze({__proto__:null,get check(){return Et},get compute(){return Mt},get data(){return st},get start(){return _t},get stop(){return Ot},get trigger(){return It}}),n=Object.freeze({__proto__:null,get compute(){return At},get data(){return Tt},get log(){return Ct},get reset(){return qt},get start(){return zt},get stop(){return $t},get updates(){return jt}}),o=Object.freeze({__proto__:null,get callback(){return Wt},get callbacks(){return Dt},get clear(){return Yt},get consent(){return Bt},get data(){return Nt},get electron(){return Rt},get id(){return Vt},get metadata(){return Lt},get save(){return Jt},get shortid(){return Gt},get start(){return Ut},get stop(){return Xt}}),r=Object.freeze({__proto__:null,get data(){return re},get envelope(){return ue},get start(){return ae},get stop(){return ie}});let a={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}let u=0;function l(t=null){let e=t&&t.timeStamp>0?t.timeStamp:performance.now(),n=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(e+n-u),0)}let s="0.8.10-beta";const c=255;let d=!0,p=null,f=null,h=null;function g(t,e=!1,n=!1){let o=t;if(e)o="https://Electron";else{let e=a.drop;if(e&&e.length>0&&t&&t.indexOf("?")>0){let[n,r]=t.split("?"),a="*na*";o=n+"?"+r.split("&").map((t=>e.some((e=>0===t.indexOf(`${e}=`)))?`${t.split("=")[0]}=${a}`:t)).join("&")}}return n&&(o=o.substring(0,c)),o}function m(t,e,n){return function(){if(d&&null===p)try{p=new RegExp("\\p{N}","gu"),f=new RegExp("\\p{L}","gu"),h=new RegExp("\\p{Sc}","gu")}catch(t){d=!1}}(),t?t.replace(f,e).replace(p,n):t}let y=[],v=null;function w(){}let k=[];function b(){}function S(){}var _=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:v,hashText:b,keys:k,log:w,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:y,stop:function(){},trigger:S});let E=null;function I(t,e){$e()&&t&&"string"==typeof t&&t.length<255&&(E=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},St(24))}let M,O=null,T=null;function j(t){t in O||(O[t]=0),t in T||(T[t]=0),O[t]++,T[t]++}function x(t,e){null!==e&&(t in O||(O[t]=0),t in T||(T[t]=0),O[t]+=e,T[t]+=e)}function z(t,e){null!==e&&!1===isNaN(e)&&(t in O||(O[t]=0),(e>O[t]||0===O[t])&&(T[t]=e,O[t]=e))}function $(t,e,n){return window.setTimeout(ce(t),e,n)}function C(t){return window.clearTimeout(t)}let A=0,q=0,P=null;function N(){P&&C(P),P=$(D,q),A=l()}function D(){let t=l();M={gap:t-A},St(25),M.gap<3e5?P=$(D,q):je&&(I("clarity","suspend"),en(),["mousemove","touchstart"].forEach((t=>pe(document,t,Ce))),["resize","scroll","pageshow"].forEach((t=>pe(window,t,Ce))))}var R=Object.freeze({__proto__:null,get data(){return M},reset:N,start:function(){q=6e4,A=0},stop:function(){C(P),A=0,q=0}});let H=null;function U(t){$e()&&a.lean&&(a.lean=!1,H={key:t},Wt(),Jt(),a.upgrade&&a.upgrade(t),St(3),a.lite)}var X=Object.freeze({__proto__:null,get data(){return H},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),H=null},stop:function(){H=null},upgrade:U});let L=null;function V(t,e){Y(t,"string"==typeof e?[e]:e)}async function B(t,e=null,n=null,o=null){let r={userId:await Z(t),userHint:o||(a=t,a&&a.length>=5?`${a.substring(0,2)}${m(a.substring(2),"*","*")}`:m(a,"*","*"))};var a;return Y("userId",[r.userId]),Y("userHint",[r.userHint]),Y("userType",[F(t)]),e&&(Y("sessionId",[e]),r.sessionId=e),n&&(Y("pageId",[n]),r.pageId=n),r}function Y(t,e){if($e()&&t&&e&&"string"==typeof t&&t.length<255){let n=t in L?L[t]:[];for(let t=0;t<e.length;t++)"string"==typeof e[t]&&e[t].length<255&&n.push(e[t]);L[t]=n}}function W(){St(34)}function J(){L={}}async function Z(t){try{if(crypto&&t){const e=await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t));return Array.prototype.map.call(new Uint8Array(e),(t=>("00"+t.toString(16)).slice(-2))).join("")}return""}catch(t){return""}}function F(t){return t&&t.indexOf("@")>0?"email":"string"}const G="CompressionStream"in window;let K=null;function Q(t){try{if(!K)return;const e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((t=>{K(t)}))}catch(t){}}const tt=[_,n,Object.freeze({__proto__:null,compute:W,get data(){return L},identify:B,reset:J,set:V,start:function(){J()},stop:function(){J()}}),e,_,o,r,t,R,X,_];function et(){O={},T={},j(5),tt.forEach((t=>ce(t.start)()))}function nt(){tt.slice().reverse().forEach((t=>ce(t.stop)())),O={},T={}}function ot(){W(),At(),St(0),Mt()}let rt,at,it,ut,lt,st,ct=0,dt=0,pt=null,ft=0,ht=!1;function gt(){ut=!0,ct=0,dt=0,ht=!1,ft=0,rt=[],at=[],it={},lt=null}function mt(t,e=!0){if(ut){let n=l(),o=t.length>1?t[1]:null,r=JSON.stringify(t);switch(a.lean?!ht&&dt+r.length>10485760&&(ht=!0):ht=!1,o){case 5:if(ht)break;ct+=r.length;case 37:case 6:case 43:case 45:case 46:if(ht)break;dt+=r.length,rt.push(r);break;default:at.push(r)}j(25);let i=function(){let t=!1===a.lean&&ct>0?100:re.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();n-ft>2*i&&(C(pt),pt=null),e&&null===pt&&(25!==o&&N(),pt=$(vt,i),ft=n,Et(dt))}}function yt(){C(pt),vt(!0),ct=0,dt=0,ht=!1,ft=0,rt=[],at=[],it={},lt=null,ut=!1}async function vt(t=!1){pt=null;let e=!1===a.lean&&dt>0&&(dt<1048576||re.sequence>0);e&&z(1,1),ot();let n=!0===t,o=function(t){return t.p.length>0?`{"e":${t.e},"a":${t.a},"p":${t.p}}`:`{"e":${t.e},"a":${t.a}}`}({e:JSON.stringify(ue(n)),a:`[${at.join()}]`,p:e?`[${rt.join()}]`:""}),r=n?null:await async function(t){try{if(G){const e=new ReadableStream({async start(e){e.enqueue(t),e.close()}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip"));return new Uint8Array(await async function(t){const e=t.getReader(),n=[];let o=!1,r=[];for(;!o;){if(({done:o,value:r}=await e.read()),o)return n;n.push(...r)}return n}(e))}}catch(t){}return null}(o);x(2,r?r.length:o.length),wt(o,r,re.sequence,n),at=[],e&&(rt=[],dt=0,ct=0,ht=!1)}function wt(t,e,n,o=!1){if("string"==typeof a.upload){const r=a.upload;let i=!1;if(o&&"sendBeacon"in navigator)try{i=navigator.sendBeacon.bind(navigator)(r,t),i&&bt(n)}catch(t){}if(!1===i){n in it?it[n].attempts++:it[n]={data:t,attempts:1};let o=new XMLHttpRequest;o.open("POST",r,!0),o.timeout=15e3,o.ontimeout=()=>{se(new Error(`Timeout : ${r}`))},null!==n&&(o.onreadystatechange=()=>{ce(kt)(o,n)}),o.withCredentials=!0,e?(o.setRequestHeader("Accept","application/x-clarity-gzip"),o.send(e)):o.send(t)}}else if(a.upload){(0,a.upload)(t),bt(n)}}function kt(t,e){var n=it[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?It(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),wt(n.data,null,e)):(lt={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&St(2),200===t.status&&t.responseText&&function(t){let e=t&&t.length>0?t.split("\n"):[];for(var n of e){let t=n&&n.length>0?n.split(/ (.*)/):[""];switch(t[0]){case"END":It(6);break;case"UPGRADE":U("Auto");break;case"ACTION":a.action&&t.length>1&&a.action(t[1]);break;case"EXTRACT":t.length>1&&t[1];break;case"SIGNAL":t.length>1&&Q(t[1])}}}(t.responseText),0===t.status&&(wt(n.data,null,e,!0),It(3)),t.status>=200&&t.status<=208&&bt(e),delete it[e]))}function bt(t){1===t&&(Jt(),Wt())}function St(t){let e=[l(),t];switch(t){case 4:let t=y;t&&(e=[t.time,t.event],e.push(t.data.visible),e.push(t.data.docWidth),e.push(t.data.docHeight),e.push(t.data.screenWidth),e.push(t.data.screenHeight),e.push(t.data.scrollX),e.push(t.data.scrollY),e.push(t.data.pointerX),e.push(t.data.pointerY),e.push(t.data.activityTime),e.push(t.data.scrollTime),e.push(t.data.pointerTime),e.push(t.data.moveX),e.push(t.data.moveY),e.push(t.data.moveTime),e.push(t.data.downX),e.push(t.data.downY),e.push(t.data.downTime),e.push(t.data.upX),e.push(t.data.upY),e.push(t.data.upTime),e.push(t.data.pointerPrevX),e.push(t.data.pointerPrevY),e.push(t.data.pointerPrevTime),mt(e,!1));break;case 25:e.push(M.gap),mt(e);break;case 35:e.push(st.check),mt(e,!1);break;case 3:e.push(H.key),mt(e);break;case 2:e.push(lt.sequence),e.push(lt.attempts),e.push(lt.status),mt(e,!1);break;case 24:E.key&&e.push(E.key),e.push(E.value),mt(e);break;case 34:let n=Object.keys(L);if(n.length>0){for(let t of n)e.push(t),e.push(L[t]);J(),mt(e,!1)}break;case 0:let o=Object.keys(T);if(o.length>0){for(let t of o){let n=parseInt(t,10);e.push(n),e.push(Math.round(T[t]))}T={},mt(e,!1)}break;case 1:let r=Object.keys(jt);if(r.length>0){for(let t of r){let n=parseInt(t,10);e.push(n),e.push(jt[t])}qt(),mt(e,!1)}break;case 36:let a=Object.keys(v);if(a.length>0){for(let t of a){let n=parseInt(t,10);e.push(n),e.push([].concat(...v[t]))}mt(e,!1)}break;case 40:k.forEach((t=>{e.push(t);let n=[];for(let e in v[t]){let o=parseInt(e,10);n.push(o),n.push(v[t][e])}e.push(n)})),mt(e,!1)}}function _t(){st={check:0}}function Et(t){if(0===st.check){let e=st.check;e=re.sequence>=128?1:e,e=re.pageNum>=128?7:e,e=l()>72e5?2:e,e=t>10485760?2:e,e!==st.check&&It(e)}}function It(t){st.check=t,5!==t&&(Yt(),en())}function Mt(){0!==st.check&&St(35)}function Ot(){st=null}let Tt=null,jt=null,xt=!1;function zt(){Tt={},jt={},xt=!1}function $t(){Tt={},jt={},xt=!1}function Ct(t,e){if(e&&(e=`${e}`,t in Tt||(Tt[t]=[]),Tt[t].indexOf(e)<0)){if(Tt[t].length>128)return void(xt||(xt=!0,It(5)));Tt[t].push(e),t in jt||(jt[t]=[]),jt[t].push(e)}}function At(){St(1)}function qt(){jt={},xt=!1}function Pt(t){Ct(36,t.toString())}let Nt=null,Dt=[],Rt=0,Ht=null;function Ut(){var t,e,n;Ht=null;const o=navigator&&"userAgent"in navigator?navigator.userAgent:"",r=null!==(n=null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone)&&void 0!==n?n:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",l=document&&document.title?document.title:"";Rt=o.indexOf("Electron")>0?1:0;let s=function(){let t={session:Gt(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=te("_clsk",!a.includeSubdomains);if(e){let n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-Kt(n[1])<18e5&&(t.session=n[0],t.count=Kt(n[2])+1,t.upgrade=Kt(n[3]),t.upload=n.length>=6?`https://${n[5]}/${n[4]}`:`https://${n[4]}`)}return t}(),c=Qt(),d=a.projectId||function(t,e=null){let n=0,o=5381,r=o;for(let e=0;e<t.length;e+=2)o=(o<<5)+o^t.charCodeAt(e),e+1<t.length&&(r=(r<<5)+r^t.charCodeAt(e+1));return n=Math.abs(o+11579*r),(e?n%Math.pow(2,e):n).toString(36)}(location.host);Nt={projectId:d,userId:c.id,sessionId:s.session,pageNum:s.count},a.lean=a.track&&null!==s.upgrade?0===s.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&s.upload&&s.upload.length>"https://".length?s.upload:a.upload,Ct(0,o),Ct(3,l),Ct(1,g(location.href,!!Rt)),Ct(2,document.referrer),Ct(15,function(){let t=Gt();if(a.track&&Zt(window,"sessionStorage")){let e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),Ct(16,document.documentElement.lang),Ct(17,document.dir),Ct(26,`${window.devicePixelRatio}`),Ct(28,c.dob.toString()),Ct(29,c.version.toString()),Ct(33,u),Ct(34,r),Ct(35,i),z(0,s.ts),z(1,0),z(35,Rt),navigator&&(Ct(9,navigator.language),z(33,navigator.hardwareConcurrency),z(32,navigator.maxTouchPoints),z(34,Math.round(navigator.deviceMemory)),function(){let t=navigator.userAgentData;t&&t.getHighEntropyValues?t.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((t=>{var e;Ct(22,t.platform),Ct(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((t=>{Ct(24,t.name+"~"+t.version)})),Ct(25,t.model),z(27,t.mobile?1:0)})):Ct(22,navigator.platform)}()),screen&&(z(14,Math.round(screen.width)),z(15,Math.round(screen.height)),z(16,Math.round(screen.colorDepth)));for(let t of a.cookies){let e=te(t);e&&V(t,e)}!function(t){Pt(t?1:0)}(a.track),Ft(c)}function Xt(){Ht=null,Nt=null,Dt.forEach((t=>{t.called=!1}))}function Lt(t,e=!0,n=!1){let o=a.lean?0:1,r=!1;Nt&&(o||!1===e)&&(t(Nt,!a.lean),r=!0),!n&&r||Dt.push({callback:t,wait:e,recall:n,called:r})}function Vt(){return Nt?[Nt.userId,Nt.sessionId,Nt.pageNum].join("."):""}function Bt(t=!0){if(!t)return a.track=!1,ne("_clsk","",-Number.MAX_VALUE),ne("_clck","",-Number.MAX_VALUE),en(),void window.setTimeout(tn,250);$e()&&(a.track=!0,Ft(Qt(),1),Jt(),Pt(2))}function Yt(){ne("_clsk","",0)}function Wt(){!function(t){if(Dt.length>0)for(let e=0;e<Dt.length;e++){const n=Dt[e];!n.callback||n.called||n.wait&&!t||(n.callback(Nt,!a.lean),n.called=!0,n.recall||(Dt.splice(e,1),e--))}}(a.lean?0:1)}function Jt(){if(!Nt||!a.track)return;let t=Math.round(Date.now()),e=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",n=a.lean?0:1;ne("_clsk",[Nt.sessionId,t,Nt.pageNum,n,e].join("|"),1)}function Zt(t,e){try{return!!t[e]}catch(t){return!1}}function Ft(t,e=null){e=null===e?t.consent:e;let n=Math.ceil((Date.now()+31536e6)/864e5),o=0===t.dob?null===a.dob?0:a.dob:t.dob;if(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==o){ne("_clck",[Nt.userId,2,n.toString(36),e,o].join("|"),365)}}function Gt(){let t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Kt(t,e=10){return parseInt(t,e)}function Qt(){let t={id:Gt(),version:0,expiry:null,consent:0,dob:0},e=te("_clck",!a.includeSubdomains);if(e&&e.length>0){let n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=Kt(n[1])),n.length>2&&(t.expiry=Kt(n[2],36)),n.length>3&&1===Kt(n[3])&&(t.consent=1),n.length>4&&Kt(n[1])>1&&(t.dob=Kt(n[4])),a.track=a.track||1===t.consent,t.id=a.track?n[0]:t.id}return t}function te(t,e=!1){if(Zt(document,"cookie")){let n=document.cookie.split(";");if(n)for(let o=0;o<n.length;o++){let r=n[o].split("=");if(r.length>1&&r[0]&&r[0].trim()===t){let[t,n]=ee(r[1]);for(;t;)[t,n]=ee(n);return e?n.endsWith("~1")?n.substring(0,n.length-2):null:n}}}return null}function ee(t){try{let e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}function ne(t,e,n){if((a.track||""==e)&&(navigator&&navigator.cookieEnabled||Zt(document,"cookie"))){let o=function(t){return encodeURIComponent(t)}(e),r=new Date;r.setDate(r.getDate()+n);let a=`${t}=${o};${r?"expires="+r.toUTCString():""};path=/`;try{if(null===Ht){let n=location.hostname?location.hostname.split("."):[];for(let o=n.length-1;o>=0;o--)if(Ht=`.${n[o]}${Ht||""}`,o<n.length-1&&(document.cookie=`${a};domain=${Ht}`,te(t)===e))return;Ht=""}}catch(t){Ht=""}document.cookie=Ht?`${a};domain=${Ht}`:a}}let oe,re=null;function ae(){const t=Nt;re={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function ie(){re=null}function ue(t){return re.start=re.start+re.duration,re.duration=l()-re.start,re.sequence++,re.upload=t&&"sendBeacon"in navigator?1:0,re.end=t?1:0,re.applicationPlatform=0,re.url=g(location.href,!1,!0),[re.version,re.sequence,re.start,re.duration,re.projectId,re.userId,re.sessionId,re.pageNum,re.upload,re.end,re.applicationPlatform,re.url]}function le(){oe=[]}function se(t){if(oe&&-1===oe.indexOf(t.message)){const e=a.report;if(e&&e.length>0){let n={v:re.version,p:re.projectId,u:re.userId,s:re.sessionId,n:re.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);let o=new XMLHttpRequest;o.open("POST",e,!0),o.send(JSON.stringify(n)),oe.push(t.message)}}return t}function ce(t){return function(){let e=performance.now();try{t.apply(this,arguments)}catch(t){throw se(t)}let n=performance.now()-e;x(4,n),n>30&&(j(7),z(6,n),t.dn||t.name)}}let de=new Map;function pe(t,e,n,o=!1,r=!0){n=ce(n);try{t[i("addEventListener")](e,n,{capture:o,passive:r}),function(t){return de.has(t)}(t)||de.set(t,[]),de.get(t).push({event:e,listener:n,options:{capture:o,passive:r}})}catch(t){}}function fe(){de.forEach(((t,e)=>{!function(t,e){t.forEach((t=>{try{e[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),de.delete(e)}(t,e)})),de=new Map}let he=null,ge=null,me=null,ye=0;function ve(){return!(ye++>20)}function we(){we.dn=1,ye=0,me!==be()&&(en(),window.setTimeout(ke,250))}function ke(){tn(),z(29,1)}function be(){return location.href?location.href.replace(location.hash,""):location.href}let Se=[],_e=null,Ee=null,Ie=null;function Me(){Ee&&(Ie(),Ee=null,null===_e&&Te())}function Oe(){Se=[],_e=null,Ee=null}function Te(){let t=Se.shift();t&&(_e=t,t.task().then((()=>{t.id===Vt()&&(t.resolve(),_e=null,Te())})).catch((e=>{t.id===Vt()&&(e&&(e.name,e.message,e.stack),_e=null,Te())})))}let je=!1;function xe(){je=!0,u=performance.now()+performance.timeOrigin,Oe(),fe(),le(),me=be(),ye=0,pe(window,"popstate",we),null===he&&(he=history.pushState,history.pushState=function(){he.apply(this,arguments),$e()&&ve()&&we()}),null===ge&&(ge=history.replaceState,history.replaceState=function(){ge.apply(this,arguments),$e()&&ve()&&we()})}function ze(){me=null,ye=0,le(),fe(),Oe(),u=0,je=!1}function $e(){return je}function Ce(){Ce.dn=2,tn(),I("clarity","restart")}let Ae=null;function qe(){Ae=null}function Pe(t){Ae={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},async function(t){let e=[l(),t];29===t&&(e.push(Ae.fetchStart),e.push(Ae.connectStart),e.push(Ae.connectEnd),e.push(Ae.requestStart),e.push(Ae.responseStart),e.push(Ae.responseEnd),e.push(Ae.domInteractive),e.push(Ae.domComplete),e.push(Ae.loadEventStart),e.push(Ae.loadEventEnd),e.push(Ae.redirectCount),e.push(Ae.size),e.push(Ae.type),e.push(Ae.protocol),e.push(Ae.encodedSize),e.push(Ae.decodedSize),qe(),mt(e))}(29)}let Ne=0,De=1/0,Re=0,He=0;const Ue=[],Xe=new Map,Le=()=>Ne||0,Ve=()=>{if(!Ue.length)return-1;const t=Math.min(Ue.length-1,Math.floor((Le()-He)/50));return Ue[t].latency},Be=()=>{He=Le(),Ue.length=0,Xe.clear()},Ye=t=>{if(!t.interactionId||t.duration<40)return;(t=>{"interactionCount"in performance?Ne=performance.interactionCount:t.interactionId&&(De=Math.min(De,t.interactionId),Re=Math.max(Re,t.interactionId),Ne=Re?(Re-De)/7+1:0)})(t);const e=Ue[Ue.length-1],n=Xe.get(t.interactionId);if(n||Ue.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{const e={id:t.interactionId,latency:t.duration};Xe.set(e.id,e),Ue.push(e)}Ue.sort(((t,e)=>e.latency-t.latency)),Ue.length>10&&Ue.splice(10).forEach((t=>Xe.delete(t.id)))}};let We;const Je=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Ze(){Ze.dn=26;try{We&&We.disconnect(),We=new PerformanceObserver(ce(Fe));for(let t of Je)PerformanceObserver.supportedEntryTypes.indexOf(t)>=0&&("layout-shift"===t&&x(9,0),We.observe({type:t,buffered:!0}))}catch(t){}}function Fe(t){Fe.dn=27,function(t){let e=!("visibilityState"in document)||"visible"===document.visibilityState;for(let n=0;n<t.length;n++){let o=t[n];switch(o.entryType){case"navigation":Pe(o);break;case"resource":let t=o.name;Ct(4,Ge(t)),t!==a.upload&&t!==a.fallback||z(28,o.duration);break;case"longtask":j(7);break;case"first-input":e&&z(10,o.processingStart-o.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Ye(o),Ct(37,Ve().toString()));break;case"layout-shift":e&&!o.hadRecentInput&&x(9,1e3*o.value);break;case"largest-contentful-paint":e&&z(8,o.startTime)}}}(t.getEntries())}function Ge(t){let e=document.createElement("a");return e.href=t,e.host}var Ke=Object.freeze({__proto__:null,start:function t(){t.dn=25,qe(),function(){navigator&&"connection"in navigator&&Ct(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?pe(window,"load",$.bind(this,Ze,0)):Ze())}()},stop:function(){We&&We.disconnect(),We=null,Be(),qe()}});const Qe=[_,_,_,Ke];function tn(t=null){(function(){try{let t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===je&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}})()&&(!function(t){if(null===t||je)return!1;for(let e in t)e in a&&(a[e]=t[e])}(t),xe(),et(),Qe.forEach((t=>ce(t.start)())),null===t&&an())}function en(){$e()&&(Qe.slice().reverse().forEach((t=>ce(t.stop)())),nt(),ze(),void 0!==on&&(on[rn]=function(){(on[rn].q=on[rn].q||[]).push(arguments),"start"===arguments[0]&&on[rn].q.unshift(on[rn].q.pop())&&an()}))}var nn=Object.freeze({__proto__:null,consent:Bt,event:I,hashText:b,identify:B,metadata:Lt,pause:function(){$e()&&(I("clarity","pause"),null===Ee&&(Ee=new Promise((t=>{Ie=t}))))},resume:function(){$e()&&(Me(),I("clarity","resume"))},set:V,signal:function(t){K=t},start:tn,stop:en,upgrade:U,version:s});const on=window,rn="clarity";function an(){if(void 0!==on){if(on[rn]&&on[rn].v)return console.warn("Error CL001: Multiple Clarity tags detected.");let t=on[rn]&&on[rn].q||[];for(on[rn]=function(t,...e){return nn[t](...e)},on[rn].v=s;t.length>0;)on[rn](...t.shift())}}an()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return bt},get start(){return yt},get stop(){return wt},get track(){return dt}}),n=Object.freeze({__proto__:null,get check(){return Tt},get compute(){return xt},get data(){return pt},get start(){return Ot},get stop(){return jt},get trigger(){return Et}}),e=Object.freeze({__proto__:null,get compute(){return Dt},get data(){return Nt},get log(){return qt},get reset(){return Rt},get start(){return Ct},get stop(){return Pt},get updates(){return zt}}),r=Object.freeze({__proto__:null,get callback(){return Gt},get callbacks(){return Xt},get clear(){return Ft},get consent(){return Zt},get data(){return Ut},get electron(){return Vt},get id(){return Jt},get metadata(){return Wt},get save(){return Kt},get shortid(){return tn},get start(){return Bt},get stop(){return Yt}}),a=Object.freeze({__proto__:null,get data(){return cn},get envelope(){return dn},get start(){return sn},get stop(){return ln}}),o={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=255,c=!0,s=null,l=null;function d(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),c=i[0],s=i[1];r="".concat(c,"?").concat(s.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&"))}}return e&&(r=r.substring(0,u)),r}function p(t,n,e){return function(){if(c&&null===s)try{s=/\p{N}/gu,l=/\p{L}/gu}catch(t){c=!1}}(),t?t.replace(l,n).replace(s,e):t}var f=0;function h(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-f),0)}var v="0.8.10";var g=[],m=null;function y(){}var b=[];function w(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:w,keys:b,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null;function I(t,n){qn()&&t&&"string"==typeof t&&t.length<255&&(_=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Mt(24))}var M,O=null,T=null;function E(t){t in O||(O[t]=0),t in T||(T[t]=0),O[t]++,T[t]++}function x(t,n){null!==n&&(t in O||(O[t]=0),t in T||(T[t]=0),O[t]+=n,T[t]+=n)}function j(t,n){null!==n&&!1===Number.isNaN(n)&&(t in O||(O[t]=0),(n>O[t]||0===O[t])&&(T[t]=n,O[t]=n))}function N(t,n,e){return window.setTimeout(hn(t),n,e)}function z(t){window.clearTimeout(t)}var A=0,C=0,P=null;function q(){P&&z(P),P=N(D,C),A=h()}function D(){var t=h();M={gap:t-A},Mt(25),M.gap<3e5?P=N(D,C):function(){if(An){I("clarity","suspend"),oe();for(var t=0,n=["mousemove","touchstart"];t<n.length;t++){var e=n[t];gn(document,e,Dn)}for(var r=0,a=["resize","scroll","pageshow"];r<a.length;r++){e=a[r];gn(window,e,Dn)}}}()}var R=Object.freeze({__proto__:null,get data(){return M},reset:q,start:function(){C=6e4,A=0},stop:function(){z(P),A=0,C=0}}),H=null;function U(t){qn()&&o.lean&&(o.lean=!1,H={key:t},Gt(),Kt(),o.upgrade&&o.upgrade(t),Mt(3),o.lite)}var X=Object.freeze({__proto__:null,get data(){return H},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),H=null},stop:function(){H=null},upgrade:U});function V(t,n,e,r){return new(e||(e=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var B=null;function Y(t,n){J(t,"string"==typeof n?[n]:n)}function W(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),V(this,void 0,void 0,(function(){var a,o;return L(this,(function(i){switch(i.label){case 0:return o={},[4,G(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(p(u.substring(2),"*","*")):p(u,"*","*")),J("userId",[(a=o).userId]),J("userHint",[a.userHint]),J("userType",[K(t)]),n&&(J("sessionId",[n]),a.sessionId=n),e&&(J("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function J(t,n){if(qn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in B?B[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);B[t]=e}}function Z(){Mt(34)}function F(){B={}}function G(t){return V(this,void 0,void 0,(function(){var n;return L(this,(function(e){switch(e.label){case 0:return e.trys.push([0,3,,4]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return"00".concat(t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return e.sent(),[2,""];case 4:return[2]}}))}))}function K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function $(t){return V(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return V(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,tt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function tt(t){return V(this,void 0,void 0,(function(){var n,e,r,a,o;return L(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var nt=null;function et(t){try{if(!nt)return;for(var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t),e=0,r=n;e<r.length;e++){var a=r[e];nt(a)}}catch(t){}}var rt=[S,e,Object.freeze({__proto__:null,compute:Z,get data(){return B},identify:W,reset:F,set:Y,start:function(){F()},stop:function(){F()}}),n,S,r,a,t,R,X,S];function at(){O={},T={},E(5);for(var t=0,n=rt;t<n.length;t++){hn(n[t].start)()}}function ot(){for(var t=0,n=rt.slice().reverse();t<n.length;t++){hn(n[t].stop)()}O={},T={}}function it(){Z(),Dt(),Mt(0),xt()}var ut,ct,st,lt,dt,pt,ft=0,ht=0,vt=null,gt=0,mt=!1;function yt(){lt=!0,ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null}function bt(t,n){if(void 0===n&&(n=!0),lt){var e=h(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!mt&&ht+a.length>10485760&&(mt=!0):mt=!1,r){case 5:if(mt)break;ft+=a.length;case 37:case 6:case 43:case 45:case 46:if(mt)break;ht+=a.length,ut.push(a);break;default:ct.push(a)}E(25);var i=function(){var t=!1===o.lean&&ft>0?100:cn.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-gt>2*i&&(z(vt),vt=null),n&&null===vt&&(25!==r&&q(),vt=N(kt,i),gt=e,Tt(ht))}}function wt(){z(vt),kt(!0),ft=0,ht=0,mt=!1,gt=0,ut=[],ct=[],st={},dt=null,lt=!1}function kt(t){return void 0===t&&(t=!1),V(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return L(this,(function(l){switch(l.label){case 0:return vt=null,(n=!1===o.lean&&ht>0&&(ht<1048576||cn.sequence>0))&&j(1,1),it(),e=!0===t,r=JSON.stringify(dn(e)),a="[".concat(ct.join(),"]"),i=n?"[".concat(ut.join(),"]"):"",u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,$(u)];case 2:s=l.sent(),l.label=3;case 3:return x(2,(c=s)?c.length:u.length),St(u,c,cn.sequence,e),ct=[],n&&(ut=[],ht=0,ft=0,mt=!1),[2]}}))}))}function St(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof o.upload){var a=o.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(a,t))&&It(e)}catch(t){}if(!1===i){e in st?st[e].attempts++:st[e]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){fn(new Error("".concat("Timeout"," : ").concat(a)))},null!==e&&(u.onreadystatechange=function(){hn(_t)(u,e)}),u.withCredentials=!0,n?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(n)):u.send(t)}}else if(o.upload){(0,o.upload)(t),It(e)}}function _t(t,n){var e=st[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Et(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),St(e.data,null,n)):(dt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Mt(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":Et(6);break;case"UPGRADE":U("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&et(i[1])}}}(t.responseText),0===t.status&&(St(e.data,null,n,!0),Et(3)),t.status>=200&&t.status<=208&&It(n),delete st[n]))}function It(t){1===t&&(Kt(),Gt())}function Mt(t){var n=[h(),t];switch(t){case 4:var e=g;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),bt(n,!1));break;case 25:n.push(M.gap),bt(n);break;case 35:n.push(pt.check),bt(n,!1);break;case 3:n.push(H.key),bt(n);break;case 2:n.push(dt.sequence),n.push(dt.attempts),n.push(dt.status),bt(n,!1);break;case 24:_.key&&n.push(_.key),n.push(_.value),bt(n);break;case 34:var r=Object.keys(B);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(B[i])}F(),bt(n,!1)}break;case 0:var u=Object.keys(T);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var l=s[c],d=Number.parseInt(l,10);n.push(d),n.push(Math.round(T[l]))}T={},bt(n,!1)}break;case 1:var p=Object.keys(zt);if(p.length>0){for(var f=0,v=p;f<v.length;f++){var y=v[f];d=Number.parseInt(y,10);n.push(d),n.push(zt[y])}Rt(),bt(n,!1)}break;case 36:var w=Object.keys(m);if(w.length>0){for(var k=0,S=w;k<S.length;k++){var I=S[k];d=Number.parseInt(I,10);n.push(d),n.push([].concat.apply([],m[I]))}bt(n,!1)}break;case 40:for(var O=b,E=0,x=Array.from(O);E<x.length;E++){I=x[E];n.push(I);var j=[];for(var y in m[I]){d=Number.parseInt(y,10);j.push(d),j.push(m[I][y])}n.push(j)}bt(n,!1)}}function Ot(){pt={check:0}}function Tt(t){if(0===pt.check){var n=pt.check;n=cn.sequence>=128?1:n,n=cn.pageNum>=128?7:n,n=h()>72e5?2:n,(n=t>10485760?2:n)!==pt.check&&Et(n)}}function Et(t){pt.check=t,5!==t&&(Ft(),oe())}function xt(){0!==pt.check&&Mt(35)}function jt(){pt=null}var Nt=null,zt=null,At=!1;function Ct(){Nt={},zt={},At=!1}function Pt(){Nt={},zt={},At=!1}function qt(t,n){if(n){var e="".concat(n);if(t in Nt||(Nt[t]=[]),Nt[t].indexOf(e)<0){if(Nt[t].length>128)return void(At||(At=!0,Et(5)));Nt[t].push(e),t in zt||(zt[t]=[]),zt[t].push(e)}}}function Dt(){Mt(1)}function Rt(){zt={},At=!1}function Ht(t){qt(36,t.toString())}var Ut=null,Xt=[],Vt=0,Lt=null;function Bt(){var t,n,e;Lt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=(null===document||void 0===document?void 0:document.title)?document.title:"";Vt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=rn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-nn(e[1])<18e5&&(t.session=e[0],t.count=nn(e[2])+1,t.upgrade=nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),p=en(),f=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ut={projectId:f,userId:p.id,sessionId:l.session,pageNum:l.count},o.lean=o.track&&null!==l.upgrade?0===l.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&l.upload&&l.upload.length>8?l.upload:o.upload,qt(0,r),qt(3,c),qt(1,d(location.href,!!Vt)),qt(2,document.referrer),qt(15,function(){var t=tn();if(o.track&&Qt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),qt(16,document.documentElement.lang),qt(17,document.dir),qt(26,"".concat(window.devicePixelRatio)),qt(28,p.dob.toString()),qt(29,p.version.toString()),qt(33,u),qt(34,a),qt(35,i),j(0,l.ts),j(1,0),j(35,Vt),navigator&&(qt(9,navigator.language),j(33,navigator.hardwareConcurrency),j(32,navigator.maxTouchPoints),j(34,Math.round(navigator.deviceMemory)),(null==(s=navigator.userAgentData)?void 0:s.getHighEntropyValues)?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){if(qt(22,t.platform),qt(23,t.platformVersion),t.brands)for(var n=0,e=t.brands;n<e.length;n++){var r=e[n];qt(24,r.name+"~"+r.version)}qt(25,t.model),j(27,t.mobile?1:0)})):qt(22,navigator.platform)),screen&&(j(14,Math.round(screen.width)),j(15,Math.round(screen.height)),j(16,Math.round(screen.colorDepth)));for(var h=0,v=o.cookies;h<v.length;h++){var g=v[h],m=rn(g);m&&Y(g,m)}!function(t){Ht(t?1:0)}(o.track),$t(p)}function Yt(){Lt=null,Ut=null;for(var t=0,n=Xt;t<n.length;t++){n[t].called=!1}}function Wt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=o.lean?0:1,a=!1;Ut&&(r||!1===n)&&(t(Ut,!o.lean),a=!0),!e&&a||Xt.push({callback:t,wait:n,recall:e,called:a})}function Jt(){return Ut?[Ut.userId,Ut.sessionId,Ut.pageNum].join("."):""}function Zt(t){if(void 0===t&&(t=!0),!t)return o.track=!1,on("_clsk","",-Number.MAX_VALUE),on("_clck","",-Number.MAX_VALUE),oe(),void window.setTimeout(ae,250);qn()&&(o.track=!0,$t(en(),1),Kt(),Ht(2))}function Ft(){on("_clsk","",0)}function Gt(){!function(t){if(Xt.length>0)for(var n=0;n<Xt.length;n++){var e=Xt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ut,!o.lean),e.called=!0,e.recall||(Xt.splice(n,1),n--))}}(o.lean?0:1)}function Kt(){if(Ut&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;on("_clsk",[Ut.sessionId,t,Ut.pageNum,e,n].join("|"),1)}}function Qt(t,n){try{return!!t[n]}catch(t){return!1}}function $t(t,n){void 0===n&&(n=null);var e=null===n?t.consent:n,r=Math.ceil((Date.now()+31536e6)/864e5),a=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(r-t.expiry)>=1||t.consent!==e||t.dob!==a)&&on("_clck",[Ut.userId,2,r.toString(36),e,a].join("|"),365)}function tn(){var t,n=Math.floor(Math.random()*Math.pow(2,32));return(null===(t=null===window||void 0===window?void 0:window.crypto)||void 0===t?void 0:t.getRandomValues)&&Uint32Array&&(n=window.crypto.getRandomValues(new Uint32Array(1))[0]),n.toString(36)}function nn(t,n){return void 0===n&&(n=10),Number.parseInt(t,n)}function en(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},n=rn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=nn(e[1])),e.length>2&&(t.expiry=nn(e[2],36)),e.length>3&&1===nn(e[3])&&(t.consent=1),e.length>4&&nn(e[1])>1&&(t.dob=nn(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function rn(t,n){var e;if(void 0===n&&(n=!1),Qt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=an(o[1]),u=i[0],c=i[1];u;)u=(e=an(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function an(t){try{var n=decodeURIComponent(t);return[n!==t,n]}catch(t){}return[!1,t]}function on(t,n,e){if((o.track||""===n)&&((null===navigator||void 0===navigator?void 0:navigator.cookieEnabled)||Qt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Lt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(Lt=".".concat(c[s]).concat(Lt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(Lt),rn(t)===n))return;Lt=""}}catch(t){Lt=""}document.cookie=Lt?"".concat(u).concat(";").concat("domain=").concat(Lt):u}}var un,cn=null;function sn(){var t=Ut;cn={version:v,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function ln(){cn=null}function dn(t){return cn.start=cn.start+cn.duration,cn.duration=h()-cn.start,cn.sequence++,cn.upload=t&&"sendBeacon"in navigator?1:0,cn.end=t?1:0,cn.applicationPlatform=0,cn.url=d(location.href,!1,!0),[cn.version,cn.sequence,cn.start,cn.duration,cn.projectId,cn.userId,cn.sessionId,cn.pageNum,cn.upload,cn.end,cn.applicationPlatform,cn.url]}function pn(){un=[]}function fn(t){if(un&&-1===un.indexOf(t.message)){var n=o.report;if(n&&n.length>0){var e={v:cn.version,p:cn.projectId,u:cn.userId,s:cn.sessionId,n:cn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),un.push(t.message)}}return t}function hn(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=performance.now();try{t.apply(this,n)}catch(t){throw fn(t)}var a=performance.now()-r;x(4,a),a>30&&(E(7),j(6,a),"".concat(t.dn||t.name,"-").concat(a))}}var vn=new Map;function gn(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=hn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return vn.has(t)}(t)||vn.set(t,[]),vn.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function mn(){vn.forEach((function(t,n){!function(t,n){for(var e=0,r=t;e<r.length;e++){var a=r[e];try{n[i("removeEventListener")](a.event,a.listener,{capture:a.options.capture,passive:a.options.passive})}catch(t){}}vn.delete(n)}(t,n)})),vn=new Map}var yn=null,bn=null,wn=null,kn=0;function Sn(){return!(kn++>20)}function _n(){_n.dn=1,kn=0,wn!==Mn()&&(oe(),window.setTimeout(In,250))}function In(){ae(),j(29,1)}function Mn(){return location.href?location.href.replace(location.hash,""):location.href}var On=[],Tn=null,En=null,xn=null;function jn(){En&&(xn(),En=null,null===Tn&&zn())}function Nn(){On=[],Tn=null,En=null}function zn(){var t=On.shift();t&&(Tn=t,t.task().then((function(){t.id===Jt()&&(t.resolve(),Tn=null,zn())})).catch((function(n){t.id===Jt()&&(n&&(n.name,n.message,n.stack),Tn=null,zn())})))}var An=!1;function Cn(){An=!0,f=performance.now()+performance.timeOrigin,Nn(),mn(),pn(),wn=Mn(),kn=0,gn(window,"popstate",_n),null===yn&&(yn=history.pushState,history.pushState=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];yn.apply(this,t),qn()&&Sn()&&_n()}),null===bn&&(bn=history.replaceState,history.replaceState=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];bn.apply(this,t),qn()&&Sn()&&_n()})}function Pn(){wn=null,kn=0,pn(),mn(),Nn(),f=0,An=!1}function qn(){return An}function Dn(){Dn.dn=2,ae(),I("clarity","restart")}var Rn=null;function Hn(){Rn=null}function Un(t){Rn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){V(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=h(),e=[n,t],29===t&&(e.push(Rn.fetchStart),e.push(Rn.connectStart),e.push(Rn.connectEnd),e.push(Rn.requestStart),e.push(Rn.responseStart),e.push(Rn.responseEnd),e.push(Rn.domInteractive),e.push(Rn.domComplete),e.push(Rn.loadEventStart),e.push(Rn.loadEventEnd),e.push(Rn.redirectCount),e.push(Rn.size),e.push(Rn.type),e.push(Rn.protocol),e.push(Rn.encodedSize),e.push(Rn.decodedSize),Hn(),bt(e)),[2]}))}))}(29)}var Xn,Vn=0,Ln=Number.POSITIVE_INFINITY,Bn=0,Yn=0,Wn=[],Jn=new Map,Zn=function(){return Vn||0},Fn=function(){if(!Wn.length)return-1;var t=Math.min(Wn.length-1,Math.floor((Zn()-Yn)/50));return Wn[t].latency},Gn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Vn=performance.interactionCount:t.interactionId&&(Ln=Math.min(Ln,t.interactionId),Bn=Math.max(Bn,t.interactionId),Vn=Bn?(Bn-Ln)/7+1:0)}(t);var n=Wn[Wn.length-1],e=Jn.get(t.interactionId);if(e||Wn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Jn.set(r.id,r),Wn.push(r)}if(Wn.sort((function(t,n){return n.latency-t.latency})),Wn.length>10)for(var a=0,o=Wn.splice(10);a<o.length;a++){var i=o[a];Jn.delete(i.id)}}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){Qn.dn=26;try{Xn&&Xn.disconnect(),Xn=new PerformanceObserver(hn($n));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&x(9,0),Xn.observe({type:e,buffered:!0}))}}catch(t){}}function $n(t){$n.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Un(r);break;case"resource":var a=r.name;qt(4,ne(a)),a!==o.upload&&a!==o.fallback||j(28,r.duration);break;case"longtask":E(7);break;case"first-input":n&&r.processingStart&&j(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Gn(r),qt(37,Fn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&x(9,1e3*r.value);break;case"largest-contentful-paint":n&&j(8,r.startTime)}}}(t.getEntries())}function te(){Xn&&Xn.disconnect(),Xn=null,Yn=Zn(),Wn.length=0,Jn.clear()}function ne(t){var n=document.createElement("a");return n.href=t,n.host}var ee=Object.freeze({__proto__:null,start:function t(){t.dn=25,Hn(),function(){navigator&&"connection"in navigator&&qt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?gn(window,"load",N.bind(this,Qn,0)):Qn())}()},stop:function(){te(),Hn()}}),re=[S,S,S,ee];function ae(t){if(void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&!0===navigator.globalPrivacyControl;return!1===An&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()){!function(t){if(null===t||An)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),Cn(),at();for(var n=0,e=re;n<e.length;n++){hn(e[n].start)()}null===t&&se()}}function oe(){if(qn()){for(var t=0,n=re.slice().reverse();t<n.length;t++){hn(n[t].stop)()}ot(),Pn(),void 0!==ue&&(ue[ce]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];ue[ce].q||(ue[ce].q=[]),ue[ce].q.push(t),"start"===t[0]&&ue[ce].q.unshift(ue[ce].q.pop())&&se()})}}var ie=Object.freeze({__proto__:null,consent:Zt,event:I,hashText:w,identify:W,metadata:Wt,pause:function(){qn()&&(I("clarity","pause"),null===En&&(En=new Promise((function(t){xn=t}))))},resume:function(){qn()&&(jn(),I("clarity","resume"))},set:Y,signal:function(t){nt=t},start:ae,stop:oe,upgrade:U,version:v}),ue=window,ce="clarity";function se(){var t;if(void 0!==ue){if(null===(t=ue[ce])||void 0===t?void 0:t.v)return console.warn("Error CL001: Multiple Clarity tags detected.");var n=ue[ce]&&ue[ce].q||[];for(ue[ce]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ie[t].apply(ie,n)},ue[ce].v=v;n.length>0;)ue[ce].apply(ue,n.shift())}}se()}();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clarity-js",
|
|
3
|
-
"version": "0.8.10
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"description": "An analytics library that uses web page interactions to generate aggregated insights",
|
|
5
5
|
"author": "Microsoft Corp.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,24 +29,24 @@
|
|
|
29
29
|
"url": "https://github.com/microsoft/clarity/issues"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@
|
|
33
|
-
"@rollup/plugin-
|
|
34
|
-
"@rollup/plugin-
|
|
35
|
-
"@rollup/plugin-
|
|
36
|
-
"@rollup/plugin-
|
|
32
|
+
"@biomejs/biome": "1.9.4",
|
|
33
|
+
"@rollup/plugin-alias": "^5.1.1",
|
|
34
|
+
"@rollup/plugin-commonjs": "^28.0.3",
|
|
35
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
36
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
37
|
+
"@rollup/plugin-typescript": "^12.1.2",
|
|
37
38
|
"@types/chai": "^4.2.21",
|
|
38
39
|
"@types/mocha": "^10.0.0",
|
|
39
40
|
"@types/resize-observer-browser": "^0.1.6",
|
|
40
41
|
"chai": "^4.2.0",
|
|
41
42
|
"del-cli": "^5.0.0",
|
|
42
43
|
"husky": "^8.0.0",
|
|
43
|
-
"lint-staged": "^
|
|
44
|
+
"lint-staged": "^15.2.9",
|
|
44
45
|
"mocha": "^10.2.0",
|
|
45
46
|
"playwright": "^1.6.2",
|
|
46
47
|
"rollup": "^3.0.0",
|
|
47
48
|
"ts-mocha": "^10.0.0",
|
|
48
49
|
"tslib": "^2.3.0",
|
|
49
|
-
"tslint": "^6.1.3",
|
|
50
50
|
"typescript": "^4.3.5"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
@@ -54,8 +54,15 @@
|
|
|
54
54
|
"build:main": "rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
|
|
55
55
|
"build:clean": "del-cli build/*",
|
|
56
56
|
"test": "ts-mocha -p test/tsconfig.test.json test/stub.test.ts",
|
|
57
|
-
"
|
|
58
|
-
"
|
|
57
|
+
"lint": "biome check --staged",
|
|
58
|
+
"lint:fix": "biome check --write --staged",
|
|
59
|
+
"lint:fix:unsafe": "biome check --write --unsafe --staged",
|
|
60
|
+
"lint:all": "biome check",
|
|
61
|
+
"lint:all:fix": "biome check --write",
|
|
62
|
+
"lint:changed": "biome check --changed",
|
|
63
|
+
"lint:changed:fix": "biome check --changed --write",
|
|
64
|
+
"lint:changed:fix:unsafe": "biome check --changed --write --unsafe",
|
|
65
|
+
"precommit": "lint-staged"
|
|
59
66
|
},
|
|
60
67
|
"husky": {
|
|
61
68
|
"hooks": {
|
package/rollup.config.ts
CHANGED
|
@@ -1,98 +1,94 @@
|
|
|
1
1
|
import alias from "@rollup/plugin-alias";
|
|
2
2
|
import commonjs from "@rollup/plugin-commonjs";
|
|
3
|
-
import resolve from "@rollup/plugin-node-resolve";
|
|
3
|
+
import resolve from "@rollup/plugin-node-resolve";
|
|
4
4
|
import terser from "@rollup/plugin-terser";
|
|
5
5
|
import typescript from "@rollup/plugin-typescript";
|
|
6
|
-
import pkg from "./package.json" assert { type:
|
|
6
|
+
import pkg from "./package.json" assert { type: "json" };
|
|
7
7
|
export default [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
warn(message);
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
input: "src/global.ts",
|
|
26
|
-
output: [ { file: pkg.unpkg, format: "iife", exports: "named" } ],
|
|
27
|
-
onwarn(message, warn) {
|
|
28
|
-
if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
|
|
29
|
-
warn(message);
|
|
8
|
+
{
|
|
9
|
+
input: "src/index.ts",
|
|
10
|
+
output: [
|
|
11
|
+
{ file: pkg.main, format: "cjs", exports: "named" },
|
|
12
|
+
{ file: pkg.module, format: "es", exports: "named" },
|
|
13
|
+
],
|
|
14
|
+
plugins: [resolve(), typescript(), commonjs({ include: ["node_modules/**"] })],
|
|
15
|
+
onwarn(message, warn) {
|
|
16
|
+
if (message.code === "CIRCULAR_DEPENDENCY") {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
warn(message);
|
|
20
|
+
},
|
|
30
21
|
},
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
onwarn(message, warn) {
|
|
42
|
-
if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
|
|
43
|
-
warn(message);
|
|
22
|
+
{
|
|
23
|
+
input: "src/global.ts",
|
|
24
|
+
output: [{ file: pkg.unpkg, format: "iife", exports: "named" }],
|
|
25
|
+
onwarn(message, warn) {
|
|
26
|
+
if (message.code === "CIRCULAR_DEPENDENCY") {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
warn(message);
|
|
30
|
+
},
|
|
31
|
+
plugins: [, resolve(), typescript(), terser({ output: { comments: false } }), commonjs({ include: ["node_modules/**"] })],
|
|
44
32
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
onwarn(message, warn) {
|
|
56
|
-
if (message.code === 'CIRCULAR_DEPENDENCY') { return; }
|
|
57
|
-
warn(message);
|
|
33
|
+
{
|
|
34
|
+
input: "src/global.ts",
|
|
35
|
+
output: [{ file: pkg.extended, format: "iife", exports: "named" }],
|
|
36
|
+
onwarn(message, warn) {
|
|
37
|
+
if (message.code === "CIRCULAR_DEPENDENCY") {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
warn(message);
|
|
41
|
+
},
|
|
42
|
+
plugins: [resolve(), typescript(), terser({ output: { comments: false } }), commonjs({ include: ["node_modules/**"] })],
|
|
58
43
|
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
44
|
+
{
|
|
45
|
+
input: "src/global.ts",
|
|
46
|
+
output: [{ file: pkg.insight, format: "iife", exports: "named" }],
|
|
47
|
+
onwarn(message, warn) {
|
|
48
|
+
if (message.code === "CIRCULAR_DEPENDENCY") {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
warn(message);
|
|
52
|
+
},
|
|
53
|
+
plugins: [
|
|
54
|
+
alias({
|
|
55
|
+
entries: [
|
|
56
|
+
{ find: "@src/layout/style", replacement: "@src/insight/blank" },
|
|
57
|
+
{ find: "@src/layout/document", replacement: "@src/layout/document" },
|
|
58
|
+
{ find: "@src/layout/encode", replacement: "@src/insight/encode" },
|
|
59
|
+
{ find: /@src\/interaction\/(change|clipboard|input|pointer|selection)/, replacement: "@src/insight/blank" },
|
|
60
|
+
{ find: /@src\/layout.*/, replacement: "@src/insight/snapshot" },
|
|
61
|
+
{ find: /@src\/performance.*/, replacement: "@src/insight/blank" },
|
|
62
|
+
],
|
|
63
|
+
}),
|
|
64
|
+
resolve(),
|
|
65
|
+
typescript(),
|
|
66
|
+
terser({ output: { comments: false } }),
|
|
67
|
+
commonjs({ include: ["node_modules/**"] }),
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
input: "src/global.ts",
|
|
72
|
+
output: [{ file: pkg.performance, format: "iife", exports: "named" }],
|
|
73
|
+
onwarn(message, warn) {
|
|
74
|
+
if (message.code === "CIRCULAR_DEPENDENCY") {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
warn(message);
|
|
78
|
+
},
|
|
79
|
+
plugins: [
|
|
80
|
+
alias({
|
|
81
|
+
entries: [
|
|
82
|
+
{ find: /@src\/interaction.*/, replacement: "@src/performance/blank" },
|
|
83
|
+
{ find: /@src\/layout.*/, replacement: "@src/performance/blank" },
|
|
84
|
+
{ find: /@src\/diagnostic.*/, replacement: "@src/performance/blank" },
|
|
85
|
+
{ find: /@src\/data\/(extract|baseline|summary)/, replacement: "@src/performance/blank" },
|
|
86
|
+
],
|
|
87
|
+
}),
|
|
88
|
+
resolve(),
|
|
89
|
+
typescript(),
|
|
90
|
+
terser({ output: { comments: false } }),
|
|
91
|
+
commonjs({ include: ["node_modules/**"] }),
|
|
92
|
+
],
|
|
82
93
|
},
|
|
83
|
-
plugins: [
|
|
84
|
-
alias({
|
|
85
|
-
entries: [
|
|
86
|
-
{ find: /@src\/interaction.*/, replacement: '@src/performance/blank' },
|
|
87
|
-
{ find: /@src\/layout.*/, replacement: '@src/performance/blank' },
|
|
88
|
-
{ find: /@src\/diagnostic.*/, replacement: '@src/performance/blank' },
|
|
89
|
-
{ find: /@src\/data\/(extract|baseline|summary)/, replacement: '@src/performance/blank' }
|
|
90
|
-
]
|
|
91
|
-
}),
|
|
92
|
-
resolve(),
|
|
93
|
-
typescript(),
|
|
94
|
-
terser({output: {comments: false}}),
|
|
95
|
-
commonjs({ include: ["node_modules/**"] })
|
|
96
|
-
]
|
|
97
|
-
}
|
|
98
94
|
];
|
package/src/clarity.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Config, Module } from "@clarity-types/core";
|
|
1
|
+
import type { Config, Module } from "@clarity-types/core";
|
|
2
2
|
import { Constant } from "@clarity-types/data";
|
|
3
|
-
import * as queue from "@src/queue";
|
|
4
3
|
import * as core from "@src/core";
|
|
5
4
|
import measure from "@src/core/measure";
|
|
6
5
|
import * as task from "@src/core/task";
|
|
@@ -10,6 +9,7 @@ import * as diagnostic from "@src/diagnostic";
|
|
|
10
9
|
import * as interaction from "@src/interaction";
|
|
11
10
|
import * as layout from "@src/layout";
|
|
12
11
|
import * as performance from "@src/performance";
|
|
12
|
+
import * as queue from "@src/queue";
|
|
13
13
|
export { version };
|
|
14
14
|
export { consent, event, identify, set, upgrade, metadata, signal } from "@src/data";
|
|
15
15
|
export { hashText } from "@src/layout";
|
|
@@ -17,17 +17,21 @@ export { hashText } from "@src/layout";
|
|
|
17
17
|
const modules: Module[] = [diagnostic, layout, interaction, performance];
|
|
18
18
|
|
|
19
19
|
export function start(config: Config = null): void {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
// Check that browser supports required APIs and we do not attempt to start Clarity multiple times
|
|
21
|
+
if (core.check()) {
|
|
22
|
+
core.config(config);
|
|
23
|
+
core.start();
|
|
24
|
+
data.start();
|
|
25
|
+
for (const x of modules) {
|
|
26
|
+
measure(x.start)();
|
|
27
|
+
}
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
// If it's an internal call to start, without explicit configuration,
|
|
30
|
+
// re-process any newly accumulated items in the queue
|
|
31
|
+
if (config === null) {
|
|
32
|
+
queue.process();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
// By default Clarity is asynchronous and will yield by looking for requestIdleCallback.
|
|
@@ -36,26 +40,28 @@ export function start(config: Config = null): void {
|
|
|
36
40
|
// we do allow external clients to manually pause Clarity for that short burst of time and minimize
|
|
37
41
|
// performance impact even further. For reference, we are talking single digit milliseconds optimization here, not seconds.
|
|
38
42
|
export function pause(): void {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
if (core.active()) {
|
|
44
|
+
data.event(Constant.Clarity, Constant.Pause);
|
|
45
|
+
task.pause();
|
|
46
|
+
}
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
// This is how external clients can get out of pause state, and resume Clarity to continue monitoring the page
|
|
46
50
|
export function resume(): void {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
if (core.active()) {
|
|
52
|
+
task.resume();
|
|
53
|
+
data.event(Constant.Clarity, Constant.Resume);
|
|
54
|
+
}
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
export function stop(): void {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
if (core.active()) {
|
|
59
|
+
// Stop modules in the reverse order of their initialization and start queuing up items again
|
|
60
|
+
for (const x of modules.slice().reverse()) {
|
|
61
|
+
measure(x.stop)();
|
|
62
|
+
}
|
|
63
|
+
data.stop();
|
|
64
|
+
core.stop();
|
|
65
|
+
queue.setup();
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/core/config.ts
CHANGED
package/src/core/event.ts
CHANGED
|
@@ -1,53 +1,57 @@
|
|
|
1
|
-
import { BrowserEvent, Constant } from "@clarity-types/core";
|
|
1
|
+
import { type BrowserEvent, Constant } from "@clarity-types/core";
|
|
2
2
|
import api from "./api";
|
|
3
3
|
import measure from "./measure";
|
|
4
4
|
|
|
5
5
|
let bindings: Map<EventTarget, BrowserEvent[]> = new Map();
|
|
6
6
|
|
|
7
|
-
export function bind(target: EventTarget, event: string, listener: EventListener, capture
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
export function bind(target: EventTarget, event: string, listener: EventListener, capture = false, passive = true): void {
|
|
8
|
+
// biome-ignore lint/style/noParameterAssign: intentionally reassigning the event listener for caller
|
|
9
|
+
listener = measure(listener) as EventListener;
|
|
10
|
+
// Wrapping following lines inside try / catch to cover edge cases where we might try to access an inaccessible element.
|
|
11
|
+
// E.g. Iframe may start off as same-origin but later turn into cross-origin, and the following lines will throw an exception.
|
|
12
|
+
try {
|
|
13
|
+
target[api(Constant.AddEventListener)](event, listener, { capture, passive });
|
|
14
|
+
if (!has(target)) {
|
|
15
|
+
bindings.set(target, []);
|
|
16
|
+
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
bindings.get(target).push({ event, listener, options: { capture, passive } });
|
|
19
|
+
} catch {
|
|
20
|
+
/* do nothing */
|
|
21
|
+
}
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export function reset(): void {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
// Walk through existing list of bindings and remove them all
|
|
26
|
+
bindings.forEach((bindingsPerTarget: BrowserEvent[], target: EventTarget) => {
|
|
27
|
+
resetByTarget(bindingsPerTarget, target);
|
|
28
|
+
});
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
bindings = new Map();
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
export function unbind(target: EventTarget) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
if (!has(target)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
resetByTarget(bindings.get(target), target);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
export function has(target: EventTarget): boolean {
|
|
40
|
-
|
|
41
|
+
return bindings.has(target);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
function resetByTarget(bindingsPerTarget: BrowserEvent[], target: EventTarget): void {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
for (const binding of bindingsPerTarget) {
|
|
46
|
+
// Wrapping inside try / catch to avoid situations where the element may be destroyed before we get a chance to unbind
|
|
47
|
+
try {
|
|
48
|
+
target[api(Constant.RemoveEventListener)](binding.event, binding.listener, {
|
|
49
|
+
capture: binding.options.capture,
|
|
50
|
+
passive: binding.options.passive,
|
|
51
|
+
});
|
|
52
|
+
} catch {
|
|
53
|
+
/* do nothing */
|
|
54
|
+
}
|
|
50
55
|
}
|
|
51
|
-
|
|
52
|
-
bindings.delete(target);
|
|
56
|
+
bindings.delete(target);
|
|
53
57
|
}
|
package/src/core/hash.ts
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
export default function(input: string, precision: number = null): string {
|
|
1
|
+
export default function (input: string, precision: number = null): string {
|
|
3
2
|
// Code inspired from C# GetHashCode: https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/string.cs
|
|
4
3
|
let hash = 0;
|
|
5
4
|
let hashOne = 5381;
|
|
6
5
|
let hashTwo = hashOne;
|
|
7
6
|
for (let i = 0; i < input.length; i += 2) {
|
|
8
|
-
|
|
7
|
+
const charOne = input.charCodeAt(i);
|
|
9
8
|
hashOne = ((hashOne << 5) + hashOne) ^ charOne;
|
|
10
9
|
if (i + 1 < input.length) {
|
|
11
|
-
|
|
10
|
+
const charTwo = input.charCodeAt(i + 1);
|
|
12
11
|
hashTwo = ((hashTwo << 5) + hashTwo) ^ charTwo;
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
// Replace the magic number from C# implementation (1566083941) with a smaller prime number (11579)
|
|
16
15
|
// This ensures we don't hit integer overflow and prevent collisions
|
|
17
|
-
hash = Math.abs(hashOne +
|
|
18
|
-
return (precision ? hash %
|
|
16
|
+
hash = Math.abs(hashOne + hashTwo * 11579);
|
|
17
|
+
return (precision ? hash % 2 ** precision : hash).toString(36);
|
|
19
18
|
}
|
package/src/core/history.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BooleanFlag, Code, Constant, Metric, Setting, Severity } from "@clarity-types/data";
|
|
2
2
|
import { FunctionNames } from "@clarity-types/performance";
|
|
3
3
|
import * as clarity from "@src/clarity";
|
|
4
|
-
import * as core from "@src/core"
|
|
4
|
+
import * as core from "@src/core";
|
|
5
5
|
import { bind } from "@src/core/event";
|
|
6
|
-
import * as internal from "@src/diagnostic/internal";
|
|
7
6
|
import * as metric from "@src/data/metric";
|
|
7
|
+
import * as internal from "@src/diagnostic/internal";
|
|
8
8
|
|
|
9
9
|
let pushState = null;
|
|
10
10
|
let replaceState = null;
|
|
@@ -17,10 +17,10 @@ export function start(): void {
|
|
|
17
17
|
bind(window, "popstate", compute);
|
|
18
18
|
|
|
19
19
|
// Add a proxy to history.pushState function
|
|
20
|
-
if (pushState === null) {
|
|
21
|
-
pushState = history.pushState;
|
|
22
|
-
history.pushState = function(): void {
|
|
23
|
-
pushState.apply(this,
|
|
20
|
+
if (pushState === null) {
|
|
21
|
+
pushState = history.pushState;
|
|
22
|
+
history.pushState = function (...args): void {
|
|
23
|
+
pushState.apply(this, args);
|
|
24
24
|
if (core.active() && check()) {
|
|
25
25
|
compute();
|
|
26
26
|
}
|
|
@@ -28,11 +28,10 @@ export function start(): void {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// Add a proxy to history.replaceState function
|
|
31
|
-
if (replaceState === null)
|
|
32
|
-
|
|
33
|
-
replaceState =
|
|
34
|
-
|
|
35
|
-
replaceState.apply(this, arguments);
|
|
31
|
+
if (replaceState === null) {
|
|
32
|
+
replaceState = history.replaceState;
|
|
33
|
+
history.replaceState = function (...args): void {
|
|
34
|
+
replaceState.apply(this, args);
|
|
36
35
|
if (core.active() && check()) {
|
|
37
36
|
compute();
|
|
38
37
|
}
|