@cityflo/truesight-web-sdk 0.1.1 → 0.1.3
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/dist/auto/auto-track-manager.d.ts +9 -0
- package/dist/auto/click-tracker.d.ts +8 -0
- package/dist/auto/dead-click-tracker.d.ts +10 -0
- package/dist/auto/form-tracker.d.ts +8 -0
- package/dist/auto/page-load-tracker.d.ts +10 -0
- package/dist/auto/pageview-tracker.d.ts +12 -0
- package/dist/auto/rage-click-tracker.d.ts +11 -0
- package/dist/auto/scroll-tracker.d.ts +13 -0
- package/dist/auto/time-on-page-tracker.d.ts +11 -0
- package/dist/auto/tracker.d.ts +6 -0
- package/dist/compression.d.ts +2 -2
- package/dist/config.d.ts +13 -0
- package/dist/event-model.d.ts +7 -0
- package/dist/index.d.ts +10 -2
- package/dist/session-manager.d.ts +16 -0
- package/dist/truesight.cjs.js +1 -1
- package/dist/truesight.cjs.js.map +1 -1
- package/dist/truesight.d.ts +3 -0
- package/dist/truesight.esm.js +1 -1
- package/dist/truesight.esm.js.map +1 -1
- package/dist/truesight.umd.js +1 -1
- package/dist/truesight.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AutoTrackConfig } from '../config.js';
|
|
2
|
+
export declare class AutoTrackManager {
|
|
3
|
+
private trackers;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private started;
|
|
6
|
+
constructor(config: AutoTrackConfig, trackFn: (eventName: string, properties: Record<string, unknown>) => void);
|
|
7
|
+
start(): void;
|
|
8
|
+
stop(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class ClickTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private handler;
|
|
6
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
7
|
+
stop(): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class DeadClickTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private handler;
|
|
6
|
+
private timeouts;
|
|
7
|
+
private observers;
|
|
8
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
9
|
+
stop(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class FormTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private handler;
|
|
6
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
7
|
+
stop(): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class PageLoadTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private fired;
|
|
5
|
+
private trackFn;
|
|
6
|
+
private loadHandler;
|
|
7
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
8
|
+
stop(): void;
|
|
9
|
+
private fireMetrics;
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class PageviewTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private origPushState;
|
|
6
|
+
private origReplaceState;
|
|
7
|
+
private popstateHandler;
|
|
8
|
+
private hashchangeHandler;
|
|
9
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
10
|
+
stop(): void;
|
|
11
|
+
private firePageview;
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class RageClickTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private handler;
|
|
6
|
+
private clicks;
|
|
7
|
+
private readonly threshold;
|
|
8
|
+
private readonly windowMs;
|
|
9
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
10
|
+
stop(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class ScrollTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private scrollHandler;
|
|
6
|
+
private popstateHandler;
|
|
7
|
+
private firedThresholds;
|
|
8
|
+
private throttleTimer;
|
|
9
|
+
private lastUrl;
|
|
10
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
private checkScroll;
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AutoTracker } from './tracker.js';
|
|
2
|
+
export declare class TimeOnPageTracker implements AutoTracker {
|
|
3
|
+
name: string;
|
|
4
|
+
private trackFn;
|
|
5
|
+
private entryTime;
|
|
6
|
+
private visibilityHandler;
|
|
7
|
+
private unloadHandler;
|
|
8
|
+
start(trackFn: (eventName: string, properties: Record<string, unknown>) => void): void;
|
|
9
|
+
stop(): void;
|
|
10
|
+
private fireDuration;
|
|
11
|
+
}
|
package/dist/compression.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare function compress(
|
|
1
|
+
export declare const isSupported = false;
|
|
2
|
+
export declare function compress(_data: Uint8Array): Promise<Uint8Array>;
|
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export interface AutoTrackConfig {
|
|
2
|
+
pageViews: boolean;
|
|
3
|
+
clicks: boolean;
|
|
4
|
+
formSubmits: boolean;
|
|
5
|
+
rageClicks: boolean;
|
|
6
|
+
deadClicks: boolean;
|
|
7
|
+
scrollDepth: boolean;
|
|
8
|
+
timeOnPage: boolean;
|
|
9
|
+
pageLoadTiming: boolean;
|
|
10
|
+
}
|
|
1
11
|
export interface Config {
|
|
2
12
|
apiKey: string;
|
|
3
13
|
endpoint: string;
|
|
@@ -7,7 +17,10 @@ export interface Config {
|
|
|
7
17
|
maxQueueHard: number;
|
|
8
18
|
maxEventSize: number;
|
|
9
19
|
debug: boolean;
|
|
20
|
+
sessionTimeout: number;
|
|
21
|
+
autoTrack: AutoTrackConfig;
|
|
10
22
|
}
|
|
23
|
+
export declare const DEFAULT_AUTO_TRACK: AutoTrackConfig;
|
|
11
24
|
export declare const DEFAULT_CONFIG: Omit<Config, 'apiKey' | 'endpoint'>;
|
|
12
25
|
export declare function buildConfig(init: {
|
|
13
26
|
apiKey: string;
|
package/dist/event-model.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ export interface DeviceContext {
|
|
|
11
11
|
sdk_version: string;
|
|
12
12
|
screen_width: number;
|
|
13
13
|
screen_height: number;
|
|
14
|
+
page_url: string;
|
|
15
|
+
page_path: string;
|
|
16
|
+
referrer: string;
|
|
17
|
+
user_agent: string;
|
|
18
|
+
viewport_width: number;
|
|
19
|
+
viewport_height: number;
|
|
14
20
|
}
|
|
15
21
|
export interface TrueSightEvent {
|
|
16
22
|
event_id: string;
|
|
@@ -20,6 +26,7 @@ export interface TrueSightEvent {
|
|
|
20
26
|
anonymous_id: string;
|
|
21
27
|
mobile_number: string | null;
|
|
22
28
|
email: string | null;
|
|
29
|
+
session_id: string | null;
|
|
23
30
|
client_timestamp: string;
|
|
24
31
|
properties: Record<string, unknown>;
|
|
25
32
|
context: DeviceContext;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TrueSightSDK } from './truesight.js';
|
|
2
|
-
export type { Config } from './config.js';
|
|
2
|
+
export type { Config, AutoTrackConfig } from './config.js';
|
|
3
3
|
export type { EventType, DeviceContext, TrueSightEvent, BatchPayload, } from './event-model.js';
|
|
4
4
|
export { TrueSightSDK } from './truesight.js';
|
|
5
5
|
declare const instance: TrueSightSDK;
|
|
@@ -9,7 +9,11 @@ declare const instance: TrueSightSDK;
|
|
|
9
9
|
export declare const init: (initConfig: {
|
|
10
10
|
apiKey: string;
|
|
11
11
|
endpoint: string;
|
|
12
|
-
options
|
|
12
|
+
options
|
|
13
|
+
/**
|
|
14
|
+
* Track an A/B test experiment exposure.
|
|
15
|
+
*/
|
|
16
|
+
?: Partial<import("./config.js").Config>;
|
|
13
17
|
}) => Promise<void>;
|
|
14
18
|
/**
|
|
15
19
|
* Track a custom event.
|
|
@@ -39,4 +43,8 @@ export declare const setMobileNumber: (number: string) => void;
|
|
|
39
43
|
* Set email for all future events.
|
|
40
44
|
*/
|
|
41
45
|
export declare const setEmail: (email: string) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Track an A/B test experiment exposure.
|
|
48
|
+
*/
|
|
49
|
+
export declare const trackExperiment: (flagName: string, variant: string, properties?: Record<string, unknown>) => Promise<void>;
|
|
42
50
|
export default instance;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class SessionManager {
|
|
2
|
+
private sessionTimeout;
|
|
3
|
+
private onSessionEvent;
|
|
4
|
+
private sessionId;
|
|
5
|
+
private lastActivityTime;
|
|
6
|
+
private sessionStartTime;
|
|
7
|
+
constructor(sessionTimeout: number, onSessionEvent: (eventName: string, properties: Record<string, unknown>) => void);
|
|
8
|
+
private restore;
|
|
9
|
+
getSessionId(): string;
|
|
10
|
+
startSession(): void;
|
|
11
|
+
endSession(): void;
|
|
12
|
+
touchActivity(): void;
|
|
13
|
+
reset(): void;
|
|
14
|
+
destroy(): void;
|
|
15
|
+
private persist;
|
|
16
|
+
}
|
package/dist/truesight.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1};const t=(new TextEncoder).encode("truesight-web-sdk-v1");let n=null,i=null;function r(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function s(e){const s=e+("undefined"!=typeof window?window.location.origin:"unknown");if(n&&i===s)return n;const o=r(),a=(new TextEncoder).encode(s),u=await o.digest("SHA-256",a),l=await o.importKey("raw",u,"PBKDF2",!1,["deriveKey"]),d=await o.deriveKey({name:"PBKDF2",salt:t,iterations:1e5,hash:"SHA-256"},l,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return n=d,i=s,d}function o(e){const t=new Uint8Array(e);let n="";for(let e=0;e<t.byteLength;e++)n+=String.fromCharCode(t[e]);return btoa(n)}function a(e){const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}async function u(e,t){const n=r(),i=new TextEncoder,s=(a=new Uint8Array(12),globalThis.crypto.getRandomValues(a));var a;const u=await n.encrypt({name:"AES-GCM",iv:s},t,i.encode(e));return{iv:o(s.buffer),ciphertext:o(u)}}async function l(e,t){const n=r(),i=new Uint8Array(a(e.iv)),s=a(e.ciphertext),o=await n.decrypt({name:"AES-GCM",iv:i},t,s);return(new TextDecoder).decode(o)}const d=0,c=1,h=2,f=3,m="[TrueSight]";const w=new class{constructor(e=!1){this.level=e?d:h}setDebug(e){this.level=e?d:h}debug(...e){this.level<=d&&console.debug(m,...e)}info(...e){this.level<=c&&console.info(m,...e)}warn(...e){this.level<=h&&console.warn(m,...e)}error(...e){this.level<=f&&console.error(m,...e)}},b="events";class y{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const n=indexedDB.open("truesight_events",1);n.onupgradeneeded=()=>{const e=n.result;if(!e.objectStoreNames.contains(b)){e.createObjectStore(b,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},n.onsuccess=()=>{this.db=n.result,w.debug("IndexedDB opened successfully"),e()},n.onerror=()=>{w.error("Failed to open IndexedDB",n.error),t(n.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(b,e).objectStore(b)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(w.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const n=await s(this.apiKey),i=await u(JSON.stringify(e),n),r={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:i};return new Promise((t,n)=>{const i=this.getStore("readwrite").put(r);i.onsuccess=()=>{w.debug(`Event enqueued: ${e.event_id}`),t()},i.onerror=()=>{w.error("Failed to enqueue event",i.error),n(i.error)}})}async dequeue(e){const t=await s(this.apiKey),n=await this.getOldest(e),i=[];for(const e of n)try{const n=await l(e.encrypted,t);i.push(JSON.parse(n))}catch(t){w.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return i}getOldest(e){return new Promise((t,n)=>{const i=this.getStore("readonly").index("timestamp").openCursor(null,"next"),r=[];i.onsuccess=()=>{const n=i.result;n&&r.length<e?(r.push(n.value),n.continue()):t(r)},i.onerror=()=>{n(i.error)}})}async remove(e){if(0!==e.length)return new Promise((t,n)=>{if(!this.db)return void n(new Error("Database not opened"));const i=this.db.transaction(b,"readwrite"),r=i.objectStore(b);for(const t of e)r.delete(t);i.oncomplete=()=>{w.debug(`Removed ${e.length} events from queue`),t()},i.onerror=()=>{w.error("Failed to remove events",i.error),n(i.error)}})}async size(){return new Promise((e,t)=>{const n=this.getStore("readonly").count();n.onsuccess=()=>{e(n.result)},n.onerror=()=>{t(n.error)}})}async clear(){return new Promise((e,t)=>{const n=this.getStore("readwrite").clear();n.onsuccess=()=>{w.debug("Event queue cleared"),e()},n.onerror=()=>{t(n.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}let p=null,g=!1,v=!0;async function S(e){const t=await async function(){if(p)return p;if(g)return null;g=!0;try{return p=await import("fzstd"),w.debug("fzstd loaded successfully"),p}catch(e){return w.warn("fzstd not available, compression disabled",e),v=!1,null}}();if(!t)throw new Error("zstd compression not available");try{return"compress"in t?t.compress(e):(v=!1,e)}catch(t){return w.warn("Compression failed, falling back to uncompressed",t),v=!1,e}}function x(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function I(e){return 429===e||e>=500&&e<600}function E(e){return new Promise(t=>setTimeout(t,e))}class T{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?w.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{w.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),w.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),w.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void w.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,s=await async function(e,t,n,i=!0){const r=JSON.stringify(n),s=new TextEncoder;let o=r,a=null;if(i&&v)try{const e=await S(s.encode(r));o=new Blob([e.buffer],{type:"application/octet-stream"}),a="zstd"}catch{w.warn("Compression failed, sending uncompressed"),o=r}const u={"Content-Type":"application/json","X-API-Key":t};a&&(u["Content-Encoding"]=a);let l=null,d=null;for(let t=0;t<=10;t++){try{const i=await fetch(e,{method:"POST",headers:u,body:o});if(i.ok)return w.debug(`Batch sent successfully: ${n.batch.length} events`),i;if(d=i,!I(i.status))return w.error(`Non-retryable HTTP error: ${i.status} ${i.statusText}`),i;w.warn(`Retryable HTTP error: ${i.status}, attempt ${t+1}/10`)}catch(e){l=e,w.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=x(t);w.debug(`Backing off for ${e}ms`),await E(e)}}if(d)return d;throw l||new Error("sendBatch failed after all retries")}(r,this.config.apiKey,i);if(s.ok){const e=n.map(e=>e.event_id);await this.queue.remove(e),w.debug(`Flushed ${n.length} events successfully`)}else w.error(`Flush failed with status: ${s.status}`)}catch(e){w.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=function(e,t,n){try{const i=JSON.stringify(n),r=new Blob([i],{type:"application/json"}),s=new URL(e);s.searchParams.set("api_key",t);const o=navigator.sendBeacon(s.toString(),r);return o?w.debug(`Beacon sent: ${n.batch.length} events`):w.warn("sendBeacon returned false"),o}catch(e){return w.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,i);if(r){const e=n.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){w.error("Beacon flush error:",e)}}}function z(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[n,i]of t){const t=e.match(i);if(t)return`${n} ${t[1]}`}return"Unknown"}function _(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let D=null;async function q(){if(D)return D;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,n=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),n=t.getContext("2d");n&&(t.width=200,t.height=50,n.textBaseline="top",n.font="14px Arial",n.fillStyle="#f60",n.fillRect(0,0,200,50),n.fillStyle="#069",n.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}const t=(new TextEncoder).encode(e.join("|")),n=await crypto.subtle.digest("SHA-256",t),i=new Uint8Array(n);return Array.from(i).map(e=>e.toString(16).padStart(2,"0")).join("")}();return D={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:z(e),device_model:_(e),device_id:n,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},D}const k="truesight_anonymous_id";function $(){return crypto.randomUUID()}function B(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function H(e,t){const n=B();if(!n)return;const i=await s(t),r=await u(e,i);n.setItem(k,JSON.stringify(r))}async function O(e){const t=await async function(e){try{const t=B();if(!t)return null;const n=t.getItem(k);if(!n)return null;const i=JSON.parse(n),r=await s(e);return await l(i,r)}catch{return null}}(e);if(t)return t;const n=$();return await H(n,e),n}class P{constructor(){this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(t){if(this.initialized)w.warn("TrueSight already initialized");else{if(!t.apiKey)throw new Error("apiKey is required");if(!t.endpoint)throw new Error("endpoint is required");this.config=function(t){return{apiKey:t.apiKey,endpoint:t.endpoint,...e,...t.options}}(t),w.setDebug(this.config.debug),this.anonymousId=await O(this.config.apiKey),this.queue=new y(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new T(this.config,this.queue),this.scheduler.start(),this.initialized=!0,w.info("TrueSight SDK initialized")}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):w.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):w.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):w.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.anonymousId=await async function(e){const t=$();return await H(t,e),t}(this.config.apiKey),w.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,w.debug("Mobile number set")):w.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,w.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},n=null,i=null,D=null,w.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,n){const i=await q(),r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,client_timestamp:(new Date).toISOString(),properties:n,context:i},s=JSON.stringify(r);if(s.length>this.config.maxEventSize)return void w.warn(`Event exceeds maxEventSize (${s.length} > ${this.config.maxEventSize}), dropping`);const o=await this.queue.size();o>=this.config.maxQueueSize&&(w.warn(`Queue at soft limit (${o}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),w.debug(`Event queued: ${e} - ${t}`)}}const F=new P,K=F.init.bind(F),N=F.track.bind(F),A=F.identify.bind(F),U=F.screen.bind(F),C=F.flush.bind(F),M=F.reset.bind(F),Q=F.setMobileNumber.bind(F),j=F.setEmail.bind(F);exports.TrueSightSDK=P,exports.default=F,exports.flush=C,exports.identify=A,exports.init=K,exports.reset=M,exports.screen=U,exports.setEmail=j,exports.setMobileNumber=Q,exports.track=N;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e={pageViews:!0,clicks:!0,formSubmits:!0,rageClicks:!0,deadClicks:!0,scrollDepth:!0,timeOnPage:!0,pageLoadTiming:!0},t={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1,sessionTimeout:18e5,autoTrack:{...e}};const i=(new TextEncoder).encode("truesight-web-sdk-v1");let n=null,s=null;function r(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function o(e){const t=e+("undefined"!=typeof window?window.location.origin:"unknown");if(n&&s===t)return n;const o=r(),a=(new TextEncoder).encode(t),l=await o.digest("SHA-256",a),h=await o.importKey("raw",l,"PBKDF2",!1,["deriveKey"]),c=await o.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},h,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return n=c,s=t,c}function a(e){const t=new Uint8Array(e);let i="";for(let e=0;e<t.byteLength;e++)i+=String.fromCharCode(t[e]);return btoa(i)}function l(e){const t=atob(e),i=new Uint8Array(t.length);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);return i.buffer}async function h(e,t){const i=r(),n=new TextEncoder,s=(o=new Uint8Array(12),globalThis.crypto.getRandomValues(o));var o;const l=await i.encrypt({name:"AES-GCM",iv:s},t,n.encode(e));return{iv:a(s.buffer),ciphertext:a(l)}}async function c(e,t){const i=r(),n=new Uint8Array(l(e.iv)),s=l(e.ciphertext),o=await i.decrypt({name:"AES-GCM",iv:n},t,s);return(new TextDecoder).decode(o)}const d=0,u=1,m=2,f=3,p="[TrueSight]";const g=new class{constructor(e=!1){this.level=e?d:m}setDebug(e){this.level=e?d:m}debug(...e){this.level<=d&&console.debug(p,...e)}info(...e){this.level<=u&&console.info(p,...e)}warn(...e){this.level<=m&&console.warn(p,...e)}error(...e){this.level<=f&&console.error(p,...e)}},w="events";class y{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const i=indexedDB.open("truesight_events",1);i.onupgradeneeded=()=>{const e=i.result;if(!e.objectStoreNames.contains(w)){e.createObjectStore(w,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,g.debug("IndexedDB opened successfully"),e()},i.onerror=()=>{g.error("Failed to open IndexedDB",i.error),t(i.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(w,e).objectStore(w)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(g.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const i=await o(this.apiKey),n=await h(JSON.stringify(e),i),s={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:n};return new Promise((t,i)=>{const n=this.getStore("readwrite").put(s);n.onsuccess=()=>{g.debug(`Event enqueued: ${e.event_id}`),t()},n.onerror=()=>{g.error("Failed to enqueue event",n.error),i(n.error)}})}async dequeue(e){const t=await o(this.apiKey),i=await this.getOldest(e),n=[];for(const e of i)try{const i=await c(e.encrypted,t);n.push(JSON.parse(i))}catch(t){g.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return n}getOldest(e){return new Promise((t,i)=>{const n=this.getStore("readonly").index("timestamp").openCursor(null,"next"),s=[];n.onsuccess=()=>{const i=n.result;i&&s.length<e?(s.push(i.value),i.continue()):t(s)},n.onerror=()=>{i(n.error)}})}async remove(e){if(0!==e.length)return new Promise((t,i)=>{if(!this.db)return void i(new Error("Database not opened"));const n=this.db.transaction(w,"readwrite"),s=n.objectStore(w);for(const t of e)s.delete(t);n.oncomplete=()=>{g.debug(`Removed ${e.length} events from queue`),t()},n.onerror=()=>{g.error("Failed to remove events",n.error),i(n.error)}})}async size(){return new Promise((e,t)=>{const i=this.getStore("readonly").count();i.onsuccess=()=>{e(i.result)},i.onerror=()=>{t(i.error)}})}async clear(){return new Promise((e,t)=>{const i=this.getStore("readwrite").clear();i.onsuccess=()=>{g.debug("Event queue cleared"),e()},i.onerror=()=>{t(i.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}function v(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function b(e){return 429===e||e>=500&&e<600}function k(e){return new Promise(t=>setTimeout(t,e))}class S{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?g.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{g.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),g.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),g.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void g.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,r=await async function(e,t,i){const n=JSON.stringify(i);new TextEncoder;let s=n;const r={"Content-Type":"application/json","X-API-Key":t};let o=null,a=null;for(let t=0;t<=10;t++){try{const n=await fetch(e,{method:"POST",headers:r,body:s});if(n.ok)return g.debug(`Batch sent successfully: ${i.batch.length} events`),n;if(a=n,!b(n.status))return g.error(`Non-retryable HTTP error: ${n.status} ${n.statusText}`),n;g.warn(`Retryable HTTP error: ${n.status}, attempt ${t+1}/10`)}catch(e){o=e,g.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=v(t);g.debug(`Backing off for ${e}ms`),await k(e)}}if(a)return a;throw o||new Error("sendBatch failed after all retries")}(s,this.config.apiKey,n);if(r.ok){const e=i.map(e=>e.event_id);await this.queue.remove(e),g.debug(`Flushed ${i.length} events successfully`)}else g.error(`Flush failed with status: ${r.status}`)}catch(e){g.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=function(e,t,i){try{const n=JSON.stringify(i),s=new Blob([n],{type:"application/json"}),r=new URL(e);r.searchParams.set("api_key",t);const o=navigator.sendBeacon(r.toString(),s);return o?g.debug(`Beacon sent: ${i.batch.length} events`):g.warn("sendBeacon returned false"),o}catch(e){return g.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,n);if(s){const e=i.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){g.error("Beacon flush error:",e)}}}function T(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[i,n]of t){const t=e.match(n);if(t)return`${i} ${t[1]}`}return"Unknown"}function _(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let E=null;async function I(){if(E)return E;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,i=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),i=t.getContext("2d");i&&(t.width=200,t.height=50,i.textBaseline="top",i.font="14px Arial",i.fillStyle="#f60",i.fillRect(0,0,200,50),i.fillStyle="#069",i.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}if(void 0===globalThis.crypto||!globalThis.crypto.subtle){let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}try{const t=(new TextEncoder).encode(e.join("|")),i=await crypto.subtle.digest("SHA-256",t),n=new Uint8Array(i);return Array.from(n).map(e=>e.toString(16).padStart(2,"0")).join("")}catch{let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}}();return E={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:T(e),device_model:_(e),device_id:i,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},E}const H="truesight_anonymous_id";function F(){return crypto.randomUUID()}function x(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function $(e,t){const i=x();if(!i)return;const n=await o(t),s=await h(e,n);i.setItem(H,JSON.stringify(s))}async function D(e){const t=await async function(e){try{const t=x();if(!t)return null;const i=t.getItem(H);if(!i)return null;const n=JSON.parse(i),s=await o(e);return await c(n,s)}catch{return null}}(e);if(t)return t;const i=F();return await $(i,e),i}const M="truesight_session_id",P="truesight_last_activity",L="truesight_session_start";class q{constructor(e,t){this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,this.sessionTimeout=e,this.onSessionEvent=t,this.restore()}restore(){if("undefined"==typeof sessionStorage)return;const e=sessionStorage.getItem(M),t=sessionStorage.getItem(P),i=sessionStorage.getItem(L);if(e&&t){const n=parseInt(t,10);if(Date.now()-n<this.sessionTimeout){this.sessionId=e,this.lastActivityTime=n;const t=i?parseInt(i,10):NaN;return void(this.sessionStartTime=Number.isFinite(t)?t:n)}}}getSessionId(){return this.sessionId||this.startSession(),this.sessionId}startSession(){this.sessionId=crypto.randomUUID(),this.lastActivityTime=Date.now(),this.sessionStartTime=this.lastActivityTime,this.persist(),this.onSessionEvent("$session_start",{session_id:this.sessionId})}endSession(){if(!this.sessionId)return;const e=Math.round((Date.now()-this.sessionStartTime)/1e3);this.onSessionEvent("$session_end",{session_id:this.sessionId,duration_seconds:e}),this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,"undefined"!=typeof sessionStorage&&(sessionStorage.removeItem(M),sessionStorage.removeItem(P),sessionStorage.removeItem(L))}touchActivity(){const e=Date.now();this.sessionId&&e-this.lastActivityTime>this.sessionTimeout?(this.endSession(),this.startSession()):(this.lastActivityTime=e,this.persist())}reset(){this.endSession(),this.startSession()}destroy(){this.endSession()}persist(){"undefined"!=typeof sessionStorage&&this.sessionId&&(sessionStorage.setItem(M,this.sessionId),sessionStorage.setItem(P,this.lastActivityTime.toString()),sessionStorage.setItem(L,this.sessionStartTime.toString()))}}class A{constructor(){this.name="pageview",this.trackFn=null,this.origPushState=null,this.origReplaceState=null,this.popstateHandler=null,this.hashchangeHandler=null}start(e){if(this.trackFn=e,"undefined"==typeof window||"undefined"==typeof history)return;if(this.origPushState||this.origReplaceState||this.popstateHandler||this.hashchangeHandler)return;this.origPushState=history.pushState,this.origReplaceState=history.replaceState;const t=this;history.pushState=function(...e){t.origPushState.apply(this,e),t.firePageview()},history.replaceState=function(...e){t.origReplaceState.apply(this,e),t.firePageview()},this.popstateHandler=()=>this.firePageview(),this.hashchangeHandler=()=>this.firePageview(),window.addEventListener("popstate",this.popstateHandler),window.addEventListener("hashchange",this.hashchangeHandler),this.firePageview()}stop(){this.origPushState&&(history.pushState=this.origPushState,this.origPushState=null),this.origReplaceState&&(history.replaceState=this.origReplaceState,this.origReplaceState=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.hashchangeHandler&&(window.removeEventListener("hashchange",this.hashchangeHandler),this.hashchangeHandler=null),this.trackFn=null}firePageview(){if(!this.trackFn)return;const e={};new URLSearchParams(location.search).forEach((t,i)=>{e[i]=t}),this.trackFn("$pageview",{page_url:location.href,page_path:location.pathname,page_title:document.title,page_referrer:document.referrer,query_params:e})}}function z(e){return null!==e.closest("[data-ts-ignore]")}class N{constructor(){this.name="click",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;const i={element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null},n=t.getAttribute("data-analytics-id");n&&(i.data_analytics_id=n);const s=t.closest("a");s&&(i.href=s.href),this.trackFn("$click",i)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.trackFn=null}}class O{constructor(){this.name="rage-click",this.trackFn=null,this.handler=null,this.clicks=[],this.threshold=3,this.windowMs=1e3}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;const i=Date.now(),n=function(e){const t=e.tagName.toLowerCase(),i=e.id?`#${e.id}`:"",n=(e.getAttribute("class")??"").trim();return`${t}${i}${n?"."+n.split(/\s+/).join("."):""}`}(t);this.clicks=this.clicks.filter(e=>i-e.timestamp<this.windowMs),this.clicks.push({timestamp:i,selector:n});const s=this.clicks.filter(e=>e.selector===n);s.length>=this.threshold&&(this.trackFn("$rage_click",{click_count:s.length,element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.getAttribute("class")||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null}),this.clicks=this.clicks.filter(e=>e.selector!==n))},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.clicks=[],this.trackFn=null}}const C=new Set(["INPUT","TEXTAREA","SELECT"]);class U{constructor(){this.name="dead-click",this.trackFn=null,this.handler=null,this.timeouts=new Set,this.observers=new Set}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;if(C.has(t.tagName))return;let i=!1;const n=new MutationObserver(()=>{i=!0,n.disconnect(),this.observers.delete(n)});this.observers.add(n),n.observe(document.body,{subtree:!0,childList:!0,attributes:!0,characterData:!0});const s=setTimeout(()=>{n.disconnect(),this.observers.delete(n),this.timeouts.delete(s),i||this.trackFn?.("$dead_click",{element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null})},1e3);this.timeouts.add(s)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null);for(const e of this.timeouts)clearTimeout(e);this.timeouts.clear();for(const e of this.observers)e.disconnect();this.observers.clear(),this.trackFn=null}}class B{constructor(){this.name="form",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;t&&this.trackFn&&"FORM"===t.tagName&&(z(t)||this.trackFn("$form_submit",{form_id:t.id||null,form_name:t.name||null,form_action:t.action||null,form_method:(t.method||"get").toUpperCase()}))},document.addEventListener("submit",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("submit",this.handler,!0),this.handler=null),this.trackFn=null}}const K=[25,50,75,100];class R{constructor(){this.name="scroll",this.trackFn=null,this.scrollHandler=null,this.popstateHandler=null,this.firedThresholds=new Set,this.throttleTimer=null,this.lastUrl=null}start(e){this.trackFn=e,"undefined"!=typeof window&&(this.lastUrl=location.href,this.scrollHandler=()=>{this.throttleTimer||(this.throttleTimer=setTimeout(()=>{this.throttleTimer=null,this.checkScroll()},200))},this.popstateHandler=()=>{this.firedThresholds.clear()},window.addEventListener("scroll",this.scrollHandler,{passive:!0}),window.addEventListener("popstate",this.popstateHandler))}stop(){this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler),this.scrollHandler=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.throttleTimer&&(clearTimeout(this.throttleTimer),this.throttleTimer=null),this.firedThresholds.clear(),this.trackFn=null}checkScroll(){if(!this.trackFn)return;this.lastUrl!==location.href&&(this.firedThresholds.clear(),this.lastUrl=location.href);const e=document.documentElement.scrollHeight,t=window.innerHeight;if(e<=t)return;const i=window.scrollY||document.documentElement.scrollTop,n=Math.round((i+t)/e*100);for(const e of K)n>=e&&!this.firedThresholds.has(e)&&(this.firedThresholds.add(e),this.trackFn("$scroll_depth",{depth_percentage:e,page_url:location.href}))}}class j{constructor(){this.name="time-on-page",this.trackFn=null,this.entryTime=0,this.visibilityHandler=null,this.unloadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&"undefined"!=typeof window&&(this.entryTime=Date.now(),this.visibilityHandler=()=>{"hidden"===document.visibilityState?this.fireDuration():this.entryTime=Date.now()},this.unloadHandler=()=>{this.fireDuration()},document.addEventListener("visibilitychange",this.visibilityHandler),window.addEventListener("beforeunload",this.unloadHandler))}stop(){this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null),this.unloadHandler&&(window.removeEventListener("beforeunload",this.unloadHandler),this.unloadHandler=null),this.trackFn=null}fireDuration(){if(!this.trackFn||!this.entryTime)return;const e=Math.round((Date.now()-this.entryTime)/1e3);e<1||(this.trackFn("$time_on_page",{page_url:location.href,duration_seconds:e}),this.entryTime=0)}}class Q{constructor(){this.name="page-load",this.fired=!1,this.trackFn=null,this.loadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState?this.fireMetrics():(this.loadHandler=()=>this.fireMetrics(),window.addEventListener("load",this.loadHandler)))}stop(){this.loadHandler&&(window.removeEventListener("load",this.loadHandler),this.loadHandler=null),this.trackFn=null,this.fired=!1}fireMetrics(){if(this.fired||!this.trackFn)return;const e=performance.getEntriesByType("navigation");if(!e.length)return;this.fired=!0;const t=e[0];this.trackFn("$page_load",{dns_time:Math.round(t.domainLookupEnd-t.domainLookupStart),connect_time:Math.round(t.connectEnd-t.connectStart),ttfb:Math.round(t.responseStart-t.requestStart),dom_content_loaded:Math.round(t.domContentLoadedEventEnd-t.startTime),load_complete:Math.round(t.loadEventEnd-t.startTime),transfer_size:t.transferSize})}}class V{constructor(e,t){this.trackers=[],this.started=!1,this.trackFn=t,e.pageViews&&this.trackers.push(new A),e.clicks&&this.trackers.push(new N),e.rageClicks&&this.trackers.push(new O),e.deadClicks&&this.trackers.push(new U),e.formSubmits&&this.trackers.push(new B),e.scrollDepth&&this.trackers.push(new R),e.timeOnPage&&this.trackers.push(new j),e.pageLoadTiming&&this.trackers.push(new Q)}start(){if(!this.started){this.started=!0;for(const e of this.trackers)e.start(this.trackFn)}}stop(){if(this.started){this.started=!1;for(const e of this.trackers)e.stop()}}}class J{constructor(){this.initialized=!1,this.autoTrackManager=null,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(i){if(this.initialized)g.warn("TrueSight already initialized");else{if(!i.apiKey)throw new Error("apiKey is required");if(!i.endpoint)throw new Error("endpoint is required");this.config=function(i){const n=i.options??{};return{...t,...n,apiKey:i.apiKey,endpoint:i.endpoint,autoTrack:{...e,...n.autoTrack??{}}}}(i),g.setDebug(this.config.debug),this.anonymousId=await D(this.config.apiKey),this.queue=new y(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new S(this.config,this.queue),this.scheduler.start(),this.sessionManager=new q(this.config.sessionTimeout,(e,t)=>{this.enqueueEvent("track",e,t).catch(t=>{g.warn(`Failed to enqueue session event "${e}": ${String(t)}`)})}),this.initialized=!0,g.info("TrueSight SDK initialized"),this.autoTrackManager=new V(this.config.autoTrack,(e,t)=>{this.track(e,t).catch(t=>{g.warn(`Failed to auto-track event "${e}": ${String(t)}`)})}),this.autoTrackManager.start()}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):g.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):g.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):g.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async trackExperiment(e,t,i={}){await this.track("$experiment_exposure",{flag_name:e,variant:t,...i})}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.sessionManager&&this.sessionManager.reset(),this.anonymousId=await async function(e){const t=F();return await $(t,e),t}(this.config.apiKey),g.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,g.debug("Mobile number set")):g.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,g.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.autoTrackManager&&(this.autoTrackManager.stop(),this.autoTrackManager=null),this.sessionManager&&this.sessionManager.destroy(),this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},n=null,s=null,E=null,g.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,i){const n=await async function(){return{...await I(),page_url:"undefined"!=typeof window?window.location.href:"",page_path:"undefined"!=typeof window?window.location.pathname+window.location.search:"",referrer:"undefined"!=typeof document?document.referrer:"",user_agent:"undefined"!=typeof navigator?navigator.userAgent:"",viewport_width:"undefined"!=typeof window?window.innerWidth:0,viewport_height:"undefined"!=typeof window?window.innerHeight:0}}(),s=this.sessionManager?(this.sessionManager.touchActivity(),this.sessionManager.getSessionId()):null,r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,session_id:s,client_timestamp:(new Date).toISOString(),properties:i,context:n},o=JSON.stringify(r);if(o.length>this.config.maxEventSize)return void g.warn(`Event exceeds maxEventSize (${o.length} > ${this.config.maxEventSize}), dropping`);const a=await this.queue.size();a>=this.config.maxQueueSize&&(g.warn(`Queue at soft limit (${a}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),g.debug(`Event queued: ${e} - ${t}`)}}const W=new J,G=W.init.bind(W),X=W.track.bind(W),Z=W.identify.bind(W),Y=W.screen.bind(W),ee=W.flush.bind(W),te=W.reset.bind(W),ie=W.setMobileNumber.bind(W),ne=W.setEmail.bind(W),se=W.trackExperiment.bind(W);exports.TrueSightSDK=J,exports.default=W,exports.flush=ee,exports.identify=Z,exports.init=G,exports.reset=te,exports.screen=Y,exports.setEmail=ne,exports.setMobileNumber=ie,exports.track=X,exports.trackExperiment=se;
|
|
2
2
|
//# sourceMappingURL=truesight.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truesight.cjs.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/compression.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/truesight.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","fzstdModule","loadAttempted","isSupported","compress","mod","import","loadFzstd","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","then","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","compressPayload","jsonStr","body","contentEncoding","compressionSupported","compressed","Blob","type","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedContext","getDeviceContext","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","join","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","raw","getItem","readEncrypted","newId","TrueSightSDK","initialized","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","track","eventName","properties","ensureInitialized","enqueueEvent","identify","mobile_number","screenName","screen_name","reset","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","destroy","eventType","context","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"truesight.cjs.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/session-manager.ts","../src/auto/pageview-tracker.ts","../src/auto/tracker.ts","../src/auto/click-tracker.ts","../src/auto/rage-click-tracker.ts","../src/auto/dead-click-tracker.ts","../src/auto/form-tracker.ts","../src/auto/scroll-tracker.ts","../src/auto/time-on-page-tracker.ts","../src/auto/page-load-tracker.ts","../src/auto/auto-track-manager.ts","../src/truesight.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_AUTO_TRACK","pageViews","clicks","formSubmits","rageClicks","deadClicks","scrollDepth","timeOnPage","pageLoadTiming","DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","sessionTimeout","autoTrack","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","then","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","jsonStr","body","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","Blob","type","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedDeviceFields","getCachedDeviceFields","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","h","raw","join","abs","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","getItem","readEncrypted","newId","SESSION_ID_KEY","LAST_ACTIVITY_KEY","SESSION_START_KEY","SessionManager","onSessionEvent","sessionId","lastActivityTime","sessionStartTime","restore","sessionStorage","storedId","storedActivity","storedStart","lastActivity","parseInt","startTs","NaN","Number","isFinite","getSessionId","startSession","persist","session_id","endSession","durationSeconds","round","duration_seconds","removeItem","touchActivity","reset","destroy","PageviewTracker","trackFn","origPushState","origReplaceState","popstateHandler","hashchangeHandler","history","pushState","replaceState","self","apply","firePageview","queryParams","URLSearchParams","search","forEach","v","k","page_url","href","page_path","pathname","page_title","title","page_referrer","referrer","query_params","shouldIgnoreElement","el","closest","ClickTracker","handler","target","props","element_tag","tagName","toLowerCase","element_id","element_classes","className","element_text","textContent","trim","slice","analyticsId","data_analytics_id","anchor","RageClickTracker","threshold","windowMs","selector","tag","classAttr","split","getElementSelector","filter","c","sameElement","click_count","EXCLUDED_TAGS","Set","DeadClickTracker","timeouts","observers","has","mutationDetected","observer","MutationObserver","disconnect","add","observe","subtree","childList","attributes","characterData","timeoutId","FormTracker","form","form_id","form_name","form_action","action","form_method","toUpperCase","THRESHOLDS","ScrollTracker","scrollHandler","firedThresholds","throttleTimer","lastUrl","checkScroll","passive","scrollHeight","documentElement","viewportHeight","innerHeight","scrollTop","scrollY","percentage","depth_percentage","TimeOnPageTracker","entryTime","visibilityHandler","unloadHandler","fireDuration","PageLoadTracker","fired","loadHandler","readyState","fireMetrics","entries","performance","getEntriesByType","dns_time","domainLookupEnd","domainLookupStart","connect_time","connectEnd","connectStart","ttfb","responseStart","requestStart","dom_content_loaded","domContentLoadedEventEnd","startTime","load_complete","loadEventEnd","transfer_size","transferSize","AutoTrackManager","trackers","started","tracker","TrueSightSDK","initialized","autoTrackManager","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","sessionManager","eventName","properties","enqueueEvent","catch","track","ensureInitialized","identify","mobile_number","screenName","screen_name","trackExperiment","flagName","variant","flag_name","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","eventType","context","user_agent","viewport_width","innerWidth","viewport_height","getDeviceContext","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind"],"mappings":"oEAwBO,MAAMA,EAAsC,CACjDC,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,YAAY,EACZC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,gBAAgB,GAGLC,EAAsD,CACjEC,cAAe,IACfC,aAAc,GACdC,aAAc,IACdC,aAAc,IACdC,aAAc,MACdC,OAAO,EACPC,eAAgB,KAChBC,UAAW,IAAKjB,IC3ClB,MAAMkB,GAAO,IAAIC,aAAcC,OAAO,wBAGtC,IAAIC,EAA8B,KAC9BC,EAAiC,KAErC,SAASC,IACP,QAAiC,IAAtBC,WAAWC,QAA0BD,WAAWC,OAAOC,OAChE,OAAOF,WAAWC,OAAOC,OAE3B,MAAM,IAAIC,MAAM,kCAClB,CAMOC,eAAeC,EAAUC,GAC9B,MACMC,EAAYD,GADe,oBAAXE,OAAyBA,OAAOC,SAASC,OAAS,WAGxE,GAAIb,GAAaC,IAAoBS,EACnC,OAAOV,EAGT,MAAMK,EAASH,IAITY,GADU,IAAIhB,aACIC,OAAOW,GACzBK,QAAmBV,EAAOW,OAAO,UAAWF,GAG5CG,QAAgBZ,EAAOa,UAC3B,MACAH,EACA,UACA,EACA,CAAC,cAIGI,QAAmBd,EAAOG,UAC9B,CACEY,KAAM,SACNC,KAAMxB,EACNyB,WA7CoB,IA8CpBC,KAAM,WAERN,EACA,CACEG,KAAM,UACNI,OAAQ,MAEV,EACA,CAAC,UAAW,YAMd,OAHAxB,EAAYmB,EACZlB,EAAkBS,EAEXS,CACT,CAOA,SAASM,EAAoBC,GAC3B,MAAMC,EAAQ,IAAIC,WAAWF,GAC7B,IAAIG,EAAS,GACb,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAMI,WAAYD,IACpCD,GAAUG,OAAOC,aAAaN,EAAMG,IAEtC,OAAOI,KAAKL,EACd,CAEA,SAASM,EAAoBC,GAC3B,MAAMP,EAASQ,KAAKD,GACdT,EAAQ,IAAIC,WAAWC,EAAOL,QACpC,IAAK,IAAIM,EAAI,EAAGA,EAAID,EAAOL,OAAQM,IACjCH,EAAMG,GAAKD,EAAOS,WAAWR,GAE/B,OAAOH,EAAMD,MACf,CAEOnB,eAAegC,EACpBC,EACAC,GAEA,MAAMpC,EAASH,IACTwC,EAAU,IAAI5C,YACd6C,GAhFiBC,EAgFI,IAAIhB,WAAW,IA/EnCzB,WAAWC,OAAOyC,gBAAgBD,IAD3C,IAAyBA,EAkFvB,MAAME,QAAmBzC,EAAOkC,QAC9B,CAAEnB,KAAM,UAAWuB,GAAIA,GACvBF,EACAC,EAAQ3C,OAAOyC,IAGjB,MAAO,CACLG,GAAIlB,EAAoBkB,EAAGjB,QAC3BoB,WAAYrB,EAAoBqB,GAEpC,CAEOvC,eAAewC,EACpBC,EACAP,GAEA,MAAMpC,EAASH,IACTyC,EAAK,IAAIf,WAAWO,EAAoBa,EAAUL,KAClDG,EAAaX,EAAoBa,EAAUF,YAE3CG,QAAkB5C,EAAO0C,QAC7B,CAAE3B,KAAM,UAAWuB,GAAIA,GACvBF,EACAK,GAGF,OAAO,IAAII,aAAcC,OAAOF,EAClC,CCxHA,MAAMG,EACG,EADHA,EAEE,EAFFA,EAGE,EAHFA,EAIG,EAGHC,EAAS,cAsCR,MAAMC,EAAS,UAjCpB,WAAAC,CAAY7D,GAAiB,GAC3B8D,KAAKC,MAAQ/D,EAAQ0D,EAAmBA,CAC1C,CAEA,QAAAM,CAAShE,GACP8D,KAAKC,MAAQ/D,EAAQ0D,EAAmBA,CAC1C,CAEA,KAAA1D,IAASiE,GACHH,KAAKC,OAASL,GAChBQ,QAAQlE,MAAM2D,KAAWM,EAE7B,CAEA,IAAAE,IAAQF,GACFH,KAAKC,OAASL,GAChBQ,QAAQC,KAAKR,KAAWM,EAE5B,CAEA,IAAAG,IAAQH,GACFH,KAAKC,OAASL,GAChBQ,QAAQE,KAAKT,KAAWM,EAE5B,CAEA,KAAAI,IAASJ,GACHH,KAAKC,OAASL,GAChBQ,QAAQG,MAAMV,KAAWM,EAE7B,GCtCIK,EAAa,eAUNC,EAMX,WAAAV,CAAY9C,EAAgBjB,GALpBgE,KAAAU,GAAyB,KAGzBV,KAAAW,SAAW,EAGjBX,KAAK/C,OAASA,EACd+C,KAAKhE,aAAeA,CACtB,CAEA,UAAM4E,GACJ,OAAO,IAAIC,QAAQ,CAACC,EAASC,KAC3B,MAAMC,EAAUC,UAAUL,KAxBhB,mBAEG,GAwBbI,EAAQE,gBAAkB,KACxB,MAAMR,EAAKM,EAAQG,OACnB,IAAKT,EAAGU,iBAAiBC,SAASb,GAAa,CAC/BE,EAAGY,kBAAkBd,EAAY,CAC7Ce,QAAS,aAELC,YAAY,YAAa,YAAa,CAAEC,QAAQ,GACxD,GAGFT,EAAQU,UAAY,KAClB1B,KAAKU,GAAKM,EAAQG,OAClBrB,EAAO5D,MAAM,iCACb4E,KAGFE,EAAQW,QAAU,KAChB7B,EAAOS,MAAM,2BAA4BS,EAAQT,OACjDQ,EAAOC,EAAQT,SAGrB,CAEQ,QAAAqB,CAASC,GACf,IAAK7B,KAAKU,GACR,MAAM,IAAI5D,MAAM,2CAGlB,OADWkD,KAAKU,GAAGoB,YAAYtB,EAAYqB,GACjCE,YAAYvB,EACxB,CAEA,aAAMwB,CAAQC,GAEZ,MAAMC,QAAoBlC,KAAKmC,OAC3BD,GAAelC,KAAKhE,eACtB8D,EAAOQ,KACL,wBAAwB4B,KAAelC,KAAKhE,mDAExCgE,KAAKoC,YA7DW,MAgExB,MAAMnD,QAAYjC,EAAUgD,KAAK/C,QAC3BuC,QAAkBT,EAAQsD,KAAKC,UAAUL,GAAQhD,GAEjDsD,EAAsB,CAC1BC,SAAUP,EAAMO,SAChBC,UAAwB,IAAbC,KAAKC,MAAe3C,KAAKW,WACpCnB,aAGF,OAAO,IAAIqB,QAAQ,CAACC,EAASC,KAC3B,MACMC,EADQhB,KAAK4B,SAAS,aACNgB,IAAIL,GAE1BvB,EAAQU,UAAY,KAClB5B,EAAO5D,MAAM,mBAAmB+F,EAAMO,YACtC1B,KAEFE,EAAQW,QAAU,KAChB7B,EAAOS,MAAM,0BAA2BS,EAAQT,OAChDQ,EAAOC,EAAQT,SAGrB,CAEA,aAAMsC,CAAQC,GACZ,MAAM7D,QAAYjC,EAAUgD,KAAK/C,QAC3B8F,QAAqB/C,KAAKgD,UAAUF,GACpCG,EAA2B,GAEjC,IAAK,MAAMV,KAAUQ,EACnB,IACE,MAAMG,QAAa3D,EAAQgD,EAAO/C,UAAWP,GAC7CgE,EAAOE,KAAKd,KAAKe,MAAMF,GACzB,CAAE,MAAOG,GACPvD,EAAOS,MAAM,0BAA2BgC,EAAOC,SAAUa,SAEnDrD,KAAKsD,OAAO,CAACf,EAAOC,UAC5B,CAGF,OAAOS,CACT,CAEQ,SAAAD,CAAUF,GAChB,OAAO,IAAIjC,QAAQ,CAACC,EAASC,KAC3B,MAEMC,EAFQhB,KAAK4B,SAAS,YACR2B,MAAM,aACJC,WAAW,KAAM,QACjCC,EAAyB,GAE/BzC,EAAQU,UAAY,KAClB,MAAMgC,EAAS1C,EAAQG,OACnBuC,GAAUD,EAAQzF,OAAS8E,GAC7BW,EAAQN,KAAKO,EAAOC,OACpBD,EAAOE,YAEP9C,EAAQ2C,IAIZzC,EAAQW,QAAU,KAChBZ,EAAOC,EAAQT,SAGrB,CAEA,YAAM+C,CAAOO,GACX,GAAmB,IAAfA,EAAI7F,OAER,OAAO,IAAI6C,QAAQ,CAACC,EAASC,KAC3B,IAAKf,KAAKU,GAER,YADAK,EAAO,IAAIjE,MAAM,wBAGnB,MAAMgH,EAAK9D,KAAKU,GAAGoB,YAAYtB,EAAY,aACrCuD,EAAQD,EAAG/B,YAAYvB,GAE7B,IAAK,MAAMwD,KAAMH,EACfE,EAAME,OAAOD,GAGfF,EAAGI,WAAa,KACdpE,EAAO5D,MAAM,WAAW2H,EAAI7F,4BAC5B8C,KAGFgD,EAAGnC,QAAU,KACX7B,EAAOS,MAAM,0BAA2BuD,EAAGvD,OAC3CQ,EAAO+C,EAAGvD,SAGhB,CAEA,UAAM4B,GACJ,OAAO,IAAItB,QAAQ,CAACC,EAASC,KAC3B,MACMC,EADQhB,KAAK4B,SAAS,YACNkB,QAEtB9B,EAAQU,UAAY,KAClBZ,EAAQE,EAAQG,SAElBH,EAAQW,QAAU,KAChBZ,EAAOC,EAAQT,SAGrB,CAEA,WAAM4D,GACJ,OAAO,IAAItD,QAAQ,CAACC,EAASC,KAC3B,MACMC,EADQhB,KAAK4B,SAAS,aACNuC,QAEtBnD,EAAQU,UAAY,KAClB5B,EAAO5D,MAAM,uBACb4E,KAEFE,EAAQW,QAAU,KAChBZ,EAAOC,EAAQT,SAGrB,CAEQ,iBAAM6B,CAAYU,GACxB,MACMe,SADe7D,KAAKgD,UAAUF,IACjBsB,IAAKC,GAAMA,EAAE7B,gBAC1BxC,KAAKsD,OAAOO,EACpB,CAEA,KAAAS,GACMtE,KAAKU,KACPV,KAAKU,GAAG4D,QACRtE,KAAKU,GAAK,KAEd,ECrMF,SAAS6D,EAAiBC,GACxB,MAAMC,EAJmB,IAIYC,KAAKC,IAAI,EAAGH,GACjD,OAAOE,KAAKE,IAAIH,EAJK,IAKvB,CAEA,SAASI,EAAkBC,GACzB,OAAkB,MAAXA,GAAmBA,GAAU,KAAOA,EAAS,GACtD,CAEA,SAASC,EAAMC,GACb,OAAO,IAAInE,QAASC,GAAYmE,WAAWnE,EAASkE,GACtD,OCXaE,EAaX,WAAAnF,CAAYoF,EAAgBC,GAVpBpF,KAAAqF,QAAiD,KACjDrF,KAAAsF,aAA8BzE,QAAQC,UACtCd,KAAAuF,YAAa,EACbvF,KAAAwF,qBAA6D,KAG7DxF,KAAAyF,uBAA8C,KAC9CzF,KAAA0F,yBAAgD,KAChD1F,KAAA2F,mBAA0C,KAGhD3F,KAAKmF,OAASA,EACdnF,KAAKoF,MAAQA,CACf,CAEA,KAAAQ,GACM5F,KAAKqF,QACPvF,EAAOQ,KAAK,oCAKdN,KAAKqF,QAAUQ,YAAY,KACzB7F,KAAK8F,iBACJ9F,KAAKmF,OAAOtJ,eAGS,oBAAbkK,WACT/F,KAAKyF,uBAAyB,KACK,WAA7BM,SAASC,iBACXhG,KAAKiG,mBAGTF,SAASG,iBACP,mBACAlG,KAAKyF,yBAKa,oBAAXtI,SACT6C,KAAK0F,yBAA2B,KAC9B1F,KAAKiG,mBAEP9I,OAAO+I,iBAAiB,eAAgBlG,KAAK0F,2BAIzB,oBAAXvI,SACT6C,KAAK2F,mBAAqB,KACpB3F,KAAKwF,sBACPW,aAAanG,KAAKwF,sBAEpBxF,KAAKwF,qBAAuBP,WAAW,KACrCnF,EAAO5D,MAAM,8BACb8D,KAAK8F,gBACL9F,KAAKwF,qBAAuB,MA7DV,MAgEtBrI,OAAO+I,iBAAiB,SAAUlG,KAAK2F,qBAGzC7F,EAAO5D,MAAM,2BACf,CAEA,IAAAkK,GACMpG,KAAKqF,UACPgB,cAAcrG,KAAKqF,SACnBrF,KAAKqF,QAAU,MAGbrF,KAAKwF,uBACPW,aAAanG,KAAKwF,sBAClBxF,KAAKwF,qBAAuB,MAGN,oBAAbO,UAA4B/F,KAAKyF,yBAC1CM,SAASO,oBACP,mBACAtG,KAAKyF,wBAEPzF,KAAKyF,uBAAyB,MAGV,oBAAXtI,SACL6C,KAAK0F,2BACPvI,OAAOmJ,oBACL,eACAtG,KAAK0F,0BAEP1F,KAAK0F,yBAA2B,MAE9B1F,KAAK2F,qBACPxI,OAAOmJ,oBAAoB,SAAUtG,KAAK2F,oBAC1C3F,KAAK2F,mBAAqB,OAI9B7F,EAAO5D,MAAM,0BACf,CAGA,aAAA4J,GACE9F,KAAKsF,aAAetF,KAAKsF,aAAaiB,KAAK,IAAMvG,KAAKwG,UACxD,CAGA,WAAMC,GACJ,OAAO,IAAI5F,QAAeC,IACxBd,KAAKsF,aAAetF,KAAKsF,aAAaiB,KAAKxJ,gBACnCiD,KAAKwG,UACX1F,OAGN,CAEQ,aAAM0F,GACZ,IAAIxG,KAAKuF,WAAT,CAIAvF,KAAKuF,YAAa,EAElB,IACE,MAAMmB,QAAkB1G,KAAKoF,MAAMjD,OACnC,GAAkB,IAAduE,EAEF,YADA5G,EAAO5D,MAAM,oBAIf,MAAMyK,EAAYjC,KAAKE,IAAI5E,KAAKmF,OAAOrJ,aAAc4K,GAC/CzD,QAAejD,KAAKoF,MAAMvC,QAAQ8D,GAExC,GAAsB,IAAlB1D,EAAOjF,OACT,OAGF,MAAM4I,EAAwB,CAC5BC,MAAO5D,EACP6D,SAAS,IAAIpE,MAAOqE,eAGhBC,EAAM,GAAGhH,KAAKmF,OAAO8B,SAASC,QAAQ,OAAQ,sBAC9CC,QDrILpK,eACLkK,EACAhK,EACA2J,GAGA,MAAMQ,EAAU/E,KAAKC,UAAUsE,GACf,IAAItK,YACpB,IAAI+K,EAAiBD,EAcrB,MAAME,EAAkC,CACtC,eAAgB,mBAChB,YAAarK,GAOf,IAAIsK,EAA0B,KAC1BC,EAAgC,KAEpC,IAAK,IAAIhD,EAAU,EAAGA,GAnDJ,GAmD4BA,IAAW,CACvD,IACE,MAAM2C,QAAiBM,MAAMR,EAAU,CACrCS,OAAQ,OACRJ,UACAD,SAGF,GAAIF,EAASQ,GAIX,OAHA7H,EAAO5D,MACL,4BAA4B0K,EAAQC,MAAM7I,iBAErCmJ,EAKT,GAFAK,EAAeL,GAEVtC,EAAkBsC,EAASrC,QAI9B,OAHAhF,EAAOS,MACL,6BAA6B4G,EAASrC,UAAUqC,EAASS,cAEpDT,EAGTrH,EAAOQ,KACL,yBAAyB6G,EAASrC,mBAAmBN,EAAU,OAEnE,CAAE,MAAOnB,GACPkE,EAAYlE,EACZvD,EAAOQ,KACL,4BAA4BkE,EAAU,QACtCnB,EAEJ,CAEA,GAAImB,EAtFY,GAsFW,CACzB,MAAMC,EAAUF,EAAiBC,GACjC1E,EAAO5D,MAAM,mBAAmBuI,aAC1BM,EAAMN,EACd,CACF,CAEA,GAAI+C,EACF,OAAOA,EAGT,MAAMD,GAAa,IAAIzK,MAAM,qCAC/B,CCoD6B+K,CACrBb,EACAhH,KAAKmF,OAAOlI,OACZ2J,GAGF,GAAIO,EAASQ,GAAI,CAEf,MAAM9D,EAAMZ,EAAOmB,IAAKC,GAAMA,EAAE7B,gBAC1BxC,KAAKoF,MAAM9B,OAAOO,GACxB/D,EAAO5D,MAAM,WAAW+G,EAAOjF,6BACjC,MACE8B,EAAOS,MAAM,6BAA6B4G,EAASrC,SAEvD,CAAE,MAAOzB,GACPvD,EAAOS,MAAM,eAAgB8C,EAC/B,SACErD,KAAKuF,YAAa,CACpB,CA1CA,CA2CF,CAEQ,qBAAMU,GACZ,IACE,MAAMS,QAAkB1G,KAAKoF,MAAMjD,OACnC,GAAkB,IAAduE,EAAiB,OAErB,MAAMC,EAAYjC,KAAKE,IAAI5E,KAAKmF,OAAOrJ,aAAc4K,GAC/CzD,QAAejD,KAAKoF,MAAMvC,QAAQ8D,GAExC,GAAsB,IAAlB1D,EAAOjF,OAAc,OAEzB,MAAM4I,EAAwB,CAC5BC,MAAO5D,EACP6D,SAAS,IAAIpE,MAAOqE,eAIhBe,WDtFVb,EACAhK,EACA2J,GAEA,IACE,MAAMQ,EAAU/E,KAAKC,UAAUsE,GACzBmB,EAAO,IAAIC,KAAK,CAACZ,GAAU,CAAEa,KAAM,qBAGnCjB,EAAM,IAAIkB,IAAIjB,GACpBD,EAAImB,aAAaC,IAAI,UAAWnL,GAEhC,MAAM6K,EAAUO,UAAUC,WAAWtB,EAAIuB,WAAYR,GAQrD,OAPID,EACFhI,EAAO5D,MACL,gBAAgB0K,EAAQC,MAAM7I,iBAGhC8B,EAAOQ,KAAK,6BAEPwH,CACT,CAAE,MAAOzE,GAEP,OADAvD,EAAOS,MAAM,qBAAsB8C,IAC5B,CACT,CACF,CC6DsBiF,CADE,GAAGtI,KAAKmF,OAAO8B,SAASC,QAAQ,OAAQ,sBAGxDlH,KAAKmF,OAAOlI,OACZ2J,GAGF,GAAIkB,EAAS,CACX,MAAMjE,EAAMZ,EAAOmB,IAAKC,GAAMA,EAAE7B,gBAC1BxC,KAAKoF,MAAM9B,OAAOO,EAC1B,CACF,CAAE,MAAOR,GACPvD,EAAOS,MAAM,sBAAuB8C,EACtC,CACF,EClMF,SAASmF,EAAoBC,GAE3B,MAAMC,EAA+B,CACnC,CAAC,SAAU,uBACX,CAAC,UAAW,wBACZ,CAAC,SAAU,gCACX,CAAC,OAAQ,oBACT,CAAC,QAAS,qBAGZ,IAAK,MAAO9K,EAAM+K,KAAUD,EAAU,CACpC,MAAME,EAAQH,EAAGG,MAAMD,GACvB,GAAIC,EACF,MAAO,GAAGhL,KAAQgL,EAAM,IAE5B,CAEA,MAAO,SACT,CAEA,SAASC,EAAkBJ,GACzB,MAAI,eAAeK,KAAKL,GACf,SAEL,8BAA8BK,KAAKL,GAC9B,SAEF,SACT,CAwFA,IAAIM,EAAgD,KAEpDhM,eAAeiM,IACb,GAAID,EACF,OAAOA,EAGT,MAAMN,EACiB,oBAAdJ,UAA4BA,UAAUY,UAAY,UACrDC,EAA2B,oBAAdb,UACdA,UACD,KAEEc,QAnGRpM,iBACE,MAAMqM,EAAuB,GAGP,oBAAXC,QACTD,EAAWjG,KAAK,GAAGkG,OAAOC,SAASD,OAAOE,UAAUF,OAAOG,cAI7D,IACEJ,EAAWjG,KAAKsG,KAAKC,iBAAiBC,kBAAkBC,SAC1D,CAAE,MACAR,EAAWjG,KAAK,aAClB,CAGyB,oBAAdkF,WACTe,EAAWjG,KAAKkF,UAAUwB,UAI5B,IACE,GAAwB,oBAAb9D,SAA0B,CACnC,MAAM+D,EAAS/D,SAASgE,cAAc,UAChCC,EAAMF,EAAOG,WAAW,MAC1BD,IACFF,EAAOR,MAAQ,IACfQ,EAAOP,OAAS,GAChBS,EAAIE,aAAe,MACnBF,EAAIG,KAAO,aACXH,EAAII,UAAY,OAChBJ,EAAIK,SAAS,EAAG,EAAG,IAAK,IACxBL,EAAII,UAAY,OAChBJ,EAAIM,SAAS,wBAAyB,EAAG,IACzClB,EAAWjG,KAAK2G,EAAOS,aAE3B,CACF,CAAE,MACAnB,EAAWjG,KAAK,YAClB,CAGA,QAAiC,IAAtBxG,WAAWC,SAA2BD,WAAWC,OAAOC,OAAQ,CACzE,IAAI2N,EAAI,EACR,MAAMC,EAAMrB,EAAWsB,KAAK,KAC5B,IAAK,IAAIpM,EAAI,EAAGA,EAAImM,EAAIzM,OAAQM,IAC9BkM,GAAMA,GAAK,GAAKA,EAAIC,EAAI3L,WAAWR,GAAM,EAE3C,MAAO,YAAYoG,KAAKiG,IAAIH,IAC9B,CAEA,IACE,MACMxL,GADU,IAAI1C,aACCC,OAAO6M,EAAWsB,KAAK,MACtCnN,QAAmBX,OAAOC,OAAOW,OAAO,UAAWwB,GACnD4L,EAAY,IAAIxM,WAAWb,GACjC,OAAOsN,MAAMC,KAAKF,GACfxG,IAAK2G,GAAMA,EAAExC,SAAS,IAAIyC,SAAS,EAAG,MACtCN,KAAK,GACV,CAAE,MACA,IAAIF,EAAI,EACR,MAAMC,EAAMrB,EAAWsB,KAAK,KAC5B,IAAK,IAAIpM,EAAI,EAAGA,EAAImM,EAAIzM,OAAQM,IAC9BkM,GAAMA,GAAK,GAAKA,EAAIC,EAAI3L,WAAWR,GAAM,EAE3C,MAAO,YAAYoG,KAAKiG,IAAIH,IAC9B,CACF,CAgCyBS,GAyBvB,OAvBAlC,EAAqB,CACnBmC,YACsB,oBAAbnF,UACHA,SAASoF,cAAc,uBAAuBC,aAAa,YAC3D,UACNC,QAAS,MACTC,WAAY9C,EAAoBC,GAChC8C,aAAc1C,EAAkBJ,GAChC+C,UAAWrC,EACXsC,aAAcvC,GAAKwC,YAAYC,eAAiB,UAChDC,OAAQ1C,GAAKW,UAAY,UACzBgC,SAAU,MACR,IACE,OAAOpC,KAAKC,iBAAiBC,kBAAkBC,QACjD,CAAE,MACA,MAAO,SACT,CACD,EANS,GAOVkC,YA7JgB,QA8JhBC,aAAgC,oBAAX1C,OAAyBA,OAAOC,MAAQ,EAC7D0C,cAAiC,oBAAX3C,OAAyBA,OAAOE,OAAS,GAG1DR,CACT,CClKA,MAAMkD,EAAc,yBAEpB,SAASC,IACP,OAAOtP,OAAOuP,YAChB,CAEA,SAASC,IACP,IACE,MAA+B,oBAAjBC,aAA+BA,aAAe,IAC9D,CAAE,MACA,OAAO,IACT,CACF,CAmBAtP,eAAeuP,EACb3I,EACA1G,GAEA,MAAMsP,EAAUH,IAChB,IAAKG,EAAS,OAEd,MAAMtN,QAAYjC,EAAUC,GACtBuC,QAAkBT,EAAQ4E,EAAO1E,GACvCsN,EAAQC,QAAQP,EAAa5J,KAAKC,UAAU9C,GAC9C,CAEOzC,eAAe0P,EACpBxP,GAEA,MAAMyP,QAhCR3P,eAA6BE,GAC3B,IACE,MAAMsP,EAAUH,IAChB,IAAKG,EAAS,OAAO,KAErB,MAAM9B,EAAM8B,EAAQI,QAAQV,GAC5B,IAAKxB,EAAK,OAAO,KAEjB,MAAMjL,EAA2B6C,KAAKe,MAAMqH,GACtCxL,QAAYjC,EAAUC,GAC5B,aAAasC,EAAQC,EAAWP,EAClC,CAAE,MAEA,OAAO,IACT,CACF,CAiByB2N,CAAc3P,GACrC,GAAIyP,EACF,OAAOA,EAGT,MAAMG,EAAQX,IAEd,aADMI,EAAeO,EAAO5P,GACrB4P,CACT,CCzDA,MAAMC,EAAiB,uBACjBC,EAAoB,0BACpBC,EAAoB,gCAEbC,EAOX,WAAAlN,CACE5D,EACA+Q,GANMlN,KAAAmN,UAA2B,KAC3BnN,KAAAoN,iBAA2B,EAC3BpN,KAAAqN,iBAA2B,EAMjCrN,KAAK7D,eAAiBA,EACtB6D,KAAKkN,eAAiBA,EACtBlN,KAAKsN,SACP,CAEQ,OAAAA,GACN,GAA8B,oBAAnBC,eAAgC,OAC3C,MAAMC,EAAWD,eAAeZ,QAAQG,GAClCW,EAAiBF,eAAeZ,QAAQI,GACxCW,EAAcH,eAAeZ,QAAQK,GAC3C,GAAIQ,GAAYC,EAAgB,CAC9B,MAAME,EAAeC,SAASH,EAAgB,IAC9C,GAAI/K,KAAKC,MAAQgL,EAAe3N,KAAK7D,eAAgB,CACnD6D,KAAKmN,UAAYK,EACjBxN,KAAKoN,iBAAmBO,EACxB,MAAME,EAAUH,EAAcE,SAASF,EAAa,IAAMI,IAE1D,YADA9N,KAAKqN,iBAAmBU,OAAOC,SAASH,GAAWA,EAAUF,EAE/D,CACF,CAEF,CAEA,YAAAM,GAIE,OAHKjO,KAAKmN,WACRnN,KAAKkO,eAEAlO,KAAKmN,SACd,CAEA,YAAAe,GACElO,KAAKmN,UAAYvQ,OAAOuP,aACxBnM,KAAKoN,iBAAmB1K,KAAKC,MAC7B3C,KAAKqN,iBAAmBrN,KAAKoN,iBAC7BpN,KAAKmO,UACLnO,KAAKkN,eAAe,iBAAkB,CAAEkB,WAAYpO,KAAKmN,WAC3D,CAEA,UAAAkB,GACE,IAAKrO,KAAKmN,UAAW,OACrB,MAAMmB,EAAkB5J,KAAK6J,OAAO7L,KAAKC,MAAQ3C,KAAKqN,kBAAoB,KAC1ErN,KAAKkN,eAAe,eAAgB,CAClCkB,WAAYpO,KAAKmN,UACjBqB,iBAAkBF,IAEpBtO,KAAKmN,UAAY,KACjBnN,KAAKoN,iBAAmB,EACxBpN,KAAKqN,iBAAmB,EACM,oBAAnBE,iBACTA,eAAekB,WAAW3B,GAC1BS,eAAekB,WAAW1B,GAC1BQ,eAAekB,WAAWzB,GAE9B,CAEA,aAAA0B,GACE,MAAM/L,EAAMD,KAAKC,MACb3C,KAAKmN,WAAaxK,EAAM3C,KAAKoN,iBAAmBpN,KAAK7D,gBACvD6D,KAAKqO,aACLrO,KAAKkO,iBAELlO,KAAKoN,iBAAmBzK,EACxB3C,KAAKmO,UAET,CAEA,KAAAQ,GACE3O,KAAKqO,aACLrO,KAAKkO,cACP,CAEA,OAAAU,GACE5O,KAAKqO,YACP,CAEQ,OAAAF,GACwB,oBAAnBZ,gBACPvN,KAAKmN,YACPI,eAAef,QAAQM,EAAgB9M,KAAKmN,WAC5CI,eAAef,QAAQO,EAAmB/M,KAAKoN,iBAAiB7E,YAChEgF,eAAef,QAAQQ,EAAmBhN,KAAKqN,iBAAiB9E,YAEpE,QC/FWsG,EAAb,WAAA9O,GACEC,KAAApC,KAAO,WACCoC,KAAA8O,QAAqF,KACrF9O,KAAA+O,cAAiD,KACjD/O,KAAAgP,iBAAuD,KACvDhP,KAAAiP,gBAAuC,KACvCjP,KAAAkP,kBAAyC,IAqEnD,CAnEE,KAAAtJ,CAAMkJ,GAEJ,GADA9O,KAAK8O,QAAUA,EACO,oBAAX3R,QAA6C,oBAAZgS,QAAyB,OACrE,GAAInP,KAAK+O,eAAiB/O,KAAKgP,kBAAoBhP,KAAKiP,iBAAmBjP,KAAKkP,kBAC9E,OAIFlP,KAAK+O,cAAgBI,QAAQC,UAC7BpP,KAAKgP,iBAAmBG,QAAQE,aAEhC,MAAMC,EAAOtP,KAEbmP,QAAQC,UAAY,YAAajP,GAC/BmP,EAAKP,cAAeQ,MAAMvP,KAAMG,GAChCmP,EAAKE,cACP,EAEAL,QAAQE,aAAe,YAAalP,GAClCmP,EAAKN,iBAAkBO,MAAMvP,KAAMG,GACnCmP,EAAKE,cACP,EAEAxP,KAAKiP,gBAAkB,IAAMjP,KAAKwP,eAClCxP,KAAKkP,kBAAoB,IAAMlP,KAAKwP,eAEpCrS,OAAO+I,iBAAiB,WAAYlG,KAAKiP,iBACzC9R,OAAO+I,iBAAiB,aAAclG,KAAKkP,mBAG3ClP,KAAKwP,cACP,CAEA,IAAApJ,GACMpG,KAAK+O,gBACPI,QAAQC,UAAYpP,KAAK+O,cACzB/O,KAAK+O,cAAgB,MAEnB/O,KAAKgP,mBACPG,QAAQE,aAAerP,KAAKgP,iBAC5BhP,KAAKgP,iBAAmB,MAEtBhP,KAAKiP,kBACP9R,OAAOmJ,oBAAoB,WAAYtG,KAAKiP,iBAC5CjP,KAAKiP,gBAAkB,MAErBjP,KAAKkP,oBACP/R,OAAOmJ,oBAAoB,aAActG,KAAKkP,mBAC9ClP,KAAKkP,kBAAoB,MAE3BlP,KAAK8O,QAAU,IACjB,CAEQ,YAAAU,GACN,IAAKxP,KAAK8O,QAAS,OACnB,MAAMW,EAAsC,CAAA,EAC5C,IAAIC,gBAAgBtS,SAASuS,QAAQC,QAAQ,CAACC,EAAGC,KAC/CL,EAAYK,GAAKD,IAEnB7P,KAAK8O,QAAQ,YAAa,CACxBiB,SAAU3S,SAAS4S,KACnBC,UAAW7S,SAAS8S,SACpBC,WAAYpK,SAASqK,MACrBC,cAAetK,SAASuK,SACxBC,aAAcd,GAElB,ECtEI,SAAUe,EAAoBC,GAClC,OAA0C,OAAnCA,EAAGC,QAAQ,mBACpB,OCLaC,EAAb,WAAA5Q,GACEC,KAAApC,KAAO,QACCoC,KAAA8O,QAAqF,KACrF9O,KAAA4Q,QAAuC,IAuCjD,CArCE,KAAAhL,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACS,oBAAb/I,WAEX/F,KAAK4Q,QAAWvM,IACd,MAAMwM,EAASxM,EAAEwM,OACjB,IAAKA,IAAW7Q,KAAK8O,QAAS,OAC9B,GAAI0B,EAAoBK,GAAS,OAEjC,MAAMC,EAAiC,CACrCC,YAAaF,EAAOG,QAAQC,cAC5BC,WAAaL,EAAuB7M,IAAM,KAC1CmN,gBAAkBN,EAAuBO,WAAa,KACtDC,cAAeR,EAAOS,aAAaC,QAAU,IAAIC,MAAM,EAAG,MAAQ,MAG9DC,EAAcZ,EAAOzF,aAAa,qBACpCqG,IAAaX,EAAMY,kBAAoBD,GAE3C,MAAME,EAASd,EAAOH,QAAQ,KAC1BiB,IACFb,EAAMd,KAAQ2B,EAA6B3B,MAG7ChQ,KAAK8O,QAAQ,SAAUgC,IAGzB/K,SAASG,iBAAiB,QAASlG,KAAK4Q,SAAS,GACnD,CAEA,IAAAxK,GACMpG,KAAK4Q,UACP7K,SAASO,oBAAoB,QAAStG,KAAK4Q,SAAS,GACpD5Q,KAAK4Q,QAAU,MAEjB5Q,KAAK8O,QAAU,IACjB,QC1BW8C,EAAb,WAAA7R,GACEC,KAAApC,KAAO,aACCoC,KAAA8O,QAAqF,KACrF9O,KAAA4Q,QAAuC,KACvC5Q,KAAA3E,OAAwB,GACf2E,KAAA6R,UAAY,EACZ7R,KAAA8R,SAAW,GA4C9B,CA1CE,KAAAlM,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACS,oBAAb/I,WAEX/F,KAAK4Q,QAAWvM,IACd,MAAMwM,EAASxM,EAAEwM,OACjB,IAAKA,IAAW7Q,KAAK8O,QAAS,OAC9B,GAAI0B,EAAoBK,GAAS,OAEjC,MAAMlO,EAAMD,KAAKC,MACXoP,EA5BZ,SAA4BtB,GAC1B,MAAMuB,EAAMvB,EAAGO,QAAQC,cACjBjN,EAAMyM,EAAmBzM,GAAK,IAAKyM,EAAmBzM,KAAO,GAC7DiO,GAAaxB,EAAGrF,aAAa,UAAY,IAAImG,OAInD,MAAO,GAAGS,IAAMhO,IAHAiO,EACZ,IAAMA,EAAUC,MAAM,OAAOxH,KAAK,KAClC,IAEN,CAoBuByH,CAAmBtB,GAGpC7Q,KAAK3E,OAAS2E,KAAK3E,OAAO+W,OAAQC,GAAM1P,EAAM0P,EAAE5P,UAAYzC,KAAK8R,UACjE9R,KAAK3E,OAAO8H,KAAK,CAAEV,UAAWE,EAAKoP,aAGnC,MAAMO,EAActS,KAAK3E,OAAO+W,OAAQC,GAAMA,EAAEN,WAAaA,GACzDO,EAAYtU,QAAUgC,KAAK6R,YAC7B7R,KAAK8O,QAAQ,cAAe,CAC1ByD,YAAaD,EAAYtU,OACzB+S,YAAaF,EAAOG,QAAQC,cAC5BC,WAAaL,EAAuB7M,IAAM,KAC1CmN,gBAAiBN,EAAOzF,aAAa,UAAY,KACjDiG,cAAeR,EAAOS,aAAaC,QAAU,IAAIC,MAAM,EAAG,MAAQ,OAGpExR,KAAK3E,OAAS2E,KAAK3E,OAAO+W,OAAQC,GAAMA,EAAEN,WAAaA,KAI3DhM,SAASG,iBAAiB,QAASlG,KAAK4Q,SAAS,GACnD,CAEA,IAAAxK,GACMpG,KAAK4Q,UACP7K,SAASO,oBAAoB,QAAStG,KAAK4Q,SAAS,GACpD5Q,KAAK4Q,QAAU,MAEjB5Q,KAAK3E,OAAS,GACd2E,KAAK8O,QAAU,IACjB,EChEF,MAAM0D,EAAgB,IAAIC,IAAI,CAAC,QAAS,WAAY,iBAEvCC,EAAb,WAAA3S,GACEC,KAAApC,KAAO,aACCoC,KAAA8O,QAAqF,KACrF9O,KAAA4Q,QAAuC,KACvC5Q,KAAA2S,SAAW,IAAIF,IACfzS,KAAA4S,UAAY,IAAIH,GA0D1B,CAxDE,KAAA7M,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACS,oBAAb/I,WAEX/F,KAAK4Q,QAAWvM,IACd,MAAMwM,EAASxM,EAAEwM,OACjB,IAAKA,IAAW7Q,KAAK8O,QAAS,OAC9B,GAAI0B,EAAoBK,GAAS,OACjC,GAAI2B,EAAcK,IAAIhC,EAAOG,SAAU,OAEvC,IAAI8B,GAAmB,EAEvB,MAAMC,EAAW,IAAIC,iBAAiB,KACpCF,GAAmB,EACnBC,EAASE,aACTjT,KAAK4S,UAAU3O,OAAO8O,KAExB/S,KAAK4S,UAAUM,IAAIH,GAEnBA,EAASI,QAAQpN,SAASsB,KAAM,CAC9B+L,SAAS,EACTC,WAAW,EACXC,YAAY,EACZC,eAAe,IAGjB,MAAMC,EAAYvO,WAAW,KAC3B8N,EAASE,aACTjT,KAAK4S,UAAU3O,OAAO8O,GACtB/S,KAAK2S,SAAS1O,OAAOuP,GAChBV,GACH9S,KAAK8O,UAAU,cAAe,CAC5BiC,YAAaF,EAAOG,QAAQC,cAC5BC,WAAaL,EAAuB7M,IAAM,KAC1CmN,gBAAkBN,EAAuBO,WAAa,KACtDC,cAAeR,EAAOS,aAAaC,QAAU,IAAIC,MAAM,EAAG,MAAQ,QAGrE,KACHxR,KAAK2S,SAASO,IAAIM,IAGpBzN,SAASG,iBAAiB,QAASlG,KAAK4Q,SAAS,GACnD,CAEA,IAAAxK,GACMpG,KAAK4Q,UACP7K,SAASO,oBAAoB,QAAStG,KAAK4Q,SAAS,GACpD5Q,KAAK4Q,QAAU,MAEjB,IAAK,MAAM4C,KAAaxT,KAAK2S,SAAUxM,aAAaqN,GACpDxT,KAAK2S,SAASxO,QACd,IAAK,MAAM4O,KAAY/S,KAAK4S,UAAWG,EAASE,aAChDjT,KAAK4S,UAAUzO,QACfnE,KAAK8O,QAAU,IACjB,QChEW2E,EAAb,WAAA1T,GACEC,KAAApC,KAAO,OACCoC,KAAA8O,QAAqF,KACrF9O,KAAA4Q,QAAuC,IA8BjD,CA5BE,KAAAhL,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACS,oBAAb/I,WAEX/F,KAAK4Q,QAAWvM,IACd,MAAMqP,EAAOrP,EAAEwM,OACV6C,GAAS1T,KAAK8O,SACE,SAAjB4E,EAAK1C,UACLR,EAAoBkD,IAExB1T,KAAK8O,QAAQ,eAAgB,CAC3B6E,QAASD,EAAK1P,IAAM,KACpB4P,UAAWF,EAAK9V,MAAQ,KACxBiW,YAAaH,EAAKI,QAAU,KAC5BC,aAAcL,EAAKhM,QAAU,OAAOsM,kBAIxCjO,SAASG,iBAAiB,SAAUlG,KAAK4Q,SAAS,GACpD,CAEA,IAAAxK,GACMpG,KAAK4Q,UACP7K,SAASO,oBAAoB,SAAUtG,KAAK4Q,SAAS,GACrD5Q,KAAK4Q,QAAU,MAEjB5Q,KAAK8O,QAAU,IACjB,ECjCF,MAAMmF,EAAa,CAAC,GAAI,GAAI,GAAI,WAEnBC,EAAb,WAAAnU,GACEC,KAAApC,KAAO,SACCoC,KAAA8O,QAAqF,KACrF9O,KAAAmU,cAAqC,KACrCnU,KAAAiP,gBAAuC,KACvCjP,KAAAoU,gBAA+B,IAAI3B,IACnCzS,KAAAqU,cAAsD,KACtDrU,KAAAsU,QAAyB,IAiEnC,CA/DE,KAAA1O,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACO,oBAAX3R,SACX6C,KAAKsU,QAAUlX,SAAS4S,KAExBhQ,KAAKmU,cAAgB,KACfnU,KAAKqU,gBACTrU,KAAKqU,cAAgBpP,WAAW,KAC9BjF,KAAKqU,cAAgB,KACrBrU,KAAKuU,eACJ,OAGLvU,KAAKiP,gBAAkB,KACrBjP,KAAKoU,gBAAgBjQ,SAGvBhH,OAAO+I,iBAAiB,SAAUlG,KAAKmU,cAAe,CAAEK,SAAS,IACjErX,OAAO+I,iBAAiB,WAAYlG,KAAKiP,iBAC3C,CAEA,IAAA7I,GACMpG,KAAKmU,gBACPhX,OAAOmJ,oBAAoB,SAAUtG,KAAKmU,eAC1CnU,KAAKmU,cAAgB,MAEnBnU,KAAKiP,kBACP9R,OAAOmJ,oBAAoB,WAAYtG,KAAKiP,iBAC5CjP,KAAKiP,gBAAkB,MAErBjP,KAAKqU,gBACPlO,aAAanG,KAAKqU,eAClBrU,KAAKqU,cAAgB,MAEvBrU,KAAKoU,gBAAgBjQ,QACrBnE,KAAK8O,QAAU,IACjB,CAEQ,WAAAyF,GACN,IAAKvU,KAAK8O,QAAS,OAEf9O,KAAKsU,UAAYlX,SAAS4S,OAC5BhQ,KAAKoU,gBAAgBjQ,QACrBnE,KAAKsU,QAAUlX,SAAS4S,MAG1B,MAAMyE,EAAe1O,SAAS2O,gBAAgBD,aACxCE,EAAiBxX,OAAOyX,YAC9B,GAAIH,GAAgBE,EAAgB,OAEpC,MAAME,EAAY1X,OAAO2X,SAAW/O,SAAS2O,gBAAgBG,UACvDE,EAAarQ,KAAK6J,OAAQsG,EAAYF,GAAkBF,EAAgB,KAE9E,IAAK,MAAM5C,KAAaoC,EAClBc,GAAclD,IAAc7R,KAAKoU,gBAAgBvB,IAAIhB,KACvD7R,KAAKoU,gBAAgBlB,IAAIrB,GACzB7R,KAAK8O,QAAQ,gBAAiB,CAC5BkG,iBAAkBnD,EAClB9B,SAAU3S,SAAS4S,OAI3B,QCzEWiF,EAAb,WAAAlV,GACEC,KAAApC,KAAO,eACCoC,KAAA8O,QAAqF,KACrF9O,KAAAkV,UAAoB,EACpBlV,KAAAmV,kBAAyC,KACzCnV,KAAAoV,cAAqC,IA8C/C,CA5CE,KAAAxP,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACS,oBAAb/I,UAA8C,oBAAX5I,SAC9C6C,KAAKkV,UAAYxS,KAAKC,MAEtB3C,KAAKmV,kBAAoB,KACU,WAA7BpP,SAASC,gBACXhG,KAAKqV,eAGLrV,KAAKkV,UAAYxS,KAAKC,OAI1B3C,KAAKoV,cAAgB,KACnBpV,KAAKqV,gBAGPtP,SAASG,iBAAiB,mBAAoBlG,KAAKmV,mBACnDhY,OAAO+I,iBAAiB,eAAgBlG,KAAKoV,eAC/C,CAEA,IAAAhP,GACMpG,KAAKmV,oBACPpP,SAASO,oBAAoB,mBAAoBtG,KAAKmV,mBACtDnV,KAAKmV,kBAAoB,MAEvBnV,KAAKoV,gBACPjY,OAAOmJ,oBAAoB,eAAgBtG,KAAKoV,eAChDpV,KAAKoV,cAAgB,MAEvBpV,KAAK8O,QAAU,IACjB,CAEQ,YAAAuG,GACN,IAAKrV,KAAK8O,UAAY9O,KAAKkV,UAAW,OACtC,MAAM5G,EAAkB5J,KAAK6J,OAAO7L,KAAKC,MAAQ3C,KAAKkV,WAAa,KAC/D5G,EAAkB,IACtBtO,KAAK8O,QAAQ,gBAAiB,CAC5BiB,SAAU3S,SAAS4S,KACnBxB,iBAAkBF,IAEpBtO,KAAKkV,UAAY,EACnB,QClDWI,EAAb,WAAAvV,GACEC,KAAApC,KAAO,YACCoC,KAAAuV,OAAQ,EACRvV,KAAA8O,QAAqF,KACrF9O,KAAAwV,YAAmC,IAwC7C,CAtCE,KAAA5P,CAAMkJ,GACJ9O,KAAK8O,QAAUA,EACO,oBAAX3R,QAA8C,oBAAb4I,WAEhB,aAAxBA,SAAS0P,WACXzV,KAAK0V,eAEL1V,KAAKwV,YAAc,IAAMxV,KAAK0V,cAC9BvY,OAAO+I,iBAAiB,OAAQlG,KAAKwV,cAEzC,CAEA,IAAApP,GACMpG,KAAKwV,cACPrY,OAAOmJ,oBAAoB,OAAQtG,KAAKwV,aACxCxV,KAAKwV,YAAc,MAErBxV,KAAK8O,QAAU,KACf9O,KAAKuV,OAAQ,CACf,CAEQ,WAAAG,GACN,GAAI1V,KAAKuV,QAAUvV,KAAK8O,QAAS,OAEjC,MAAM6G,EAAUC,YAAYC,iBAAiB,cAC7C,IAAKF,EAAQ3X,OAAQ,OACrBgC,KAAKuV,OAAQ,EAEb,MAAMrM,EAAMyM,EAAQ,GACpB3V,KAAK8O,QAAQ,aAAc,CACzBgH,SAAUpR,KAAK6J,MAAMrF,EAAI6M,gBAAkB7M,EAAI8M,mBAC/CC,aAAcvR,KAAK6J,MAAMrF,EAAIgN,WAAahN,EAAIiN,cAC9CC,KAAM1R,KAAK6J,MAAMrF,EAAImN,cAAgBnN,EAAIoN,cACzCC,mBAAoB7R,KAAK6J,MAAMrF,EAAIsN,yBAA2BtN,EAAIuN,WAClEC,cAAehS,KAAK6J,MAAMrF,EAAIyN,aAAezN,EAAIuN,WACjDG,cAAe1N,EAAI2N,cAEvB,QClCWC,EAKX,WAAA/W,CACEoF,EACA2J,GANM9O,KAAA+W,SAA0B,GAE1B/W,KAAAgX,SAAU,EAMhBhX,KAAK8O,QAAUA,EAEX3J,EAAO/J,WAAW4E,KAAK+W,SAAS5T,KAAK,IAAI0L,GACzC1J,EAAO9J,QAAQ2E,KAAK+W,SAAS5T,KAAK,IAAIwN,GACtCxL,EAAO5J,YAAYyE,KAAK+W,SAAS5T,KAAK,IAAIyO,GAC1CzM,EAAO3J,YAAYwE,KAAK+W,SAAS5T,KAAK,IAAIuP,GAC1CvN,EAAO7J,aAAa0E,KAAK+W,SAAS5T,KAAK,IAAIsQ,GAC3CtO,EAAO1J,aAAauE,KAAK+W,SAAS5T,KAAK,IAAI+Q,GAC3C/O,EAAOzJ,YAAYsE,KAAK+W,SAAS5T,KAAK,IAAI8R,GAC1C9P,EAAOxJ,gBAAgBqE,KAAK+W,SAAS5T,KAAK,IAAImS,EACpD,CAEA,KAAA1P,GACE,IAAI5F,KAAKgX,QAAT,CACAhX,KAAKgX,SAAU,EACf,IAAK,MAAMC,KAAWjX,KAAK+W,SACzBE,EAAQrR,MAAM5F,KAAK8O,QAHH,CAKpB,CAEA,IAAA1I,GACE,GAAKpG,KAAKgX,QAAV,CACAhX,KAAKgX,SAAU,EACf,IAAK,MAAMC,KAAWjX,KAAK+W,SACzBE,EAAQ7Q,MAHS,CAKrB,QC/BW8Q,EAAb,WAAAnX,GACUC,KAAAmX,aAAc,EAKdnX,KAAAoX,iBAA4C,KAE5CpX,KAAAqX,OAAwB,KACxBrX,KAAAsX,YAAsB,GACtBtX,KAAAuX,aAA8B,KAC9BvX,KAAAwX,MAAuB,KACvBxX,KAAAyX,OAAkC,CAAA,CAyR5C,CAvRE,UAAMC,CAAKC,GAKT,GAAI3X,KAAKmX,YACPrX,EAAOQ,KAAK,qCADd,CAKA,IAAKqX,EAAW1a,OACd,MAAM,IAAIH,MAAM,sBAElB,IAAK6a,EAAW1Q,SACd,MAAM,IAAInK,MAAM,wBAGlBkD,KAAKmF,OnBAH,SAAsBuS,GAK1B,MAAME,EAAUF,EAAKE,SAAW,CAAA,EAChC,MAAO,IACFhc,KACAgc,EACH3a,OAAQya,EAAKza,OACbgK,SAAUyQ,EAAKzQ,SACf7K,UAAW,IACNjB,KACCyc,EAAQxb,WAAa,IAG/B,CmBhBkByb,CAAYF,GAC1B7X,EAAOI,SAASF,KAAKmF,OAAOjJ,OAG5B8D,KAAKsX,kBAAoB7K,EAAuBzM,KAAKmF,OAAOlI,QAG5D+C,KAAKoF,MAAQ,IAAI3E,EAAWT,KAAKmF,OAAOlI,OAAQ+C,KAAKmF,OAAOnJ,oBACtDgE,KAAKoF,MAAMxE,OAGjBZ,KAAK8X,UAAY,IAAI5S,EAAelF,KAAKmF,OAAQnF,KAAKoF,OACtDpF,KAAK8X,UAAUlS,QAGf5F,KAAK+X,eAAiB,IAAI9K,EACxBjN,KAAKmF,OAAOhJ,eACZ,CAAC6b,EAAWC,KACLjY,KAAKkY,aAAa,QAASF,EAAWC,GAAYE,MAAO5X,IAC5DT,EAAOQ,KAAK,oCAAoC0X,OAAexZ,OAAO+B,UAK5EP,KAAKmX,aAAc,EACnBrX,EAAOO,KAAK,6BAGZL,KAAKoX,iBAAmB,IAAIN,EAC1B9W,KAAKmF,OAAO/I,UACZ,CAAC4b,EAAWC,KACLjY,KAAKoY,MAAMJ,EAAWC,GAAYE,MAAO5X,IAC5CT,EAAOQ,KAAK,+BAA+B0X,OAAexZ,OAAO+B,UAIvEP,KAAKoX,iBAAiBxR,OA7CtB,CA8CF,CAEA,WAAMwS,CACJJ,EACAC,EAAsC,IAEtCjY,KAAKqY,oBAEAL,QAKChY,KAAKkY,aAAa,QAASF,EAAWC,GAJ1CnY,EAAOQ,KAAK,uCAKhB,CAEA,cAAMgY,CACJjB,EACAI,EAAkC,IAElCzX,KAAKqY,oBAEAhB,GAKLrX,KAAKqX,OAASA,EACdrX,KAAKyX,OAAS,IAAKzX,KAAKyX,UAAWA,GAID,iBAAzBA,EAAOc,eACdd,EAAOc,gBAEPvY,KAAKuX,aAAeE,EAAOc,eAED,iBAAjBd,EAAOD,OAAsBC,EAAOD,QAC7CxX,KAAKwX,MAAQC,EAAOD,aAGhBxX,KAAKkY,aAAa,WAAY,WAAYT,IAlB9C3X,EAAOQ,KAAK,sCAmBhB,CAEA,YAAM+I,CACJmP,EACAP,EAAsC,IAEtCjY,KAAKqY,oBAEAG,QAKCxY,KAAKkY,aAAa,SAAU,UAAW,CAC3CO,YAAaD,KACVP,IANHnY,EAAOQ,KAAK,yCAQhB,CAEA,WAAMmG,GACJzG,KAAKqY,0BACCrY,KAAK8X,UAAUrR,OACvB,CAEA,qBAAMiS,CACJC,EACAC,EACAX,EAAsC,CAAA,SAEhCjY,KAAKoY,MAAM,uBAAwB,CACvCS,UAAWF,EACXC,aACGX,GAEP,CAEA,WAAMtJ,GACJ3O,KAAKqY,oBAELrY,KAAKqX,OAAS,KACdrX,KAAKuX,aAAe,KACpBvX,KAAKwX,MAAQ,KACbxX,KAAKyX,OAAS,CAAA,EAGVzX,KAAK+X,gBACP/X,KAAK+X,eAAepJ,QAItB3O,KAAKsX,kBZpHFva,eACLE,GAEA,MAAM4P,EAAQX,IAEd,aADMI,EAAeO,EAAO5P,GACrB4P,CACT,CY8G6BiM,CAAiB9Y,KAAKmF,OAAOlI,QAEtD6C,EAAO5D,MAAM,kBACf,CAEA,eAAA6c,CAAgBC,GACdhZ,KAAKqY,oBAGL,MAAMY,EAASD,EAAO9R,QAAQ,MAAO,IACf,KAAlB+R,EAAOjb,QAOXgC,KAAKuX,aAAe0B,EACpBnZ,EAAO5D,MAAM,sBAPX4D,EAAOQ,KACL,kDAAkD2Y,EAAOjb,SAO/D,CAEA,QAAAkb,CAAS1B,GACPxX,KAAKqY,oBACLrY,KAAKwX,MAAQA,EACb1X,EAAO5D,MAAM,YACf,CAGA,aAAAid,GACE,OAAOnZ,KAAKmX,WACd,CAGA,SAAAiC,GACE,OAAOpZ,KAAKqX,MACd,CAGA,cAAAgC,GACE,OAAOrZ,KAAKsX,WACd,CAGA,eAAAgC,GACE,OAAOtZ,KAAKuX,YACd,CAGA,QAAAgC,GACE,OAAOvZ,KAAKwX,KACd,CAGA,OAAA5I,GACM5O,KAAKoX,mBACPpX,KAAKoX,iBAAiBhR,OACtBpG,KAAKoX,iBAAmB,MAEtBpX,KAAK+X,gBACP/X,KAAK+X,eAAenJ,UAElB5O,KAAK8X,WACP9X,KAAK8X,UAAU1R,OAEbpG,KAAKoF,OACPpF,KAAKoF,MAAMd,QAEbtE,KAAKmX,aAAc,EACnBnX,KAAKqX,OAAS,KACdrX,KAAKsX,YAAc,GACnBtX,KAAKuX,aAAe,KACpBvX,KAAKwX,MAAQ,KACbxX,KAAKyX,OAAS,CAAA,ElBzHhBjb,EAAY,KACZC,EAAkB,KK2DlBsM,EAAqB,KagEnBjJ,EAAO5D,MAAM,gBACf,CAEQ,iBAAAmc,GACN,IAAKrY,KAAKmX,YACR,MAAM,IAAIra,MACR,oDAGN,CAEQ,kBAAMob,CACZsB,EACAxB,EACAC,GAEA,MAAMwB,QbnGH1c,iBAIL,MAAO,UAHciM,IAKnB+G,SAA4B,oBAAX5S,OAAyBA,OAAOC,SAAS4S,KAAO,GACjEC,UAA6B,oBAAX9S,OACdA,OAAOC,SAAS8S,SAAW/S,OAAOC,SAASuS,OAC3C,GACJW,SAA8B,oBAAbvK,SAA2BA,SAASuK,SAAW,GAChEoJ,WAAiC,oBAAdrR,UAA4BA,UAAUY,UAAY,GACrE0Q,eAAkC,oBAAXxc,OAAyBA,OAAOyc,WAAa,EACpEC,gBAAmC,oBAAX1c,OAAyBA,OAAOyX,YAAc,EAE1E,CaoF0BkF,GAGhB3M,EAAYnN,KAAK+X,gBAClB/X,KAAK+X,eAAerJ,gBAAiB1O,KAAK+X,eAAe9J,gBAC1D,KAEEhM,EAAwB,CAC5BO,SAAU5F,OAAOuP,aACjB4N,WAAY/B,EACZgC,WAAYR,EACZS,QAASja,KAAKqX,OACd6C,aAAcla,KAAKsX,YACnBiB,cAAevY,KAAKuX,aACpBC,MAAOxX,KAAKwX,MACZpJ,WAAYjB,EACZgN,kBAAkB,IAAIzX,MAAOqE,cAC7BkR,aACAwB,WAIIW,EAAa/X,KAAKC,UAAUL,GAClC,GAAImY,EAAWpc,OAASgC,KAAKmF,OAAOlJ,aAIlC,YAHA6D,EAAOQ,KACL,+BAA+B8Z,EAAWpc,YAAYgC,KAAKmF,OAAOlJ,2BAMtE,MAAMyK,QAAkB1G,KAAKoF,MAAMjD,OAC/BuE,GAAa1G,KAAKmF,OAAOpJ,eAC3B+D,EAAOQ,KACL,wBAAwBoG,KAAa1G,KAAKmF,OAAOpJ,mCAEnDiE,KAAK8X,UAAUhS,uBAGX9F,KAAKoF,MAAMpD,QAAQC,GACzBnC,EAAO5D,MAAM,iBAAiBsd,OAAexB,IAC/C,ECpSF,MAAMqC,EAAW,IAAInD,EAKRQ,EAAO2C,EAAS3C,KAAK4C,KAAKD,GAK1BjC,EAAQiC,EAASjC,MAAMkC,KAAKD,GAK5B/B,EAAW+B,EAAS/B,SAASgC,KAAKD,GAKlChR,EAASgR,EAAShR,OAAOiR,KAAKD,GAK9B5T,GAAQ4T,EAAS5T,MAAM6T,KAAKD,GAK5B1L,GAAQ0L,EAAS1L,MAAM2L,KAAKD,GAK5BtB,GAAkBsB,EAAStB,gBAAgBuB,KAAKD,GAKhDnB,GAAWmB,EAASnB,SAASoB,KAAKD,GAKlC3B,GAAkB2B,EAAS3B,gBAAgB4B,KAAKD"}
|
package/dist/truesight.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export declare class TrueSightSDK {
|
|
|
4
4
|
private config;
|
|
5
5
|
private queue;
|
|
6
6
|
private scheduler;
|
|
7
|
+
private sessionManager;
|
|
8
|
+
private autoTrackManager;
|
|
7
9
|
private userId;
|
|
8
10
|
private anonymousId;
|
|
9
11
|
private mobileNumber;
|
|
@@ -18,6 +20,7 @@ export declare class TrueSightSDK {
|
|
|
18
20
|
identify(userId: string, traits?: Record<string, unknown>): Promise<void>;
|
|
19
21
|
screen(screenName: string, properties?: Record<string, unknown>): Promise<void>;
|
|
20
22
|
flush(): Promise<void>;
|
|
23
|
+
trackExperiment(flagName: string, variant: string, properties?: Record<string, unknown>): Promise<void>;
|
|
21
24
|
reset(): Promise<void>;
|
|
22
25
|
setMobileNumber(number: string): void;
|
|
23
26
|
setEmail(email: string): void;
|
package/dist/truesight.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1};const t=(new TextEncoder).encode("truesight-web-sdk-v1");let n=null,i=null;function r(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function s(e){const s=e+("undefined"!=typeof window?window.location.origin:"unknown");if(n&&i===s)return n;const o=r(),a=(new TextEncoder).encode(s),u=await o.digest("SHA-256",a),l=await o.importKey("raw",u,"PBKDF2",!1,["deriveKey"]),d=await o.deriveKey({name:"PBKDF2",salt:t,iterations:1e5,hash:"SHA-256"},l,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return n=d,i=s,d}function o(e){const t=new Uint8Array(e);let n="";for(let e=0;e<t.byteLength;e++)n+=String.fromCharCode(t[e]);return btoa(n)}function a(e){const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}async function u(e,t){const n=r(),i=new TextEncoder,s=(a=new Uint8Array(12),globalThis.crypto.getRandomValues(a));var a;const u=await n.encrypt({name:"AES-GCM",iv:s},t,i.encode(e));return{iv:o(s.buffer),ciphertext:o(u)}}async function l(e,t){const n=r(),i=new Uint8Array(a(e.iv)),s=a(e.ciphertext),o=await n.decrypt({name:"AES-GCM",iv:i},t,s);return(new TextDecoder).decode(o)}const d=0,c=1,h=2,f=3,m="[TrueSight]";const w=new class{constructor(e=!1){this.level=e?d:h}setDebug(e){this.level=e?d:h}debug(...e){this.level<=d&&console.debug(m,...e)}info(...e){this.level<=c&&console.info(m,...e)}warn(...e){this.level<=h&&console.warn(m,...e)}error(...e){this.level<=f&&console.error(m,...e)}},y="events";class b{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const n=indexedDB.open("truesight_events",1);n.onupgradeneeded=()=>{const e=n.result;if(!e.objectStoreNames.contains(y)){e.createObjectStore(y,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},n.onsuccess=()=>{this.db=n.result,w.debug("IndexedDB opened successfully"),e()},n.onerror=()=>{w.error("Failed to open IndexedDB",n.error),t(n.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(y,e).objectStore(y)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(w.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const n=await s(this.apiKey),i=await u(JSON.stringify(e),n),r={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:i};return new Promise((t,n)=>{const i=this.getStore("readwrite").put(r);i.onsuccess=()=>{w.debug(`Event enqueued: ${e.event_id}`),t()},i.onerror=()=>{w.error("Failed to enqueue event",i.error),n(i.error)}})}async dequeue(e){const t=await s(this.apiKey),n=await this.getOldest(e),i=[];for(const e of n)try{const n=await l(e.encrypted,t);i.push(JSON.parse(n))}catch(t){w.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return i}getOldest(e){return new Promise((t,n)=>{const i=this.getStore("readonly").index("timestamp").openCursor(null,"next"),r=[];i.onsuccess=()=>{const n=i.result;n&&r.length<e?(r.push(n.value),n.continue()):t(r)},i.onerror=()=>{n(i.error)}})}async remove(e){if(0!==e.length)return new Promise((t,n)=>{if(!this.db)return void n(new Error("Database not opened"));const i=this.db.transaction(y,"readwrite"),r=i.objectStore(y);for(const t of e)r.delete(t);i.oncomplete=()=>{w.debug(`Removed ${e.length} events from queue`),t()},i.onerror=()=>{w.error("Failed to remove events",i.error),n(i.error)}})}async size(){return new Promise((e,t)=>{const n=this.getStore("readonly").count();n.onsuccess=()=>{e(n.result)},n.onerror=()=>{t(n.error)}})}async clear(){return new Promise((e,t)=>{const n=this.getStore("readwrite").clear();n.onsuccess=()=>{w.debug("Event queue cleared"),e()},n.onerror=()=>{t(n.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}let g=null,p=!1,v=!0;async function S(e){const t=await async function(){if(g)return g;if(p)return null;p=!0;try{return g=await import("fzstd"),w.debug("fzstd loaded successfully"),g}catch(e){return w.warn("fzstd not available, compression disabled",e),v=!1,null}}();if(!t)throw new Error("zstd compression not available");try{return"compress"in t?t.compress(e):(v=!1,e)}catch(t){return w.warn("Compression failed, falling back to uncompressed",t),v=!1,e}}function I(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function x(e){return 429===e||e>=500&&e<600}function E(e){return new Promise(t=>setTimeout(t,e))}class z{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?w.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{w.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),w.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),w.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void w.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,s=await async function(e,t,n,i=!0){const r=JSON.stringify(n),s=new TextEncoder;let o=r,a=null;if(i&&v)try{const e=await S(s.encode(r));o=new Blob([e.buffer],{type:"application/octet-stream"}),a="zstd"}catch{w.warn("Compression failed, sending uncompressed"),o=r}const u={"Content-Type":"application/json","X-API-Key":t};a&&(u["Content-Encoding"]=a);let l=null,d=null;for(let t=0;t<=10;t++){try{const i=await fetch(e,{method:"POST",headers:u,body:o});if(i.ok)return w.debug(`Batch sent successfully: ${n.batch.length} events`),i;if(d=i,!x(i.status))return w.error(`Non-retryable HTTP error: ${i.status} ${i.statusText}`),i;w.warn(`Retryable HTTP error: ${i.status}, attempt ${t+1}/10`)}catch(e){l=e,w.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=I(t);w.debug(`Backing off for ${e}ms`),await E(e)}}if(d)return d;throw l||new Error("sendBatch failed after all retries")}(r,this.config.apiKey,i);if(s.ok){const e=n.map(e=>e.event_id);await this.queue.remove(e),w.debug(`Flushed ${n.length} events successfully`)}else w.error(`Flush failed with status: ${s.status}`)}catch(e){w.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=function(e,t,n){try{const i=JSON.stringify(n),r=new Blob([i],{type:"application/json"}),s=new URL(e);s.searchParams.set("api_key",t);const o=navigator.sendBeacon(s.toString(),r);return o?w.debug(`Beacon sent: ${n.batch.length} events`):w.warn("sendBeacon returned false"),o}catch(e){return w.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,i);if(r){const e=n.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){w.error("Beacon flush error:",e)}}}function T(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[n,i]of t){const t=e.match(i);if(t)return`${n} ${t[1]}`}return"Unknown"}function _(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let q=null;async function D(){if(q)return q;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,n=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),n=t.getContext("2d");n&&(t.width=200,t.height=50,n.textBaseline="top",n.font="14px Arial",n.fillStyle="#f60",n.fillRect(0,0,200,50),n.fillStyle="#069",n.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}const t=(new TextEncoder).encode(e.join("|")),n=await crypto.subtle.digest("SHA-256",t),i=new Uint8Array(n);return Array.from(i).map(e=>e.toString(16).padStart(2,"0")).join("")}();return q={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:T(e),device_model:_(e),device_id:n,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},q}const k="truesight_anonymous_id";function $(){return crypto.randomUUID()}function B(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function H(e,t){const n=B();if(!n)return;const i=await s(t),r=await u(e,i);n.setItem(k,JSON.stringify(r))}async function F(e){const t=await async function(e){try{const t=B();if(!t)return null;const n=t.getItem(k);if(!n)return null;const i=JSON.parse(n),r=await s(e);return await l(i,r)}catch{return null}}(e);if(t)return t;const n=$();return await H(n,e),n}class O{constructor(){this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(t){if(this.initialized)w.warn("TrueSight already initialized");else{if(!t.apiKey)throw new Error("apiKey is required");if(!t.endpoint)throw new Error("endpoint is required");this.config=function(t){return{apiKey:t.apiKey,endpoint:t.endpoint,...e,...t.options}}(t),w.setDebug(this.config.debug),this.anonymousId=await F(this.config.apiKey),this.queue=new b(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new z(this.config,this.queue),this.scheduler.start(),this.initialized=!0,w.info("TrueSight SDK initialized")}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):w.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):w.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):w.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.anonymousId=await async function(e){const t=$();return await H(t,e),t}(this.config.apiKey),w.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,w.debug("Mobile number set")):w.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,w.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},n=null,i=null,q=null,w.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,n){const i=await D(),r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,client_timestamp:(new Date).toISOString(),properties:n,context:i},s=JSON.stringify(r);if(s.length>this.config.maxEventSize)return void w.warn(`Event exceeds maxEventSize (${s.length} > ${this.config.maxEventSize}), dropping`);const o=await this.queue.size();o>=this.config.maxQueueSize&&(w.warn(`Queue at soft limit (${o}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),w.debug(`Event queued: ${e} - ${t}`)}}const P=new O,K=P.init.bind(P),N=P.track.bind(P),A=P.identify.bind(P),U=P.screen.bind(P),C=P.flush.bind(P),M=P.reset.bind(P),Q=P.setMobileNumber.bind(P),L=P.setEmail.bind(P);export{O as TrueSightSDK,P as default,C as flush,A as identify,K as init,M as reset,U as screen,L as setEmail,Q as setMobileNumber,N as track};
|
|
1
|
+
const e={pageViews:!0,clicks:!0,formSubmits:!0,rageClicks:!0,deadClicks:!0,scrollDepth:!0,timeOnPage:!0,pageLoadTiming:!0},t={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1,sessionTimeout:18e5,autoTrack:{...e}};const i=(new TextEncoder).encode("truesight-web-sdk-v1");let n=null,s=null;function r(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function o(e){const t=e+("undefined"!=typeof window?window.location.origin:"unknown");if(n&&s===t)return n;const o=r(),a=(new TextEncoder).encode(t),l=await o.digest("SHA-256",a),h=await o.importKey("raw",l,"PBKDF2",!1,["deriveKey"]),c=await o.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},h,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return n=c,s=t,c}function a(e){const t=new Uint8Array(e);let i="";for(let e=0;e<t.byteLength;e++)i+=String.fromCharCode(t[e]);return btoa(i)}function l(e){const t=atob(e),i=new Uint8Array(t.length);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);return i.buffer}async function h(e,t){const i=r(),n=new TextEncoder,s=(o=new Uint8Array(12),globalThis.crypto.getRandomValues(o));var o;const l=await i.encrypt({name:"AES-GCM",iv:s},t,n.encode(e));return{iv:a(s.buffer),ciphertext:a(l)}}async function c(e,t){const i=r(),n=new Uint8Array(l(e.iv)),s=l(e.ciphertext),o=await i.decrypt({name:"AES-GCM",iv:n},t,s);return(new TextDecoder).decode(o)}const d=0,u=1,m=2,f=3,g="[TrueSight]";const p=new class{constructor(e=!1){this.level=e?d:m}setDebug(e){this.level=e?d:m}debug(...e){this.level<=d&&console.debug(g,...e)}info(...e){this.level<=u&&console.info(g,...e)}warn(...e){this.level<=m&&console.warn(g,...e)}error(...e){this.level<=f&&console.error(g,...e)}},w="events";class y{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const i=indexedDB.open("truesight_events",1);i.onupgradeneeded=()=>{const e=i.result;if(!e.objectStoreNames.contains(w)){e.createObjectStore(w,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,p.debug("IndexedDB opened successfully"),e()},i.onerror=()=>{p.error("Failed to open IndexedDB",i.error),t(i.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(w,e).objectStore(w)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(p.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const i=await o(this.apiKey),n=await h(JSON.stringify(e),i),s={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:n};return new Promise((t,i)=>{const n=this.getStore("readwrite").put(s);n.onsuccess=()=>{p.debug(`Event enqueued: ${e.event_id}`),t()},n.onerror=()=>{p.error("Failed to enqueue event",n.error),i(n.error)}})}async dequeue(e){const t=await o(this.apiKey),i=await this.getOldest(e),n=[];for(const e of i)try{const i=await c(e.encrypted,t);n.push(JSON.parse(i))}catch(t){p.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return n}getOldest(e){return new Promise((t,i)=>{const n=this.getStore("readonly").index("timestamp").openCursor(null,"next"),s=[];n.onsuccess=()=>{const i=n.result;i&&s.length<e?(s.push(i.value),i.continue()):t(s)},n.onerror=()=>{i(n.error)}})}async remove(e){if(0!==e.length)return new Promise((t,i)=>{if(!this.db)return void i(new Error("Database not opened"));const n=this.db.transaction(w,"readwrite"),s=n.objectStore(w);for(const t of e)s.delete(t);n.oncomplete=()=>{p.debug(`Removed ${e.length} events from queue`),t()},n.onerror=()=>{p.error("Failed to remove events",n.error),i(n.error)}})}async size(){return new Promise((e,t)=>{const i=this.getStore("readonly").count();i.onsuccess=()=>{e(i.result)},i.onerror=()=>{t(i.error)}})}async clear(){return new Promise((e,t)=>{const i=this.getStore("readwrite").clear();i.onsuccess=()=>{p.debug("Event queue cleared"),e()},i.onerror=()=>{t(i.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}function v(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function b(e){return 429===e||e>=500&&e<600}function k(e){return new Promise(t=>setTimeout(t,e))}class S{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?p.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{p.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),p.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),p.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void p.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,r=await async function(e,t,i){const n=JSON.stringify(i);new TextEncoder;let s=n;const r={"Content-Type":"application/json","X-API-Key":t};let o=null,a=null;for(let t=0;t<=10;t++){try{const n=await fetch(e,{method:"POST",headers:r,body:s});if(n.ok)return p.debug(`Batch sent successfully: ${i.batch.length} events`),n;if(a=n,!b(n.status))return p.error(`Non-retryable HTTP error: ${n.status} ${n.statusText}`),n;p.warn(`Retryable HTTP error: ${n.status}, attempt ${t+1}/10`)}catch(e){o=e,p.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=v(t);p.debug(`Backing off for ${e}ms`),await k(e)}}if(a)return a;throw o||new Error("sendBatch failed after all retries")}(s,this.config.apiKey,n);if(r.ok){const e=i.map(e=>e.event_id);await this.queue.remove(e),p.debug(`Flushed ${i.length} events successfully`)}else p.error(`Flush failed with status: ${r.status}`)}catch(e){p.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=function(e,t,i){try{const n=JSON.stringify(i),s=new Blob([n],{type:"application/json"}),r=new URL(e);r.searchParams.set("api_key",t);const o=navigator.sendBeacon(r.toString(),s);return o?p.debug(`Beacon sent: ${i.batch.length} events`):p.warn("sendBeacon returned false"),o}catch(e){return p.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,n);if(s){const e=i.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){p.error("Beacon flush error:",e)}}}function T(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[i,n]of t){const t=e.match(n);if(t)return`${i} ${t[1]}`}return"Unknown"}function _(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let E=null;async function I(){if(E)return E;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,i=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),i=t.getContext("2d");i&&(t.width=200,t.height=50,i.textBaseline="top",i.font="14px Arial",i.fillStyle="#f60",i.fillRect(0,0,200,50),i.fillStyle="#069",i.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}if(void 0===globalThis.crypto||!globalThis.crypto.subtle){let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}try{const t=(new TextEncoder).encode(e.join("|")),i=await crypto.subtle.digest("SHA-256",t),n=new Uint8Array(i);return Array.from(n).map(e=>e.toString(16).padStart(2,"0")).join("")}catch{let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}}();return E={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:T(e),device_model:_(e),device_id:i,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},E}const H="truesight_anonymous_id";function F(){return crypto.randomUUID()}function x(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function $(e,t){const i=x();if(!i)return;const n=await o(t),s=await h(e,n);i.setItem(H,JSON.stringify(s))}async function D(e){const t=await async function(e){try{const t=x();if(!t)return null;const i=t.getItem(H);if(!i)return null;const n=JSON.parse(i),s=await o(e);return await c(n,s)}catch{return null}}(e);if(t)return t;const i=F();return await $(i,e),i}const M="truesight_session_id",P="truesight_last_activity",L="truesight_session_start";class q{constructor(e,t){this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,this.sessionTimeout=e,this.onSessionEvent=t,this.restore()}restore(){if("undefined"==typeof sessionStorage)return;const e=sessionStorage.getItem(M),t=sessionStorage.getItem(P),i=sessionStorage.getItem(L);if(e&&t){const n=parseInt(t,10);if(Date.now()-n<this.sessionTimeout){this.sessionId=e,this.lastActivityTime=n;const t=i?parseInt(i,10):NaN;return void(this.sessionStartTime=Number.isFinite(t)?t:n)}}}getSessionId(){return this.sessionId||this.startSession(),this.sessionId}startSession(){this.sessionId=crypto.randomUUID(),this.lastActivityTime=Date.now(),this.sessionStartTime=this.lastActivityTime,this.persist(),this.onSessionEvent("$session_start",{session_id:this.sessionId})}endSession(){if(!this.sessionId)return;const e=Math.round((Date.now()-this.sessionStartTime)/1e3);this.onSessionEvent("$session_end",{session_id:this.sessionId,duration_seconds:e}),this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,"undefined"!=typeof sessionStorage&&(sessionStorage.removeItem(M),sessionStorage.removeItem(P),sessionStorage.removeItem(L))}touchActivity(){const e=Date.now();this.sessionId&&e-this.lastActivityTime>this.sessionTimeout?(this.endSession(),this.startSession()):(this.lastActivityTime=e,this.persist())}reset(){this.endSession(),this.startSession()}destroy(){this.endSession()}persist(){"undefined"!=typeof sessionStorage&&this.sessionId&&(sessionStorage.setItem(M,this.sessionId),sessionStorage.setItem(P,this.lastActivityTime.toString()),sessionStorage.setItem(L,this.sessionStartTime.toString()))}}class A{constructor(){this.name="pageview",this.trackFn=null,this.origPushState=null,this.origReplaceState=null,this.popstateHandler=null,this.hashchangeHandler=null}start(e){if(this.trackFn=e,"undefined"==typeof window||"undefined"==typeof history)return;if(this.origPushState||this.origReplaceState||this.popstateHandler||this.hashchangeHandler)return;this.origPushState=history.pushState,this.origReplaceState=history.replaceState;const t=this;history.pushState=function(...e){t.origPushState.apply(this,e),t.firePageview()},history.replaceState=function(...e){t.origReplaceState.apply(this,e),t.firePageview()},this.popstateHandler=()=>this.firePageview(),this.hashchangeHandler=()=>this.firePageview(),window.addEventListener("popstate",this.popstateHandler),window.addEventListener("hashchange",this.hashchangeHandler),this.firePageview()}stop(){this.origPushState&&(history.pushState=this.origPushState,this.origPushState=null),this.origReplaceState&&(history.replaceState=this.origReplaceState,this.origReplaceState=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.hashchangeHandler&&(window.removeEventListener("hashchange",this.hashchangeHandler),this.hashchangeHandler=null),this.trackFn=null}firePageview(){if(!this.trackFn)return;const e={};new URLSearchParams(location.search).forEach((t,i)=>{e[i]=t}),this.trackFn("$pageview",{page_url:location.href,page_path:location.pathname,page_title:document.title,page_referrer:document.referrer,query_params:e})}}function z(e){return null!==e.closest("[data-ts-ignore]")}class N{constructor(){this.name="click",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;const i={element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null},n=t.getAttribute("data-analytics-id");n&&(i.data_analytics_id=n);const s=t.closest("a");s&&(i.href=s.href),this.trackFn("$click",i)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.trackFn=null}}class O{constructor(){this.name="rage-click",this.trackFn=null,this.handler=null,this.clicks=[],this.threshold=3,this.windowMs=1e3}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;const i=Date.now(),n=function(e){const t=e.tagName.toLowerCase(),i=e.id?`#${e.id}`:"",n=(e.getAttribute("class")??"").trim();return`${t}${i}${n?"."+n.split(/\s+/).join("."):""}`}(t);this.clicks=this.clicks.filter(e=>i-e.timestamp<this.windowMs),this.clicks.push({timestamp:i,selector:n});const s=this.clicks.filter(e=>e.selector===n);s.length>=this.threshold&&(this.trackFn("$rage_click",{click_count:s.length,element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.getAttribute("class")||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null}),this.clicks=this.clicks.filter(e=>e.selector!==n))},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.clicks=[],this.trackFn=null}}const C=new Set(["INPUT","TEXTAREA","SELECT"]);class U{constructor(){this.name="dead-click",this.trackFn=null,this.handler=null,this.timeouts=new Set,this.observers=new Set}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(z(t))return;if(C.has(t.tagName))return;let i=!1;const n=new MutationObserver(()=>{i=!0,n.disconnect(),this.observers.delete(n)});this.observers.add(n),n.observe(document.body,{subtree:!0,childList:!0,attributes:!0,characterData:!0});const s=setTimeout(()=>{n.disconnect(),this.observers.delete(n),this.timeouts.delete(s),i||this.trackFn?.("$dead_click",{element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null})},1e3);this.timeouts.add(s)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null);for(const e of this.timeouts)clearTimeout(e);this.timeouts.clear();for(const e of this.observers)e.disconnect();this.observers.clear(),this.trackFn=null}}class B{constructor(){this.name="form",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;t&&this.trackFn&&"FORM"===t.tagName&&(z(t)||this.trackFn("$form_submit",{form_id:t.id||null,form_name:t.name||null,form_action:t.action||null,form_method:(t.method||"get").toUpperCase()}))},document.addEventListener("submit",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("submit",this.handler,!0),this.handler=null),this.trackFn=null}}const K=[25,50,75,100];class R{constructor(){this.name="scroll",this.trackFn=null,this.scrollHandler=null,this.popstateHandler=null,this.firedThresholds=new Set,this.throttleTimer=null,this.lastUrl=null}start(e){this.trackFn=e,"undefined"!=typeof window&&(this.lastUrl=location.href,this.scrollHandler=()=>{this.throttleTimer||(this.throttleTimer=setTimeout(()=>{this.throttleTimer=null,this.checkScroll()},200))},this.popstateHandler=()=>{this.firedThresholds.clear()},window.addEventListener("scroll",this.scrollHandler,{passive:!0}),window.addEventListener("popstate",this.popstateHandler))}stop(){this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler),this.scrollHandler=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.throttleTimer&&(clearTimeout(this.throttleTimer),this.throttleTimer=null),this.firedThresholds.clear(),this.trackFn=null}checkScroll(){if(!this.trackFn)return;this.lastUrl!==location.href&&(this.firedThresholds.clear(),this.lastUrl=location.href);const e=document.documentElement.scrollHeight,t=window.innerHeight;if(e<=t)return;const i=window.scrollY||document.documentElement.scrollTop,n=Math.round((i+t)/e*100);for(const e of K)n>=e&&!this.firedThresholds.has(e)&&(this.firedThresholds.add(e),this.trackFn("$scroll_depth",{depth_percentage:e,page_url:location.href}))}}class j{constructor(){this.name="time-on-page",this.trackFn=null,this.entryTime=0,this.visibilityHandler=null,this.unloadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&"undefined"!=typeof window&&(this.entryTime=Date.now(),this.visibilityHandler=()=>{"hidden"===document.visibilityState?this.fireDuration():this.entryTime=Date.now()},this.unloadHandler=()=>{this.fireDuration()},document.addEventListener("visibilitychange",this.visibilityHandler),window.addEventListener("beforeunload",this.unloadHandler))}stop(){this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null),this.unloadHandler&&(window.removeEventListener("beforeunload",this.unloadHandler),this.unloadHandler=null),this.trackFn=null}fireDuration(){if(!this.trackFn||!this.entryTime)return;const e=Math.round((Date.now()-this.entryTime)/1e3);e<1||(this.trackFn("$time_on_page",{page_url:location.href,duration_seconds:e}),this.entryTime=0)}}class Q{constructor(){this.name="page-load",this.fired=!1,this.trackFn=null,this.loadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState?this.fireMetrics():(this.loadHandler=()=>this.fireMetrics(),window.addEventListener("load",this.loadHandler)))}stop(){this.loadHandler&&(window.removeEventListener("load",this.loadHandler),this.loadHandler=null),this.trackFn=null,this.fired=!1}fireMetrics(){if(this.fired||!this.trackFn)return;const e=performance.getEntriesByType("navigation");if(!e.length)return;this.fired=!0;const t=e[0];this.trackFn("$page_load",{dns_time:Math.round(t.domainLookupEnd-t.domainLookupStart),connect_time:Math.round(t.connectEnd-t.connectStart),ttfb:Math.round(t.responseStart-t.requestStart),dom_content_loaded:Math.round(t.domContentLoadedEventEnd-t.startTime),load_complete:Math.round(t.loadEventEnd-t.startTime),transfer_size:t.transferSize})}}class V{constructor(e,t){this.trackers=[],this.started=!1,this.trackFn=t,e.pageViews&&this.trackers.push(new A),e.clicks&&this.trackers.push(new N),e.rageClicks&&this.trackers.push(new O),e.deadClicks&&this.trackers.push(new U),e.formSubmits&&this.trackers.push(new B),e.scrollDepth&&this.trackers.push(new R),e.timeOnPage&&this.trackers.push(new j),e.pageLoadTiming&&this.trackers.push(new Q)}start(){if(!this.started){this.started=!0;for(const e of this.trackers)e.start(this.trackFn)}}stop(){if(this.started){this.started=!1;for(const e of this.trackers)e.stop()}}}class J{constructor(){this.initialized=!1,this.autoTrackManager=null,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(i){if(this.initialized)p.warn("TrueSight already initialized");else{if(!i.apiKey)throw new Error("apiKey is required");if(!i.endpoint)throw new Error("endpoint is required");this.config=function(i){const n=i.options??{};return{...t,...n,apiKey:i.apiKey,endpoint:i.endpoint,autoTrack:{...e,...n.autoTrack??{}}}}(i),p.setDebug(this.config.debug),this.anonymousId=await D(this.config.apiKey),this.queue=new y(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new S(this.config,this.queue),this.scheduler.start(),this.sessionManager=new q(this.config.sessionTimeout,(e,t)=>{this.enqueueEvent("track",e,t).catch(t=>{p.warn(`Failed to enqueue session event "${e}": ${String(t)}`)})}),this.initialized=!0,p.info("TrueSight SDK initialized"),this.autoTrackManager=new V(this.config.autoTrack,(e,t)=>{this.track(e,t).catch(t=>{p.warn(`Failed to auto-track event "${e}": ${String(t)}`)})}),this.autoTrackManager.start()}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):p.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):p.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):p.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async trackExperiment(e,t,i={}){await this.track("$experiment_exposure",{flag_name:e,variant:t,...i})}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.sessionManager&&this.sessionManager.reset(),this.anonymousId=await async function(e){const t=F();return await $(t,e),t}(this.config.apiKey),p.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,p.debug("Mobile number set")):p.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,p.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.autoTrackManager&&(this.autoTrackManager.stop(),this.autoTrackManager=null),this.sessionManager&&this.sessionManager.destroy(),this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},n=null,s=null,E=null,p.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,i){const n=await async function(){return{...await I(),page_url:"undefined"!=typeof window?window.location.href:"",page_path:"undefined"!=typeof window?window.location.pathname+window.location.search:"",referrer:"undefined"!=typeof document?document.referrer:"",user_agent:"undefined"!=typeof navigator?navigator.userAgent:"",viewport_width:"undefined"!=typeof window?window.innerWidth:0,viewport_height:"undefined"!=typeof window?window.innerHeight:0}}(),s=this.sessionManager?(this.sessionManager.touchActivity(),this.sessionManager.getSessionId()):null,r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,session_id:s,client_timestamp:(new Date).toISOString(),properties:i,context:n},o=JSON.stringify(r);if(o.length>this.config.maxEventSize)return void p.warn(`Event exceeds maxEventSize (${o.length} > ${this.config.maxEventSize}), dropping`);const a=await this.queue.size();a>=this.config.maxQueueSize&&(p.warn(`Queue at soft limit (${a}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),p.debug(`Event queued: ${e} - ${t}`)}}const W=new J,G=W.init.bind(W),X=W.track.bind(W),Z=W.identify.bind(W),Y=W.screen.bind(W),ee=W.flush.bind(W),te=W.reset.bind(W),ie=W.setMobileNumber.bind(W),ne=W.setEmail.bind(W),se=W.trackExperiment.bind(W);export{J as TrueSightSDK,W as default,ee as flush,Z as identify,G as init,te as reset,Y as screen,ne as setEmail,ie as setMobileNumber,X as track,se as trackExperiment};
|
|
2
2
|
//# sourceMappingURL=truesight.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truesight.esm.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/compression.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/truesight.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","fzstdModule","loadAttempted","isSupported","compress","mod","import","loadFzstd","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","then","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","compressPayload","jsonStr","body","contentEncoding","compressionSupported","compressed","Blob","type","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedContext","getDeviceContext","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","join","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","raw","getItem","readEncrypted","newId","TrueSightSDK","initialized","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","track","eventName","properties","ensureInitialized","enqueueEvent","identify","mobile_number","screenName","screen_name","reset","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","destroy","eventType","context","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"truesight.esm.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/session-manager.ts","../src/auto/pageview-tracker.ts","../src/auto/tracker.ts","../src/auto/click-tracker.ts","../src/auto/rage-click-tracker.ts","../src/auto/dead-click-tracker.ts","../src/auto/form-tracker.ts","../src/auto/scroll-tracker.ts","../src/auto/time-on-page-tracker.ts","../src/auto/page-load-tracker.ts","../src/auto/auto-track-manager.ts","../src/truesight.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_AUTO_TRACK","pageViews","clicks","formSubmits","rageClicks","deadClicks","scrollDepth","timeOnPage","pageLoadTiming","DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","sessionTimeout","autoTrack","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","then","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","jsonStr","body","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","Blob","type","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedDeviceFields","getCachedDeviceFields","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","h","raw","join","abs","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","getItem","readEncrypted","newId","SESSION_ID_KEY","LAST_ACTIVITY_KEY","SESSION_START_KEY","SessionManager","onSessionEvent","sessionId","lastActivityTime","sessionStartTime","restore","sessionStorage","storedId","storedActivity","storedStart","lastActivity","parseInt","startTs","NaN","Number","isFinite","getSessionId","startSession","persist","session_id","endSession","durationSeconds","round","duration_seconds","removeItem","touchActivity","reset","destroy","PageviewTracker","trackFn","origPushState","origReplaceState","popstateHandler","hashchangeHandler","history","pushState","replaceState","self","apply","firePageview","queryParams","URLSearchParams","search","forEach","v","k","page_url","href","page_path","pathname","page_title","title","page_referrer","referrer","query_params","shouldIgnoreElement","el","closest","ClickTracker","handler","target","props","element_tag","tagName","toLowerCase","element_id","element_classes","className","element_text","textContent","trim","slice","analyticsId","data_analytics_id","anchor","RageClickTracker","threshold","windowMs","selector","tag","classAttr","split","getElementSelector","filter","c","sameElement","click_count","EXCLUDED_TAGS","Set","DeadClickTracker","timeouts","observers","has","mutationDetected","observer","MutationObserver","disconnect","add","observe","subtree","childList","attributes","characterData","timeoutId","FormTracker","form","form_id","form_name","form_action","action","form_method","toUpperCase","THRESHOLDS","ScrollTracker","scrollHandler","firedThresholds","throttleTimer","lastUrl","checkScroll","passive","scrollHeight","documentElement","viewportHeight","innerHeight","scrollTop","scrollY","percentage","depth_percentage","TimeOnPageTracker","entryTime","visibilityHandler","unloadHandler","fireDuration","PageLoadTracker","fired","loadHandler","readyState","fireMetrics","entries","performance","getEntriesByType","dns_time","domainLookupEnd","domainLookupStart","connect_time","connectEnd","connectStart","ttfb","responseStart","requestStart","dom_content_loaded","domContentLoadedEventEnd","startTime","load_complete","loadEventEnd","transfer_size","transferSize","AutoTrackManager","trackers","started","tracker","TrueSightSDK","initialized","autoTrackManager","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","sessionManager","eventName","properties","enqueueEvent","catch","track","ensureInitialized","identify","mobile_number","screenName","screen_name","trackExperiment","flagName","variant","flag_name","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","eventType","context","user_agent","viewport_width","innerWidth","viewport_height","getDeviceContext","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind"],"mappings":"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"}
|
package/dist/truesight.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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).TrueSight={})}(this,function(e){"use strict";const t={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1};const n=(new TextEncoder).encode("truesight-web-sdk-v1");let i=null,r=null;function s(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function o(e){const t=e+("undefined"!=typeof window?window.location.origin:"unknown");if(i&&r===t)return i;const o=s(),a=(new TextEncoder).encode(t),u=await o.digest("SHA-256",a),l=await o.importKey("raw",u,"PBKDF2",!1,["deriveKey"]),h=await o.deriveKey({name:"PBKDF2",salt:n,iterations:1e5,hash:"SHA-256"},l,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return i=h,r=t,h}function a(e){const t=new Uint8Array(e);let n="";for(let e=0;e<t.byteLength;e++)n+=String.fromCharCode(t[e]);return btoa(n)}function u(e){const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}async function l(e,t){const n=s(),i=new TextEncoder,r=(o=new Uint8Array(12),globalThis.crypto.getRandomValues(o));var o;const u=await n.encrypt({name:"AES-GCM",iv:r},t,i.encode(e));return{iv:a(r.buffer),ciphertext:a(u)}}async function h(e,t){const n=s(),i=new Uint8Array(u(e.iv)),r=u(e.ciphertext),o=await n.decrypt({name:"AES-GCM",iv:i},t,r);return(new TextDecoder).decode(o)}const c=0,d=1,f=2,b=3,y="[TrueSight]";const m=new class{constructor(e=!1){this.level=e?c:f}setDebug(e){this.level=e?c:f}debug(...e){this.level<=c&&console.debug(y,...e)}info(...e){this.level<=d&&console.info(y,...e)}warn(...e){this.level<=f&&console.warn(y,...e)}error(...e){this.level<=b&&console.error(y,...e)}},w="events";class p{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const n=indexedDB.open("truesight_events",1);n.onupgradeneeded=()=>{const e=n.result;if(!e.objectStoreNames.contains(w)){e.createObjectStore(w,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},n.onsuccess=()=>{this.db=n.result,m.debug("IndexedDB opened successfully"),e()},n.onerror=()=>{m.error("Failed to open IndexedDB",n.error),t(n.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(w,e).objectStore(w)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(m.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const n=await o(this.apiKey),i=await l(JSON.stringify(e),n),r={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:i};return new Promise((t,n)=>{const i=this.getStore("readwrite").put(r);i.onsuccess=()=>{m.debug(`Event enqueued: ${e.event_id}`),t()},i.onerror=()=>{m.error("Failed to enqueue event",i.error),n(i.error)}})}async dequeue(e){const t=await o(this.apiKey),n=await this.getOldest(e),i=[];for(const e of n)try{const n=await h(e.encrypted,t);i.push(JSON.parse(n))}catch(t){m.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return i}getOldest(e){return new Promise((t,n)=>{const i=this.getStore("readonly").index("timestamp").openCursor(null,"next"),r=[];i.onsuccess=()=>{const n=i.result;n&&r.length<e?(r.push(n.value),n.continue()):t(r)},i.onerror=()=>{n(i.error)}})}async remove(e){if(0!==e.length)return new Promise((t,n)=>{if(!this.db)return void n(new Error("Database not opened"));const i=this.db.transaction(w,"readwrite"),r=i.objectStore(w);for(const t of e)r.delete(t);i.oncomplete=()=>{m.debug(`Removed ${e.length} events from queue`),t()},i.onerror=()=>{m.error("Failed to remove events",i.error),n(i.error)}})}async size(){return new Promise((e,t)=>{const n=this.getStore("readonly").count();n.onsuccess=()=>{e(n.result)},n.onerror=()=>{t(n.error)}})}async clear(){return new Promise((e,t)=>{const n=this.getStore("readwrite").clear();n.onsuccess=()=>{m.debug("Event queue cleared"),e()},n.onerror=()=>{t(n.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}let g=null,v=!1,S=!0;async function I(e){const t=await async function(){if(g)return g;if(v)return null;v=!0;try{return g=await Promise.resolve().then(function(){return ge}),m.debug("fzstd loaded successfully"),g}catch(e){return m.warn("fzstd not available, compression disabled",e),S=!1,null}}();if(!t)throw new Error("zstd compression not available");try{return"compress"in t?t.compress(e):(S=!1,e)}catch(t){return m.warn("Compression failed, falling back to uncompressed",t),S=!1,e}}function E(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function T(e){return 429===e||e>=500&&e<600}function z(e){return new Promise(t=>setTimeout(t,e))}class x{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?m.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{m.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),m.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),m.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void m.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,s=await async function(e,t,n,i=!0){const r=JSON.stringify(n),s=new TextEncoder;let o=r,a=null;if(i&&S)try{const e=await I(s.encode(r));o=new Blob([e.buffer],{type:"application/octet-stream"}),a="zstd"}catch{m.warn("Compression failed, sending uncompressed"),o=r}const u={"Content-Type":"application/json","X-API-Key":t};a&&(u["Content-Encoding"]=a);let l=null,h=null;for(let t=0;t<=10;t++){try{const i=await fetch(e,{method:"POST",headers:u,body:o});if(i.ok)return m.debug(`Batch sent successfully: ${n.batch.length} events`),i;if(h=i,!T(i.status))return m.error(`Non-retryable HTTP error: ${i.status} ${i.statusText}`),i;m.warn(`Retryable HTTP error: ${i.status}, attempt ${t+1}/10`)}catch(e){l=e,m.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=E(t);m.debug(`Backing off for ${e}ms`),await z(e)}}if(h)return h;throw l||new Error("sendBatch failed after all retries")}(r,this.config.apiKey,i);if(s.ok){const e=n.map(e=>e.event_id);await this.queue.remove(e),m.debug(`Flushed ${n.length} events successfully`)}else m.error(`Flush failed with status: ${s.status}`)}catch(e){m.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),n=await this.queue.dequeue(t);if(0===n.length)return;const i={batch:n,sent_at:(new Date).toISOString()},r=function(e,t,n){try{const i=JSON.stringify(n),r=new Blob([i],{type:"application/json"}),s=new URL(e);s.searchParams.set("api_key",t);const o=navigator.sendBeacon(s.toString(),r);return o?m.debug(`Beacon sent: ${n.batch.length} events`):m.warn("sendBeacon returned false"),o}catch(e){return m.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,i);if(r){const e=n.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){m.error("Beacon flush error:",e)}}}function _(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[n,i]of t){const t=e.match(i);if(t)return`${n} ${t[1]}`}return"Unknown"}function k(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let D=null;async function q(){if(D)return D;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,n=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),n=t.getContext("2d");n&&(t.width=200,t.height=50,n.textBaseline="top",n.font="14px Arial",n.fillStyle="#f60",n.fillRect(0,0,200,50),n.fillStyle="#069",n.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}const t=(new TextEncoder).encode(e.join("|")),n=await crypto.subtle.digest("SHA-256",t),i=new Uint8Array(n);return Array.from(i).map(e=>e.toString(16).padStart(2,"0")).join("")}();return D={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:_(e),device_model:k(e),device_id:n,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},D}const B="truesight_anonymous_id";function F(){return crypto.randomUUID()}function O(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function $(e,t){const n=O();if(!n)return;const i=await o(t),r=await l(e,i);n.setItem(B,JSON.stringify(r))}async function H(e){const t=await async function(e){try{const t=O();if(!t)return null;const n=t.getItem(B);if(!n)return null;const i=JSON.parse(n),r=await o(e);return await h(i,r)}catch{return null}}(e);if(t)return t;const n=F();return await $(n,e),n}class P{constructor(){this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(e){if(this.initialized)m.warn("TrueSight already initialized");else{if(!e.apiKey)throw new Error("apiKey is required");if(!e.endpoint)throw new Error("endpoint is required");this.config=function(e){return{apiKey:e.apiKey,endpoint:e.endpoint,...t,...e.options}}(e),m.setDebug(this.config.debug),this.anonymousId=await H(this.config.apiKey),this.queue=new p(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new x(this.config,this.queue),this.scheduler.start(),this.initialized=!0,m.info("TrueSight SDK initialized")}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):m.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):m.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):m.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.anonymousId=await async function(e){const t=F();return await $(t,e),t}(this.config.apiKey),m.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,m.debug("Mobile number set")):m.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,m.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},i=null,r=null,D=null,m.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,n){const i=await q(),r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,client_timestamp:(new Date).toISOString(),properties:n,context:i},s=JSON.stringify(r);if(s.length>this.config.maxEventSize)return void m.warn(`Event exceeds maxEventSize (${s.length} > ${this.config.maxEventSize}), dropping`);const o=await this.queue.size();o>=this.config.maxQueueSize&&(m.warn(`Queue at soft limit (${o}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),m.debug(`Event queued: ${e} - ${t}`)}}const A=new P,K=A.init.bind(A),N=A.track.bind(A),U=A.identify.bind(A),C=A.screen.bind(A),M=A.flush.bind(A),j=A.reset.bind(A),L=A.setMobileNumber.bind(A),Q=A.setEmail.bind(A);var V=ArrayBuffer,W=Uint8Array,J=Uint16Array,R=Int16Array,G=Int32Array,Z=function(e,t,n){if(W.prototype.slice)return W.prototype.slice.call(e,t,n);(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);var i=new W(n-t);return i.set(e.subarray(t,n)),i},X=function(e,t,n,i){if(W.prototype.fill)return W.prototype.fill.call(e,t,n,i);for((null==n||n<0)&&(n=0),(null==i||i>e.length)&&(i=e.length);n<i;++n)e[n]=t;return e},Y=function(e,t,n,i){if(W.prototype.copyWithin)return W.prototype.copyWithin.call(e,t,n,i);for((null==n||n<0)&&(n=0),(null==i||i>e.length)&&(i=e.length);n<i;)e[t++]=e[n++]},ee=["invalid zstd data","window size too large (>2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],te=function(e,t,n){var i=new Error(t||ee[e]);if(i.code=e,Error.captureStackTrace&&Error.captureStackTrace(i,te),!n)throw i;return i},ne=function(e,t,n){for(var i=0,r=0;i<n;++i)r|=e[t++]<<(i<<3);return r},ie=function(e,t){var n,i,r=e[0]|e[1]<<8|e[2]<<16;if(3126568==r&&253==e[3]){var s=e[4],o=s>>5&1,a=s>>2&1,u=3&s,l=s>>6;8&s&&te(0);var h=6-o,c=3==u?4:u,d=ne(e,h,c),f=l?1<<l:o,b=ne(e,h+=c,f)+(1==l&&256),y=b;if(!o){var m=1<<10+(e[5]>>3);y=m+(m>>3)*(7&e[5])}y>2145386496&&te(1);var w=new W((1==t?b||y:t?0:y)+12);return w[0]=1,w[4]=4,w[8]=8,{b:h+f,y:0,l:0,d:d,w:t&&1!=t?t:w.subarray(12),e:y,o:new G(w.buffer,0,3),u:b,c:a,m:Math.min(131072,y)}}if(25481893==(r>>4|e[3]<<20))return(((n=e)[i=4]|n[i+1]<<8|n[i+2]<<16|n[i+3]<<24)>>>0)+8;te(0)},re=function(e){for(var t=0;1<<t<=e;++t);return t-1},se=function(e,t,n){var i=4+(t<<3),r=5+(15&e[t]);r>n&&te(3);for(var s=1<<r,o=s,a=-1,u=-1,l=-1,h=s,c=new V(512+(s<<2)),d=new R(c,0,256),f=new J(c,0,256),b=new J(c,512,s),y=512+(s<<1),m=new W(c,y,s),w=new W(c,y+s);a<255&&o>0;){var p=re(o+1),g=i>>3,v=(1<<p+1)-1,S=(e[g]|e[g+1]<<8|e[g+2]<<16)>>(7&i)&v,I=(1<<p)-1,E=v-o-1,T=S&I;if(T<E?(i+=p,S=T):(i+=p+1,S>I&&(S-=E)),d[++a]=--S,-1==S?(o+=S,m[--h]=a):o-=S,!S)do{var z=i>>3;u=(e[z]|e[z+1]<<8)>>(7&i)&3,i+=2,a+=u}while(3==u)}(a>255||o)&&te(0);for(var x=0,_=(s>>1)+(s>>3)+3,k=s-1,D=0;D<=a;++D){var q=d[D];if(q<1)f[D]=-q;else for(l=0;l<q;++l){m[x]=D;do{x=x+_&k}while(x>=h)}}for(x&&te(0),l=0;l<s;++l){var B=f[m[l]]++,F=w[l]=r-re(B);b[l]=(B<<F)-s}return[i+7>>3,{b:r,s:m,n:w,t:b}]},oe=se(new W([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],ae=se(new W([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],ue=se(new W([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],le=function(e,t){for(var n=e.length,i=new G(n),r=0;r<n;++r)i[r]=t,t+=1<<e[r];return i},he=new W(new G([0,0,0,0,16843009,50528770,134678020,202050057,269422093]).buffer,0,36),ce=le(he,0),de=new W(new G([0,0,0,0,0,0,0,0,16843009,50528770,117769220,185207048,252579084,16]).buffer,0,53),fe=le(de,3),be=function(e,t,n){var i=e.length,r=t.length,s=e[i-1],o=(1<<n.b)-1,a=-n.b;s||te(0);for(var u=0,l=n.b,h=(i<<3)-8+re(s)-l,c=-1;h>a&&c<r;){var d=h>>3;u=(u<<l|(e[d]|e[d+1]<<8|e[d+2]<<16)>>(7&h))&o,t[++c]=n.s[u],h-=l=n.n[u]}h==a&&c+1==r||te(0)},ye=function(e,t,n){var i=6,r=t.length+3>>2,s=r<<1,o=r+s;be(e.subarray(i,i+=e[0]|e[1]<<8),t.subarray(0,r),n),be(e.subarray(i,i+=e[2]|e[3]<<8),t.subarray(r,s),n),be(e.subarray(i,i+=e[4]|e[5]<<8),t.subarray(s,o),n),be(e.subarray(i),t.subarray(o),n)},me=function(e,t,n){var i,r=t.b,s=e[r],o=s>>1&3;t.l=1&s;var a=s>>3|e[r+1]<<5|e[r+2]<<13,u=(r+=3)+a;if(1==o){if(r>=e.length)return;return t.b=r+1,n?(X(n,e[r],t.y,t.y+=a),n):X(new W(a),e[r])}if(!(u>e.length)){if(0==o)return t.b=u,n?(n.set(e.subarray(r,u),t.y),t.y+=a,n):Z(e,r,u);if(2==o){var l=e[r],h=3&l,c=l>>2&3,d=l>>4,f=0,b=0;h<2?1&c?d|=e[++r]<<4|(2&c&&e[++r]<<12):d=l>>3:(b=c,c<2?(d|=(63&e[++r])<<4,f=e[r]>>6|e[++r]<<2):2==c?(d|=e[++r]<<4|(3&e[++r])<<12,f=e[r]>>2|e[++r]<<6):(d|=e[++r]<<4|(63&e[++r])<<12,f=e[r]>>6|e[++r]<<2|e[++r]<<10)),++r;var y=n?n.subarray(t.y,t.y+t.m):new W(t.m),m=y.length-d;if(0==h)y.set(e.subarray(r,r+=d),m);else if(1==h)X(y,e[r++],m);else{var w=t.h;if(2==h){var p=function(e,t){var n=0,i=-1,r=new W(292),s=e[t],o=r.subarray(0,256),a=r.subarray(256,268),u=new J(r.buffer,268);if(s<128){var l=se(e,t+1,6),h=l[0],c=l[1],d=h<<3,f=e[t+=s];f||te(0);for(var b=0,y=0,m=c.b,w=m,p=(++t<<3)-8+re(f);!((p-=m)<d);){var g=p>>3;if(b+=(e[g]|e[g+1]<<8)>>(7&p)&(1<<m)-1,o[++i]=c.s[b],(p-=w)<d)break;y+=(e[g=p>>3]|e[g+1]<<8)>>(7&p)&(1<<w)-1,o[++i]=c.s[y],m=c.n[b],b=c.t[b],w=c.n[y],y=c.t[y]}++i>255&&te(0)}else{for(i=s-127;n<i;n+=2){var v=e[++t];o[n]=v>>4,o[n+1]=15&v}++t}var S=0;for(n=0;n<i;++n)(z=o[n])>11&&te(0),S+=z&&1<<z-1;var I=re(S)+1,E=1<<I,T=E-S;for(T&T-1&&te(0),o[i++]=re(T)+1,n=0;n<i;++n){var z=o[n];++a[o[n]=z&&I+1-z]}var x=new W(E<<1),_=x.subarray(0,E),k=x.subarray(E);for(u[I]=0,n=I;n>0;--n){var D=u[n];X(k,n,D,u[n-1]=D+a[n]*(1<<I-n))}for(u[0]!=E&&te(0),n=0;n<i;++n){var q=o[n];if(q){var B=u[q];X(_,n,B,u[q]=B+(1<<I-q))}}return[t,{n:k,b:I,s:_}]}(e,r);f+=r-(r=p[0]),t.h=w=p[1]}else w||te(0);(b?ye:be)(e.subarray(r,r+=f),y.subarray(m),w)}var g=e[r++];if(g){255==g?g=32512+(e[r++]|e[r++]<<8):g>127&&(g=g-128<<8|e[r++]);var v=e[r++];3&v&&te(0);for(var S=[ae,ue,oe],I=2;I>-1;--I){var E=v>>2+(I<<1)&3;if(1==E){var T=new W([0,0,e[r++]]);S[I]={s:T.subarray(2,3),n:T.subarray(0,1),t:new J(T.buffer,0,1),b:0}}else 2==E?(r=(i=se(e,r,9-(1&I)))[0],S[I]=i[1]):3==E&&(t.t||te(0),S[I]=t.t[I])}var z=t.t=S,x=z[0],_=z[1],k=z[2],D=e[u-1];D||te(0);var q=(u<<3)-8+re(D)-k.b,B=q>>3,F=0,O=(e[B]|e[B+1]<<8)>>(7&q)&(1<<k.b)-1,$=(e[B=(q-=_.b)>>3]|e[B+1]<<8)>>(7&q)&(1<<_.b)-1,H=(e[B=(q-=x.b)>>3]|e[B+1]<<8)>>(7&q)&(1<<x.b)-1;for(++g;--g;){var P=k.s[O],A=k.n[O],K=x.s[H],N=x.n[H],U=_.s[$],C=_.n[$],M=1<<U,j=M+((e[B=(q-=U)>>3]|e[B+1]<<8|e[B+2]<<16|e[B+3]<<24)>>>(7&q)&M-1);B=(q-=de[K])>>3;var L=fe[K]+((e[B]|e[B+1]<<8|e[B+2]<<16)>>(7&q)&(1<<de[K])-1);B=(q-=he[P])>>3;var Q=ce[P]+((e[B]|e[B+1]<<8|e[B+2]<<16)>>(7&q)&(1<<he[P])-1);if(B=(q-=A)>>3,O=k.t[O]+((e[B]|e[B+1]<<8)>>(7&q)&(1<<A)-1),B=(q-=N)>>3,H=x.t[H]+((e[B]|e[B+1]<<8)>>(7&q)&(1<<N)-1),B=(q-=C)>>3,$=_.t[$]+((e[B]|e[B+1]<<8)>>(7&q)&(1<<C)-1),j>3)t.o[2]=t.o[1],t.o[1]=t.o[0],t.o[0]=j-=3;else{var V=j-(0!=Q);V?(j=3==V?t.o[0]-1:t.o[V],V>1&&(t.o[2]=t.o[1]),t.o[1]=t.o[0],t.o[0]=j):j=t.o[0]}for(I=0;I<Q;++I)y[F+I]=y[m+I];m+=Q;var R=(F+=Q)-j;if(R<0){var G=-R,Y=t.e+R;G>L&&(G=L);for(I=0;I<G;++I)y[F+I]=t.w[Y+I];F+=G,L-=G,R=0}for(I=0;I<L;++I)y[F+I]=y[R+I];F+=L}if(F!=m)for(;m<y.length;)y[F++]=y[m++];else F=y.length;n?t.y+=F:y=Z(y,0,F)}else if(n){if(t.y+=d,m)for(I=0;I<d;++I)y[I]=y[m+I]}else m&&(y=Z(y,m));return t.b=u,y}te(2)}},we=function(e,t){if(1==e.length)return e[0];for(var n=new W(t),i=0,r=0;i<e.length;++i){var s=e[i];n.set(s,r),r+=s.length}return n};var pe=function(){function e(e){this.ondata=e,this.c=[],this.l=0,this.z=0}return e.prototype.push=function(e,t){if("number"==typeof this.s){var n=Math.min(e.length,this.s);e=e.subarray(n),this.s-=n}var i=e.length+this.l;if(!this.s){if(t){if(!i)return void this.ondata(new W(0),!0);i<5&&te(5)}else if(i<18)return this.c.push(e),void(this.l=i);if(this.l&&(this.c.push(e),e=we(this.c,i),this.c=[],this.l=0),"number"==typeof(this.s=ie(e)))return this.push(e,t)}if("number"!=typeof this.s){if(i<(this.z||3))return t&&te(5),this.c.push(e),void(this.l=i);if(this.l&&(this.c.push(e),e=we(this.c,i),this.c=[],this.l=0),!this.z&&i<(this.z=2&e[this.s.b]?4:3+(e[this.s.b]>>3|e[this.s.b+1]<<5|e[this.s.b+2]<<13)))return t&&te(5),this.c.push(e),void(this.l=i);for(this.z=0;;){var r=me(e,this.s);if(!r){t&&te(5);var s=e.subarray(this.s.b);return this.s.b=0,this.c.push(s),void(this.l+=s.length)}if(this.ondata(r,!1),Y(this.s.w,0,r.length),this.s.w.set(r,this.s.w.length-r.length),this.s.l){var o=e.subarray(this.s.b);return this.s=4*this.s.c,void this.push(o,t)}}}else t&&te(5)},e}(),ge=Object.freeze({__proto__:null,Decompress:pe,ZstdErrorCode:{InvalidData:0,WindowSizeTooLarge:1,InvalidBlockType:2,FSEAccuracyTooHigh:3,DistanceTooFarBack:4,UnexpectedEOF:5},decompress:function(e,t){for(var n=[],i=+!t,r=0,s=0;e.length;){var o=ie(e,i||t);if("object"==typeof o){for(i?(t=null,o.w.length==o.u&&(n.push(t=o.w),s+=o.u)):(n.push(t),o.e=0);!o.l;){var a=me(e,o,t);a||te(5),t?o.e=o.y:(n.push(a),s+=a.length,Y(o.w,0,a.length),o.w.set(a,o.w.length-a.length))}r=o.b+4*o.c}else r=o;e=e.subarray(r)}return we(n,s)}});e.TrueSightSDK=P,e.default=A,e.flush=M,e.identify=U,e.init=K,e.reset=j,e.screen=C,e.setEmail=Q,e.setMobileNumber=L,e.track=N,Object.defineProperty(e,"__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).TrueSight={})}(this,function(e){"use strict";const t={pageViews:!0,clicks:!0,formSubmits:!0,rageClicks:!0,deadClicks:!0,scrollDepth:!0,timeOnPage:!0,pageLoadTiming:!0},i={flushInterval:3e4,maxBatchSize:20,maxQueueSize:1e3,maxQueueHard:5e3,maxEventSize:32768,debug:!1,sessionTimeout:18e5,autoTrack:{...t}};const n=(new TextEncoder).encode("truesight-web-sdk-v1");let s=null,r=null;function o(){if(void 0!==globalThis.crypto&&globalThis.crypto.subtle)return globalThis.crypto.subtle;throw new Error("Web Crypto API is not available")}async function a(e){const t=e+("undefined"!=typeof window?window.location.origin:"unknown");if(s&&r===t)return s;const i=o(),a=(new TextEncoder).encode(t),l=await i.digest("SHA-256",a),h=await i.importKey("raw",l,"PBKDF2",!1,["deriveKey"]),c=await i.deriveKey({name:"PBKDF2",salt:n,iterations:1e5,hash:"SHA-256"},h,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return s=c,r=t,c}function l(e){const t=new Uint8Array(e);let i="";for(let e=0;e<t.byteLength;e++)i+=String.fromCharCode(t[e]);return btoa(i)}function h(e){const t=atob(e),i=new Uint8Array(t.length);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);return i.buffer}async function c(e,t){const i=o(),n=new TextEncoder,s=(r=new Uint8Array(12),globalThis.crypto.getRandomValues(r));var r;const a=await i.encrypt({name:"AES-GCM",iv:s},t,n.encode(e));return{iv:l(s.buffer),ciphertext:l(a)}}async function d(e,t){const i=o(),n=new Uint8Array(h(e.iv)),s=h(e.ciphertext),r=await i.decrypt({name:"AES-GCM",iv:n},t,s);return(new TextDecoder).decode(r)}const u=0,m=1,f=2,p=3,g="[TrueSight]";const w=new class{constructor(e=!1){this.level=e?u:f}setDebug(e){this.level=e?u:f}debug(...e){this.level<=u&&console.debug(g,...e)}info(...e){this.level<=m&&console.info(g,...e)}warn(...e){this.level<=f&&console.warn(g,...e)}error(...e){this.level<=p&&console.error(g,...e)}},y="events";class v{constructor(e,t){this.db=null,this.sequence=0,this.apiKey=e,this.maxQueueHard=t}async open(){return new Promise((e,t)=>{const i=indexedDB.open("truesight_events",1);i.onupgradeneeded=()=>{const e=i.result;if(!e.objectStoreNames.contains(y)){e.createObjectStore(y,{keyPath:"event_id"}).createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,w.debug("IndexedDB opened successfully"),e()},i.onerror=()=>{w.error("Failed to open IndexedDB",i.error),t(i.error)}})}getStore(e){if(!this.db)throw new Error("Database not opened. Call open() first.");return this.db.transaction(y,e).objectStore(y)}async enqueue(e){const t=await this.size();t>=this.maxQueueHard&&(w.warn(`Queue at hard limit (${t}/${this.maxQueueHard}), evicting oldest 500 events`),await this.evictOldest(500));const i=await a(this.apiKey),n=await c(JSON.stringify(e),i),s={event_id:e.event_id,timestamp:1e3*Date.now()+this.sequence++,encrypted:n};return new Promise((t,i)=>{const n=this.getStore("readwrite").put(s);n.onsuccess=()=>{w.debug(`Event enqueued: ${e.event_id}`),t()},n.onerror=()=>{w.error("Failed to enqueue event",n.error),i(n.error)}})}async dequeue(e){const t=await a(this.apiKey),i=await this.getOldest(e),n=[];for(const e of i)try{const i=await d(e.encrypted,t);n.push(JSON.parse(i))}catch(t){w.error("Failed to decrypt event",e.event_id,t),await this.remove([e.event_id])}return n}getOldest(e){return new Promise((t,i)=>{const n=this.getStore("readonly").index("timestamp").openCursor(null,"next"),s=[];n.onsuccess=()=>{const i=n.result;i&&s.length<e?(s.push(i.value),i.continue()):t(s)},n.onerror=()=>{i(n.error)}})}async remove(e){if(0!==e.length)return new Promise((t,i)=>{if(!this.db)return void i(new Error("Database not opened"));const n=this.db.transaction(y,"readwrite"),s=n.objectStore(y);for(const t of e)s.delete(t);n.oncomplete=()=>{w.debug(`Removed ${e.length} events from queue`),t()},n.onerror=()=>{w.error("Failed to remove events",n.error),i(n.error)}})}async size(){return new Promise((e,t)=>{const i=this.getStore("readonly").count();i.onsuccess=()=>{e(i.result)},i.onerror=()=>{t(i.error)}})}async clear(){return new Promise((e,t)=>{const i=this.getStore("readwrite").clear();i.onsuccess=()=>{w.debug("Event queue cleared"),e()},i.onerror=()=>{t(i.error)}})}async evictOldest(e){const t=(await this.getOldest(e)).map(e=>e.event_id);await this.remove(t)}close(){this.db&&(this.db.close(),this.db=null)}}function b(e){const t=1e3*Math.pow(2,e);return Math.min(t,6e4)}function k(e){return 429===e||e>=500&&e<600}function S(e){return new Promise(t=>setTimeout(t,e))}class T{constructor(e,t){this.timerId=null,this.flushPromise=Promise.resolve(),this.isFlushing=!1,this.networkDebounceTimer=null,this.boundVisibilityHandler=null,this.boundBeforeUnloadHandler=null,this.boundOnlineHandler=null,this.config=e,this.queue=t}start(){this.timerId?w.warn("Flush scheduler already started"):(this.timerId=setInterval(()=>{this.scheduleFlush()},this.config.flushInterval),"undefined"!=typeof document&&(this.boundVisibilityHandler=()=>{"hidden"===document.visibilityState&&this.flushWithBeacon()},document.addEventListener("visibilitychange",this.boundVisibilityHandler)),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler=()=>{this.flushWithBeacon()},window.addEventListener("beforeunload",this.boundBeforeUnloadHandler)),"undefined"!=typeof window&&(this.boundOnlineHandler=()=>{this.networkDebounceTimer&&clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=setTimeout(()=>{w.debug("Network restored, flushing"),this.scheduleFlush(),this.networkDebounceTimer=null},2e3)},window.addEventListener("online",this.boundOnlineHandler)),w.debug("Flush scheduler started"))}stop(){this.timerId&&(clearInterval(this.timerId),this.timerId=null),this.networkDebounceTimer&&(clearTimeout(this.networkDebounceTimer),this.networkDebounceTimer=null),"undefined"!=typeof document&&this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null),"undefined"!=typeof window&&(this.boundBeforeUnloadHandler&&(window.removeEventListener("beforeunload",this.boundBeforeUnloadHandler),this.boundBeforeUnloadHandler=null),this.boundOnlineHandler&&(window.removeEventListener("online",this.boundOnlineHandler),this.boundOnlineHandler=null)),w.debug("Flush scheduler stopped")}scheduleFlush(){this.flushPromise=this.flushPromise.then(()=>this.doFlush())}async flush(){return new Promise(e=>{this.flushPromise=this.flushPromise.then(async()=>{await this.doFlush(),e()})})}async doFlush(){if(!this.isFlushing){this.isFlushing=!0;try{const e=await this.queue.size();if(0===e)return void w.debug("Nothing to flush");const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,r=await async function(e,t,i){const n=JSON.stringify(i);new TextEncoder;let s=n;const r={"Content-Type":"application/json","X-API-Key":t};let o=null,a=null;for(let t=0;t<=10;t++){try{const n=await fetch(e,{method:"POST",headers:r,body:s});if(n.ok)return w.debug(`Batch sent successfully: ${i.batch.length} events`),n;if(a=n,!k(n.status))return w.error(`Non-retryable HTTP error: ${n.status} ${n.statusText}`),n;w.warn(`Retryable HTTP error: ${n.status}, attempt ${t+1}/10`)}catch(e){o=e,w.warn(`Network error on attempt ${t+1}/10:`,e)}if(t<10){const e=b(t);w.debug(`Backing off for ${e}ms`),await S(e)}}if(a)return a;throw o||new Error("sendBatch failed after all retries")}(s,this.config.apiKey,n);if(r.ok){const e=i.map(e=>e.event_id);await this.queue.remove(e),w.debug(`Flushed ${i.length} events successfully`)}else w.error(`Flush failed with status: ${r.status}`)}catch(e){w.error("Flush error:",e)}finally{this.isFlushing=!1}}}async flushWithBeacon(){try{const e=await this.queue.size();if(0===e)return;const t=Math.min(this.config.maxBatchSize,e),i=await this.queue.dequeue(t);if(0===i.length)return;const n={batch:i,sent_at:(new Date).toISOString()},s=function(e,t,i){try{const n=JSON.stringify(i),s=new Blob([n],{type:"application/json"}),r=new URL(e);r.searchParams.set("api_key",t);const o=navigator.sendBeacon(r.toString(),s);return o?w.debug(`Beacon sent: ${i.batch.length} events`):w.warn("sendBeacon returned false"),o}catch(e){return w.error("sendBeacon failed:",e),!1}}(`${this.config.endpoint.replace(/\/+$/,"")}/v1/events/batch`,this.config.apiKey,n);if(s){const e=i.map(e=>e.event_id);await this.queue.remove(e)}}catch(e){w.error("Beacon flush error:",e)}}}function _(e){const t=[["Chrome",/Chrome\/(\d+[\d.]*)/],["Firefox",/Firefox\/(\d+[\d.]*)/],["Safari",/Version\/(\d+[\d.]*).*Safari/],["Edge",/Edg\/(\d+[\d.]*)/],["Opera",/OPR\/(\d+[\d.]*)/]];for(const[i,n]of t){const t=e.match(n);if(t)return`${i} ${t[1]}`}return"Unknown"}function E(e){return/Tablet|iPad/i.test(e)?"Tablet":/Mobile|Android|iPhone|iPod/i.test(e)?"Mobile":"Desktop"}let I=null;async function H(){if(I)return I;const e="undefined"!=typeof navigator?navigator.userAgent:"Unknown",t="undefined"!=typeof navigator?navigator:null,i=await async function(){const e=[];"undefined"!=typeof screen&&e.push(`${screen.width}x${screen.height}x${screen.colorDepth}`);try{e.push(Intl.DateTimeFormat().resolvedOptions().timeZone)}catch{e.push("unknown-tz")}"undefined"!=typeof navigator&&e.push(navigator.language);try{if("undefined"!=typeof document){const t=document.createElement("canvas"),i=t.getContext("2d");i&&(t.width=200,t.height=50,i.textBaseline="top",i.font="14px Arial",i.fillStyle="#f60",i.fillRect(0,0,200,50),i.fillStyle="#069",i.fillText("TrueSight fingerprint",2,15),e.push(t.toDataURL()))}}catch{e.push("no-canvas")}if(void 0===globalThis.crypto||!globalThis.crypto.subtle){let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}try{const t=(new TextEncoder).encode(e.join("|")),i=await crypto.subtle.digest("SHA-256",t),n=new Uint8Array(i);return Array.from(n).map(e=>e.toString(16).padStart(2,"0")).join("")}catch{let t=0;const i=e.join("|");for(let e=0;e<i.length;e++)t=(t<<5)-t+i.charCodeAt(e)|0;return`fallback-${Math.abs(t)}`}}();return I={app_version:"undefined"!=typeof document&&document.querySelector("meta[name=version]")?.getAttribute("content")||"unknown",os_name:"Web",os_version:_(e),device_model:E(e),device_id:i,network_type:t?.connection?.effectiveType||"unknown",locale:t?.language||"unknown",timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return"unknown"}})(),sdk_version:"0.1.0",screen_width:"undefined"!=typeof screen?screen.width:0,screen_height:"undefined"!=typeof screen?screen.height:0},I}const F="truesight_anonymous_id";function x(){return crypto.randomUUID()}function $(){try{return"undefined"!=typeof localStorage?localStorage:null}catch{return null}}async function D(e,t){const i=$();if(!i)return;const n=await a(t),s=await c(e,n);i.setItem(F,JSON.stringify(s))}async function M(e){const t=await async function(e){try{const t=$();if(!t)return null;const i=t.getItem(F);if(!i)return null;const n=JSON.parse(i),s=await a(e);return await d(n,s)}catch{return null}}(e);if(t)return t;const i=x();return await D(i,e),i}const P="truesight_session_id",L="truesight_last_activity",q="truesight_session_start";class A{constructor(e,t){this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,this.sessionTimeout=e,this.onSessionEvent=t,this.restore()}restore(){if("undefined"==typeof sessionStorage)return;const e=sessionStorage.getItem(P),t=sessionStorage.getItem(L),i=sessionStorage.getItem(q);if(e&&t){const n=parseInt(t,10);if(Date.now()-n<this.sessionTimeout){this.sessionId=e,this.lastActivityTime=n;const t=i?parseInt(i,10):NaN;return void(this.sessionStartTime=Number.isFinite(t)?t:n)}}}getSessionId(){return this.sessionId||this.startSession(),this.sessionId}startSession(){this.sessionId=crypto.randomUUID(),this.lastActivityTime=Date.now(),this.sessionStartTime=this.lastActivityTime,this.persist(),this.onSessionEvent("$session_start",{session_id:this.sessionId})}endSession(){if(!this.sessionId)return;const e=Math.round((Date.now()-this.sessionStartTime)/1e3);this.onSessionEvent("$session_end",{session_id:this.sessionId,duration_seconds:e}),this.sessionId=null,this.lastActivityTime=0,this.sessionStartTime=0,"undefined"!=typeof sessionStorage&&(sessionStorage.removeItem(P),sessionStorage.removeItem(L),sessionStorage.removeItem(q))}touchActivity(){const e=Date.now();this.sessionId&&e-this.lastActivityTime>this.sessionTimeout?(this.endSession(),this.startSession()):(this.lastActivityTime=e,this.persist())}reset(){this.endSession(),this.startSession()}destroy(){this.endSession()}persist(){"undefined"!=typeof sessionStorage&&this.sessionId&&(sessionStorage.setItem(P,this.sessionId),sessionStorage.setItem(L,this.lastActivityTime.toString()),sessionStorage.setItem(q,this.sessionStartTime.toString()))}}class z{constructor(){this.name="pageview",this.trackFn=null,this.origPushState=null,this.origReplaceState=null,this.popstateHandler=null,this.hashchangeHandler=null}start(e){if(this.trackFn=e,"undefined"==typeof window||"undefined"==typeof history)return;if(this.origPushState||this.origReplaceState||this.popstateHandler||this.hashchangeHandler)return;this.origPushState=history.pushState,this.origReplaceState=history.replaceState;const t=this;history.pushState=function(...e){t.origPushState.apply(this,e),t.firePageview()},history.replaceState=function(...e){t.origReplaceState.apply(this,e),t.firePageview()},this.popstateHandler=()=>this.firePageview(),this.hashchangeHandler=()=>this.firePageview(),window.addEventListener("popstate",this.popstateHandler),window.addEventListener("hashchange",this.hashchangeHandler),this.firePageview()}stop(){this.origPushState&&(history.pushState=this.origPushState,this.origPushState=null),this.origReplaceState&&(history.replaceState=this.origReplaceState,this.origReplaceState=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.hashchangeHandler&&(window.removeEventListener("hashchange",this.hashchangeHandler),this.hashchangeHandler=null),this.trackFn=null}firePageview(){if(!this.trackFn)return;const e={};new URLSearchParams(location.search).forEach((t,i)=>{e[i]=t}),this.trackFn("$pageview",{page_url:location.href,page_path:location.pathname,page_title:document.title,page_referrer:document.referrer,query_params:e})}}function N(e){return null!==e.closest("[data-ts-ignore]")}class O{constructor(){this.name="click",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(N(t))return;const i={element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null},n=t.getAttribute("data-analytics-id");n&&(i.data_analytics_id=n);const s=t.closest("a");s&&(i.href=s.href),this.trackFn("$click",i)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.trackFn=null}}class C{constructor(){this.name="rage-click",this.trackFn=null,this.handler=null,this.clicks=[],this.threshold=3,this.windowMs=1e3}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(N(t))return;const i=Date.now(),n=function(e){const t=e.tagName.toLowerCase(),i=e.id?`#${e.id}`:"",n=(e.getAttribute("class")??"").trim();return`${t}${i}${n?"."+n.split(/\s+/).join("."):""}`}(t);this.clicks=this.clicks.filter(e=>i-e.timestamp<this.windowMs),this.clicks.push({timestamp:i,selector:n});const s=this.clicks.filter(e=>e.selector===n);s.length>=this.threshold&&(this.trackFn("$rage_click",{click_count:s.length,element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.getAttribute("class")||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null}),this.clicks=this.clicks.filter(e=>e.selector!==n))},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null),this.clicks=[],this.trackFn=null}}const U=new Set(["INPUT","TEXTAREA","SELECT"]);class B{constructor(){this.name="dead-click",this.trackFn=null,this.handler=null,this.timeouts=new Set,this.observers=new Set}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;if(!t||!this.trackFn)return;if(N(t))return;if(U.has(t.tagName))return;let i=!1;const n=new MutationObserver(()=>{i=!0,n.disconnect(),this.observers.delete(n)});this.observers.add(n),n.observe(document.body,{subtree:!0,childList:!0,attributes:!0,characterData:!0});const s=setTimeout(()=>{n.disconnect(),this.observers.delete(n),this.timeouts.delete(s),i||this.trackFn?.("$dead_click",{element_tag:t.tagName.toLowerCase(),element_id:t.id||null,element_classes:t.className||null,element_text:(t.textContent?.trim()||"").slice(0,255)||null})},1e3);this.timeouts.add(s)},document.addEventListener("click",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("click",this.handler,!0),this.handler=null);for(const e of this.timeouts)clearTimeout(e);this.timeouts.clear();for(const e of this.observers)e.disconnect();this.observers.clear(),this.trackFn=null}}class K{constructor(){this.name="form",this.trackFn=null,this.handler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&(this.handler=e=>{const t=e.target;t&&this.trackFn&&"FORM"===t.tagName&&(N(t)||this.trackFn("$form_submit",{form_id:t.id||null,form_name:t.name||null,form_action:t.action||null,form_method:(t.method||"get").toUpperCase()}))},document.addEventListener("submit",this.handler,!0))}stop(){this.handler&&(document.removeEventListener("submit",this.handler,!0),this.handler=null),this.trackFn=null}}const R=[25,50,75,100];class j{constructor(){this.name="scroll",this.trackFn=null,this.scrollHandler=null,this.popstateHandler=null,this.firedThresholds=new Set,this.throttleTimer=null,this.lastUrl=null}start(e){this.trackFn=e,"undefined"!=typeof window&&(this.lastUrl=location.href,this.scrollHandler=()=>{this.throttleTimer||(this.throttleTimer=setTimeout(()=>{this.throttleTimer=null,this.checkScroll()},200))},this.popstateHandler=()=>{this.firedThresholds.clear()},window.addEventListener("scroll",this.scrollHandler,{passive:!0}),window.addEventListener("popstate",this.popstateHandler))}stop(){this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler),this.scrollHandler=null),this.popstateHandler&&(window.removeEventListener("popstate",this.popstateHandler),this.popstateHandler=null),this.throttleTimer&&(clearTimeout(this.throttleTimer),this.throttleTimer=null),this.firedThresholds.clear(),this.trackFn=null}checkScroll(){if(!this.trackFn)return;this.lastUrl!==location.href&&(this.firedThresholds.clear(),this.lastUrl=location.href);const e=document.documentElement.scrollHeight,t=window.innerHeight;if(e<=t)return;const i=window.scrollY||document.documentElement.scrollTop,n=Math.round((i+t)/e*100);for(const e of R)n>=e&&!this.firedThresholds.has(e)&&(this.firedThresholds.add(e),this.trackFn("$scroll_depth",{depth_percentage:e,page_url:location.href}))}}class Q{constructor(){this.name="time-on-page",this.trackFn=null,this.entryTime=0,this.visibilityHandler=null,this.unloadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof document&&"undefined"!=typeof window&&(this.entryTime=Date.now(),this.visibilityHandler=()=>{"hidden"===document.visibilityState?this.fireDuration():this.entryTime=Date.now()},this.unloadHandler=()=>{this.fireDuration()},document.addEventListener("visibilitychange",this.visibilityHandler),window.addEventListener("beforeunload",this.unloadHandler))}stop(){this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null),this.unloadHandler&&(window.removeEventListener("beforeunload",this.unloadHandler),this.unloadHandler=null),this.trackFn=null}fireDuration(){if(!this.trackFn||!this.entryTime)return;const e=Math.round((Date.now()-this.entryTime)/1e3);e<1||(this.trackFn("$time_on_page",{page_url:location.href,duration_seconds:e}),this.entryTime=0)}}class V{constructor(){this.name="page-load",this.fired=!1,this.trackFn=null,this.loadHandler=null}start(e){this.trackFn=e,"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState?this.fireMetrics():(this.loadHandler=()=>this.fireMetrics(),window.addEventListener("load",this.loadHandler)))}stop(){this.loadHandler&&(window.removeEventListener("load",this.loadHandler),this.loadHandler=null),this.trackFn=null,this.fired=!1}fireMetrics(){if(this.fired||!this.trackFn)return;const e=performance.getEntriesByType("navigation");if(!e.length)return;this.fired=!0;const t=e[0];this.trackFn("$page_load",{dns_time:Math.round(t.domainLookupEnd-t.domainLookupStart),connect_time:Math.round(t.connectEnd-t.connectStart),ttfb:Math.round(t.responseStart-t.requestStart),dom_content_loaded:Math.round(t.domContentLoadedEventEnd-t.startTime),load_complete:Math.round(t.loadEventEnd-t.startTime),transfer_size:t.transferSize})}}class J{constructor(e,t){this.trackers=[],this.started=!1,this.trackFn=t,e.pageViews&&this.trackers.push(new z),e.clicks&&this.trackers.push(new O),e.rageClicks&&this.trackers.push(new C),e.deadClicks&&this.trackers.push(new B),e.formSubmits&&this.trackers.push(new K),e.scrollDepth&&this.trackers.push(new j),e.timeOnPage&&this.trackers.push(new Q),e.pageLoadTiming&&this.trackers.push(new V)}start(){if(!this.started){this.started=!0;for(const e of this.trackers)e.start(this.trackFn)}}stop(){if(this.started){this.started=!1;for(const e of this.trackers)e.stop()}}}class W{constructor(){this.initialized=!1,this.autoTrackManager=null,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={}}async init(e){if(this.initialized)w.warn("TrueSight already initialized");else{if(!e.apiKey)throw new Error("apiKey is required");if(!e.endpoint)throw new Error("endpoint is required");this.config=function(e){const n=e.options??{};return{...i,...n,apiKey:e.apiKey,endpoint:e.endpoint,autoTrack:{...t,...n.autoTrack??{}}}}(e),w.setDebug(this.config.debug),this.anonymousId=await M(this.config.apiKey),this.queue=new v(this.config.apiKey,this.config.maxQueueHard),await this.queue.open(),this.scheduler=new T(this.config,this.queue),this.scheduler.start(),this.sessionManager=new A(this.config.sessionTimeout,(e,t)=>{this.enqueueEvent("track",e,t).catch(t=>{w.warn(`Failed to enqueue session event "${e}": ${String(t)}`)})}),this.initialized=!0,w.info("TrueSight SDK initialized"),this.autoTrackManager=new J(this.config.autoTrack,(e,t)=>{this.track(e,t).catch(t=>{w.warn(`Failed to auto-track event "${e}": ${String(t)}`)})}),this.autoTrackManager.start()}}async track(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("track",e,t):w.warn("track() called with empty event name")}async identify(e,t={}){this.ensureInitialized(),e?(this.userId=e,this.traits={...this.traits,...t},"string"==typeof t.mobile_number&&t.mobile_number&&(this.mobileNumber=t.mobile_number),"string"==typeof t.email&&t.email&&(this.email=t.email),await this.enqueueEvent("identify","identify",t)):w.warn("identify() called with empty userId")}async screen(e,t={}){this.ensureInitialized(),e?await this.enqueueEvent("screen","$screen",{screen_name:e,...t}):w.warn("screen() called with empty screen name")}async flush(){this.ensureInitialized(),await this.scheduler.flush()}async trackExperiment(e,t,i={}){await this.track("$experiment_exposure",{flag_name:e,variant:t,...i})}async reset(){this.ensureInitialized(),this.userId=null,this.mobileNumber=null,this.email=null,this.traits={},this.sessionManager&&this.sessionManager.reset(),this.anonymousId=await async function(e){const t=x();return await D(t,e),t}(this.config.apiKey),w.debug("SDK state reset")}setMobileNumber(e){this.ensureInitialized();const t=e.replace(/\D/g,"");10===t.length?(this.mobileNumber=t,w.debug("Mobile number set")):w.warn(`Invalid mobile number: expected 10 digits, got ${t.length}`)}setEmail(e){this.ensureInitialized(),this.email=e,w.debug("Email set")}isInitialized(){return this.initialized}getUserId(){return this.userId}getAnonymousId(){return this.anonymousId}getMobileNumber(){return this.mobileNumber}getEmail(){return this.email}destroy(){this.autoTrackManager&&(this.autoTrackManager.stop(),this.autoTrackManager=null),this.sessionManager&&this.sessionManager.destroy(),this.scheduler&&this.scheduler.stop(),this.queue&&this.queue.close(),this.initialized=!1,this.userId=null,this.anonymousId="",this.mobileNumber=null,this.email=null,this.traits={},s=null,r=null,I=null,w.debug("SDK destroyed")}ensureInitialized(){if(!this.initialized)throw new Error("TrueSight SDK not initialized. Call init() first.")}async enqueueEvent(e,t,i){const n=await async function(){return{...await H(),page_url:"undefined"!=typeof window?window.location.href:"",page_path:"undefined"!=typeof window?window.location.pathname+window.location.search:"",referrer:"undefined"!=typeof document?document.referrer:"",user_agent:"undefined"!=typeof navigator?navigator.userAgent:"",viewport_width:"undefined"!=typeof window?window.innerWidth:0,viewport_height:"undefined"!=typeof window?window.innerHeight:0}}(),s=this.sessionManager?(this.sessionManager.touchActivity(),this.sessionManager.getSessionId()):null,r={event_id:crypto.randomUUID(),event_name:t,event_type:e,user_id:this.userId,anonymous_id:this.anonymousId,mobile_number:this.mobileNumber,email:this.email,session_id:s,client_timestamp:(new Date).toISOString(),properties:i,context:n},o=JSON.stringify(r);if(o.length>this.config.maxEventSize)return void w.warn(`Event exceeds maxEventSize (${o.length} > ${this.config.maxEventSize}), dropping`);const a=await this.queue.size();a>=this.config.maxQueueSize&&(w.warn(`Queue at soft limit (${a}/${this.config.maxQueueSize}), triggering flush`),this.scheduler.scheduleFlush()),await this.queue.enqueue(r),w.debug(`Event queued: ${e} - ${t}`)}}const G=new W,X=G.init.bind(G),Z=G.track.bind(G),Y=G.identify.bind(G),ee=G.screen.bind(G),te=G.flush.bind(G),ie=G.reset.bind(G),ne=G.setMobileNumber.bind(G),se=G.setEmail.bind(G),re=G.trackExperiment.bind(G);e.TrueSightSDK=W,e.default=G,e.flush=te,e.identify=Y,e.init=X,e.reset=ie,e.screen=ee,e.setEmail=se,e.setMobileNumber=ne,e.track=Z,e.trackExperiment=re,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
2
2
|
//# sourceMappingURL=truesight.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truesight.umd.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/compression.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/truesight.ts","../src/index.ts","../../../node_modules/.pnpm/fzstd@0.1.1/node_modules/fzstd/esm/index.mjs"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,"// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bufs = [], nb = +!buf;\n var bt = 0, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs) {\n this.ondata(new u8(0), true);\n return;\n }\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 3)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 4 : 3 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n else if (final)\n err(5);\n };\n return Decompress;\n}());\nexport { Decompress };\n"],"names":["DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","fzstdModule","loadAttempted","isSupported","compress","mod","then","loadFzstd","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","compressPayload","jsonStr","body","contentEncoding","compressionSupported","compressed","Blob","type","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedContext","getDeviceContext","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","join","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","raw","getItem","readEncrypted","newId","TrueSightSDK","initialized","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","track","eventName","properties","ensureInitialized","enqueueEvent","identify","mobile_number","screenName","screen_name","reset","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","destroy","eventType","context","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind","ab","ArrayBuffer","u8","u16","Uint16Array","i16","Int16Array","i32","Int32Array","slc","v","s","prototype","slice","call","n","subarray","fill","cpw","t","copyWithin","ec","ind","msg","nt","code","captureStackTrace","rb","d","o","rzfh","dat","w","n3","flg","ss","cc","df","fcf","bt","di","fsb","fss","ws","wb","buf","y","l","u","c","m","msb","val","bits","rfse","mal","tpos","al","sz","probs","sym","re","ht","freq","dstate","nstate","bb1","syms","nbits","cbt","msk","msk1fb","msv","sval","rbt","sympos","sstep","smask","sf","ns","nb","dllt","dmlt","doct","b2bl","len","bl","llb","llbl","mlb","mlbl","dhu","out","hu","lb","eb","st","btr","pos","dhu4","sz1","sz2","sz3","rzb","_a","b0","btype","ebt","b3","lbt","lss","lcs","s4","spl","h","hud","wc","hb","hw","rc","ri","fdt","epos","st1","st2","btr1","btr2","fpos","byte","wes","wt","mb","ts","rem","hbuf","pv","rhu","scm","dts","md","rbuf","_b","mlt","oct","llt","spos","oubt","lst","ost","mst","llc","lbtr","mlc","mbtr","ofc","obtr","ofp","off","ml","ll","idx","stin","bs","cct","bufs","ol","chk","Decompress","ondata","z","chunk","final","sub","ncs","blk","adc","rest","InvalidData","WindowSizeTooLarge","InvalidBlockType","FSEAccuracyTooHigh","DistanceTooFarBack","UnexpectedEOF"],"mappings":"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","x_google_ignoreList":[11]}
|
|
1
|
+
{"version":3,"file":"truesight.umd.js","sources":["../src/config.ts","../src/encryption.ts","../src/logger.ts","../src/event-queue.ts","../src/network-client.ts","../src/flush-scheduler.ts","../src/device-context.ts","../src/anonymous-id.ts","../src/session-manager.ts","../src/auto/pageview-tracker.ts","../src/auto/tracker.ts","../src/auto/click-tracker.ts","../src/auto/rage-click-tracker.ts","../src/auto/dead-click-tracker.ts","../src/auto/form-tracker.ts","../src/auto/scroll-tracker.ts","../src/auto/time-on-page-tracker.ts","../src/auto/page-load-tracker.ts","../src/auto/auto-track-manager.ts","../src/truesight.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_AUTO_TRACK","pageViews","clicks","formSubmits","rageClicks","deadClicks","scrollDepth","timeOnPage","pageLoadTiming","DEFAULT_CONFIG","flushInterval","maxBatchSize","maxQueueSize","maxQueueHard","maxEventSize","debug","sessionTimeout","autoTrack","SALT","TextEncoder","encode","cachedKey","cachedKeySource","getCrypto","globalThis","crypto","subtle","Error","async","deriveKey","apiKey","keySource","window","location","origin","keyData","hashBuffer","digest","baseKey","importKey","derivedKey","name","salt","iterations","hash","length","arrayBufferToBase64","buffer","bytes","Uint8Array","binary","i","byteLength","String","fromCharCode","btoa","base64ToArrayBuffer","base64","atob","charCodeAt","encrypt","data","key","encoder","iv","array","getRandomValues","ciphertext","decrypt","encrypted","decrypted","TextDecoder","decode","LOG_LEVELS","PREFIX","logger","constructor","this","level","setDebug","args","console","info","warn","error","STORE_NAME","EventQueue","db","sequence","open","Promise","resolve","reject","request","indexedDB","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","keyPath","createIndex","unique","onsuccess","onerror","getStore","mode","transaction","objectStore","enqueue","event","currentSize","size","evictOldest","JSON","stringify","stored","event_id","timestamp","Date","now","put","dequeue","count","storedEvents","getOldest","events","json","push","parse","err","remove","index","openCursor","results","cursor","value","continue","ids","tx","store","id","delete","oncomplete","clear","map","e","close","calculateBackoff","attempt","backoff","Math","pow","min","isRetryableStatus","status","sleep","ms","setTimeout","FlushScheduler","config","queue","timerId","flushPromise","isFlushing","networkDebounceTimer","boundVisibilityHandler","boundBeforeUnloadHandler","boundOnlineHandler","start","setInterval","scheduleFlush","document","visibilityState","flushWithBeacon","addEventListener","clearTimeout","stop","clearInterval","removeEventListener","then","doFlush","flush","queueSize","batchSize","payload","batch","sent_at","toISOString","url","endpoint","replace","response","jsonStr","body","headers","lastError","lastResponse","fetch","method","ok","statusText","sendBatch","success","blob","Blob","type","URL","searchParams","set","navigator","sendBeacon","toString","parseBrowserVersion","ua","patterns","regex","match","detectDeviceModel","test","cachedDeviceFields","getCachedDeviceFields","userAgent","nav","deviceId","components","screen","width","height","colorDepth","Intl","DateTimeFormat","resolvedOptions","timeZone","language","canvas","createElement","ctx","getContext","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","h","raw","join","abs","hashArray","Array","from","b","padStart","generateDeviceId","app_version","querySelector","getAttribute","os_name","os_version","device_model","device_id","network_type","connection","effectiveType","locale","timezone","sdk_version","screen_width","screen_height","STORAGE_KEY","generateUUIDv4","randomUUID","getStorage","localStorage","writeEncrypted","storage","setItem","getOrCreateAnonymousId","existing","getItem","readEncrypted","newId","SESSION_ID_KEY","LAST_ACTIVITY_KEY","SESSION_START_KEY","SessionManager","onSessionEvent","sessionId","lastActivityTime","sessionStartTime","restore","sessionStorage","storedId","storedActivity","storedStart","lastActivity","parseInt","startTs","NaN","Number","isFinite","getSessionId","startSession","persist","session_id","endSession","durationSeconds","round","duration_seconds","removeItem","touchActivity","reset","destroy","PageviewTracker","trackFn","origPushState","origReplaceState","popstateHandler","hashchangeHandler","history","pushState","replaceState","self","apply","firePageview","queryParams","URLSearchParams","search","forEach","v","k","page_url","href","page_path","pathname","page_title","title","page_referrer","referrer","query_params","shouldIgnoreElement","el","closest","ClickTracker","handler","target","props","element_tag","tagName","toLowerCase","element_id","element_classes","className","element_text","textContent","trim","slice","analyticsId","data_analytics_id","anchor","RageClickTracker","threshold","windowMs","selector","tag","classAttr","split","getElementSelector","filter","c","sameElement","click_count","EXCLUDED_TAGS","Set","DeadClickTracker","timeouts","observers","has","mutationDetected","observer","MutationObserver","disconnect","add","observe","subtree","childList","attributes","characterData","timeoutId","FormTracker","form","form_id","form_name","form_action","action","form_method","toUpperCase","THRESHOLDS","ScrollTracker","scrollHandler","firedThresholds","throttleTimer","lastUrl","checkScroll","passive","scrollHeight","documentElement","viewportHeight","innerHeight","scrollTop","scrollY","percentage","depth_percentage","TimeOnPageTracker","entryTime","visibilityHandler","unloadHandler","fireDuration","PageLoadTracker","fired","loadHandler","readyState","fireMetrics","entries","performance","getEntriesByType","dns_time","domainLookupEnd","domainLookupStart","connect_time","connectEnd","connectStart","ttfb","responseStart","requestStart","dom_content_loaded","domContentLoadedEventEnd","startTime","load_complete","loadEventEnd","transfer_size","transferSize","AutoTrackManager","trackers","started","tracker","TrueSightSDK","initialized","autoTrackManager","userId","anonymousId","mobileNumber","email","traits","init","initConfig","options","buildConfig","scheduler","sessionManager","eventName","properties","enqueueEvent","catch","track","ensureInitialized","identify","mobile_number","screenName","screen_name","trackExperiment","flagName","variant","flag_name","resetAnonymousId","setMobileNumber","number","digits","setEmail","isInitialized","getUserId","getAnonymousId","getMobileNumber","getEmail","eventType","context","user_agent","viewport_width","innerWidth","viewport_height","getDeviceContext","event_name","event_type","user_id","anonymous_id","client_timestamp","serialized","instance","bind"],"mappings":"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"}
|