Files
stats/apps/public/public/op1.js
Carl-Gerhard Lindesvärd 6ed8d3a543 remove source map from op1
2024-09-02 20:41:54 +02:00

2 lines
4.4 KiB
JavaScript

"use strict";(()=>{var c=class{constructor(e){this.baseUrl=e.baseUrl,this.headers={"Content-Type":"application/json",...e.defaultHeaders},this.maxRetries=e.maxRetries??3,this.initialRetryDelay=e.initialRetryDelay??500}async resolveHeaders(){let e={};for(let[t,i]of Object.entries(this.headers)){let r=await i;r!==null&&(e[t]=r)}return e}addHeader(e,t){this.headers[e]=t}async post(e,t,i,r){try{let n=await fetch(e,{method:"POST",headers:await this.resolveHeaders(),body:JSON.stringify(t??{}),keepalive:!0,...i});if(n.status===401)return null;if(n.status!==200&&n.status!==202)throw new Error(`HTTP error! status: ${n.status}`);let s=await n.text();return s?JSON.parse(s):null}catch(n){if(r<this.maxRetries){let s=this.initialRetryDelay*Math.pow(2,r);return await new Promise(a=>setTimeout(a,s)),this.post(e,t,i,r+1)}return console.error("Max retries reached:",n),null}}async fetch(e,t,i={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,i,0)}};var o=class{constructor(e){this.options=e;this.queue=[];let t={"openpanel-client-id":e.clientId};e.clientSecret&&(t["openpanel-client-secret"]=e.clientSecret),t["openpanel-sdk-name"]=e.sdk||"node",t["openpanel-sdk-version"]=e.sdkVersion||process.env.SDK_VERSION,this.api=new c({baseUrl:e.apiUrl||"https://api.openpanel.dev",defaultHeaders:t})}init(){}ready(){this.options.waitForProfile=!1,this.flush()}async send(e){return this.options.disabled||this.options.filter&&!this.options.filter(e)?Promise.resolve():this.options.waitForProfile&&!this.profileId?(this.queue.push(e),Promise.resolve()):this.api.fetch("/track",e)}setGlobalProperties(e){this.global={...this.global,...e}}async track(e,t){return this.send({type:"track",payload:{name:e,profileId:t?.profileId??this.profileId,properties:{...this.global??{},...t??{}}}})}async identify(e){if(e.profileId&&(this.profileId=e.profileId,this.flush()),Object.keys(e).length>1)return this.send({type:"identify",payload:{...e,properties:{...this.global,...e.properties}}})}async alias(e){return this.send({type:"alias",payload:e})}async increment(e){return this.send({type:"increment",payload:e})}async decrement(e){return this.send({type:"decrement",payload:e})}clear(){this.profileId=void 0}flush(){this.queue.forEach(e=>{this.send({...e,payload:{...e.payload,profileId:e.payload.profileId??this.profileId}})}),this.queue=[]}};function h(l){return l.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace("-","").replace("_",""))}var u=class extends o{constructor(t){super({sdk:"web",sdkVersion:"1.0.0",...t});this.options=t;this.lastPath="";this.isServer()||(this.setGlobalProperties({__referrer:document.referrer}),this.options.trackScreenViews&&this.trackScreenViews(),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackAttributes&&this.trackAttributes())}debounce(t,i){clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(t,i)}isServer(){return typeof document>"u"}trackOutgoingLinks(){this.isServer()||document.addEventListener("click",t=>{let i=t.target,r=i.closest("a");if(r&&i){let n=r.getAttribute("href");n?.startsWith("http")&&super.track("link_out",{href:n,text:r.innerText||r.getAttribute("title")||i.getAttribute("alt")||i.getAttribute("title")})}})}trackScreenViews(){if(this.isServer())return;this.screenView();let t=history.pushState;history.pushState=function(...s){let a=t.apply(this,s);return window.dispatchEvent(new Event("pushstate")),window.dispatchEvent(new Event("locationchange")),a};let i=history.replaceState;history.replaceState=function(...s){let a=i.apply(this,s);return window.dispatchEvent(new Event("replacestate")),window.dispatchEvent(new Event("locationchange")),a},window.addEventListener("popstate",function(){window.dispatchEvent(new Event("locationchange"))});let r=()=>this.debounce(()=>this.screenView(),50);this.options.trackHashChanges?window.addEventListener("hashchange",r):window.addEventListener("locationchange",r)}trackAttributes(){this.isServer()||document.addEventListener("click",t=>{let i=t.target,r=i.closest("button"),n=i.closest("a"),s=r?.getAttribute("data-track")?r:n?.getAttribute("data-track")?n:null;if(s){let a={};for(let p of s.attributes)p.name.startsWith("data-")&&p.name!=="data-track"&&(a[h(p.name.replace(/^data-/,""))]=p.value);let d=s.getAttribute("data-track");d&&super.track(d,a)}})}screenView(t,i){if(this.isServer())return;let r,n;typeof t=="string"?(r=t,n=i):(r=window.location.href,n=t),this.lastPath!==r&&(this.lastPath=r,super.track("screen_view",{...n??{},__path:r,__title:document.title}))}};})();