(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{identify:()=>v,init:()=>f,track:()=>g});const n="anonymous_events",r="rdtracker:identity",o="rdtracker:token",a=6048e5,i=()=>sessionStorage.getItem(o),s=e=>{const t=e?.trim();if(!(e=>"string"==typeof e&&e?.trim().length>0)(t))throw new Error("Invalid token: a non-empty string is required");sessionStorage.setItem(o,t)},c=()=>new Promise((e,t)=>{const r=indexedDB.open("RDTrackerDB",1);r.onupgradeneeded=()=>{const e=r.result;e.objectStoreNames.contains(n)||e.createObjectStore(n,{autoIncrement:!0})},r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error)});async function d(e,t,n){const r=await c();try{const o=r.transaction(e,t),a=o.objectStore(e);return await n(a,o)}finally{r.close()}}function u(e,t){return new Promise((n,r)=>{e.onerror=()=>r(e.error),e.onsuccess=e=>{const r=e.target.result;if(!r)return n();t(r),r.continue()}})}const y={async sendEvent(e){try{const{account_token:t,...n}=e;return(await fetch("https://event-harbor.rdstation.com/events/track",{method:"POST",credentials:"omit",keepalive:!0,headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(n)})).ok}catch(e){return console.error("Error sending event:",e),!1}}},l=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,p=()=>{const e=localStorage.getItem(r);return e?JSON.parse(e):null},w=e=>{if(!function(e){if("object"!=typeof e||null===e)return!1;const{email:t}=e;return"string"==typeof t&&t.trim().length>0&&l.test(t)}(e))throw new Error("Invalid identity: email is required");localStorage.setItem(r,JSON.stringify(e))};async function m(){const e=p(),t=i();if(!e||!t)return;const r=[];await d(n,"readwrite",async(e,t)=>{const n=e.openCursor();t.onabort=()=>{throw t.error},await u(n,e=>{const{event_type:t,event_timestamp:n,payload:o}=e.value;r.push({event_type:t,event_timestamp:n,payload:o}),e.delete()})});for(const{event_type:n,event_timestamp:o,payload:a}of r){const r={event:{event_type:n,event_timestamp:o,payload:{...Object(a),...e}},account_token:t};await y.sendEvent(r)}}async function f(e){s(e),await async function(){const e=new Date(Date.now()-a);await d(n,"readwrite",async t=>{const n=t.openCursor();await u(n,t=>{new Date(t.value.event_timestamp){const n=t.add(e);await new Promise((e,t)=>{n.onsuccess=()=>e(),n.onerror=()=>t(n.error)})})}(a);await y.sendEvent({event:a,account_token:r})}window.rdtracker={...window.rdtracker??{},identify:v,init:f,track:g},window.rdtracker=t})();