@attributehq/web-sdk 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @attributehq/web-sdk
2
2
 
3
- Lightweight web attribution SDK for [AttributeHQ](https://attributehq.com) — track installs, events, and revenue with automatic attribution.
3
+ Lightweight web attribution SDK for [AttributeHQ](https://api.attributehq.com) — track installs, events, and revenue with automatic attribution.
4
4
 
5
5
  **~2.9 KB gzipped** | Zero dependencies | TypeScript-first
6
6
 
@@ -74,7 +74,6 @@ Initialize the SDK. Must be called before any other method. Automatically tracks
74
74
  init({
75
75
  apiKey: string; // Required — your API key (format: ak_xxx)
76
76
  appId: string; // Required — your app UUID
77
- baseUrl?: string; // API base URL (default: https://attributehq.com)
78
77
  batchSize?: number; // Events per batch before auto-flush (default: 10)
79
78
  flushInterval?: number; // Auto-flush interval in ms (default: 5000)
80
79
  maxQueueSize?: number; // Max events in offline queue (default: 100)
@@ -145,7 +144,6 @@ const result = getAttribution();
145
144
  |--------|------|---------|-------------|
146
145
  | `apiKey` | `string` | — | **Required.** API key from your dashboard |
147
146
  | `appId` | `string` | — | **Required.** App UUID from your dashboard |
148
- | `baseUrl` | `string` | `https://attributehq.com` | API base URL |
149
147
  | `batchSize` | `number` | `10` | Events per batch before auto-flush |
150
148
  | `flushInterval` | `number` | `5000` | Auto-flush interval in milliseconds |
151
149
  | `maxQueueSize` | `number` | `100` | Max events stored offline |
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t='"1.0.0"',e=10,i=5e3,s=100,n=!0,r=!1;const a="[AttributionSDK]";let o=!1;function u(...t){o&&console.log(a,...t)}function h(...t){console.warn(a,...t)}function c(...t){console.error(a,...t)}const l="__ahq_";let d=null;function p(){return d||("undefined"!=typeof localStorage&&function(){try{const t=l+"test";return localStorage.setItem(t,"1"),localStorage.removeItem(t),!0}catch{return!1}}()?localStorage:(d=new Map,d))}const f={get(t){const e=p(),i=l+t;return e instanceof Map?e.get(i)??null:e.getItem(i)},set(t,e){const i=p(),s=l+t;i instanceof Map?i.set(s,e):i.setItem(s,e)},remove(t){const e=p(),i=l+t;e instanceof Map?e.delete(i):e.removeItem(i)}};let g=null;async function y(t,e){if(!g)return h("Network not configured"),null;const i=`${g.baseUrl}${t}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:JSON.stringify(e)});return s.ok?await s.json():(h(`POST ${t} failed: ${s.status}`),null)}catch(e){return c(`POST ${t} error:`,e),null}}function v(){try{return`${screen.width}x${screen.height}`}catch{return""}}function m(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function w(){try{return navigator.language||""}catch{return""}}function I(){try{const t=navigator;return t.userAgentData?.platform?t.userAgentData.platform:navigator.platform||""}catch{return""}}const x=18e5;function b(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}}class S{constructor(){const t=f.get("session_id"),e=f.get("session_start");if(t&&e){if(Date.now()-Number(e)<x)return this.sessionId=t,this.lastActivity=Number(e),void(this.pageViews=Number(f.get("session_pvs")||"0"))}this.sessionId=b(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),u("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>x&&(this.sessionId=b(),this.pageViews=0,u("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,f.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){f.set("session_id",this.sessionId),f.set("session_start",String(this.lastActivity))}}const k="queue";class q{constructor(t){this.queue=[],this.timer=null,this.flushing=!1,this.config=t,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(t){for(this.queue.push(t);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),u("Event queued:",t.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const e=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,events:e,sdk_version:t};try{await y("/api/v1/events",i)?u(`Flushed ${e.length} events`):(this.queue.unshift(...e),this.persist(),h("Flush failed, events re-queued"))}catch(t){this.queue.unshift(...e),this.persist(),c("Flush error:",t)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(t,e){if(!g)return;const i=`${g.baseUrl}${t}`,s=JSON.stringify({...e,_api_key:g.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{h("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,events:this.queue,sdk_version:t}),this.queue=[],this.persist(),u("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{f.set(k,JSON.stringify(this.queue))}catch{}}restore(){try{const t=f.get(k);t&&(this.queue=JSON.parse(t),u(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const _=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl=""}init(a){var c,l;this.initialized?h("SDK already initialized"):(this.config=function(t){if(!t.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!t.appId)throw new Error("[AttributionSDK] appId is required");const a=t.baseUrl||"https://attributehq.com";return{apiKey:t.apiKey,appId:t.appId,baseUrl:a.replace(/\/+$/,""),batchSize:t.batchSize??e,flushInterval:t.flushInterval??i,maxQueueSize:t.maxQueueSize??s,autoTrackPageViews:t.autoTrackPageViews??n,debug:t.debug??r}}(a),c=this.config.debug,o=c,l=this.config,g=l,u("Initializing",{appId:this.config.appId,version:t}),this.session=new S,this.queue=new q(this.config),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,u("SDK initialized"))}track(t,e={}){this.ensureInit()&&this.queue.enqueue({event_name:t,properties:e,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(t={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...t}))}trackRevenue(t,e="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:t,currency:e,...i})}identify(t,e={}){this.ensureInit()&&(f.set("user_id",t),this.track("identify",{user_id:t,...e}),u("User identified:",t))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const t=f.get("attribution");if(!t)return null;try{return JSON.parse(t)}catch{return null}}ensureInit(){return!!this.initialized||(h("SDK not initialized. Call init() first."),!1)}async trackInstallIfNew(){if(f.get("installed"))return void u("Install already tracked");const e={screen_resolution:v(),timezone:m(),language:w(),platform:I()},i={app_id:this.config.appId,platform:"web",sdk_version:t,screen_resolution:e.screen_resolution||void 0,timezone:e.timezone||void 0,language:e.language||void 0};u("Tracking install...");const s=await y("/api/v1/installs",i);s?.data?(f.set("installed","1"),f.set("attribution",JSON.stringify(s.data)),u("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):h("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=(...e)=>{t(...e),this.onUrlChange()},history.replaceState=(...t)=>{e(...t),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const t=location.href;t!==this.lastUrl&&(this.lastUrl=t,this.trackPageView())}},P=_.init.bind(_),V=_.track.bind(_),z=_.trackPageView.bind(_),U=_.trackRevenue.bind(_),A=_.identify.bind(_),T=_.flush.bind(_),D=_.getAttribution.bind(_);var K={init:P,track:V,trackPageView:z,trackRevenue:U,identify:A,flush:T,getAttribution:D};exports.default=K,exports.flush=T,exports.getAttribution=D,exports.identify=A,exports.init=P,exports.track=V,exports.trackPageView=z,exports.trackRevenue=U;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t='"1.0.2"',e=10,i=5e3,s=100,n=!0,r=!1;const a="[AttributionSDK]";let o=!1;function u(...t){o&&console.log(a,...t)}function h(...t){console.warn(a,...t)}function c(...t){console.error(a,...t)}const l="__ahq_";let d=null;function p(){return d||("undefined"!=typeof localStorage&&function(){try{const t=l+"test";return localStorage.setItem(t,"1"),localStorage.removeItem(t),!0}catch{return!1}}()?localStorage:(d=new Map,d))}const f={get(t){const e=p(),i=l+t;return e instanceof Map?e.get(i)??null:e.getItem(i)},set(t,e){const i=p(),s=l+t;i instanceof Map?i.set(s,e):i.setItem(s,e)},remove(t){const e=p(),i=l+t;e instanceof Map?e.delete(i):e.removeItem(i)}};let g=null;async function v(t,e){if(!g)return h("Network not configured"),null;const i=`${g.baseUrl}${t}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:JSON.stringify(e)});return s.ok?await s.json():(h(`POST ${t} failed: ${s.status}`),null)}catch(e){return c(`POST ${t} error:`,e),null}}function y(){try{return`${screen.width}x${screen.height}`}catch{return""}}function I(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function m(){try{return navigator.language||""}catch{return""}}function w(){try{const t=navigator;return t.userAgentData?.platform?t.userAgentData.platform:navigator.platform||""}catch{return""}}function x(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}}const b=18e5;class S{constructor(){const t=f.get("session_id"),e=f.get("session_start");if(t&&e){if(Date.now()-Number(e)<b)return this.sessionId=t,this.lastActivity=Number(e),void(this.pageViews=Number(f.get("session_pvs")||"0"))}this.sessionId=x(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),u("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>b&&(this.sessionId=x(),this.pageViews=0,u("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,f.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){f.set("session_id",this.sessionId),f.set("session_start",String(this.lastActivity))}}const k="queue";class _{constructor(t,e){this.queue=[],this.timer=null,this.flushing=!1,this.config=t,this.deviceId=e,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(t){for(this.queue.push(t);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),u("Event queued:",t.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const e=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,device_id:this.deviceId,events:e,sdk_version:t};try{await v("/api/v1/events",i)?u(`Flushed ${e.length} events`):(this.queue.unshift(...e),this.persist(),h("Flush failed, events re-queued"))}catch(t){this.queue.unshift(...e),this.persist(),c("Flush error:",t)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(t,e){if(!g)return;const i=`${g.baseUrl}${t}`,s=JSON.stringify({...e,_api_key:g.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{h("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,device_id:this.deviceId,events:this.queue,sdk_version:t}),this.queue=[],this.persist(),u("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{f.set(k,JSON.stringify(this.queue))}catch{}}restore(){try{const t=f.get(k);t&&(this.queue=JSON.parse(t),u(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const q=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl="",this.deviceId=""}init(a){var c,l;this.initialized?h("SDK already initialized"):(this.config=function(t){if(!t.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!t.appId)throw new Error("[AttributionSDK] appId is required");return{apiKey:t.apiKey,appId:t.appId,baseUrl:"https://api.attributehq.com",batchSize:t.batchSize??e,flushInterval:t.flushInterval??i,maxQueueSize:t.maxQueueSize??s,autoTrackPageViews:t.autoTrackPageViews??n,debug:t.debug??r}}(a),c=this.config.debug,o=c,l=this.config,g=l,u("Initializing",{appId:this.config.appId,version:t}),this.deviceId=this.getOrCreateDeviceId(),this.session=new S,this.queue=new _(this.config,this.deviceId),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,u("SDK initialized"))}track(t,e={}){this.ensureInit()&&this.queue.enqueue({event_name:t,properties:e,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(t={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...t}))}trackRevenue(t,e="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:t,currency:e,...i})}identify(t,e={}){this.ensureInit()&&(f.set("user_id",t),this.track("identify",{user_id:t,...e}),u("User identified:",t))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const t=f.get("attribution");if(!t)return null;try{return JSON.parse(t)}catch{return null}}ensureInit(){return!!this.initialized||(h("SDK not initialized. Call init() first."),!1)}getOrCreateDeviceId(){const t=f.get("device_id");if(t)return t;const e=x();return f.set("device_id",e),e}async trackInstallIfNew(){if(f.get("installed"))return void u("Install already tracked");const e={screen_resolution:y(),timezone:I(),language:m(),platform:w()},i={app_id:this.config.appId,platform:"web",sdk_version:t,device_id:this.deviceId,screen_resolution:e.screen_resolution||void 0,timezone:e.timezone||void 0,language:e.language||void 0};u("Tracking install...");const s=await v("/api/v1/installs",i);s?.data?(f.set("installed","1"),f.set("attribution",JSON.stringify(s.data)),u("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):h("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=(...e)=>{t(...e),this.onUrlChange()},history.replaceState=(...t)=>{e(...t),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const t=location.href;t!==this.lastUrl&&(this.lastUrl=t,this.trackPageView())}},P=q.init.bind(q),V=q.track.bind(q),z=q.trackPageView.bind(q),D=q.trackRevenue.bind(q),A=q.identify.bind(q),T=q.flush.bind(q),U=q.getAttribution.bind(q);var K={init:P,track:V,trackPageView:z,trackRevenue:D,identify:A,flush:T,getAttribution:U};exports.default=K,exports.flush=T,exports.getAttribution=U,exports.identify=A,exports.init=P,exports.track=V,exports.trackPageView=z,exports.trackRevenue=D;
2
2
  //# sourceMappingURL=attribution.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.cjs.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","SESSION_TIMEOUT","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"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"}
1
+ {"version":3,"file":"attribution.cjs.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/utils.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SESSION_TIMEOUT","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","deviceId","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","device_id","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","getOrCreateDeviceId","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","existing","id","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const t='"1.0.0"',e=10,i=5e3,s=100,n=!0,r=!1;const a="[AttributionSDK]";let o=!1;function u(...t){o&&console.log(a,...t)}function h(...t){console.warn(a,...t)}function c(...t){console.error(a,...t)}const l="__ahq_";let d=null;function f(){return d||("undefined"!=typeof localStorage&&function(){try{const t=l+"test";return localStorage.setItem(t,"1"),localStorage.removeItem(t),!0}catch{return!1}}()?localStorage:(d=new Map,d))}const p={get(t){const e=f(),i=l+t;return e instanceof Map?e.get(i)??null:e.getItem(i)},set(t,e){const i=f(),s=l+t;i instanceof Map?i.set(s,e):i.setItem(s,e)},remove(t){const e=f(),i=l+t;e instanceof Map?e.delete(i):e.removeItem(i)}};let g=null;async function y(t,e){if(!g)return h("Network not configured"),null;const i=`${g.baseUrl}${t}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:JSON.stringify(e)});return s.ok?await s.json():(h(`POST ${t} failed: ${s.status}`),null)}catch(e){return c(`POST ${t} error:`,e),null}}function v(){try{return`${screen.width}x${screen.height}`}catch{return""}}function m(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function w(){try{return navigator.language||""}catch{return""}}function I(){try{const t=navigator;return t.userAgentData?.platform?t.userAgentData.platform:navigator.platform||""}catch{return""}}const b=18e5;function S(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}}class x{constructor(){const t=p.get("session_id"),e=p.get("session_start");if(t&&e){if(Date.now()-Number(e)<b)return this.sessionId=t,this.lastActivity=Number(e),void(this.pageViews=Number(p.get("session_pvs")||"0"))}this.sessionId=S(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),u("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>b&&(this.sessionId=S(),this.pageViews=0,u("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,p.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){p.set("session_id",this.sessionId),p.set("session_start",String(this.lastActivity))}}const k="queue";class q{constructor(t){this.queue=[],this.timer=null,this.flushing=!1,this.config=t,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(t){for(this.queue.push(t);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),u("Event queued:",t.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const e=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,events:e,sdk_version:t};try{await y("/api/v1/events",i)?u(`Flushed ${e.length} events`):(this.queue.unshift(...e),this.persist(),h("Flush failed, events re-queued"))}catch(t){this.queue.unshift(...e),this.persist(),c("Flush error:",t)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(t,e){if(!g)return;const i=`${g.baseUrl}${t}`,s=JSON.stringify({...e,_api_key:g.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":g.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{h("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,events:this.queue,sdk_version:t}),this.queue=[],this.persist(),u("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{p.set(k,JSON.stringify(this.queue))}catch{}}restore(){try{const t=p.get(k);t&&(this.queue=JSON.parse(t),u(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const _=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl=""}init(a){var c,l;this.initialized?h("SDK already initialized"):(this.config=function(t){if(!t.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!t.appId)throw new Error("[AttributionSDK] appId is required");const a=t.baseUrl||"https://attributehq.com";return{apiKey:t.apiKey,appId:t.appId,baseUrl:a.replace(/\/+$/,""),batchSize:t.batchSize??e,flushInterval:t.flushInterval??i,maxQueueSize:t.maxQueueSize??s,autoTrackPageViews:t.autoTrackPageViews??n,debug:t.debug??r}}(a),c=this.config.debug,o=c,l=this.config,g=l,u("Initializing",{appId:this.config.appId,version:t}),this.session=new x,this.queue=new q(this.config),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,u("SDK initialized"))}track(t,e={}){this.ensureInit()&&this.queue.enqueue({event_name:t,properties:e,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(t={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...t}))}trackRevenue(t,e="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:t,currency:e,...i})}identify(t,e={}){this.ensureInit()&&(p.set("user_id",t),this.track("identify",{user_id:t,...e}),u("User identified:",t))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const t=p.get("attribution");if(!t)return null;try{return JSON.parse(t)}catch{return null}}ensureInit(){return!!this.initialized||(h("SDK not initialized. Call init() first."),!1)}async trackInstallIfNew(){if(p.get("installed"))return void u("Install already tracked");const e={screen_resolution:v(),timezone:m(),language:w(),platform:I()},i={app_id:this.config.appId,platform:"web",sdk_version:t,screen_resolution:e.screen_resolution||void 0,timezone:e.timezone||void 0,language:e.language||void 0};u("Tracking install...");const s=await y("/api/v1/installs",i);s?.data?(p.set("installed","1"),p.set("attribution",JSON.stringify(s.data)),u("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):h("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=(...e)=>{t(...e),this.onUrlChange()},history.replaceState=(...t)=>{e(...t),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const t=location.href;t!==this.lastUrl&&(this.lastUrl=t,this.trackPageView())}},z=_.init.bind(_),P=_.track.bind(_),V=_.trackPageView.bind(_),U=_.trackRevenue.bind(_),T=_.identify.bind(_),A=_.flush.bind(_),D=_.getAttribution.bind(_);var K={init:z,track:P,trackPageView:V,trackRevenue:U,identify:T,flush:A,getAttribution:D};export{K as default,A as flush,D as getAttribution,T as identify,z as init,P as track,V as trackPageView,U as trackRevenue};
1
+ const t='"1.0.2"',e=10,i=5e3,s=100,n=!0,r=!1;const a="[AttributionSDK]";let o=!1;function u(...t){o&&console.log(a,...t)}function h(...t){console.warn(a,...t)}function c(...t){console.error(a,...t)}const l="__ahq_";let d=null;function g(){return d||("undefined"!=typeof localStorage&&function(){try{const t=l+"test";return localStorage.setItem(t,"1"),localStorage.removeItem(t),!0}catch{return!1}}()?localStorage:(d=new Map,d))}const f={get(t){const e=g(),i=l+t;return e instanceof Map?e.get(i)??null:e.getItem(i)},set(t,e){const i=g(),s=l+t;i instanceof Map?i.set(s,e):i.setItem(s,e)},remove(t){const e=g(),i=l+t;e instanceof Map?e.delete(i):e.removeItem(i)}};let p=null;async function v(t,e){if(!p)return h("Network not configured"),null;const i=`${p.baseUrl}${t}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":p.apiKey},body:JSON.stringify(e)});return s.ok?await s.json():(h(`POST ${t} failed: ${s.status}`),null)}catch(e){return c(`POST ${t} error:`,e),null}}function y(){try{return`${screen.width}x${screen.height}`}catch{return""}}function I(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function m(){try{return navigator.language||""}catch{return""}}function w(){try{const t=navigator;return t.userAgentData?.platform?t.userAgentData.platform:navigator.platform||""}catch{return""}}function b(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}}const S=18e5;class x{constructor(){const t=f.get("session_id"),e=f.get("session_start");if(t&&e){if(Date.now()-Number(e)<S)return this.sessionId=t,this.lastActivity=Number(e),void(this.pageViews=Number(f.get("session_pvs")||"0"))}this.sessionId=b(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),u("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>S&&(this.sessionId=b(),this.pageViews=0,u("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,f.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){f.set("session_id",this.sessionId),f.set("session_start",String(this.lastActivity))}}const k="queue";class q{constructor(t,e){this.queue=[],this.timer=null,this.flushing=!1,this.config=t,this.deviceId=e,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(t){for(this.queue.push(t);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),u("Event queued:",t.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const e=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,device_id:this.deviceId,events:e,sdk_version:t};try{await v("/api/v1/events",i)?u(`Flushed ${e.length} events`):(this.queue.unshift(...e),this.persist(),h("Flush failed, events re-queued"))}catch(t){this.queue.unshift(...e),this.persist(),c("Flush error:",t)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(t,e){if(!p)return;const i=`${p.baseUrl}${t}`,s=JSON.stringify({...e,_api_key:p.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":p.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{h("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,device_id:this.deviceId,events:this.queue,sdk_version:t}),this.queue=[],this.persist(),u("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{f.set(k,JSON.stringify(this.queue))}catch{}}restore(){try{const t=f.get(k);t&&(this.queue=JSON.parse(t),u(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const _=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl="",this.deviceId=""}init(a){var c,l;this.initialized?h("SDK already initialized"):(this.config=function(t){if(!t.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!t.appId)throw new Error("[AttributionSDK] appId is required");return{apiKey:t.apiKey,appId:t.appId,baseUrl:"https://api.attributehq.com",batchSize:t.batchSize??e,flushInterval:t.flushInterval??i,maxQueueSize:t.maxQueueSize??s,autoTrackPageViews:t.autoTrackPageViews??n,debug:t.debug??r}}(a),c=this.config.debug,o=c,l=this.config,p=l,u("Initializing",{appId:this.config.appId,version:t}),this.deviceId=this.getOrCreateDeviceId(),this.session=new x,this.queue=new q(this.config,this.deviceId),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,u("SDK initialized"))}track(t,e={}){this.ensureInit()&&this.queue.enqueue({event_name:t,properties:e,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(t={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...t}))}trackRevenue(t,e="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:t,currency:e,...i})}identify(t,e={}){this.ensureInit()&&(f.set("user_id",t),this.track("identify",{user_id:t,...e}),u("User identified:",t))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const t=f.get("attribution");if(!t)return null;try{return JSON.parse(t)}catch{return null}}ensureInit(){return!!this.initialized||(h("SDK not initialized. Call init() first."),!1)}getOrCreateDeviceId(){const t=f.get("device_id");if(t)return t;const e=b();return f.set("device_id",e),e}async trackInstallIfNew(){if(f.get("installed"))return void u("Install already tracked");const e={screen_resolution:y(),timezone:I(),language:m(),platform:w()},i={app_id:this.config.appId,platform:"web",sdk_version:t,device_id:this.deviceId,screen_resolution:e.screen_resolution||void 0,timezone:e.timezone||void 0,language:e.language||void 0};u("Tracking install...");const s=await v("/api/v1/installs",i);s?.data?(f.set("installed","1"),f.set("attribution",JSON.stringify(s.data)),u("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):h("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=(...e)=>{t(...e),this.onUrlChange()},history.replaceState=(...t)=>{e(...t),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const t=location.href;t!==this.lastUrl&&(this.lastUrl=t,this.trackPageView())}},z=_.init.bind(_),P=_.track.bind(_),V=_.trackPageView.bind(_),D=_.trackRevenue.bind(_),T=_.identify.bind(_),U=_.flush.bind(_),A=_.getAttribution.bind(_);var K={init:z,track:P,trackPageView:V,trackRevenue:D,identify:T,flush:U,getAttribution:A};export{K as default,U as flush,A as getAttribution,T as identify,z as init,P as track,V as trackPageView,D as trackRevenue};
2
2
  //# sourceMappingURL=attribution.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.esm.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","SESSION_TIMEOUT","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"AAEO,MAAMA,EAAc,UAGrBC,EACO,GADPA,EAEW,IAFXA,EAGU,IAHVA,GAIgB,EAJhBA,GAKG,ECVT,MAAMC,EAAS,mBAEf,IAAIC,GAAe,EAMb,SAAUC,KAASC,GACnBF,GACFG,QAAQC,IAAIL,KAAWG,EAE3B,CAEM,SAAUG,KAAQH,GACtBC,QAAQE,KAAKN,KAAWG,EAC1B,CAEM,SAAUI,KAASJ,GACvBC,QAAQG,MAAMP,KAAWG,EAC3B,CCpBA,MAAMK,EAAa,SAEnB,IAAIC,EAA6C,KAajD,SAASC,IACP,OAAID,IACwB,oBAAjBE,cAbb,WACE,IACE,MAAMC,EAAMJ,EAAa,OAGzB,OAFAG,aAAaE,QAAQD,EAAK,KAC1BD,aAAaG,WAAWF,IACjB,CACT,CAAE,MACA,OAAO,CACT,CACF,CAI6CG,GAClCJ,cAETF,EAAiB,IAAIO,IACdP,GACT,CAEO,MAAMQ,EAAU,CACrB,GAAAC,CAAIN,GACF,MAAMO,EAAQT,IACRU,EAAWZ,EAAaI,EAC9B,OAAIO,aAAiBH,IACZG,EAAMD,IAAIE,IAAa,KAEzBD,EAAME,QAAQD,EACvB,EAEA,GAAAE,CAAIV,EAAaW,GACf,MAAMJ,EAAQT,IACRU,EAAWZ,EAAaI,EAC1BO,aAAiBH,IACnBG,EAAMG,IAAIF,EAAUG,GAEpBJ,EAAMN,QAAQO,EAAUG,EAE5B,EAEA,MAAAC,CAAOZ,GACL,MAAMO,EAAQT,IACRU,EAAWZ,EAAaI,EAC1BO,aAAiBH,IACnBG,EAAMM,OAAOL,GAEbD,EAAML,WAAWM,EAErB,GCjDF,IAAIM,EAAgC,KAS7BC,eAAeC,EAAQC,EAAcC,GAC1C,IAAKJ,EAEH,OADAK,EAAY,0BACL,KAGT,MAAMC,EAAM,GAAGN,EAAOO,UAAUJ,IAChC,IACE,MAAMK,QAAYC,MAAMH,EAAK,CAC3BI,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChB,YAAaX,EAAOY,QAEtBR,KAAMS,KAAKC,UAAUV,KAGvB,OAAKI,EAAIO,SAKKP,EAAIQ,QAJhBX,EAAY,QAAQF,aAAgBK,EAAIS,UACjC,KAIX,CAAE,MAAOC,GAEP,OADAC,EAAa,QAAQhB,WAAee,GAC7B,IACT,CACF,CCxBA,SAASE,IACP,IACE,MAAO,GAAGC,OAAOC,SAASD,OAAOE,QACnC,CAAE,MACA,MAAO,EACT,CACF,CAEA,SAASC,IACP,IACE,OAAOC,KAAKC,iBAAiBC,kBAAkBC,QACjD,CAAE,MACA,MAAO,EACT,CACF,CAEA,SAASC,IACP,IACE,OAAOC,UAAUC,UAAY,EAC/B,CAAE,MACA,MAAO,EACT,CACF,CAEA,SAASC,IACP,IAEE,MAAMC,EAAMH,UACZ,OAAIG,EAAIC,eAAeC,SACdF,EAAIC,cAAcC,SAEpBL,UAAUK,UAAY,EAC/B,CAAE,MACA,MAAO,EACT,CACF,CC/CA,MAAMC,EAAkB,KAExB,SAASC,IACP,IACE,OAAOC,OAAOC,YAChB,CAAE,MAEA,MAAO,uCAAuCC,QAAQ,QAAUC,IAC9D,MAAMC,EAAqB,GAAhBC,KAAKC,SAAiB,EAEjC,OADgB,MAANH,EAAYC,EAAS,EAAJA,EAAW,GAC7BG,SAAS,KAEtB,CACF,OAEaC,EAKX,WAAAC,GACE,MAAMC,EAASzD,EAAQC,IAAI,cACrByD,EAAc1D,EAAQC,IAAI,iBAEhC,GAAIwD,GAAUC,EAAa,CAEzB,GADgBC,KAAKC,MAAQC,OAAOH,GACtBb,EAIZ,OAHAiB,KAAKC,UAAYN,EACjBK,KAAKE,aAAeH,OAAOH,QAC3BI,KAAKG,UAAYJ,OAAO7D,EAAQC,IAAI,gBAAkB,KAG1D,CAGA6D,KAAKC,UAAYjB,IACjBgB,KAAKE,aAAeL,KAAKC,MACzBE,KAAKG,UAAY,EACjBH,KAAKI,UACLC,EAAa,sBAAuBL,KAAKC,UAC3C,CAEA,YAAAK,GAQE,OAPIT,KAAKC,MAAQE,KAAKE,aAAenB,IACnCiB,KAAKC,UAAYjB,IACjBgB,KAAKG,UAAY,EACjBE,EAAa,4BAA6BL,KAAKC,YAEjDD,KAAKE,aAAeL,KAAKC,MACzBE,KAAKI,UACEJ,KAAKC,SACd,CAEA,kBAAAM,GAGE,OAFAP,KAAKG,YACLjE,EAAQK,IAAI,cAAeiE,OAAOR,KAAKG,YAChCH,KAAKG,SACd,CAEQ,OAAAC,GACNlE,EAAQK,IAAI,aAAcyD,KAAKC,WAC/B/D,EAAQK,IAAI,gBAAiBiE,OAAOR,KAAKE,cAC3C,EC3DF,MAAMO,EAAc,cAEPC,EAMX,WAAAhB,CAAY/C,GALJqD,KAAAW,MAAuB,GACvBX,KAAAY,MAA+C,KAE/CZ,KAAAa,UAAW,EAGjBb,KAAKrD,OAASA,EACdqD,KAAKc,UACLd,KAAKe,kBACLf,KAAKgB,qBACP,CAEA,OAAAC,CAAQC,GAIN,IAHAlB,KAAKW,MAAMQ,KAAKD,GAGTlB,KAAKW,MAAMS,OAASpB,KAAKrD,OAAO0E,cACrCrB,KAAKW,MAAMW,QAGbtB,KAAKI,UACLC,EAAa,gBAAiBa,EAAMK,WAAY,IAAIvB,KAAKW,MAAMS,mBAE3DpB,KAAKW,MAAMS,QAAUpB,KAAKrD,OAAO6E,WACnCxB,KAAKyB,OAET,CAEA,WAAMA,GACJ,GAAIzB,KAAKa,UAAkC,IAAtBb,KAAKW,MAAMS,OAAc,OAC9CpB,KAAKa,UAAW,EAEhB,MAAMa,EAAQ1B,KAAKW,MAAMgB,OAAO,EAAG3B,KAAKrD,OAAO6E,WAC/CxB,KAAKI,UAEL,MAAMrD,EAA+B,CACnC6E,OAAQ5B,KAAKrD,OAAOkF,MACpBC,OAAQJ,EACRK,YAAahH,GAGf,UACuB8B,EAAK,iBAAkBE,GAO1CsD,EAAa,WAAWqB,EAAMN,kBAJ9BpB,KAAKW,MAAMqB,WAAWN,GACtB1B,KAAKI,UACLpD,EAAY,kCAIhB,CAAE,MAAOa,GACPmC,KAAKW,MAAMqB,WAAWN,GACtB1B,KAAKI,UACLtC,EAAa,eAAgBD,EAC/B,SACEmC,KAAKa,UAAW,CAClB,CACF,CAGA,WAAAoB,GACE,GAA0B,IAAtBjC,KAAKW,MAAMS,OAAc,QH1B3B,SAAiBtE,EAAcC,GACnC,IAAKJ,EAAQ,OAEb,MAAMM,EAAM,GAAGN,EAAOO,UAAUJ,IAC1BoF,EAAU1E,KAAKC,UAAU,IAAKV,EAAgBoF,SAAUxF,EAAOY,SAGrE,IAUE,YATAH,MAAMH,EAAK,CACTI,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChB,YAAaX,EAAOY,QAEtBR,KAAMmF,EACNE,WAAW,IACVC,MAAM,OAEX,CAAE,MAEF,CAGA,IACE5D,UAAU6D,WAAWrF,EAAK,IAAIsF,KAAK,CAACL,GAAU,CAAEM,KAAM,qBACxD,CAAE,MACAxF,EAAY,uCACd,CACF,CGMIyF,CAAO,iBAN8B,CACnCb,OAAQ5B,KAAKrD,OAAOkF,MACpBC,OAAQ9B,KAAKW,MACboB,YAAahH,IAIfiF,KAAKW,MAAQ,GACbX,KAAKI,UACLC,EAAa,oBACf,CAEA,OAAAqC,GACM1C,KAAKY,QACP+B,cAAc3C,KAAKY,OACnBZ,KAAKY,MAAQ,KAEjB,CAEQ,eAAAG,GACNf,KAAKY,MAAQgC,YAAY,KACvB5C,KAAKyB,SACJzB,KAAKrD,OAAOkG,cACjB,CAEQ,mBAAA7B,GACkB,oBAAb8B,WAGXA,SAASC,iBAAiB,mBAAoB,KACX,WAA7BD,SAASE,iBACXhD,KAAKiC,gBAKTgB,OAAOF,iBAAiB,eAAgB,KACtC/C,KAAKiC,gBAET,CAEQ,OAAA7B,GACN,IACElE,EAAQK,IAAIkE,EAAajD,KAAKC,UAAUuC,KAAKW,OAC/C,CAAE,MAEF,CACF,CAEQ,OAAAG,GACN,IACE,MAAMoC,EAAMhH,EAAQC,IAAIsE,GACpByC,IACFlD,KAAKW,MAAQnD,KAAK2F,MAAMD,GACxB7C,EAAa,YAAYL,KAAKW,MAAMS,wBAExC,CAAE,MACApB,KAAKW,MAAQ,EACf,CACF,ECqFK,MAAMyC,EAAc,IA1M3B,MAAA,WAAA1D,GACUM,KAAArD,OAAgC,KAChCqD,KAAAqD,QAAiC,KACjCrD,KAAAW,MAA2B,KAC3BX,KAAAsD,aAAc,EACdtD,KAAAuD,QAAkB,EAkM5B,CA5LE,IAAAC,CAAKC,GNtBD,IAAmBC,EECQC,EIsBzB3D,KAAKsD,YACPtG,EAAY,4BAIdgD,KAAKrD,OPhBH,SAAwBA,GAC5B,IAAKA,EAAOY,OACV,MAAM,IAAIqG,MAAM,uCAElB,IAAKjH,EAAOkF,MACV,MAAM,IAAI+B,MAAM,sCAElB,MAAM1G,EAAUP,EAAOO,SApBO,0BAsB9B,MAAO,CACLK,OAAQZ,EAAOY,OACfsE,MAAOlF,EAAOkF,MACd3E,QAASA,EAAQiC,QAAQ,OAAQ,IACjCqC,UAAW7E,EAAO6E,WAAaxG,EAC/B6H,cAAelG,EAAOkG,eAAiB7H,EACvCqG,aAAc1E,EAAO0E,cAAgBrG,EACrC6I,mBACElH,EAAOkH,oBAAsB7I,EAC/BG,MAAOwB,EAAOxB,OAASH,EAE3B,COJkB8I,CAAcL,GN5BPC,EM6BZ1D,KAAKrD,OAAOxB,MN5BvBD,EAAewI,EEAgBC,EI6BZ3D,KAAKrD,OJ5BxBA,EAASgH,EI8BPtD,EAAa,eAAgB,CAAEwB,MAAO7B,KAAKrD,OAAOkF,MAAOkC,QAAShJ,IAElEiF,KAAKqD,QAAU,IAAI5D,EACnBO,KAAKW,MAAQ,IAAID,EAAWV,KAAKrD,QAGjCqD,KAAKgE,oBAGDhE,KAAKrD,OAAOkH,oBACd7D,KAAKiE,wBAGPjE,KAAKsD,aAAc,EACnBjD,EAAa,mBACf,CAKA,KAAA6D,CAAMC,EAAmBC,EAAsC,IACxDpE,KAAKqE,cAEVrE,KAAKW,MAAOM,QAAQ,CAClBM,WAAY4C,EACZC,aACAE,UAAWzE,KAAKC,MAChByE,WAAYvE,KAAKqD,QAAS/C,gBAE9B,CAKA,aAAAkE,CAAcJ,EAAsC,IAC7CpE,KAAKqE,eAEVrE,KAAKqD,QAAS9C,qBAEdP,KAAKkE,MAAM,YAAa,CACtBjH,IAAKwH,SAASC,KACd5H,KAAM2H,SAASE,SACfC,MAAO9B,SAAS8B,MAChBC,SAAU/B,SAAS+B,YAChBT,IAEP,CAKA,YAAAU,CACEC,EACAC,EAAmB,MACnBZ,EAAsC,CAAA,GAEjCpE,KAAKqE,cAEVrE,KAAKkE,MAAM,UAAW,CACpBa,SACAC,cACGZ,GAEP,CAKA,QAAAa,CAASC,EAAgBd,EAAsC,IACxDpE,KAAKqE,eAEVnI,EAAQK,IAAI,UAAW2I,GAEvBlF,KAAKkE,MAAM,WAAY,CACrBiB,QAASD,KACNd,IAGL/D,EAAa,mBAAoB6E,GACnC,CAKA,KAAAzD,GACOzB,KAAKqE,cACVrE,KAAKW,MAAOc,OACd,CAKA,cAAA2D,GACE,MAAMlC,EAAMhH,EAAQC,IAAI,eACxB,IAAK+G,EAAK,OAAO,KACjB,IACE,OAAO1F,KAAK2F,MAAMD,EACpB,CAAE,MACA,OAAO,IACT,CACF,CAIQ,UAAAmB,GACN,QAAKrE,KAAKsD,cACRtG,EAAY,4CACL,EAGX,CAEQ,uBAAMgH,GACZ,GAAI9H,EAAQC,IAAI,aAEd,YADAkE,EAAa,2BAIf,MAAMgF,EHnJD,CACLC,kBAAmBvH,IACnBwH,SAAUpH,IACVO,SAAUF,IACVM,SAAUH,KGiJJ5B,EAA2B,CAC/B6E,OAAQ5B,KAAKrD,OAAQkF,MACrB/C,SAAU,MACViD,YAAahH,EACbuK,kBAAmBD,EAAOC,wBAAqBE,EAC/CD,SAAUF,EAAOE,eAAYC,EAC7B9G,SAAU2G,EAAO3G,eAAY8G,GAG/BnF,EAAa,uBAEb,MAAMlD,QAAYN,EAAkC,mBAAoBE,GAEpEI,GAAKsI,MACPvJ,EAAQK,IAAI,YAAa,KACzBL,EAAQK,IAAI,cAAeiB,KAAKC,UAAUN,EAAIsI,OAC9CpF,EAAa,mBAAoBlD,EAAIsI,KAAKC,UAAW,IAAIvI,EAAIsI,KAAKE,iBAGlE3I,EAAY,sCAEhB,CAEQ,qBAAAiH,GACN,GAAsB,oBAAXhB,OAAwB,OAEnCjD,KAAKuD,QAAUkB,SAASC,KAGxB1E,KAAKwE,gBAGL,MAAMoB,EAAoBC,QAAQC,UAAUC,KAAKF,SAC3CG,EAAuBH,QAAQI,aAAaF,KAAKF,SAEvDA,QAAQC,UAAY,IAAI1K,KACtBwK,KAAqBxK,GACrB4E,KAAKkG,eAGPL,QAAQI,aAAe,IAAI7K,KACzB4K,KAAwB5K,GACxB4E,KAAKkG,eAIPjD,OAAOF,iBAAiB,WAAY,KAClC/C,KAAKkG,eAET,CAEQ,WAAAA,GACN,MAAMC,EAAS1B,SAASC,KACpByB,IAAWnG,KAAKuD,UAClBvD,KAAKuD,QAAU4C,EACfnG,KAAKwE,gBAET,GC3MWhB,EAAOJ,EAAYI,KAAKuC,KAAK3C,GAC7Bc,EAAQd,EAAYc,MAAM6B,KAAK3C,GAC/BoB,EAAgBpB,EAAYoB,cAAcuB,KAAK3C,GAC/C0B,EAAe1B,EAAY0B,aAAaiB,KAAK3C,GAC7C6B,EAAW7B,EAAY6B,SAASc,KAAK3C,GACrC3B,EAAQ2B,EAAY3B,MAAMsE,KAAK3C,GAC/BgC,EAAiBhC,EAAYgC,eAAeW,KAAK3C,GAG9D,IAAAgD,EAAe,CACb5C,OACAU,QACAM,gBACAM,eACAG,WACAxD,QACA2D"}
1
+ {"version":3,"file":"attribution.esm.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/utils.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SESSION_TIMEOUT","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","deviceId","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","device_id","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","getOrCreateDeviceId","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","existing","id","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).AttributionSDK={})}(this,function(t){"use strict";const e='"1.0.0"',i=10,s=5e3,n=100,r=!0,a=!1;const o="[AttributionSDK]";let u=!1;function h(...t){u&&console.log(o,...t)}function c(...t){console.warn(o,...t)}function l(...t){console.error(o,...t)}const d="__ahq_";let f=null;function p(){return f||("undefined"!=typeof localStorage&&function(){try{const t=d+"test";return localStorage.setItem(t,"1"),localStorage.removeItem(t),!0}catch{return!1}}()?localStorage:(f=new Map,f))}const g={get(t){const e=p(),i=d+t;return e instanceof Map?e.get(i)??null:e.getItem(i)},set(t,e){const i=p(),s=d+t;i instanceof Map?i.set(s,e):i.setItem(s,e)},remove(t){const e=p(),i=d+t;e instanceof Map?e.delete(i):e.removeItem(i)}};let y=null;async function v(t,e){if(!y)return c("Network not configured"),null;const i=`${y.baseUrl}${t}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":y.apiKey},body:JSON.stringify(e)});return s.ok?await s.json():(c(`POST ${t} failed: ${s.status}`),null)}catch(e){return l(`POST ${t} error:`,e),null}}function m(){try{return`${screen.width}x${screen.height}`}catch{return""}}function w(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function I(){try{return navigator.language||""}catch{return""}}function b(){try{const t=navigator;return t.userAgentData?.platform?t.userAgentData.platform:navigator.platform||""}catch{return""}}const x=18e5;function S(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)})}}class k{constructor(){const t=g.get("session_id"),e=g.get("session_start");if(t&&e){if(Date.now()-Number(e)<x)return this.sessionId=t,this.lastActivity=Number(e),void(this.pageViews=Number(g.get("session_pvs")||"0"))}this.sessionId=S(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),h("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>x&&(this.sessionId=S(),this.pageViews=0,h("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,g.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){g.set("session_id",this.sessionId),g.set("session_start",String(this.lastActivity))}}const q="queue";class _{constructor(t){this.queue=[],this.timer=null,this.flushing=!1,this.config=t,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(t){for(this.queue.push(t);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),h("Event queued:",t.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const t=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,events:t,sdk_version:e};try{await v("/api/v1/events",i)?h(`Flushed ${t.length} events`):(this.queue.unshift(...t),this.persist(),c("Flush failed, events re-queued"))}catch(e){this.queue.unshift(...t),this.persist(),l("Flush error:",e)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(t,e){if(!y)return;const i=`${y.baseUrl}${t}`,s=JSON.stringify({...e,_api_key:y.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":y.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{c("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,events:this.queue,sdk_version:e}),this.queue=[],this.persist(),h("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{g.set(q,JSON.stringify(this.queue))}catch{}}restore(){try{const t=g.get(q);t&&(this.queue=JSON.parse(t),h(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const P=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl=""}init(t){var o,l;this.initialized?c("SDK already initialized"):(this.config=function(t){if(!t.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!t.appId)throw new Error("[AttributionSDK] appId is required");const e=t.baseUrl||"https://attributehq.com";return{apiKey:t.apiKey,appId:t.appId,baseUrl:e.replace(/\/+$/,""),batchSize:t.batchSize??i,flushInterval:t.flushInterval??s,maxQueueSize:t.maxQueueSize??n,autoTrackPageViews:t.autoTrackPageViews??r,debug:t.debug??a}}(t),o=this.config.debug,u=o,l=this.config,y=l,h("Initializing",{appId:this.config.appId,version:e}),this.session=new k,this.queue=new _(this.config),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,h("SDK initialized"))}track(t,e={}){this.ensureInit()&&this.queue.enqueue({event_name:t,properties:e,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(t={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...t}))}trackRevenue(t,e="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:t,currency:e,...i})}identify(t,e={}){this.ensureInit()&&(g.set("user_id",t),this.track("identify",{user_id:t,...e}),h("User identified:",t))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const t=g.get("attribution");if(!t)return null;try{return JSON.parse(t)}catch{return null}}ensureInit(){return!!this.initialized||(c("SDK not initialized. Call init() first."),!1)}async trackInstallIfNew(){if(g.get("installed"))return void h("Install already tracked");const t={screen_resolution:m(),timezone:w(),language:I(),platform:b()},i={app_id:this.config.appId,platform:"web",sdk_version:e,screen_resolution:t.screen_resolution||void 0,timezone:t.timezone||void 0,language:t.language||void 0};h("Tracking install...");const s=await v("/api/v1/installs",i);s?.data?(g.set("installed","1"),g.set("attribution",JSON.stringify(s.data)),h("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):c("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=(...e)=>{t(...e),this.onUrlChange()},history.replaceState=(...t)=>{e(...t),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const t=location.href;t!==this.lastUrl&&(this.lastUrl=t,this.trackPageView())}},V=P.init.bind(P),z=P.track.bind(P),T=P.trackPageView.bind(P),A=P.trackRevenue.bind(P),U=P.identify.bind(P),D=P.flush.bind(P),K=P.getAttribution.bind(P);var N={init:V,track:z,trackPageView:T,trackRevenue:A,identify:U,flush:D,getAttribution:K};t.default=N,t.flush=D,t.getAttribution=K,t.identify=U,t.init=V,t.track=z,t.trackPageView=T,t.trackRevenue=A,Object.defineProperty(t,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AttributionSDK={})}(this,function(e){"use strict";const t='"1.0.2"',i=10,s=5e3,n=100,r=!0,a=!1;const o="[AttributionSDK]";let u=!1;function h(...e){u&&console.log(o,...e)}function c(...e){console.warn(o,...e)}function l(...e){console.error(o,...e)}const d="__ahq_";let f=null;function p(){return f||("undefined"!=typeof localStorage&&function(){try{const e=d+"test";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}()?localStorage:(f=new Map,f))}const g={get(e){const t=p(),i=d+e;return t instanceof Map?t.get(i)??null:t.getItem(i)},set(e,t){const i=p(),s=d+e;i instanceof Map?i.set(s,t):i.setItem(s,t)},remove(e){const t=p(),i=d+e;t instanceof Map?t.delete(i):t.removeItem(i)}};let v=null;async function y(e,t){if(!v)return c("Network not configured"),null;const i=`${v.baseUrl}${e}`;try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":v.apiKey},body:JSON.stringify(t)});return s.ok?await s.json():(c(`POST ${e} failed: ${s.status}`),null)}catch(t){return l(`POST ${e} error:`,t),null}}function I(){try{return`${screen.width}x${screen.height}`}catch{return""}}function m(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return""}}function w(){try{return navigator.language||""}catch{return""}}function b(){try{const e=navigator;return e.userAgentData?.platform?e.userAgentData.platform:navigator.platform||""}catch{return""}}function x(){try{return crypto.randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}const S=18e5;class k{constructor(){const e=g.get("session_id"),t=g.get("session_start");if(e&&t){if(Date.now()-Number(t)<S)return this.sessionId=e,this.lastActivity=Number(t),void(this.pageViews=Number(g.get("session_pvs")||"0"))}this.sessionId=x(),this.lastActivity=Date.now(),this.pageViews=0,this.persist(),h("New session started",this.sessionId)}getSessionId(){return Date.now()-this.lastActivity>S&&(this.sessionId=x(),this.pageViews=0,h("Session rotated (timeout)",this.sessionId)),this.lastActivity=Date.now(),this.persist(),this.sessionId}incrementPageViews(){return this.pageViews++,g.set("session_pvs",String(this.pageViews)),this.pageViews}persist(){g.set("session_id",this.sessionId),g.set("session_start",String(this.lastActivity))}}const _="queue";class q{constructor(e,t){this.queue=[],this.timer=null,this.flushing=!1,this.config=e,this.deviceId=t,this.restore(),this.startFlushTimer(),this.setupUnloadHandlers()}enqueue(e){for(this.queue.push(e);this.queue.length>this.config.maxQueueSize;)this.queue.shift();this.persist(),h("Event queued:",e.event_name,`(${this.queue.length} pending)`),this.queue.length>=this.config.batchSize&&this.flush()}async flush(){if(this.flushing||0===this.queue.length)return;this.flushing=!0;const e=this.queue.splice(0,this.config.batchSize);this.persist();const i={app_id:this.config.appId,device_id:this.deviceId,events:e,sdk_version:t};try{await y("/api/v1/events",i)?h(`Flushed ${e.length} events`):(this.queue.unshift(...e),this.persist(),c("Flush failed, events re-queued"))}catch(t){this.queue.unshift(...e),this.persist(),l("Flush error:",t)}finally{this.flushing=!1}}flushBeacon(){if(0===this.queue.length)return;!function(e,t){if(!v)return;const i=`${v.baseUrl}${e}`,s=JSON.stringify({...t,_api_key:v.apiKey});try{return void fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":v.apiKey},body:s,keepalive:!0}).catch(()=>{})}catch{}try{navigator.sendBeacon(i,new Blob([s],{type:"application/json"}))}catch{c("Both keepalive and sendBeacon failed")}}("/api/v1/events",{app_id:this.config.appId,device_id:this.deviceId,events:this.queue,sdk_version:t}),this.queue=[],this.persist(),h("Beacon flush sent")}destroy(){this.timer&&(clearInterval(this.timer),this.timer=null)}startFlushTimer(){this.timer=setInterval(()=>{this.flush()},this.config.flushInterval)}setupUnloadHandlers(){"undefined"!=typeof document&&(document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBeacon()}),window.addEventListener("beforeunload",()=>{this.flushBeacon()}))}persist(){try{g.set(_,JSON.stringify(this.queue))}catch{}}restore(){try{const e=g.get(_);e&&(this.queue=JSON.parse(e),h(`Restored ${this.queue.length} queued events`))}catch{this.queue=[]}}}const P=new class{constructor(){this.config=null,this.session=null,this.queue=null,this.initialized=!1,this.lastUrl="",this.deviceId=""}init(e){var o,l;this.initialized?c("SDK already initialized"):(this.config=function(e){if(!e.apiKey)throw new Error("[AttributionSDK] apiKey is required");if(!e.appId)throw new Error("[AttributionSDK] appId is required");return{apiKey:e.apiKey,appId:e.appId,baseUrl:"https://api.attributehq.com",batchSize:e.batchSize??i,flushInterval:e.flushInterval??s,maxQueueSize:e.maxQueueSize??n,autoTrackPageViews:e.autoTrackPageViews??r,debug:e.debug??a}}(e),o=this.config.debug,u=o,l=this.config,v=l,h("Initializing",{appId:this.config.appId,version:t}),this.deviceId=this.getOrCreateDeviceId(),this.session=new k,this.queue=new q(this.config,this.deviceId),this.trackInstallIfNew(),this.config.autoTrackPageViews&&this.setupPageViewTracking(),this.initialized=!0,h("SDK initialized"))}track(e,t={}){this.ensureInit()&&this.queue.enqueue({event_name:e,properties:t,timestamp:Date.now(),session_id:this.session.getSessionId()})}trackPageView(e={}){this.ensureInit()&&(this.session.incrementPageViews(),this.track("page_view",{url:location.href,path:location.pathname,title:document.title,referrer:document.referrer,...e}))}trackRevenue(e,t="NGN",i={}){this.ensureInit()&&this.track("revenue",{amount:e,currency:t,...i})}identify(e,t={}){this.ensureInit()&&(g.set("user_id",e),this.track("identify",{user_id:e,...t}),h("User identified:",e))}flush(){this.ensureInit()&&this.queue.flush()}getAttribution(){const e=g.get("attribution");if(!e)return null;try{return JSON.parse(e)}catch{return null}}ensureInit(){return!!this.initialized||(c("SDK not initialized. Call init() first."),!1)}getOrCreateDeviceId(){const e=g.get("device_id");if(e)return e;const t=x();return g.set("device_id",t),t}async trackInstallIfNew(){if(g.get("installed"))return void h("Install already tracked");const e={screen_resolution:I(),timezone:m(),language:w(),platform:b()},i={app_id:this.config.appId,platform:"web",sdk_version:t,device_id:this.deviceId,screen_resolution:e.screen_resolution||void 0,timezone:e.timezone||void 0,language:e.language||void 0};h("Tracking install...");const s=await y("/api/v1/installs",i);s?.data?(g.set("installed","1"),g.set("attribution",JSON.stringify(s.data)),h("Install tracked:",s.data.matchType,`(${s.data.confidence}%)`)):c("Install tracking failed, will retry")}setupPageViewTracking(){if("undefined"==typeof window)return;this.lastUrl=location.href,this.trackPageView();const e=history.pushState.bind(history),t=history.replaceState.bind(history);history.pushState=(...t)=>{e(...t),this.onUrlChange()},history.replaceState=(...e)=>{t(...e),this.onUrlChange()},window.addEventListener("popstate",()=>{this.onUrlChange()})}onUrlChange(){const e=location.href;e!==this.lastUrl&&(this.lastUrl=e,this.trackPageView())}},V=P.init.bind(P),z=P.track.bind(P),D=P.trackPageView.bind(P),T=P.trackRevenue.bind(P),A=P.identify.bind(P),K=P.flush.bind(P),U=P.getAttribution.bind(P);var N={init:V,track:z,trackPageView:D,trackRevenue:T,identify:A,flush:K,getAttribution:U};e.default=N,e.flush=K,e.getAttribution=U,e.identify=A,e.init=V,e.track=z,e.trackPageView=D,e.trackRevenue=T,Object.defineProperty(e,"__esModule",{value:!0})});
2
2
  //# sourceMappingURL=attribution.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.umd.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","SESSION_TIMEOUT","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"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"}
1
+ {"version":3,"file":"attribution.umd.js","sources":["../src/config.ts","../src/logger.ts","../src/storage.ts","../src/network.ts","../src/device.ts","../src/utils.ts","../src/session.ts","../src/queue.ts","../src/sdk.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["SDK_VERSION","DEFAULT_CONFIG","PREFIX","debugEnabled","debug","args","console","log","warn","error","KEY_PREFIX","memoryFallback","getStore","localStorage","key","setItem","removeItem","isLocalStorageAvailable","Map","storage","get","store","prefixed","getItem","set","value","remove","delete","config","async","post","path","body","logger.warn","url","baseUrl","res","fetch","method","headers","apiKey","JSON","stringify","ok","json","status","err","logger.error","getScreenResolution","screen","width","height","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getLanguage","navigator","language","getPlatform","nav","userAgentData","platform","generateId","crypto","randomUUID","replace","c","r","Math","random","toString","SESSION_TIMEOUT","SessionManager","constructor","stored","storedStart","Date","now","Number","this","sessionId","lastActivity","pageViews","persist","logger.debug","getSessionId","incrementPageViews","String","STORAGE_KEY","EventQueue","deviceId","queue","timer","flushing","restore","startFlushTimer","setupUnloadHandlers","enqueue","event","push","length","maxQueueSize","shift","event_name","batchSize","flush","batch","splice","app_id","appId","device_id","events","sdk_version","unshift","flushBeacon","payload","_api_key","keepalive","catch","sendBeacon","Blob","type","beacon","destroy","clearInterval","setInterval","flushInterval","document","addEventListener","visibilityState","window","raw","parse","sdkInstance","session","initialized","lastUrl","init","userConfig","enabled","cfg","Error","autoTrackPageViews","resolveConfig","version","getOrCreateDeviceId","trackInstallIfNew","setupPageViewTracking","track","eventName","properties","ensureInit","timestamp","session_id","trackPageView","location","href","pathname","title","referrer","trackRevenue","amount","currency","identify","userId","user_id","getAttribution","existing","id","device","screen_resolution","timezone","undefined","data","matchType","confidence","originalPushState","history","pushState","bind","originalReplaceState","replaceState","onUrlChange","newUrl","index"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,6 @@ interface SDKConfig {
6
6
  apiKey: string;
7
7
  /** App UUID */
8
8
  appId: string;
9
- /** Override API base URL (default: https://attributehq.com) */
10
- baseUrl?: string;
11
9
  /** Events per batch before auto-flush (default: 10) */
12
10
  batchSize?: number;
13
11
  /** Auto-flush interval in ms (default: 5000) */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@attributehq/web-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Lightweight web attribution SDK for AttributeHQ — track installs, events, and revenue",
5
5
  "author": "AttributeHQ <dev@attributehq.com>",
6
6
  "license": "MIT",