UNPKG

@junobuild/analytics

Version:

Tracker for Juno analytics

3 lines (2 loc) 5.45 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,a=t=>!m(t),d=t=>a(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}},S=class{#e;constructor({container:e,orbiterId:r}){let i=a(e)&&e!==!1?e===!0?A:e:"https://icp0.io",{protocol:o,host:l}=new URL(i);this.#e=`${o}//${r}.${l}`}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 E=class{#e;#t;constructor(e){this.#e=e,this.#t=new S(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 a(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"),i=e.get("utm_campaign"),o=e.get("utm_term"),l=e.get("utm_content");return{withCampaign:!0,campaign:{utm_source:r,...d(n)&&{utm_medium:n},...d(i)&&{utm_campaign:i},...d(o)&&{utm_term:o},...d(l)&&{utm_content:l}}}};var T=class t{async startPerformance({sessionId:e,postPerformanceMetric:r}){let{onCLS:n,onFCP:i,onINP:o,onLCP:l,onTTFB:g}=await import("./web-vitals-YBMS6D2C.js"),s=h=>{(async()=>await t.setPerformanceMetric({metric:{...h,sessionId:e},postPerformanceMetric:r}))()};n(s),i(s),o(s),l(s),g(s)}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}n!=="deprecated"&&await r({key:{key:u(),...f()},performance_metric:n})};static mapPerformanceMetric({sessionId:e,name:r,value:n,delta:i,id:o,navigationType:l}){let s=(()=>{switch(r){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return r;case"FID":return"deprecated";default:return"unknown"}})();if(s==="unknown"||s==="deprecated")return s;let p=(()=>{switch(l){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:i,id:o,...a(p)&&{navigation_type:p}},{location:{href:_}}=document;return{href:_,metric_name:s,session_id:e,data:{WebVitalsMetric:q},...P()}}};var k=class{async parseUserAgent(e){if(m(e))return;let r=await import("./ua-parser-GFKOYVJI.js"),n=new r.default(e),{browser:i,os:o,device:l}=n.getResult();if(!(m(i.name)||m(o.name)))return{browser:i.name,os:o.name,device:l?.type}}};var M=class extends Error{},N=(t,e)=>{if(t==null)throw new M(e)};var R=()=>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(),c,_e=t=>(c={orbiter:new E(t),userAgent:t.options?.userAgentParser===!0?new k:null,performance:t.options?.performance===!0?new T:null},{cleanup(){c=null}}),be=()=>{let t=async()=>await B(),e=new Proxy(history.pushState,{apply:async(r,n,i)=>{r.apply(n,i),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(!R())return;N(y,x);let{title:t,location:{href:e},referrer:r}=document,{innerWidth:n,innerHeight:i,screen:o}=window,{timeZone:l}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:g}=P(),s=a(c?.userAgent)?await c?.userAgent.parseUserAgent(g):void 0,{withCampaign:h,campaign:p}=U(),_={title:t,href:(()=>{if(!h)return e;let v=URL.parse(e);return m(v)?e:(Object.keys(p??{}).forEach(D=>v.searchParams.delete(D)),v.href)})(),...a(r)&&r!==""&&{referrer:r},device:{inner_width:n,inner_height:i,screen_width:o?.availWidth,screen_height:o?.availHeight},time_zone:l,session_id:y,user_agent:g,...a(s)&&{client:s},...a(p)&&{campaign:p}};w(c),await c?.orbiter?.setPageView({key:{key:u(),...f()},page_view:_})},Me=async()=>{if(!R()||m(c?.performance))return;N(y,x),w(c);let t=async e=>{w(c),await c?.orbiter?.setPerformanceMetric(e)};await c.performance.startPerformance({sessionId:y,postPerformanceMetric:t})},xe=()=>{B()},B=async()=>{await $()},qe=t=>{W(t)},W=async t=>{R()&&(N(y,x),w(c),await c?.orbiter?.setTrackEvent({key:{key:u(),...f()},track_event:{...t,session_id:y,...P(),...f()}}))};export{N 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-MBP7WNBW.js.map