/**
 * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.
 * Original file: /npm/@junobuild/analytics@0.2.0/dist/browser/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function t(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}var n=t,a=r;function i(e){if(n===setTimeout)return setTimeout(e,0);if((n===t||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}"function"==typeof e.setTimeout&&(n=setTimeout),"function"==typeof e.clearTimeout&&(a=clearTimeout);var o,s=[],c=!1,l=-1;function u(){c&&o&&(c=!1,o.length?s=o.concat(s):l=-1,s.length&&p())}function p(){if(!c){var e=i(u);c=!0;for(var t=s.length;t;){for(o=s,s=[];++l<t;)o&&o[l].run();l=-1,t=s.length}o=null,c=!1,function(e){if(a===clearTimeout)return clearTimeout(e);if((a===r||!a)&&clearTimeout)return a=clearTimeout,clearTimeout(e);try{return a(e)}catch(t){try{return a.call(null,e)}catch(t){return a.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}m.prototype.run=function(){this.fun.apply(null,this.array)};function d(){}var f=d,w=d,h=d,y=d,v=d,g=d,T=d;var I=e.performance||{},_=I.now||I.mozNow||I.msNow||I.oNow||I.webkitNow||function(){return(new Date).getTime()};var b=new Date;var P,E={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];s.push(new m(e,t)),1!==s.length||c||i(p)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:f,addListener:w,once:h,off:y,removeListener:v,removeAllListeners:g,emit:T,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*_.call(I),r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r-=e[0],(n-=e[1])<0&&(r--,n+=1e9)),[r,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-b)/1e3}},k=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&r[e]];return t},L=e=>null==e,A=e=>!L(e),C="__bigint__",N=(e,t)=>"bigint"==typeof t?{[C]:`${t}`}:t,D=class extends Error{constructor(e,t){super(`[${e}] Orbiter Error: ${t}`),this.status=e,this.statusText=t}},B=class{#e;constructor({container:e,orbiterId:t}){let r=A(e)&&!1!==e?!0===e?"http://localhost:5987":e:"https://icp0.io",{protocol:n,host:a}=new URL(r);this.#e=`${n}//${t}.${a}`}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:t})=>{let r=await fetch(`${this.#e}${e}`,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json"},body:JSON.stringify(t,N)});if(!r.ok)throw new D(r.status,r.statusText);return await r.json()}},M=class{#e;#t;constructor(e){this.#e=e,this.#t=new B(e)}setPageView=async e=>{let t={...this.satelliteId(),page_views:[e]};return await this.#t.postPageViews({request:t})};setTrackEvent=async e=>{let t={...this.satelliteId(),track_events:[e]};return await this.#t.postTrackEvents({request:t})};setPerformanceMetric=async e=>{let t={...this.satelliteId(),performance_metrics:[e]};return await this.#t.postPerformanceMetrics({request:t})};satelliteId(){return{satellite_id:this.#e.satelliteId}}},O=()=>({collected_at:BigInt(Date.now())*BigInt(1e6)}),R=()=>{let{userAgent:e}=navigator;return A(e)?{user_agent:e}:{}},S=class e{async startPerformance({sessionId:t,postPerformanceMetric:r}){let{onCLS:n,onFCP:a,onINP:i,onLCP:o,onTTFB:s}=await import("/npm/@junobuild/analytics@0.2.0/dist/browser/web-vitals-YBMS6D2C.js/+esm"),c=n=>{(async()=>{await e.setPerformanceMetric({metric:{...n,sessionId:t},postPerformanceMetric:r})})()};n(c),a(c),i(c),o(c),s(c)}static setPerformanceMetric=async({metric:t,postPerformanceMetric:r})=>{let n=e.mapPerformanceMetric(t);"unknown"!==n?"deprecated"!==n&&await r({key:{key:k(),...O()},performance_metric:n}):console.warn("Performance metric ignored. Unknown metric name.",t)};static mapPerformanceMetric({sessionId:e,name:t,value:r,delta:n,id:a,navigationType:i}){let o=(()=>{switch(t){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return t;case"FID":return"deprecated";default:return"unknown"}})();if("unknown"===o||"deprecated"===o)return o;let s=(()=>{switch(i){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}})(),c={value:r,delta:n,id:a,...A(s)&&{navigation_type:s}},{location:{href:l}}=document;return{href:l,metric_name:o,session_id:e,data:{WebVitalsMetric:c},...R()}}},U=class{async parseUserAgent(e){if(L(e))return;let t=new((await import("/npm/@junobuild/analytics@0.2.0/dist/browser/ua-parser-GFKOYVJI.js/+esm")).default)(e),{browser:r,os:n,device:a}=t.getResult();return L(r.name)||L(n.name)?void 0:{browser:r.name,os:n.name,device:a?.type}}},V=class extends Error{},F=(e,t)=>{if(null==e)throw new V(t)},x=()=>typeof window<"u",$=e=>{L(e)&&console.warn("Unable to connect to the analytics services. Did you call `initOrbiter`?")},j=(()=>{if(!(typeof crypto>"u"))return k()})(),q="No session ID initialized.",z=async()=>{if(!x())return;F(j,q);let{title:e,location:{href:t},referrer:r}=document,{innerWidth:n,innerHeight:a,screen:i}=window,{timeZone:o}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:s}=R(),c=A(P?.userAgent)?await(P?.userAgent.parseUserAgent(s)):void 0,l={title:e,href:t,...A(r)&&""!==r&&{referrer:r},device:{inner_width:n,inner_height:a,screen_width:i?.availWidth,screen_height:i?.availHeight},time_zone:o,session_id:j,user_agent:s,...A(c)&&{client:c}};$(P),await(P?.orbiter?.setPageView({key:{key:k(),...O()},page_view:l}))},W=()=>{X()},X=async()=>{await z()},H=e=>{J(e)},J=async e=>{x()&&(F(j,q),$(P),await(P?.orbiter?.setTrackEvent({key:{key:k(),...O()},track_event:{...e,session_id:j,...R(),...O()}})))},Y=e=>{let t=e?.satelliteId??(()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return E.env?.NEXT_PUBLIC_SATELLITE_ID??e()})();F(t,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let r=e?.orbiterId??(()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return E.env?.NEXT_PUBLIC_ORBITER_ID??e()})();F(r,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let n=e?.container??(()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return E.env?.NEXT_PUBLIC_CONTAINER??e()})();return{orbiterId:r,satelliteId:t,container:n,options:e?.options}},G=e=>{let t=Y(e),{cleanup:r}=(e=>(P={orbiter:new M(e),userAgent:!0===e.options?.userAgentParser?new U:null,performance:!0===e.options?.performance?new S:null},{cleanup(){P=null}}))(t);z();let{cleanup:n}=(()=>{let e=async()=>await X(),t=new Proxy(history.pushState,{apply:async(t,r,n)=>{t.apply(r,n),await e()}});return history.pushState=t,addEventListener("popstate",e,{passive:!0}),{cleanup(){t=null,removeEventListener("popstate",e,!1)}}})();return(async()=>{if(!x()||L(P?.performance))return;F(j,q),$(P),await P.performance.startPerformance({sessionId:j,postPerformanceMetric:async e=>{$(P),await(P?.orbiter?.setPerformanceMetric(e))}})})(),()=>{r(),n()}};export{G as initOrbiter,H as trackEvent,J as trackEventAsync,W as trackPageView,X as trackPageViewAsync};export default null;
//# sourceMappingURL=/sm/7c2f3151fd487054e84dda4783ab665c73bf98c5aea6c862ea53648e9bee29b9.map