UNPKG

@junobuild/analytics

Version:

Tracker for Juno analytics

3 lines (2 loc) 5.39 kB
var I="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var u=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=I[r[t]&63];return e};var A="http://localhost:5987";var m=t=>t==null,s=t=>!m(t),d=t=>s(t)&&t!=="",V=t=>!d(t);var L="__bigint__",C=(t,e)=>typeof e=="bigint"?{[L]:`${e}`}:e;var b=class extends Error{constructor(r,n){super(`[${r}] Orbiter Error: ${n}`);this.status=r;this.statusText=n}},v=class{#e;constructor({container:e,orbiterId:r}){let o=s(e)&&e!==!1?e===!0?A:e:"https://icp0.io",{protocol:i,host:c}=new URL(o);this.#e=`${i}//${r}.${c}`}postPageViews=async({request:e})=>await this.post({path:"/views",payload:e});postTrackEvents=async({request:e})=>await this.post({path:"/events",payload:e});postPerformanceMetrics=async({request:e})=>await this.post({path:"/metrics",payload:e});post=async({path:e,payload:r})=>{let n=await fetch(`${this.#e}${e}`,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json"},body:JSON.stringify(r,C)});if(!n.ok)throw new b(n.status,n.statusText);return await n.json()}};var S=class{#e;#t;constructor(e){this.#e=e,this.#t=new v(e)}setPageView=async e=>{let r={...this.satelliteId(),page_views:[e]};return await this.#t.postPageViews({request:r})};setTrackEvent=async e=>{let r={...this.satelliteId(),track_events:[e]};return await this.#t.postTrackEvents({request:r})};setPerformanceMetric=async e=>{let r={...this.satelliteId(),performance_metrics:[e]};return await this.#t.postPerformanceMetrics({request:r})};satelliteId(){return{satellite_id:this.#e.satelliteId}}};var O=()=>BigInt(Date.now())*BigInt(1e6);var f=()=>({collected_at:O()}),P=()=>{let{userAgent:t}=navigator;return s(t)?{user_agent:t}:{}},U=()=>{let{location:{search:t}}=document,e=new URLSearchParams(t),r=e.get("utm_source");if(m(r)||V(r))return{withCampaign:!1};let n=e.get("utm_medium"),o=e.get("utm_campaign"),i=e.get("utm_term"),c=e.get("utm_content");return{withCampaign:!0,campaign:{utm_source:r,...d(n)&&{utm_medium:n},...d(o)&&{utm_campaign:o},...d(i)&&{utm_term:i},...d(c)&&{utm_content:c}}}};var E=class t{async startPerformance({sessionId:e,postPerformanceMetric:r}){let{onCLS:n,onFCP:o,onINP:i,onLCP:c,onTTFB:g}=await import("./web-vitals-6ZNYHHDJ.js"),l=h=>{(async()=>await t.setPerformanceMetric({metric:{...h,sessionId:e},postPerformanceMetric:r}))()};n(l),o(l),i(l),c(l),g(l)}static setPerformanceMetric=async({metric:e,postPerformanceMetric:r})=>{let n=t.mapPerformanceMetric(e);if(n==="unknown"){console.warn("Performance metric ignored. Unknown metric name.",e);return}await r({key:{key:u(),...f()},performance_metric:n})};static mapPerformanceMetric({sessionId:e,name:r,value:n,delta:o,id:i,navigationType:c}){let l=(()=>{switch(r){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return r;default:return"unknown"}})();if(l==="unknown")return l;let p=(()=>{switch(c){case"navigate":return"Navigate";case"restore":return"Restore";case"reload":return"Reload";case"back-forward":return"BackForward";case"back-forward-cache":return"BackForwardCache";case"prerender":return"Prerender";default:return}})(),q={value:n,delta:o,id:i,...s(p)&&{navigation_type:p}},{location:{href:R}}=document;return{href:R,metric_name:l,session_id:e,data:{WebVitalsMetric:q},...P()}}};var T=class{async parseUserAgent(e){if(m(e))return;let r=await import("./ua-parser-DMUY4BWA.js"),n=new r.default(e),{browser:o,os:i,device:c}=n.getResult();if(!(m(o.name)||m(i.name)))return{browser:o.name,os:i.name,device:c?.type}}};var M=class extends Error{},k=(t,e)=>{if(t==null)throw new M(e)};var N=()=>typeof window<"u";var F="Unable to connect to the analytics services. Did you call `initOrbiter`?",w=t=>{m(t)&&console.warn(F)};var j=()=>{if(!(typeof crypto>"u"))return u()},y=j(),a,_e=t=>(a={orbiter:new S(t),userAgent:t.options?.userAgentParser===!0?new T:null,performance:t.options?.performance===!0?new E:null},{cleanup(){a=null}}),be=()=>{let t=async()=>await B(),e=new Proxy(history.pushState,{apply:async(r,n,o)=>{r.apply(n,o),await t()}});return history.pushState=e,addEventListener("popstate",t,{passive:!0}),{cleanup(){e=null,removeEventListener("popstate",t,!1)}}},x="No session ID initialized.",$=async()=>{if(!N())return;k(y,x);let{title:t,location:{href:e},referrer:r}=document,{innerWidth:n,innerHeight:o,screen:i}=window,{timeZone:c}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:g}=P(),l=s(a?.userAgent)?await a?.userAgent.parseUserAgent(g):void 0,{withCampaign:h,campaign:p}=U(),R={title:t,href:(()=>{if(!h)return e;try{let _=new URL(e);return Object.keys(p??{}).forEach(D=>_.searchParams.delete(D)),_.href}catch{return e}})(),...s(r)&&r!==""&&{referrer:r},device:{inner_width:n,inner_height:o,screen_width:i?.availWidth,screen_height:i?.availHeight},time_zone:c,session_id:y,user_agent:g,...s(l)&&{client:l},...s(p)&&{campaign:p}};w(a),await a?.orbiter?.setPageView({key:{key:u(),...f()},page_view:R})},Me=async()=>{if(!N()||m(a?.performance))return;k(y,x),w(a);let t=async e=>{w(a),await a?.orbiter?.setPerformanceMetric(e)};await a.performance.startPerformance({sessionId:y,postPerformanceMetric:t})},xe=()=>{B()},B=async()=>{await $()},qe=t=>{W(t)},W=async t=>{N()&&(k(y,x),w(a),await a?.orbiter?.setTrackEvent({key:{key:u(),...f()},track_event:{...t,session_id:y,...P(),...f()}}))};export{k as a,_e as b,be as c,$ as d,Me as e,xe as f,B as g,qe as h,W as i}; //# sourceMappingURL=chunk-AGCKN2PA.js.map