@prodantix/sdk 0.0.1 → 0.1.0

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/node.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { h as ProdantixConfig, P as ProdantixClient } from './client-B1bcIuD8.cjs';
1
+ import { h as ProdantixConfig, P as ProdantixClient } from './client-BBUAoQg2.cjs';
2
2
 
3
3
  declare function createNodeClient(options: ProdantixConfig): ProdantixClient;
4
4
 
package/dist/node.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { h as ProdantixConfig, P as ProdantixClient } from './client-B1bcIuD8.js';
1
+ import { h as ProdantixConfig, P as ProdantixClient } from './client-BBUAoQg2.js';
2
2
 
3
3
  declare function createNodeClient(options: ProdantixConfig): ProdantixClient;
4
4
 
package/dist/node.js CHANGED
@@ -1,2 +1,2 @@
1
- import {t as t$1}from'./chunk-FIZWZVZG.js';function t(){return globalThis.process}function s(o){t()?.on("beforeExit",()=>{o.flush();});}function f(o){let e=t(),r={...o,os:o.os??(e?.platform?e.platform.slice(0,50):void 0)},n=new t$1(r);return s(n),n}export{f as createNodeClient};//# sourceMappingURL=node.js.map
1
+ import {s as s$1}from'./chunk-7J6AQICL.js';import'./chunk-VG77TYVX.js';import'./chunk-5XGN7UAV.js';function t(){return globalThis.process}function s(o){t()?.on("beforeExit",()=>{o.flush();});}function f(o){let e=t(),r={...o,os:o.os??(e?.platform?e.platform.slice(0,50):void 0)},n=new s$1(r);return s(n),n}export{f as createNodeClient};//# sourceMappingURL=node.js.map
2
2
  //# sourceMappingURL=node.js.map
@@ -1,17 +1,5 @@
1
- import { T as Transport, i as TransportRequest } from './client-B1bcIuD8.js';
2
-
3
- interface FetchResponseLike {
4
- ok: boolean;
5
- status: number;
6
- text(): Promise<string>;
7
- }
8
- interface FetchInit {
9
- body?: string;
10
- headers: Record<string, string>;
11
- method: string;
12
- signal?: AbortSignal;
13
- }
14
- type FetchLike = (url: string, init: FetchInit) => Promise<FetchResponseLike>;
1
+ import { F as FetchLike } from './http-BCh716Vs.cjs';
2
+ import { T as Transport, i as TransportRequest } from './client-BBUAoQg2.cjs';
15
3
 
16
4
  interface FetchTransportOptions {
17
5
  baseDelayMs?: number;
@@ -36,4 +24,4 @@ declare class FetchTransport implements Transport {
36
24
  private backoff;
37
25
  }
38
26
 
39
- export { type FetchLike as F, FetchTransport as a, type FetchTransportOptions as b };
27
+ export { FetchTransport as F, type FetchTransportOptions as a };
@@ -1,17 +1,5 @@
1
- import { T as Transport, i as TransportRequest } from './client-B1bcIuD8.cjs';
2
-
3
- interface FetchResponseLike {
4
- ok: boolean;
5
- status: number;
6
- text(): Promise<string>;
7
- }
8
- interface FetchInit {
9
- body?: string;
10
- headers: Record<string, string>;
11
- method: string;
12
- signal?: AbortSignal;
13
- }
14
- type FetchLike = (url: string, init: FetchInit) => Promise<FetchResponseLike>;
1
+ import { F as FetchLike } from './http-BCh716Vs.js';
2
+ import { T as Transport, i as TransportRequest } from './client-BBUAoQg2.js';
15
3
 
16
4
  interface FetchTransportOptions {
17
5
  baseDelayMs?: number;
@@ -36,4 +24,4 @@ declare class FetchTransport implements Transport {
36
24
  private backoff;
37
25
  }
38
26
 
39
- export { type FetchLike as F, FetchTransport as a, type FetchTransportOptions as b };
27
+ export { FetchTransport as F, type FetchTransportOptions as a };
package/dist/web.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var he=Object.defineProperty;var fe=(t,e,r)=>e in t?he(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var i=(t,e,r)=>fe(t,typeof e!="symbol"?e+"":e,r);var h=class extends Error{constructor(r,n,s){super(n,s);i(this,"code");this.code=r,this.name="ProdantixError";}},x=class extends h{constructor(e){super("config",e),this.name="ConfigError";}},y=class extends h{constructor(r,n){super("validation",n);i(this,"field");this.field=r,this.name="ValidationError";}},l=class extends h{constructor(r,n,s){super("transport",r,s);i(this,"status");this.status=n,this.name="TransportError";}};function c(t){if(t)return t;let e=globalThis.fetch;if(typeof e=="function")return e.bind(globalThis)}function f(){let t=globalThis.AbortController;return t?new t:void 0}var D=t=>new Promise(e=>{setTimeout(e,t);});function p(t){return t.replace(/\/+$/,"")}var v=class{constructor(){i(this,"store",new Map);}getItem(e){return this.store.get(e)??null}removeItem(e){this.store.delete(e);}setItem(e,r){this.store.set(e,r);}};function K(){try{let t=globalThis.localStorage;if(t){let e="__pdx_probe__";return t.setItem(e,"1"),t.removeItem(e),t}}catch{return new v}return new v}var V={now:()=>new Date};function E(t){return t.toISOString()}function me(){return globalThis.crypto}function ge(t){t[6]=t[6]&15|64,t[8]=t[8]&63|128;let e=[];for(let r=0;r<16;r+=1)e.push(t[r].toString(16).padStart(2,"0"));return `${e[0]}${e[1]}${e[2]}${e[3]}-${e[4]}${e[5]}-${e[6]}${e[7]}-${e[8]}${e[9]}-${e[10]}${e[11]}${e[12]}${e[13]}${e[14]}${e[15]}`}function O(){let t=me();if(t?.randomUUID)return t.randomUUID();let e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else for(let r=0;r<16;r+=1)e[r]=Math.floor(Math.random()*256);return ge(e)}var z={uuid:O};var ye=/^pdx_pub_(?:(?:live|test)_)?[a-z0-9]{32}$/;var ve=/^(?:\$|[a-z])[a-z0-9_.]*$/;function j(t){let e=0;for(let r of t)e+=1;return e}function H(t){return ye.test(t)}function be(t){return ve.test(t)}function B(t){let e=j(t);if(e<1||e>200)throw new y("distinct_id","distinct_id must be between 1 and 200 characters")}function U(t){let e=j(t);if(e<1||e>200)throw new y("event_name","event_name must be between 1 and 200 characters");if(!be(t))throw new y("event_name","event_name must match /^(\\$|[a-z])[a-z0-9_.]*$/")}var J="prodantix-js",Q="0.0.1";var xe=t=>{};function W(t){if(!t.apiKey||!H(t.apiKey))throw new x("apiKey must be a public project key of the form pdx_pub_<32 lowercase alphanumerics>");if(!t.host)throw new x("host is required (the ingest base URL)");let e=p(t.host),r=t.defaultProperties;return {apiKey:t.apiKey,autocapture:t.autocapture??false,clock:t.clock??V,defaultProperties:typeof r=="function"?r:()=>r??{},flagsHost:t.flagsHost?p(t.flagsHost):e,flushAt:t.flushAt??20,flushIntervalMs:t.flushIntervalMs??1e4,host:e,ids:t.ids??z,locale:t.locale,maxQueueSize:t.maxQueueSize??1e3,maxRetries:t.maxRetries??3,namespace:t.apiKey.slice(0,16),onError:t.onError??xe,os:t.os,requestTimeoutMs:t.requestTimeoutMs??1e4,sdkName:t.sdkName??J,sdkVersion:t.sdkVersion??Q,storage:t.storage??new v,transport:t.transport}}function G(t,e,r){U(t.eventName),B(t.distinctId);let n={distinct_id:t.distinctId,event_id:t.eventId??r.uuid(),event_name:t.eventName,properties:t.properties??{},schema_version:1,timestamp:E(t.timestamp??e.now())};return t.context&&(n.context=t.context),t.sessionId&&(n.session_id=t.sessionId),n}var g=Symbol("absent");function ke(t,e){if(t==="distinct_id")return e.distinctId;let r=e.properties??{};if(Object.prototype.hasOwnProperty.call(r,t))return r[t];let n=e.attributes??{};return Object.prototype.hasOwnProperty.call(n,t)?n[t]:g}function m(t){return t===g?"undefined":String(t)}function X(t){return t===g?Number.NaN:Number(t)}function Y(t){return t!==g&&t!==null&&t!==""}function Z(t,e){if(!Array.isArray(e))return false;let r=m(t);return e.map(n=>String(n)).includes(r)}function ee(t,e){let r=ke(t.attribute,e),n=t.value;switch(t.op){case "is_set":return Y(r);case "is_not_set":return !Y(r);case "eq":return m(r)===m(n===void 0?g:n);case "neq":return m(r)!==m(n===void 0?g:n);case "contains":return m(r).includes(m(n===void 0?g:n));case "in":return Z(r,n);case "not_in":return Array.isArray(n)?!Z(r,n):false;case "gt":return I(r,n,(s,o)=>s>o);case "gte":return I(r,n,(s,o)=>s>=o);case "lt":return I(r,n,(s,o)=>s<o);case "lte":return I(r,n,(s,o)=>s<=o);default:return false}}function I(t,e,r){let n=X(t),s=e===void 0?Number.NaN:X(e);return Number.isNaN(n)||Number.isNaN(s)?false:r(n,s)}function Ee(t,e){let r=`${t}:${e}`,n=2166136261;for(let s=0;s<r.length;s++)n^=r.charCodeAt(s),n=Math.imul(n,16777619);return (n>>>0)%100}function Ie(t,e){return t.enabled?t.targeting.length>0&&!t.targeting.every(r=>ee(r,e))?{enabled:false,reason:"targeting"}:t.rolloutPercentage>=100?{enabled:true,reason:"rollout_full"}:Ee(t.key,e.distinctId)<t.rolloutPercentage?{enabled:true,reason:"rollout"}:{enabled:false,reason:"rollout_excluded"}:{enabled:false,reason:"disabled"}}function te(t,e){let r={};for(let n of t)r[n.key]=Ie(n,e).enabled;return r}var T=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=c(e.fetch),this.host=p(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async fetchAll(e){let r=this.fetch;if(!r)throw new l("no fetch implementation available in this runtime");let n=`${this.host}/v1/flags?distinct_id=${encodeURIComponent(e)}`,s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{let a=await r(n,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:s?.signal});if(!a.ok)throw new l(`flags request failed with status ${a.status}`,a.status);return JSON.parse(await a.text()).flags??{}}finally{o!==void 0&&clearTimeout(o);}}async snapshot(){let e=this.fetch;if(!e)throw new l("no fetch implementation available in this runtime");let r=`${this.host}/v1/flags/snapshot`,n=f(),s=n?setTimeout(()=>n.abort(),this.requestTimeoutMs):void 0;try{let o=await e(r,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:n?.signal});if(!o.ok)throw new l(`flag snapshot request failed with status ${o.status}`,o.status);let a=JSON.parse(await o.text());return {flags:a.flags??[],generatedAt:a.generatedAt}}finally{s!==void 0&&clearTimeout(s);}}};var w=class{constructor(e,r,n){this.storage=e;this.ids=r;this.namespace=n;i(this,"anonymousId");i(this,"distinctId");i(this,"identified");let s=e.getItem(this.key("anonymous_id"));s?this.anonymousId=s:(this.anonymousId=r.uuid(),e.setItem(this.key("anonymous_id"),this.anonymousId));let o=e.getItem(this.key("distinct_id"));o?(this.distinctId=o,this.identified=true):(this.distinctId=this.anonymousId,this.identified=false);}getAnonymousId(){return this.anonymousId}getDistinctId(){return this.distinctId}isIdentified(){return this.identified}snapshot(){return {anonymousId:this.anonymousId,distinctId:this.distinctId,identified:this.identified}}identify(e){return this.identified&&this.distinctId===e?{changed:false}:(this.distinctId=e,this.identified=true,this.storage.setItem(this.key("distinct_id"),e),{changed:true})}reset(){this.anonymousId=this.ids.uuid(),this.distinctId=this.anonymousId,this.identified=false,this.storage.setItem(this.key("anonymous_id"),this.anonymousId),this.storage.removeItem(this.key("distinct_id"));}key(e){return `pdx.${this.namespace}.${e}`}};var S=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=c(e.fetch),this.host=p(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async inbox(e){let r=this.requireFetch(),n=`${this.host}/v1/messages?distinct_id=${encodeURIComponent(e)}`,s=await this.request(r,n,{headers:this.authHeaders(),method:"GET"});if(!s.ok)throw new l(`inbox request failed with status ${s.status}`,s.status);return JSON.parse(await s.text()).messages??[]}async markRead(e,r){let n=this.requireFetch(),s=`${this.host}/v1/messages/read`,o=await this.request(n,s,{body:JSON.stringify({distinct_id:r,message_id:e}),headers:{...this.authHeaders(),"content-type":"application/json"},method:"POST"});if(!o.ok)throw new l(`mark-read request failed with status ${o.status}`,o.status)}requireFetch(){if(!this.fetch)throw new l("no fetch implementation available in this runtime");return this.fetch}authHeaders(){return {authorization:`Bearer ${this.projectKey}`}}async request(e,r,n){let s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{return await e(r,{...n,signal:s?.signal})}finally{o!==void 0&&clearTimeout(o);}}};var C=class{constructor(e,r){this.maxSize=e;this.onOverflow=r;i(this,"events",[]);}get size(){return this.events.length}enqueue(e){this.events.push(e),this.enforceCap();}restore(e){this.events.push(...e),this.enforceCap();}requeue(e){this.events.unshift(...e),this.enforceCap();}drain(e){let r=e===void 0?this.events.length:Math.min(e,this.events.length);return this.events.splice(0,r)}snapshot(){return [...this.events]}enforceCap(){if(this.events.length<=this.maxSize)return;let e=this.events.splice(0,this.events.length-this.maxSize);this.onOverflow?.({dropped:e});}};function re(t){return t>=400&&t<500&&t!==429}var b=class{constructor(e={}){i(this,"fetch");i(this,"maxRetries");i(this,"requestTimeoutMs");i(this,"baseDelayMs");i(this,"maxDelayMs");i(this,"sleep");i(this,"random");this.fetch=c(e.fetch),this.maxRetries=e.maxRetries??3,this.requestTimeoutMs=e.requestTimeoutMs??1e4,this.baseDelayMs=e.baseDelayMs??500,this.maxDelayMs=e.maxDelayMs??3e4,this.sleep=e.sleep??D,this.random=e.random??Math.random;}async send(e){let r=this.fetch;if(!r)throw new l("no fetch implementation available in this runtime");let n=JSON.stringify(e.body),s;for(let o=0;o<=this.maxRetries;o+=1){try{let a=await this.attempt(r,e,n);if(a.ok)return;if(re(a.status))throw new l(`ingest rejected batch with status ${a.status}`,a.status);s=new l(`ingest transient status ${a.status}`,a.status);}catch(a){if(a instanceof l&&a.status!==void 0&&re(a.status))throw a;s=a;}o<this.maxRetries&&await this.sleep(this.backoff(o));}throw new l("ingest delivery failed after retries",void 0,{cause:s})}async attempt(e,r,n){let s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{return await e(r.url,{body:n,headers:{authorization:`Bearer ${r.projectKey}`,"content-type":"application/json"},method:"POST",signal:s?.signal})}finally{o!==void 0&&clearTimeout(o);}}backoff(e){return Math.min(this.maxDelayMs,this.baseDelayMs*2**e)+this.random()*this.baseDelayMs}};var Te="queue",we=1e3,Se=3e4,P=class{constructor(e){i(this,"config");i(this,"identity");i(this,"queue");i(this,"transport");i(this,"flagsClient");i(this,"messagesClient");i(this,"context");i(this,"flushTimer");i(this,"flushing",false);i(this,"cachedFlags");i(this,"cachedSnapshot");this.config=W(e),this.identity=new w(this.config.storage,this.config.ids,this.config.namespace),this.queue=new C(this.config.maxQueueSize,({dropped:r})=>{this.config.onError(new h("queue_overflow",`event queue overflow: dropped ${r.length} oldest event(s)`));}),this.transport=this.config.transport??new b({maxRetries:this.config.maxRetries,requestTimeoutMs:this.config.requestTimeoutMs}),this.flagsClient=new T({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.messagesClient=new S({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.context={sdk:this.config.sdkName,sdk_version:this.config.sdkVersion},this.config.os&&(this.context.os=this.config.os),this.config.locale&&(this.context.locale=this.config.locale),this.restoreQueue(),this.startTimer();}get distinctId(){return this.identity.getDistinctId()}get anonymousId(){return this.identity.getAnonymousId()}capture(e,r={}){try{let n={...this.config.defaultProperties(),...r.properties??{}},s=G({context:this.context,distinctId:this.identity.getDistinctId(),eventName:e,properties:n,sessionId:r.sessionId,timestamp:r.timestamp},this.config.clock,this.config.ids);this.enqueue(s);}catch(n){this.config.onError(n);}}identify(e,r={}){let n=this.identity.getAnonymousId(),s=!this.identity.isIdentified(),o=this.identity.identify(e),a={};s&&o.changed&&(a.$anon_distinct_id=n),r.set&&(a.$set=r.set),this.capture("$identify",{properties:a});}alias(e){this.capture("$create_alias",{properties:{alias:e}});}group(e,r,n){let s={$group_key:r,$group_type:e};n&&(s.$set=n),this.capture("$group",{properties:s});}setPersonProperties(e,r){let n={};e&&(n.$set=e),r&&(n.$set_once=r),this.capture("$set",{properties:n});}async getAllFlags(){let e=this.identity.getDistinctId(),r=await this.flagsClient.fetchAll(e);return this.cachedFlags={distinctId:e,flags:r},r}async isFeatureEnabled(e){return (await this.getAllFlags())[e]??false}getCachedFlag(e){if(!(!this.cachedFlags||this.cachedFlags.distinctId!==this.distinctId))return this.cachedFlags.flags[e]}async getLocalFlags(e={}){let r=await this.flagSnapshot();return te(r.flags,{attributes:e.attributes,distinctId:this.identity.getDistinctId(),properties:e.properties})}async isFeatureEnabledLocal(e,r){return (await this.getLocalFlags(r))[e]??false}async flagSnapshot(){let e=this.config.clock.now().getTime();if(this.cachedSnapshot&&e-this.cachedSnapshot.fetchedAt<Se)return this.cachedSnapshot.snapshot;let r=await this.flagsClient.snapshot();return this.cachedSnapshot={fetchedAt:e,snapshot:r},r}async getInbox(){return this.messagesClient.inbox(this.identity.getDistinctId())}async markMessageRead(e){await this.messagesClient.markRead(e,this.identity.getDistinctId());}async flush(){if(this.flushing||this.queue.size===0)return;this.flushing=true;let e=this.queue.drain(we);try{await this.transport.send({body:{events:e,sent_at:E(this.config.clock.now())},projectKey:this.config.apiKey,url:`${this.config.host}/v1/events`}),this.persistQueue();}catch(r){this.queue.requeue(e),this.persistQueue(),this.config.onError(r);}finally{this.flushing=false;}}reset(){this.identity.reset(),this.cachedFlags=void 0,this.cachedSnapshot=void 0;}async shutdown(){this.stopTimer(),await this.flush();}enqueue(e){this.queue.enqueue(e),this.persistQueue(),this.queue.size>=this.config.flushAt&&this.flush();}persistQueue(){try{this.config.storage.setItem(this.persistKey(),JSON.stringify(this.queue.snapshot()));}catch(e){this.config.onError(e);}}restoreQueue(){try{let e=this.config.storage.getItem(this.persistKey());if(!e)return;let r=JSON.parse(e);Array.isArray(r)&&this.queue.restore(r);}catch(e){this.config.onError(e);}}startTimer(){if(this.config.flushIntervalMs<=0)return;let e=setInterval(()=>{this.flush();},this.config.flushIntervalMs),r=e;typeof r.unref=="function"&&r.unref(),this.flushTimer=e;}stopTimer(){this.flushTimer!==void 0&&(clearInterval(this.flushTimer),this.flushTimer=void 0);}persistKey(){return `pdx.${this.config.namespace}.${Te}`}};function ne(){return globalThis.location}function se(){return globalThis.document}function Ce(){return globalThis.window??globalThis}function Pe(t){return typeof t=="object"&&t!==null&&typeof t.tagName=="string"}function ie(){let t=ne(),e=se(),r={};return t&&(r.$current_url=t.href,r.$pathname=t.pathname,r.$host=t.host),e&&(e.title&&(r.$title=e.title),e.referrer&&(r.$referrer=e.referrer)),r}function Re(t){let e={$el_tag:t.tagName.toLowerCase(),$event_type:"click"},r=t.textContent?.trim();r&&(e.$el_text=r.slice(0,255)),t.id&&(e.$el_id=t.id),typeof t.className=="string"&&t.className&&(e.$el_classes=t.className);let n=t.getAttribute("href");return n&&(e.$el_href=n),e}function Ne(t){let e=globalThis.history,r=Ce(),n="",s=()=>{let u=ne(),d=u?`${u.pathname}${u.search}`:"";d!==n&&(n=d,t.capture("$pageview",{properties:ie()}));};if(s(),!e||!r)return ()=>{};let o=e.pushState.bind(e),a=e.replaceState.bind(e);return e.pushState=(...u)=>{o(...u),s();},e.replaceState=(...u)=>{a(...u),s();},r.addEventListener("popstate",s),()=>{e.pushState=o,e.replaceState=a,r.removeEventListener("popstate",s);}}function Fe(t){let e=se();if(!e)return ()=>{};let r=n=>{let s=n.target;Pe(s)&&t.capture("$autocapture",{properties:{...ie(),...Re(s)}});};return e.addEventListener("click",r,true),()=>e.removeEventListener("click",r,true)}function oe(t,e={}){let r=[];return (e.pageviews??true)&&r.push(Ne(t)),(e.clicks??true)&&r.push(Fe(t)),()=>{for(let n of r)n();}}function _e(){return globalThis.document?.visibilityState==="hidden"}function Me(t){let e=globalThis.navigator,r=globalThis.Blob;if(!e?.sendBeacon||!r)return false;let n=JSON.stringify({...t.body,api_key:t.projectKey});try{let s=new r([n],{type:"application/json"});return e.sendBeacon(t.url,s)}catch{return false}}var R=class{constructor(e={}){i(this,"fetchTransport");this.fetchTransport=new b(e);}async send(e){_e()&&Me(e)||await this.fetchTransport.send(e);}};var ae={maskAllInputs:true,maskAllText:false},Ae=new Set(["email","password","tel"]);function le(t){return t.replace(/\S/g,"*")}function N(t,e,r){return Le(e)||r.maskAllInputs?le(t):t}function F(t,e){return e.maskAllText?le(t):t}function Le(t){return Ae.has((t??"").toLowerCase())}var Oe=5e3,_=class{constructor(e){this.options=e;i(this,"buffer",[]);i(this,"seq",0);i(this,"maxEvents");this.maxEvents=Math.min(Math.max(1,e.maxEvents),Oe);}add(e){return this.buffer.push(e),this.buffer.length>=this.maxEvents?this.flush():null}flush(){if(this.buffer.length===0)return null;let e=this.buffer;this.buffer=[];let r={distinct_id:this.options.distinctId(),events:e,masked:this.options.masked,schema_version:1,seq:this.seq,session_id:this.options.sessionId,timestamp:new Date(this.options.now()).toISOString()};return this.seq+=1,r}};var $=1,q=3,$e=9,M=class{constructor(){i(this,"next",1);}allocate(){let e=this.next;return this.next+=1,e}},qe=new Set(["NOSCRIPT","SCRIPT"]);function A(t,e,r,n){if(t.nodeType===q){let s=e.allocate();return n?.(t,s),{id:s,textContent:F(t.textValue??"",r),type:"text"}}if(t.nodeType===$e){let s=e.allocate();return n?.(t,s),{childNodes:ue(t,e,r,n),id:s,type:"document"}}if(t.nodeType===$){let s=t.tagName??"";if(qe.has(s))return null;let o=e.allocate();return n?.(t,o),{attributes:De(t,r),childNodes:ue(t,e,r,n),id:o,tagName:s,type:"element"}}return null}function ue(t,e,r,n){let s=[];for(let o of t.childNodes??[]){let a=A(o,e,r,n);a&&s.push(a);}return s}function De(t,e){let r={};for(let n of t.attributes??[])r[n.name]=n.value;return t.inputValue!==void 0&&(r.value=N(t.inputValue,t.inputType,e)),r}async function pe(t,e){let r=`${p(e.replayHost)}/v1/replay`;return (await e.fetch(r,{body:JSON.stringify(t),headers:{authorization:`Bearer ${e.apiKey}`,"content-type":"application/json"},method:"POST"})).ok}var ce=new Set(["INPUT","SELECT","TEXTAREA"]),L=class{constructor(e){this.options=e;i(this,"allocator",new M);i(this,"mirror",new Map);i(this,"chunker");i(this,"fetchImpl");i(this,"observer");i(this,"timer");i(this,"started",false);this.chunker=new _({distinctId:e.distinctId,masked:e.mask.maskAllInputs,maxEvents:e.maxEvents,now:e.now,sessionId:e.sessionId}),this.fetchImpl=c(e.fetch);}start(){if(this.started)return;let e=Ke(),r=e?.documentElement;!e||!r||!this.fetchImpl||(this.started=true,this.captureFullSnapshot(r),this.observeMutations(r),this.observeInteractions(e),this.timer=setInterval(()=>this.upload(this.chunker.flush()),this.options.flushIntervalMs));}stop(){this.started&&(this.started=false,this.observer?.disconnect(),this.timer&&clearInterval(this.timer),this.upload(this.chunker.flush()));}captureFullSnapshot(e){let r=A(this.adapt(e),this.allocator,this.options.mask,(n,s)=>{let o=n.ref;o&&this.mirror.set(o,s);});r&&this.push(2,{node:r});}observeMutations(e){let r=globalThis.MutationObserver;r&&(this.observer=new r(n=>{for(let s of n)this.handleMutation(s);}),this.observer.observe(e,{attributes:true,characterData:true,childList:true,subtree:true}));}handleMutation(e){if(e.type==="characterData"){let r=this.mirror.get(e.target);r!==void 0&&this.push(3,{texts:[{id:r,value:F(e.target.textContent??"",this.options.mask)}]});return}if(e.type==="attributes"&&e.attributeName){let r=this.mirror.get(e.target),n=e.target;r!==void 0&&this.push(3,{attributes:[{attributes:{[e.attributeName]:n.getAttribute(e.attributeName)??""},id:r}]});return}if(e.type==="childList"){let r=this.mirror.get(e.target);if(r===void 0)return;for(let n of Array.from(e.addedNodes)){let s=A(this.adapt(n),this.allocator,this.options.mask,(o,a)=>{let u=o.ref;u&&this.mirror.set(u,a);});s&&this.push(3,{adds:[{node:s,parentId:r}]});}for(let n of Array.from(e.removedNodes)){let s=this.mirror.get(n);s!==void 0&&(this.push(3,{removes:[{id:s,parentId:r}]}),this.mirror.delete(n));}}}observeInteractions(e){e.addEventListener("input",r=>{let n=r.target;if(!n||!ce.has(n.tagName))return;let s=this.mirror.get(n);s!==void 0&&this.push(3,{input:{id:s,value:N(n.value??"",n.type,this.options.mask)}});},true),e.addEventListener("scroll",r=>{let n=r.target,s=n?this.mirror.get(n):void 0;this.push(3,{scroll:{id:s??0,x:n?.scrollLeft??0,y:n?.scrollTop??0}});},true);}adapt(e){let r={childNodes:[],nodeType:e.nodeType,ref:e};if(e.nodeType===q)return r.textValue=e.textContent??"",r;if(e.nodeType===$){let n=e;if(r.tagName=n.tagName,r.attributes=Array.from(n.attributes).map(s=>({name:s.name,value:s.value})),ce.has(n.tagName)){let s=n;r.inputType=s.type,r.inputValue=s.value??"";}}return r.childNodes=Array.from(e.childNodes).map(n=>this.adapt(n)),r}push(e,r){let n=this.chunker.add({data:r,timestamp:this.options.now(),type:e});n&&this.upload(n);}upload(e){!e||!this.fetchImpl||pe(e,{apiKey:this.options.apiKey,fetch:this.fetchImpl,replayHost:this.options.replayHost}).catch(r=>this.options.onError?.(r));}};function Ke(){return globalThis.document}function de(t){let e=new L({apiKey:t.apiKey,distinctId:t.distinctId,flushIntervalMs:t.flushIntervalMs??5e3,mask:{...ae,...t.mask},maxEvents:t.maxEvents??200,now:t.now??(()=>Date.now()),onError:t.onError,replayHost:t.replayHost,sessionId:t.sessionId??O()});return e.start(),e}function Ve(){return globalThis.navigator}function ze(t){let e=t?.userAgentData?.platform??t?.platform;return e?e.slice(0,50):void 0}function je(t){let e=()=>{t.flush();};globalThis.document?.addEventListener?.("visibilitychange",e),globalThis.addEventListener?.("pagehide",e);}function br(t){let{autocaptureOptions:e,replayHost:r,sessionReplay:n,sessionReplayOptions:s,...o}=t,a=Ve(),u={...o,locale:o.locale??(a?.language?a.language.slice(0,20):void 0),os:o.os??ze(a),storage:o.storage??K(),transport:o.transport??new R({maxRetries:o.maxRetries,requestTimeoutMs:o.requestTimeoutMs})},d=new P(u);return je(d),(t.autocapture??true)&&oe(d,e),n&&r&&de({apiKey:u.apiKey,distinctId:()=>d.distinctId,onError:u.onError,replayHost:r,...s}),d}exports.WebTransport=R;exports.createWebClient=br;exports.installAutocapture=oe;exports.installSessionReplay=de;//# sourceMappingURL=web.cjs.map
1
+ 'use strict';var fe=Object.defineProperty;var me=(t,e,n)=>e in t?fe(t,e,{enumerable:true,configurable:true,writable:true,value:n}):t[e]=n;var i=(t,e,n)=>me(t,typeof e!="symbol"?e+"":e,n);var h=class extends Error{constructor(n,r,s){super(r,s);i(this,"code");this.code=n,this.name="ProdantixError";}},x=class extends h{constructor(e){super("config",e),this.name="ConfigError";}},y=class extends h{constructor(n,r){super("validation",r);i(this,"field");this.field=n,this.name="ValidationError";}},u=class extends h{constructor(n,r,s){super("transport",n,s);i(this,"status");this.status=r,this.name="TransportError";}};function c(t){if(t)return t;let e=globalThis.fetch;if(typeof e=="function")return e.bind(globalThis)}function f(){let t=globalThis.AbortController;return t?new t:void 0}var D=t=>new Promise(e=>{setTimeout(e,t);});function p(t){return t.replace(/\/+$/,"")}var v=class{constructor(){i(this,"store",new Map);}getItem(e){return this.store.get(e)??null}removeItem(e){this.store.delete(e);}setItem(e,n){this.store.set(e,n);}};function K(){try{let t=globalThis.localStorage;if(t){let e="__pdx_probe__";return t.setItem(e,"1"),t.removeItem(e),t}}catch{return new v}return new v}var V={now:()=>new Date};function E(t){return t.toISOString()}function ge(){return globalThis.crypto}function ye(t){t[6]=t[6]&15|64,t[8]=t[8]&63|128;let e=[];for(let n=0;n<16;n+=1)e.push(t[n].toString(16).padStart(2,"0"));return `${e[0]}${e[1]}${e[2]}${e[3]}-${e[4]}${e[5]}-${e[6]}${e[7]}-${e[8]}${e[9]}-${e[10]}${e[11]}${e[12]}${e[13]}${e[14]}${e[15]}`}function O(){let t=ge();if(t?.randomUUID)return t.randomUUID();let e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else for(let n=0;n<16;n+=1)e[n]=Math.floor(Math.random()*256);return ye(e)}var j={uuid:O};var ve=/^pdx_pub_(?:(?:live|test)_)?[a-z0-9]{32}$/;var be=/^(?:\$|[a-z])[a-z0-9_.]*$/;function z(t){let e=0;for(let n of t)e+=1;return e}function H(t){return ve.test(t)}function xe(t){return be.test(t)}function B(t){let e=z(t);if(e<1||e>200)throw new y("distinct_id","distinct_id must be between 1 and 200 characters")}function U(t){let e=z(t);if(e<1||e>200)throw new y("event_name","event_name must be between 1 and 200 characters");if(!xe(t))throw new y("event_name","event_name must match /^(\\$|[a-z])[a-z0-9_.]*$/")}var J="prodantix-js",Q="0.0.1";var ke=t=>{};function W(t){if(!t.apiKey||!H(t.apiKey))throw new x("apiKey must be a public project key of the form pdx_pub_<32 lowercase alphanumerics>");if(!t.host)throw new x("host is required (the ingest base URL)");let e=p(t.host),n=t.defaultProperties;return {apiKey:t.apiKey,autocapture:t.autocapture??false,clock:t.clock??V,defaultProperties:typeof n=="function"?n:()=>n??{},flagsHost:t.flagsHost?p(t.flagsHost):e,flushAt:t.flushAt??20,flushIntervalMs:t.flushIntervalMs??1e4,host:e,ids:t.ids??j,locale:t.locale,maxQueueSize:t.maxQueueSize??1e3,maxRetries:t.maxRetries??3,namespace:t.apiKey.slice(0,16),onError:t.onError??ke,os:t.os,requestTimeoutMs:t.requestTimeoutMs??1e4,sdkName:t.sdkName??J,sdkVersion:t.sdkVersion??Q,storage:t.storage??new v,transport:t.transport}}function G(t,e,n){U(t.eventName),B(t.distinctId);let r={distinct_id:t.distinctId,event_id:t.eventId??n.uuid(),event_name:t.eventName,properties:t.properties??{},schema_version:1,timestamp:E(t.timestamp??e.now())};return t.context&&(r.context=t.context),t.sessionId&&(r.session_id=t.sessionId),r}var g=Symbol("absent");function Ee(t,e){if(t==="distinct_id")return e.distinctId;let n=e.properties??{};if(Object.prototype.hasOwnProperty.call(n,t))return n[t];let r=e.attributes??{};return Object.prototype.hasOwnProperty.call(r,t)?r[t]:g}function m(t){return t===g?"undefined":String(t)}function X(t){return t===g?Number.NaN:Number(t)}function Y(t){return t!==g&&t!==null&&t!==""}function Z(t,e){if(!Array.isArray(e))return false;let n=m(t);return e.map(r=>String(r)).includes(n)}function ee(t,e){let n=Ee(t.attribute,e),r=t.value;switch(t.op){case "is_set":return Y(n);case "is_not_set":return !Y(n);case "eq":return m(n)===m(r===void 0?g:r);case "neq":return m(n)!==m(r===void 0?g:r);case "contains":return m(n).includes(m(r===void 0?g:r));case "in":return Z(n,r);case "not_in":return Array.isArray(r)?!Z(n,r):false;case "gt":return I(n,r,(s,o)=>s>o);case "gte":return I(n,r,(s,o)=>s>=o);case "lt":return I(n,r,(s,o)=>s<o);case "lte":return I(n,r,(s,o)=>s<=o);default:return false}}function I(t,e,n){let r=X(t),s=e===void 0?Number.NaN:X(e);return Number.isNaN(r)||Number.isNaN(s)?false:n(r,s)}function Ie(t,e){let n=`${t}:${e}`,r=2166136261;for(let s=0;s<n.length;s++)r^=n.charCodeAt(s),r=Math.imul(r,16777619);return (r>>>0)%100}function Te(t,e){return t.enabled?t.targeting.length>0&&!t.targeting.every(n=>ee(n,e))?{enabled:false,reason:"targeting"}:t.rolloutPercentage>=100?{enabled:true,reason:"rollout_full"}:Ie(t.key,e.distinctId)<t.rolloutPercentage?{enabled:true,reason:"rollout"}:{enabled:false,reason:"rollout_excluded"}:{enabled:false,reason:"disabled"}}function te(t,e){let n={};for(let r of t)n[r.key]=Te(r,e).enabled;return n}var T=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=c(e.fetch),this.host=p(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async fetchAll(e){let n=this.fetch;if(!n)throw new u("no fetch implementation available in this runtime");let r=`${this.host}/v1/flags?distinct_id=${encodeURIComponent(e)}`,s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{let a=await n(r,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:s?.signal});if(!a.ok)throw new u(`flags request failed with status ${a.status}`,a.status);return JSON.parse(await a.text()).flags??{}}finally{o!==void 0&&clearTimeout(o);}}async snapshot(){let e=this.fetch;if(!e)throw new u("no fetch implementation available in this runtime");let n=`${this.host}/v1/flags/snapshot`,r=f(),s=r?setTimeout(()=>r.abort(),this.requestTimeoutMs):void 0;try{let o=await e(n,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:r?.signal});if(!o.ok)throw new u(`flag snapshot request failed with status ${o.status}`,o.status);let a=JSON.parse(await o.text());return {flags:a.flags??[],generatedAt:a.generatedAt}}finally{s!==void 0&&clearTimeout(s);}}};var w=class{constructor(e,n,r){this.storage=e;this.ids=n;this.namespace=r;i(this,"anonymousId");i(this,"distinctId");i(this,"identified");let s=e.getItem(this.key("anonymous_id"));s?this.anonymousId=s:(this.anonymousId=n.uuid(),e.setItem(this.key("anonymous_id"),this.anonymousId));let o=e.getItem(this.key("distinct_id"));o?(this.distinctId=o,this.identified=true):(this.distinctId=this.anonymousId,this.identified=false);}getAnonymousId(){return this.anonymousId}getDistinctId(){return this.distinctId}isIdentified(){return this.identified}snapshot(){return {anonymousId:this.anonymousId,distinctId:this.distinctId,identified:this.identified}}identify(e){return this.identified&&this.distinctId===e?{changed:false}:(this.distinctId=e,this.identified=true,this.storage.setItem(this.key("distinct_id"),e),{changed:true})}reset(){this.anonymousId=this.ids.uuid(),this.distinctId=this.anonymousId,this.identified=false,this.storage.setItem(this.key("anonymous_id"),this.anonymousId),this.storage.removeItem(this.key("distinct_id"));}key(e){return `pdx.${this.namespace}.${e}`}};var S=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=c(e.fetch),this.host=p(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async inbox(e){let n=this.requireFetch(),r=`${this.host}/v1/messages?distinct_id=${encodeURIComponent(e)}`,s=await this.request(n,r,{headers:this.authHeaders(),method:"GET"});if(!s.ok)throw new u(`inbox request failed with status ${s.status}`,s.status);return JSON.parse(await s.text()).messages??[]}async markRead(e,n){let r=this.requireFetch(),s=`${this.host}/v1/messages/read`,o=await this.request(r,s,{body:JSON.stringify({distinct_id:n,message_id:e}),headers:{...this.authHeaders(),"content-type":"application/json"},method:"POST"});if(!o.ok)throw new u(`mark-read request failed with status ${o.status}`,o.status)}requireFetch(){if(!this.fetch)throw new u("no fetch implementation available in this runtime");return this.fetch}authHeaders(){return {authorization:`Bearer ${this.projectKey}`}}async request(e,n,r){let s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{return await e(n,{...r,signal:s?.signal})}finally{o!==void 0&&clearTimeout(o);}}};var P=class{constructor(e,n){this.maxSize=e;this.onOverflow=n;i(this,"events",[]);}get size(){return this.events.length}enqueue(e){this.events.push(e),this.enforceCap();}restore(e){this.events.push(...e),this.enforceCap();}requeue(e){this.events.unshift(...e),this.enforceCap();}drain(e){let n=e===void 0?this.events.length:Math.min(e,this.events.length);return this.events.splice(0,n)}snapshot(){return [...this.events]}enforceCap(){if(this.events.length<=this.maxSize)return;let e=this.events.splice(0,this.events.length-this.maxSize);this.onOverflow?.({dropped:e});}};function ne(t){return t>=400&&t<500&&t!==429}var b=class{constructor(e={}){i(this,"fetch");i(this,"maxRetries");i(this,"requestTimeoutMs");i(this,"baseDelayMs");i(this,"maxDelayMs");i(this,"sleep");i(this,"random");this.fetch=c(e.fetch),this.maxRetries=e.maxRetries??3,this.requestTimeoutMs=e.requestTimeoutMs??1e4,this.baseDelayMs=e.baseDelayMs??500,this.maxDelayMs=e.maxDelayMs??3e4,this.sleep=e.sleep??D,this.random=e.random??Math.random;}async send(e){let n=this.fetch;if(!n)throw new u("no fetch implementation available in this runtime");let r=JSON.stringify(e.body),s;for(let o=0;o<=this.maxRetries;o+=1){try{let a=await this.attempt(n,e,r);if(a.ok)return;if(ne(a.status))throw new u(`ingest rejected batch with status ${a.status}`,a.status);s=new u(`ingest transient status ${a.status}`,a.status);}catch(a){if(a instanceof u&&a.status!==void 0&&ne(a.status))throw a;s=a;}o<this.maxRetries&&await this.sleep(this.backoff(o));}throw new u("ingest delivery failed after retries",void 0,{cause:s})}async attempt(e,n,r){let s=f(),o=s?setTimeout(()=>s.abort(),this.requestTimeoutMs):void 0;try{return await e(n.url,{body:r,headers:{authorization:`Bearer ${n.projectKey}`,"content-type":"application/json"},method:"POST",signal:s?.signal})}finally{o!==void 0&&clearTimeout(o);}}backoff(e){return Math.min(this.maxDelayMs,this.baseDelayMs*2**e)+this.random()*this.baseDelayMs}};var we="queue",Se=1e3,Pe=3e4,re=t=>{let e={};return t.avatar!==void 0&&(e.$avatar=t.avatar),t.email!==void 0&&(e.$email=t.email),t.name!==void 0&&(e.$name=t.name),t.phone!==void 0&&(e.$phone=t.phone),e},C=class{constructor(e){i(this,"config");i(this,"identity");i(this,"queue");i(this,"transport");i(this,"flagsClient");i(this,"messagesClient");i(this,"context");i(this,"flushTimer");i(this,"flushing",false);i(this,"cachedFlags");i(this,"cachedSnapshot");this.config=W(e),this.identity=new w(this.config.storage,this.config.ids,this.config.namespace),this.queue=new P(this.config.maxQueueSize,({dropped:n})=>{this.config.onError(new h("queue_overflow",`event queue overflow: dropped ${n.length} oldest event(s)`));}),this.transport=this.config.transport??new b({maxRetries:this.config.maxRetries,requestTimeoutMs:this.config.requestTimeoutMs}),this.flagsClient=new T({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.messagesClient=new S({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.context={sdk:this.config.sdkName,sdk_version:this.config.sdkVersion},this.config.os&&(this.context.os=this.config.os),this.config.locale&&(this.context.locale=this.config.locale),this.restoreQueue(),this.startTimer();}get distinctId(){return this.identity.getDistinctId()}get anonymousId(){return this.identity.getAnonymousId()}capture(e,n={}){try{let r={...this.config.defaultProperties(),...n.properties??{}},s=G({context:this.context,distinctId:this.identity.getDistinctId(),eventName:e,properties:r,sessionId:n.sessionId,timestamp:n.timestamp},this.config.clock,this.config.ids);this.enqueue(s);}catch(r){this.config.onError(r);}}identify(e,n={}){let r=this.identity.getAnonymousId(),s=!this.identity.isIdentified(),o=this.identity.identify(e),a={};s&&o.changed&&(a.$anon_distinct_id=r);let l={...re(n.traits??{}),...n.set??{}};Object.keys(l).length>0&&(a.$set=l),this.capture("$identify",{properties:a});}alias(e){this.capture("$create_alias",{properties:{alias:e}});}group(e,n,r){let s={$group_key:n,$group_type:e};r&&(s.$set=r),this.capture("$group",{properties:s});}setPersonProperties(e,n){let r={};e&&(r.$set=e),n&&(r.$set_once=n),this.capture("$set",{properties:r});}setPersonTraits(e){let n=re(e);Object.keys(n).length!==0&&this.capture("$set",{properties:{$set:n}});}async getAllFlags(){let e=this.identity.getDistinctId(),n=await this.flagsClient.fetchAll(e);return this.cachedFlags={distinctId:e,flags:n},n}async isFeatureEnabled(e){return (await this.getAllFlags())[e]??false}getCachedFlag(e){if(!(!this.cachedFlags||this.cachedFlags.distinctId!==this.distinctId))return this.cachedFlags.flags[e]}async getLocalFlags(e={}){let n=await this.flagSnapshot();return te(n.flags,{attributes:e.attributes,distinctId:this.identity.getDistinctId(),properties:e.properties})}async isFeatureEnabledLocal(e,n){return (await this.getLocalFlags(n))[e]??false}async flagSnapshot(){let e=this.config.clock.now().getTime();if(this.cachedSnapshot&&e-this.cachedSnapshot.fetchedAt<Pe)return this.cachedSnapshot.snapshot;let n=await this.flagsClient.snapshot();return this.cachedSnapshot={fetchedAt:e,snapshot:n},n}async getInbox(){return this.messagesClient.inbox(this.identity.getDistinctId())}async markMessageRead(e){await this.messagesClient.markRead(e,this.identity.getDistinctId());}async flush(){if(this.flushing||this.queue.size===0)return;this.flushing=true;let e=this.queue.drain(Se);try{await this.transport.send({body:{events:e,sent_at:E(this.config.clock.now())},projectKey:this.config.apiKey,url:`${this.config.host}/v1/events`}),this.persistQueue();}catch(n){this.queue.requeue(e),this.persistQueue(),this.config.onError(n);}finally{this.flushing=false;}}reset(){this.identity.reset(),this.cachedFlags=void 0,this.cachedSnapshot=void 0;}async shutdown(){this.stopTimer(),await this.flush();}enqueue(e){this.queue.enqueue(e),this.persistQueue(),this.queue.size>=this.config.flushAt&&this.flush();}persistQueue(){try{this.config.storage.setItem(this.persistKey(),JSON.stringify(this.queue.snapshot()));}catch(e){this.config.onError(e);}}restoreQueue(){try{let e=this.config.storage.getItem(this.persistKey());if(!e)return;let n=JSON.parse(e);Array.isArray(n)&&this.queue.restore(n);}catch(e){this.config.onError(e);}}startTimer(){if(this.config.flushIntervalMs<=0)return;let e=setInterval(()=>{this.flush();},this.config.flushIntervalMs),n=e;typeof n.unref=="function"&&n.unref(),this.flushTimer=e;}stopTimer(){this.flushTimer!==void 0&&(clearInterval(this.flushTimer),this.flushTimer=void 0);}persistKey(){return `pdx.${this.config.namespace}.${we}`}};function se(){return globalThis.location}function ie(){return globalThis.document}function Ce(){return globalThis.window??globalThis}function Fe(t){return typeof t=="object"&&t!==null&&typeof t.tagName=="string"}function oe(){let t=se(),e=ie(),n={};return t&&(n.$current_url=t.href,n.$pathname=t.pathname,n.$host=t.host),e&&(e.title&&(n.$title=e.title),e.referrer&&(n.$referrer=e.referrer)),n}function Re(t){let e={$el_tag:t.tagName.toLowerCase(),$event_type:"click"},n=t.textContent?.trim();n&&(e.$el_text=n.slice(0,255)),t.id&&(e.$el_id=t.id),typeof t.className=="string"&&t.className&&(e.$el_classes=t.className);let r=t.getAttribute("href");return r&&(e.$el_href=r),e}function Ne(t){let e=globalThis.history,n=Ce(),r="",s=()=>{let l=se(),d=l?`${l.pathname}${l.search}`:"";d!==r&&(r=d,t.capture("$pageview",{properties:oe()}));};if(s(),!e||!n)return ()=>{};let o=e.pushState.bind(e),a=e.replaceState.bind(e);return e.pushState=(...l)=>{o(...l),s();},e.replaceState=(...l)=>{a(...l),s();},n.addEventListener("popstate",s),()=>{e.pushState=o,e.replaceState=a,n.removeEventListener("popstate",s);}}function _e(t){let e=ie();if(!e)return ()=>{};let n=r=>{let s=r.target;Fe(s)&&t.capture("$autocapture",{properties:{...oe(),...Re(s)}});};return e.addEventListener("click",n,true),()=>e.removeEventListener("click",n,true)}function ae(t,e={}){let n=[];return (e.pageviews??true)&&n.push(Ne(t)),(e.clicks??true)&&n.push(_e(t)),()=>{for(let r of n)r();}}function Me(){return globalThis.document?.visibilityState==="hidden"}function Ae(t){let e=globalThis.navigator,n=globalThis.Blob;if(!e?.sendBeacon||!n)return false;let r=JSON.stringify({...t.body,api_key:t.projectKey});try{let s=new n([r],{type:"application/json"});return e.sendBeacon(t.url,s)}catch{return false}}var F=class{constructor(e={}){i(this,"fetchTransport");this.fetchTransport=new b(e);}async send(e){Me()&&Ae(e)||await this.fetchTransport.send(e);}};var le={maskAllInputs:true,maskAllText:false},Le=new Set(["email","password","tel"]);function ue(t){return t.replace(/\S/g,"*")}function R(t,e,n){return Oe(e)||n.maskAllInputs?ue(t):t}function N(t,e){return e.maskAllText?ue(t):t}function Oe(t){return Le.has((t??"").toLowerCase())}var $e=5e3,_=class{constructor(e){this.options=e;i(this,"buffer",[]);i(this,"seq",0);i(this,"maxEvents");this.maxEvents=Math.min(Math.max(1,e.maxEvents),$e);}add(e){return this.buffer.push(e),this.buffer.length>=this.maxEvents?this.flush():null}flush(){if(this.buffer.length===0)return null;let e=this.buffer;this.buffer=[];let n={distinct_id:this.options.distinctId(),events:e,masked:this.options.masked,schema_version:1,seq:this.seq,session_id:this.options.sessionId,timestamp:new Date(this.options.now()).toISOString()};return this.seq+=1,n}};var $=1,q=3,qe=9,M=class{constructor(){i(this,"next",1);}allocate(){let e=this.next;return this.next+=1,e}},De=new Set(["NOSCRIPT","SCRIPT"]);function A(t,e,n,r){if(t.nodeType===q){let s=e.allocate();return r?.(t,s),{id:s,textContent:N(t.textValue??"",n),type:"text"}}if(t.nodeType===qe){let s=e.allocate();return r?.(t,s),{childNodes:pe(t,e,n,r),id:s,type:"document"}}if(t.nodeType===$){let s=t.tagName??"";if(De.has(s))return null;let o=e.allocate();return r?.(t,o),{attributes:Ke(t,n),childNodes:pe(t,e,n,r),id:o,tagName:s,type:"element"}}return null}function pe(t,e,n,r){let s=[];for(let o of t.childNodes??[]){let a=A(o,e,n,r);a&&s.push(a);}return s}function Ke(t,e){let n={};for(let r of t.attributes??[])n[r.name]=r.value;return t.inputValue!==void 0&&(n.value=R(t.inputValue,t.inputType,e)),n}async function ce(t,e){let n=`${p(e.replayHost)}/v1/replay`;return (await e.fetch(n,{body:JSON.stringify(t),headers:{authorization:`Bearer ${e.apiKey}`,"content-type":"application/json"},method:"POST"})).ok}var de=new Set(["INPUT","SELECT","TEXTAREA"]),L=class{constructor(e){this.options=e;i(this,"allocator",new M);i(this,"mirror",new Map);i(this,"chunker");i(this,"fetchImpl");i(this,"observer");i(this,"timer");i(this,"started",false);this.chunker=new _({distinctId:e.distinctId,masked:e.mask.maskAllInputs,maxEvents:e.maxEvents,now:e.now,sessionId:e.sessionId}),this.fetchImpl=c(e.fetch);}start(){if(this.started)return;let e=Ve(),n=e?.documentElement;!e||!n||!this.fetchImpl||(this.started=true,this.captureFullSnapshot(n),this.observeMutations(n),this.observeInteractions(e),this.timer=setInterval(()=>this.upload(this.chunker.flush()),this.options.flushIntervalMs));}stop(){this.started&&(this.started=false,this.observer?.disconnect(),this.timer&&clearInterval(this.timer),this.upload(this.chunker.flush()));}captureFullSnapshot(e){let n=A(this.adapt(e),this.allocator,this.options.mask,(r,s)=>{let o=r.ref;o&&this.mirror.set(o,s);});n&&this.push(2,{node:n});}observeMutations(e){let n=globalThis.MutationObserver;n&&(this.observer=new n(r=>{for(let s of r)this.handleMutation(s);}),this.observer.observe(e,{attributes:true,characterData:true,childList:true,subtree:true}));}handleMutation(e){if(e.type==="characterData"){let n=this.mirror.get(e.target);n!==void 0&&this.push(3,{texts:[{id:n,value:N(e.target.textContent??"",this.options.mask)}]});return}if(e.type==="attributes"&&e.attributeName){let n=this.mirror.get(e.target),r=e.target;n!==void 0&&this.push(3,{attributes:[{attributes:{[e.attributeName]:r.getAttribute(e.attributeName)??""},id:n}]});return}if(e.type==="childList"){let n=this.mirror.get(e.target);if(n===void 0)return;for(let r of Array.from(e.addedNodes)){let s=A(this.adapt(r),this.allocator,this.options.mask,(o,a)=>{let l=o.ref;l&&this.mirror.set(l,a);});s&&this.push(3,{adds:[{node:s,parentId:n}]});}for(let r of Array.from(e.removedNodes)){let s=this.mirror.get(r);s!==void 0&&(this.push(3,{removes:[{id:s,parentId:n}]}),this.mirror.delete(r));}}}observeInteractions(e){e.addEventListener("input",n=>{let r=n.target;if(!r||!de.has(r.tagName))return;let s=this.mirror.get(r);s!==void 0&&this.push(3,{input:{id:s,value:R(r.value??"",r.type,this.options.mask)}});},true),e.addEventListener("scroll",n=>{let r=n.target,s=r?this.mirror.get(r):void 0;this.push(3,{scroll:{id:s??0,x:r?.scrollLeft??0,y:r?.scrollTop??0}});},true);}adapt(e){let n={childNodes:[],nodeType:e.nodeType,ref:e};if(e.nodeType===q)return n.textValue=e.textContent??"",n;if(e.nodeType===$){let r=e;if(n.tagName=r.tagName,n.attributes=Array.from(r.attributes).map(s=>({name:s.name,value:s.value})),de.has(r.tagName)){let s=r;n.inputType=s.type,n.inputValue=s.value??"";}}return n.childNodes=Array.from(e.childNodes).map(r=>this.adapt(r)),n}push(e,n){let r=this.chunker.add({data:n,timestamp:this.options.now(),type:e});r&&this.upload(r);}upload(e){!e||!this.fetchImpl||ce(e,{apiKey:this.options.apiKey,fetch:this.fetchImpl,replayHost:this.options.replayHost}).catch(n=>this.options.onError?.(n));}};function Ve(){return globalThis.document}function he(t){let e=new L({apiKey:t.apiKey,distinctId:t.distinctId,flushIntervalMs:t.flushIntervalMs??5e3,mask:{...le,...t.mask},maxEvents:t.maxEvents??200,now:t.now??(()=>Date.now()),onError:t.onError,replayHost:t.replayHost,sessionId:t.sessionId??O()});return e.start(),e}function je(){return globalThis.navigator}function ze(t){let e=t?.userAgentData?.platform??t?.platform;return e?e.slice(0,50):void 0}function He(t){let e=()=>{t.flush();};globalThis.document?.addEventListener?.("visibilitychange",e),globalThis.addEventListener?.("pagehide",e);}function kn(t){let{autocaptureOptions:e,replayHost:n,sessionReplay:r,sessionReplayOptions:s,...o}=t,a=je(),l={...o,locale:o.locale??(a?.language?a.language.slice(0,20):void 0),os:o.os??ze(a),storage:o.storage??K(),transport:o.transport??new F({maxRetries:o.maxRetries,requestTimeoutMs:o.requestTimeoutMs})},d=new C(l);return He(d),(t.autocapture??true)&&ae(d,e),r&&n&&he({apiKey:l.apiKey,distinctId:()=>d.distinctId,onError:l.onError,replayHost:n,...s}),d}exports.WebTransport=F;exports.createWebClient=kn;exports.installAutocapture=ae;exports.installSessionReplay=he;//# sourceMappingURL=web.cjs.map
2
2
  //# sourceMappingURL=web.cjs.map
package/dist/web.d.cts CHANGED
@@ -1,5 +1,6 @@
1
- import { P as ProdantixClient, T as Transport, i as TransportRequest, h as ProdantixConfig } from './client-B1bcIuD8.cjs';
2
- import { b as FetchTransportOptions, F as FetchLike } from './transport-B3PxeUxW.cjs';
1
+ import { P as ProdantixClient, T as Transport, i as TransportRequest, h as ProdantixConfig } from './client-BBUAoQg2.cjs';
2
+ import { a as FetchTransportOptions } from './transport-DhhzvwpV.cjs';
3
+ import { F as FetchLike } from './http-BCh716Vs.cjs';
3
4
 
4
5
  interface AutocaptureOptions {
5
6
  clicks?: boolean;
package/dist/web.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { P as ProdantixClient, T as Transport, i as TransportRequest, h as ProdantixConfig } from './client-B1bcIuD8.js';
2
- import { b as FetchTransportOptions, F as FetchLike } from './transport-By6wsdny.js';
1
+ import { P as ProdantixClient, T as Transport, i as TransportRequest, h as ProdantixConfig } from './client-BBUAoQg2.js';
2
+ import { a as FetchTransportOptions } from './transport-dWp3NUMj.js';
3
+ import { F as FetchLike } from './http-BCh716Vs.js';
3
4
 
4
5
  interface AutocaptureOptions {
5
6
  clicks?: boolean;
package/dist/web.js CHANGED
@@ -1,2 +1,2 @@
1
- import {a,s,j as j$1,i,t,f as f$1,g as g$1}from'./chunk-FIZWZVZG.js';function w(){return globalThis.location}function S(){return globalThis.document}function D(){return globalThis.window??globalThis}function V(e){return typeof e=="object"&&e!==null&&typeof e.tagName=="string"}function O(){let e=w(),t=S(),n={};return e&&(n.$current_url=e.href,n.$pathname=e.pathname,n.$host=e.host),t&&(t.title&&(n.$title=t.title),t.referrer&&(n.$referrer=t.referrer)),n}function H(e){let t={$el_tag:e.tagName.toLowerCase(),$event_type:"click"},n=e.textContent?.trim();n&&(t.$el_text=n.slice(0,255)),e.id&&(t.$el_id=e.id),typeof e.className=="string"&&e.className&&(t.$el_classes=e.className);let i=e.getAttribute("href");return i&&(t.$el_href=i),t}function $(e){let t=globalThis.history,n=D(),i="",r=()=>{let a=w(),l=a?`${a.pathname}${a.search}`:"";l!==i&&(i=l,e.capture("$pageview",{properties:O()}));};if(r(),!t||!n)return ()=>{};let s=t.pushState.bind(t),p=t.replaceState.bind(t);return t.pushState=(...a)=>{s(...a),r();},t.replaceState=(...a)=>{p(...a),r();},n.addEventListener("popstate",r),()=>{t.pushState=s,t.replaceState=p,n.removeEventListener("popstate",r);}}function K(e){let t=S();if(!t)return ()=>{};let n=i=>{let r=i.target;V(r)&&e.capture("$autocapture",{properties:{...O(),...H(r)}});};return t.addEventListener("click",n,true),()=>t.removeEventListener("click",n,true)}function I(e,t={}){let n=[];return (t.pageviews??true)&&n.push($(e)),(t.clicks??true)&&n.push(K(e)),()=>{for(let i of n)i();}}function F(){return globalThis.document?.visibilityState==="hidden"}function B(e){let t=globalThis.navigator,n=globalThis.Blob;if(!t?.sendBeacon||!n)return false;let i=JSON.stringify({...e.body,api_key:e.projectKey});try{let r=new n([i],{type:"application/json"});return t.sendBeacon(e.url,r)}catch{return false}}var c=class{constructor(t={}){a(this,"fetchTransport");this.fetchTransport=new s(t);}async send(t){F()&&B(t)||await this.fetchTransport.send(t);}};var R={maskAllInputs:true,maskAllText:false},W=new Set(["email","password","tel"]);function A(e){return e.replace(/\S/g,"*")}function d(e,t,n){return z(t)||n.maskAllInputs?A(e):e}function f(e,t){return t.maskAllText?A(e):e}function z(e){return W.has((e??"").toLowerCase())}var U=5e3,m=class{constructor(t){this.options=t;a(this,"buffer",[]);a(this,"seq",0);a(this,"maxEvents");this.maxEvents=Math.min(Math.max(1,t.maxEvents),U);}add(t){return this.buffer.push(t),this.buffer.length>=this.maxEvents?this.flush():null}flush(){if(this.buffer.length===0)return null;let t=this.buffer;this.buffer=[];let n={distinct_id:this.options.distinctId(),events:t,masked:this.options.masked,schema_version:1,seq:this.seq,session_id:this.options.sessionId,timestamp:new Date(this.options.now()).toISOString()};return this.seq+=1,n}};var v=1,k=3,q=9,h=class{constructor(){a(this,"next",1);}allocate(){let t=this.next;return this.next+=1,t}},j=new Set(["NOSCRIPT","SCRIPT"]);function g(e,t,n,i){if(e.nodeType===k){let r=t.allocate();return i?.(e,r),{id:r,textContent:f(e.textValue??"",n),type:"text"}}if(e.nodeType===q){let r=t.allocate();return i?.(e,r),{childNodes:M(e,t,n,i),id:r,type:"document"}}if(e.nodeType===v){let r=e.tagName??"";if(j.has(r))return null;let s=t.allocate();return i?.(e,s),{attributes:X(e,n),childNodes:M(e,t,n,i),id:s,tagName:r,type:"element"}}return null}function M(e,t,n,i){let r=[];for(let s of e.childNodes??[]){let p=g(s,t,n,i);p&&r.push(p);}return r}function X(e,t){let n={};for(let i of e.attributes??[])n[i.name]=i.value;return e.inputValue!==void 0&&(n.value=d(e.inputValue,e.inputType,t)),n}async function P(e,t){let n=`${g$1(t.replayHost)}/v1/replay`;return (await t.fetch(n,{body:JSON.stringify(e),headers:{authorization:`Bearer ${t.apiKey}`,"content-type":"application/json"},method:"POST"})).ok}var C=new Set(["INPUT","SELECT","TEXTAREA"]),y=class{constructor(t){this.options=t;a(this,"allocator",new h);a(this,"mirror",new Map);a(this,"chunker");a(this,"fetchImpl");a(this,"observer");a(this,"timer");a(this,"started",false);this.chunker=new m({distinctId:t.distinctId,masked:t.mask.maskAllInputs,maxEvents:t.maxEvents,now:t.now,sessionId:t.sessionId}),this.fetchImpl=f$1(t.fetch);}start(){if(this.started)return;let t=Y(),n=t?.documentElement;!t||!n||!this.fetchImpl||(this.started=true,this.captureFullSnapshot(n),this.observeMutations(n),this.observeInteractions(t),this.timer=setInterval(()=>this.upload(this.chunker.flush()),this.options.flushIntervalMs));}stop(){this.started&&(this.started=false,this.observer?.disconnect(),this.timer&&clearInterval(this.timer),this.upload(this.chunker.flush()));}captureFullSnapshot(t){let n=g(this.adapt(t),this.allocator,this.options.mask,(i,r)=>{let s=i.ref;s&&this.mirror.set(s,r);});n&&this.push(2,{node:n});}observeMutations(t){let n=globalThis.MutationObserver;n&&(this.observer=new n(i=>{for(let r of i)this.handleMutation(r);}),this.observer.observe(t,{attributes:true,characterData:true,childList:true,subtree:true}));}handleMutation(t){if(t.type==="characterData"){let n=this.mirror.get(t.target);n!==void 0&&this.push(3,{texts:[{id:n,value:f(t.target.textContent??"",this.options.mask)}]});return}if(t.type==="attributes"&&t.attributeName){let n=this.mirror.get(t.target),i=t.target;n!==void 0&&this.push(3,{attributes:[{attributes:{[t.attributeName]:i.getAttribute(t.attributeName)??""},id:n}]});return}if(t.type==="childList"){let n=this.mirror.get(t.target);if(n===void 0)return;for(let i of Array.from(t.addedNodes)){let r=g(this.adapt(i),this.allocator,this.options.mask,(s,p)=>{let a=s.ref;a&&this.mirror.set(a,p);});r&&this.push(3,{adds:[{node:r,parentId:n}]});}for(let i of Array.from(t.removedNodes)){let r=this.mirror.get(i);r!==void 0&&(this.push(3,{removes:[{id:r,parentId:n}]}),this.mirror.delete(i));}}}observeInteractions(t){t.addEventListener("input",n=>{let i=n.target;if(!i||!C.has(i.tagName))return;let r=this.mirror.get(i);r!==void 0&&this.push(3,{input:{id:r,value:d(i.value??"",i.type,this.options.mask)}});},true),t.addEventListener("scroll",n=>{let i=n.target,r=i?this.mirror.get(i):void 0;this.push(3,{scroll:{id:r??0,x:i?.scrollLeft??0,y:i?.scrollTop??0}});},true);}adapt(t){let n={childNodes:[],nodeType:t.nodeType,ref:t};if(t.nodeType===k)return n.textValue=t.textContent??"",n;if(t.nodeType===v){let i=t;if(n.tagName=i.tagName,n.attributes=Array.from(i.attributes).map(r=>({name:r.name,value:r.value})),C.has(i.tagName)){let r=i;n.inputType=r.type,n.inputValue=r.value??"";}}return n.childNodes=Array.from(t.childNodes).map(i=>this.adapt(i)),n}push(t,n){let i=this.chunker.add({data:n,timestamp:this.options.now(),type:t});i&&this.upload(i);}upload(t){!t||!this.fetchImpl||P(t,{apiKey:this.options.apiKey,fetch:this.fetchImpl,replayHost:this.options.replayHost}).catch(n=>this.options.onError?.(n));}};function Y(){return globalThis.document}function _(e){let t=new y({apiKey:e.apiKey,distinctId:e.distinctId,flushIntervalMs:e.flushIntervalMs??5e3,mask:{...R,...e.mask},maxEvents:e.maxEvents??200,now:e.now??(()=>Date.now()),onError:e.onError,replayHost:e.replayHost,sessionId:e.sessionId??j$1()});return t.start(),t}function G(){return globalThis.navigator}function J(e){let t=e?.userAgentData?.platform??e?.platform;return t?t.slice(0,50):void 0}function Q(e){let t=()=>{e.flush();};globalThis.document?.addEventListener?.("visibilitychange",t),globalThis.addEventListener?.("pagehide",t);}function It(e){let{autocaptureOptions:t$1,replayHost:n,sessionReplay:i$1,sessionReplayOptions:r,...s}=e,p=G(),a={...s,locale:s.locale??(p?.language?p.language.slice(0,20):void 0),os:s.os??J(p),storage:s.storage??i(),transport:s.transport??new c({maxRetries:s.maxRetries,requestTimeoutMs:s.requestTimeoutMs})},l=new t(a);return Q(l),(e.autocapture??true)&&I(l,t$1),i$1&&n&&_({apiKey:a.apiKey,distinctId:()=>l.distinctId,onError:a.onError,replayHost:n,...r}),l}export{c as WebTransport,It as createWebClient,I as installAutocapture,_ as installSessionReplay};//# sourceMappingURL=web.js.map
1
+ import {r,g as g$1,f as f$1,s}from'./chunk-7J6AQICL.js';import {a as a$1,d as d$1}from'./chunk-VG77TYVX.js';import {a}from'./chunk-5XGN7UAV.js';function w(){return globalThis.location}function S(){return globalThis.document}function D(){return globalThis.window??globalThis}function V(e){return typeof e=="object"&&e!==null&&typeof e.tagName=="string"}function O(){let e=w(),t=S(),n={};return e&&(n.$current_url=e.href,n.$pathname=e.pathname,n.$host=e.host),t&&(t.title&&(n.$title=t.title),t.referrer&&(n.$referrer=t.referrer)),n}function H(e){let t={$el_tag:e.tagName.toLowerCase(),$event_type:"click"},n=e.textContent?.trim();n&&(t.$el_text=n.slice(0,255)),e.id&&(t.$el_id=e.id),typeof e.className=="string"&&e.className&&(t.$el_classes=e.className);let i=e.getAttribute("href");return i&&(t.$el_href=i),t}function $(e){let t=globalThis.history,n=D(),i="",r=()=>{let a=w(),l=a?`${a.pathname}${a.search}`:"";l!==i&&(i=l,e.capture("$pageview",{properties:O()}));};if(r(),!t||!n)return ()=>{};let s=t.pushState.bind(t),p=t.replaceState.bind(t);return t.pushState=(...a)=>{s(...a),r();},t.replaceState=(...a)=>{p(...a),r();},n.addEventListener("popstate",r),()=>{t.pushState=s,t.replaceState=p,n.removeEventListener("popstate",r);}}function K(e){let t=S();if(!t)return ()=>{};let n=i=>{let r=i.target;V(r)&&e.capture("$autocapture",{properties:{...O(),...H(r)}});};return t.addEventListener("click",n,true),()=>t.removeEventListener("click",n,true)}function I(e,t={}){let n=[];return (t.pageviews??true)&&n.push($(e)),(t.clicks??true)&&n.push(K(e)),()=>{for(let i of n)i();}}function F(){return globalThis.document?.visibilityState==="hidden"}function B(e){let t=globalThis.navigator,n=globalThis.Blob;if(!t?.sendBeacon||!n)return false;let i=JSON.stringify({...e.body,api_key:e.projectKey});try{let r=new n([i],{type:"application/json"});return t.sendBeacon(e.url,r)}catch{return false}}var c=class{constructor(t={}){a(this,"fetchTransport");this.fetchTransport=new r(t);}async send(t){F()&&B(t)||await this.fetchTransport.send(t);}};var R={maskAllInputs:true,maskAllText:false},W=new Set(["email","password","tel"]);function A(e){return e.replace(/\S/g,"*")}function d(e,t,n){return z(t)||n.maskAllInputs?A(e):e}function f(e,t){return t.maskAllText?A(e):e}function z(e){return W.has((e??"").toLowerCase())}var U=5e3,m=class{constructor(t){this.options=t;a(this,"buffer",[]);a(this,"seq",0);a(this,"maxEvents");this.maxEvents=Math.min(Math.max(1,t.maxEvents),U);}add(t){return this.buffer.push(t),this.buffer.length>=this.maxEvents?this.flush():null}flush(){if(this.buffer.length===0)return null;let t=this.buffer;this.buffer=[];let n={distinct_id:this.options.distinctId(),events:t,masked:this.options.masked,schema_version:1,seq:this.seq,session_id:this.options.sessionId,timestamp:new Date(this.options.now()).toISOString()};return this.seq+=1,n}};var v=1,k=3,q=9,h=class{constructor(){a(this,"next",1);}allocate(){let t=this.next;return this.next+=1,t}},j=new Set(["NOSCRIPT","SCRIPT"]);function g(e,t,n,i){if(e.nodeType===k){let r=t.allocate();return i?.(e,r),{id:r,textContent:f(e.textValue??"",n),type:"text"}}if(e.nodeType===q){let r=t.allocate();return i?.(e,r),{childNodes:M(e,t,n,i),id:r,type:"document"}}if(e.nodeType===v){let r=e.tagName??"";if(j.has(r))return null;let s=t.allocate();return i?.(e,s),{attributes:X(e,n),childNodes:M(e,t,n,i),id:s,tagName:r,type:"element"}}return null}function M(e,t,n,i){let r=[];for(let s of e.childNodes??[]){let p=g(s,t,n,i);p&&r.push(p);}return r}function X(e,t){let n={};for(let i of e.attributes??[])n[i.name]=i.value;return e.inputValue!==void 0&&(n.value=d(e.inputValue,e.inputType,t)),n}async function P(e,t){let n=`${d$1(t.replayHost)}/v1/replay`;return (await t.fetch(n,{body:JSON.stringify(e),headers:{authorization:`Bearer ${t.apiKey}`,"content-type":"application/json"},method:"POST"})).ok}var C=new Set(["INPUT","SELECT","TEXTAREA"]),y=class{constructor(t){this.options=t;a(this,"allocator",new h);a(this,"mirror",new Map);a(this,"chunker");a(this,"fetchImpl");a(this,"observer");a(this,"timer");a(this,"started",false);this.chunker=new m({distinctId:t.distinctId,masked:t.mask.maskAllInputs,maxEvents:t.maxEvents,now:t.now,sessionId:t.sessionId}),this.fetchImpl=a$1(t.fetch);}start(){if(this.started)return;let t=Y(),n=t?.documentElement;!t||!n||!this.fetchImpl||(this.started=true,this.captureFullSnapshot(n),this.observeMutations(n),this.observeInteractions(t),this.timer=setInterval(()=>this.upload(this.chunker.flush()),this.options.flushIntervalMs));}stop(){this.started&&(this.started=false,this.observer?.disconnect(),this.timer&&clearInterval(this.timer),this.upload(this.chunker.flush()));}captureFullSnapshot(t){let n=g(this.adapt(t),this.allocator,this.options.mask,(i,r)=>{let s=i.ref;s&&this.mirror.set(s,r);});n&&this.push(2,{node:n});}observeMutations(t){let n=globalThis.MutationObserver;n&&(this.observer=new n(i=>{for(let r of i)this.handleMutation(r);}),this.observer.observe(t,{attributes:true,characterData:true,childList:true,subtree:true}));}handleMutation(t){if(t.type==="characterData"){let n=this.mirror.get(t.target);n!==void 0&&this.push(3,{texts:[{id:n,value:f(t.target.textContent??"",this.options.mask)}]});return}if(t.type==="attributes"&&t.attributeName){let n=this.mirror.get(t.target),i=t.target;n!==void 0&&this.push(3,{attributes:[{attributes:{[t.attributeName]:i.getAttribute(t.attributeName)??""},id:n}]});return}if(t.type==="childList"){let n=this.mirror.get(t.target);if(n===void 0)return;for(let i of Array.from(t.addedNodes)){let r=g(this.adapt(i),this.allocator,this.options.mask,(s,p)=>{let a=s.ref;a&&this.mirror.set(a,p);});r&&this.push(3,{adds:[{node:r,parentId:n}]});}for(let i of Array.from(t.removedNodes)){let r=this.mirror.get(i);r!==void 0&&(this.push(3,{removes:[{id:r,parentId:n}]}),this.mirror.delete(i));}}}observeInteractions(t){t.addEventListener("input",n=>{let i=n.target;if(!i||!C.has(i.tagName))return;let r=this.mirror.get(i);r!==void 0&&this.push(3,{input:{id:r,value:d(i.value??"",i.type,this.options.mask)}});},true),t.addEventListener("scroll",n=>{let i=n.target,r=i?this.mirror.get(i):void 0;this.push(3,{scroll:{id:r??0,x:i?.scrollLeft??0,y:i?.scrollTop??0}});},true);}adapt(t){let n={childNodes:[],nodeType:t.nodeType,ref:t};if(t.nodeType===k)return n.textValue=t.textContent??"",n;if(t.nodeType===v){let i=t;if(n.tagName=i.tagName,n.attributes=Array.from(i.attributes).map(r=>({name:r.name,value:r.value})),C.has(i.tagName)){let r=i;n.inputType=r.type,n.inputValue=r.value??"";}}return n.childNodes=Array.from(t.childNodes).map(i=>this.adapt(i)),n}push(t,n){let i=this.chunker.add({data:n,timestamp:this.options.now(),type:t});i&&this.upload(i);}upload(t){!t||!this.fetchImpl||P(t,{apiKey:this.options.apiKey,fetch:this.fetchImpl,replayHost:this.options.replayHost}).catch(n=>this.options.onError?.(n));}};function Y(){return globalThis.document}function _(e){let t=new y({apiKey:e.apiKey,distinctId:e.distinctId,flushIntervalMs:e.flushIntervalMs??5e3,mask:{...R,...e.mask},maxEvents:e.maxEvents??200,now:e.now??(()=>Date.now()),onError:e.onError,replayHost:e.replayHost,sessionId:e.sessionId??g$1()});return t.start(),t}function G(){return globalThis.navigator}function J(e){let t=e?.userAgentData?.platform??e?.platform;return t?t.slice(0,50):void 0}function Q(e){let t=()=>{e.flush();};globalThis.document?.addEventListener?.("visibilitychange",t),globalThis.addEventListener?.("pagehide",t);}function It(e){let{autocaptureOptions:t,replayHost:n,sessionReplay:i,sessionReplayOptions:r,...s$1}=e,p=G(),a={...s$1,locale:s$1.locale??(p?.language?p.language.slice(0,20):void 0),os:s$1.os??J(p),storage:s$1.storage??f$1(),transport:s$1.transport??new c({maxRetries:s$1.maxRetries,requestTimeoutMs:s$1.requestTimeoutMs})},l=new s(a);return Q(l),(e.autocapture??true)&&I(l,t),i&&n&&_({apiKey:a.apiKey,distinctId:()=>l.distinctId,onError:a.onError,replayHost:n,...r}),l}export{c as WebTransport,It as createWebClient,I as installAutocapture,_ as installSessionReplay};//# sourceMappingURL=web.js.map
2
2
  //# sourceMappingURL=web.js.map
package/package.json CHANGED
@@ -2,8 +2,9 @@
2
2
  "description": "Prodantix analytics + feature-flag client SDK (isomorphic, zero-dependency)",
3
3
  "devDependencies": {
4
4
  "@bomdisoft/typescript-config": "0.0.0",
5
- "@types/bun": "^1.3.14",
6
- "@types/node": "^25.9.3",
5
+ "@happy-dom/global-registrator": "^20.11.6",
6
+ "@types/bun": "^1.4.0",
7
+ "@types/node": "^26.2.0",
7
8
  "tsup": "8.5.1",
8
9
  "typescript": "^6.0.3"
9
10
  },
@@ -13,6 +14,21 @@
13
14
  "require": "./dist/index.cjs",
14
15
  "types": "./dist/index.d.ts"
15
16
  },
17
+ "./chat": {
18
+ "import": "./dist/chat.js",
19
+ "require": "./dist/chat.cjs",
20
+ "types": "./dist/chat.d.ts"
21
+ },
22
+ "./csp": {
23
+ "import": "./dist/csp.js",
24
+ "require": "./dist/csp.cjs",
25
+ "types": "./dist/csp.d.ts"
26
+ },
27
+ "./messenger": {
28
+ "import": "./dist/messenger.js",
29
+ "require": "./dist/messenger.cjs",
30
+ "types": "./dist/messenger.d.ts"
31
+ },
16
32
  "./node": {
17
33
  "import": "./dist/node.js",
18
34
  "require": "./dist/node.cjs",
@@ -47,5 +63,5 @@
47
63
  "sideEffects": false,
48
64
  "type": "module",
49
65
  "types": "./dist/index.d.ts",
50
- "version": "0.0.1"
66
+ "version": "0.1.0"
51
67
  }
@@ -1,2 +0,0 @@
1
- var z=Object.defineProperty;var J=(t,e,s)=>e in t?z(t,e,{enumerable:true,configurable:true,writable:true,value:s}):t[e]=s;var i=(t,e,s)=>J(t,typeof e!="symbol"?e+"":e,s);var d=class extends Error{constructor(s,r,n){super(r,n);i(this,"code");this.code=s,this.name="ProdantixError";}},y=class extends d{constructor(e){super("config",e),this.name="ConfigError";}},f=class extends d{constructor(s,r){super("validation",r);i(this,"field");this.field=s,this.name="ValidationError";}},l=class extends d{constructor(s,r,n){super("transport",s,n);i(this,"status");this.status=r,this.name="TransportError";}};var m=class{constructor(){i(this,"store",new Map);}getItem(e){return this.store.get(e)??null}removeItem(e){this.store.delete(e);}setItem(e,s){this.store.set(e,s);}};function le(){try{let t=globalThis.localStorage;if(t){let e="__pdx_probe__";return t.setItem(e,"1"),t.removeItem(e),t}}catch{return new m}return new m}var T="prodantix-js",S="0.0.1";var u=Symbol("absent");function Q(t,e){if(t==="distinct_id")return e.distinctId;let s=e.properties??{};if(Object.prototype.hasOwnProperty.call(s,t))return s[t];let r=e.attributes??{};return Object.prototype.hasOwnProperty.call(r,t)?r[t]:u}function c(t){return t===u?"undefined":String(t)}function C(t){return t===u?Number.NaN:Number(t)}function _(t){return t!==u&&t!==null&&t!==""}function P(t,e){if(!Array.isArray(e))return false;let s=c(t);return e.map(r=>String(r)).includes(s)}function R(t,e){let s=Q(t.attribute,e),r=t.value;switch(t.op){case "is_set":return _(s);case "is_not_set":return !_(s);case "eq":return c(s)===c(r===void 0?u:r);case "neq":return c(s)!==c(r===void 0?u:r);case "contains":return c(s).includes(c(r===void 0?u:r));case "in":return P(s,r);case "not_in":return Array.isArray(r)?!P(s,r):false;case "gt":return v(s,r,(n,o)=>n>o);case "gte":return v(s,r,(n,o)=>n>=o);case "lt":return v(s,r,(n,o)=>n<o);case "lte":return v(s,r,(n,o)=>n<=o);default:return false}}function v(t,e,s){let r=C(t),n=e===void 0?Number.NaN:C(e);return Number.isNaN(r)||Number.isNaN(n)?false:s(r,n)}function U(t,e){let s=`${t}:${e}`,r=2166136261;for(let n=0;n<s.length;n++)r^=s.charCodeAt(n),r=Math.imul(r,16777619);return (r>>>0)%100}function B(t,e){return t.enabled?t.targeting.length>0&&!t.targeting.every(s=>R(s,e))?{enabled:false,reason:"targeting"}:t.rolloutPercentage>=100?{enabled:true,reason:"rollout_full"}:U(t.key,e.distinctId)<t.rolloutPercentage?{enabled:true,reason:"rollout"}:{enabled:false,reason:"rollout_excluded"}:{enabled:false,reason:"disabled"}}function M(t,e){let s={};for(let r of t)s[r.key]=B(r,e).enabled;return s}function g(t){if(t)return t;let e=globalThis.fetch;if(typeof e=="function")return e.bind(globalThis)}function p(){let t=globalThis.AbortController;return t?new t:void 0}var A=t=>new Promise(e=>{setTimeout(e,t);});function h(t){return t.replace(/\/+$/,"")}var b=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=g(e.fetch),this.host=h(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async fetchAll(e){let s=this.fetch;if(!s)throw new l("no fetch implementation available in this runtime");let r=`${this.host}/v1/flags?distinct_id=${encodeURIComponent(e)}`,n=p(),o=n?setTimeout(()=>n.abort(),this.requestTimeoutMs):void 0;try{let a=await s(r,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:n?.signal});if(!a.ok)throw new l(`flags request failed with status ${a.status}`,a.status);return JSON.parse(await a.text()).flags??{}}finally{o!==void 0&&clearTimeout(o);}}async snapshot(){let e=this.fetch;if(!e)throw new l("no fetch implementation available in this runtime");let s=`${this.host}/v1/flags/snapshot`,r=p(),n=r?setTimeout(()=>r.abort(),this.requestTimeoutMs):void 0;try{let o=await e(s,{headers:{authorization:`Bearer ${this.projectKey}`},method:"GET",signal:r?.signal});if(!o.ok)throw new l(`flag snapshot request failed with status ${o.status}`,o.status);let a=JSON.parse(await o.text());return {flags:a.flags??[],generatedAt:a.generatedAt}}finally{n!==void 0&&clearTimeout(n);}}};var x=class{constructor(e){i(this,"fetch");i(this,"host");i(this,"projectKey");i(this,"requestTimeoutMs");this.fetch=g(e.fetch),this.host=h(e.host),this.projectKey=e.projectKey,this.requestTimeoutMs=e.requestTimeoutMs??1e4;}async inbox(e){let s=this.requireFetch(),r=`${this.host}/v1/messages?distinct_id=${encodeURIComponent(e)}`,n=await this.request(s,r,{headers:this.authHeaders(),method:"GET"});if(!n.ok)throw new l(`inbox request failed with status ${n.status}`,n.status);return JSON.parse(await n.text()).messages??[]}async markRead(e,s){let r=this.requireFetch(),n=`${this.host}/v1/messages/read`,o=await this.request(r,n,{body:JSON.stringify({distinct_id:s,message_id:e}),headers:{...this.authHeaders(),"content-type":"application/json"},method:"POST"});if(!o.ok)throw new l(`mark-read request failed with status ${o.status}`,o.status)}requireFetch(){if(!this.fetch)throw new l("no fetch implementation available in this runtime");return this.fetch}authHeaders(){return {authorization:`Bearer ${this.projectKey}`}}async request(e,s,r){let n=p(),o=n?setTimeout(()=>n.abort(),this.requestTimeoutMs):void 0;try{return await e(s,{...r,signal:n?.signal})}finally{o!==void 0&&clearTimeout(o);}}};function q(t){return t>=400&&t<500&&t!==429}var I=class{constructor(e={}){i(this,"fetch");i(this,"maxRetries");i(this,"requestTimeoutMs");i(this,"baseDelayMs");i(this,"maxDelayMs");i(this,"sleep");i(this,"random");this.fetch=g(e.fetch),this.maxRetries=e.maxRetries??3,this.requestTimeoutMs=e.requestTimeoutMs??1e4,this.baseDelayMs=e.baseDelayMs??500,this.maxDelayMs=e.maxDelayMs??3e4,this.sleep=e.sleep??A,this.random=e.random??Math.random;}async send(e){let s=this.fetch;if(!s)throw new l("no fetch implementation available in this runtime");let r=JSON.stringify(e.body),n;for(let o=0;o<=this.maxRetries;o+=1){try{let a=await this.attempt(s,e,r);if(a.ok)return;if(q(a.status))throw new l(`ingest rejected batch with status ${a.status}`,a.status);n=new l(`ingest transient status ${a.status}`,a.status);}catch(a){if(a instanceof l&&a.status!==void 0&&q(a.status))throw a;n=a;}o<this.maxRetries&&await this.sleep(this.backoff(o));}throw new l("ingest delivery failed after retries",void 0,{cause:n})}async attempt(e,s,r){let n=p(),o=n?setTimeout(()=>n.abort(),this.requestTimeoutMs):void 0;try{return await e(s.url,{body:r,headers:{authorization:`Bearer ${s.projectKey}`,"content-type":"application/json"},method:"POST",signal:n?.signal})}finally{o!==void 0&&clearTimeout(o);}}backoff(e){return Math.min(this.maxDelayMs,this.baseDelayMs*2**e)+this.random()*this.baseDelayMs}};var $={now:()=>new Date};function E(t){return t.toISOString()}function H(){return globalThis.crypto}function G(t){t[6]=t[6]&15|64,t[8]=t[8]&63|128;let e=[];for(let s=0;s<16;s+=1)e.push(t[s].toString(16).padStart(2,"0"));return `${e[0]}${e[1]}${e[2]}${e[3]}-${e[4]}${e[5]}-${e[6]}${e[7]}-${e[8]}${e[9]}-${e[10]}${e[11]}${e[12]}${e[13]}${e[14]}${e[15]}`}function X(){let t=H();if(t?.randomUUID)return t.randomUUID();let e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else for(let s=0;s<16;s+=1)e[s]=Math.floor(Math.random()*256);return G(e)}var N={uuid:X};var Y=/^pdx_pub_(?:(?:live|test)_)?[a-z0-9]{32}$/;var Z=/^(?:\$|[a-z])[a-z0-9_.]*$/;function O(t){let e=0;for(let s of t)e+=1;return e}function D(t){return Y.test(t)}function W(t){return Z.test(t)}function K(t){let e=O(t);if(e<1||e>200)throw new f("distinct_id","distinct_id must be between 1 and 200 characters")}function L(t){let e=O(t);if(e<1||e>200)throw new f("event_name","event_name must be between 1 and 200 characters");if(!W(t))throw new f("event_name","event_name must match /^(\\$|[a-z])[a-z0-9_.]*$/")}var ee=t=>{};function j(t){if(!t.apiKey||!D(t.apiKey))throw new y("apiKey must be a public project key of the form pdx_pub_<32 lowercase alphanumerics>");if(!t.host)throw new y("host is required (the ingest base URL)");let e=h(t.host),s=t.defaultProperties;return {apiKey:t.apiKey,autocapture:t.autocapture??false,clock:t.clock??$,defaultProperties:typeof s=="function"?s:()=>s??{},flagsHost:t.flagsHost?h(t.flagsHost):e,flushAt:t.flushAt??20,flushIntervalMs:t.flushIntervalMs??1e4,host:e,ids:t.ids??N,locale:t.locale,maxQueueSize:t.maxQueueSize??1e3,maxRetries:t.maxRetries??3,namespace:t.apiKey.slice(0,16),onError:t.onError??ee,os:t.os,requestTimeoutMs:t.requestTimeoutMs??1e4,sdkName:t.sdkName??T,sdkVersion:t.sdkVersion??S,storage:t.storage??new m,transport:t.transport}}function V(t,e,s){L(t.eventName),K(t.distinctId);let r={distinct_id:t.distinctId,event_id:t.eventId??s.uuid(),event_name:t.eventName,properties:t.properties??{},schema_version:1,timestamp:E(t.timestamp??e.now())};return t.context&&(r.context=t.context),t.sessionId&&(r.session_id=t.sessionId),r}var w=class{constructor(e,s,r){this.storage=e;this.ids=s;this.namespace=r;i(this,"anonymousId");i(this,"distinctId");i(this,"identified");let n=e.getItem(this.key("anonymous_id"));n?this.anonymousId=n:(this.anonymousId=s.uuid(),e.setItem(this.key("anonymous_id"),this.anonymousId));let o=e.getItem(this.key("distinct_id"));o?(this.distinctId=o,this.identified=true):(this.distinctId=this.anonymousId,this.identified=false);}getAnonymousId(){return this.anonymousId}getDistinctId(){return this.distinctId}isIdentified(){return this.identified}snapshot(){return {anonymousId:this.anonymousId,distinctId:this.distinctId,identified:this.identified}}identify(e){return this.identified&&this.distinctId===e?{changed:false}:(this.distinctId=e,this.identified=true,this.storage.setItem(this.key("distinct_id"),e),{changed:true})}reset(){this.anonymousId=this.ids.uuid(),this.distinctId=this.anonymousId,this.identified=false,this.storage.setItem(this.key("anonymous_id"),this.anonymousId),this.storage.removeItem(this.key("distinct_id"));}key(e){return `pdx.${this.namespace}.${e}`}};var F=class{constructor(e,s){this.maxSize=e;this.onOverflow=s;i(this,"events",[]);}get size(){return this.events.length}enqueue(e){this.events.push(e),this.enforceCap();}restore(e){this.events.push(...e),this.enforceCap();}requeue(e){this.events.unshift(...e),this.enforceCap();}drain(e){let s=e===void 0?this.events.length:Math.min(e,this.events.length);return this.events.splice(0,s)}snapshot(){return [...this.events]}enforceCap(){if(this.events.length<=this.maxSize)return;let e=this.events.splice(0,this.events.length-this.maxSize);this.onOverflow?.({dropped:e});}};var te="queue",se=1e3,re=3e4,k=class{constructor(e){i(this,"config");i(this,"identity");i(this,"queue");i(this,"transport");i(this,"flagsClient");i(this,"messagesClient");i(this,"context");i(this,"flushTimer");i(this,"flushing",false);i(this,"cachedFlags");i(this,"cachedSnapshot");this.config=j(e),this.identity=new w(this.config.storage,this.config.ids,this.config.namespace),this.queue=new F(this.config.maxQueueSize,({dropped:s})=>{this.config.onError(new d("queue_overflow",`event queue overflow: dropped ${s.length} oldest event(s)`));}),this.transport=this.config.transport??new I({maxRetries:this.config.maxRetries,requestTimeoutMs:this.config.requestTimeoutMs}),this.flagsClient=new b({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.messagesClient=new x({host:this.config.flagsHost,projectKey:this.config.apiKey,requestTimeoutMs:this.config.requestTimeoutMs}),this.context={sdk:this.config.sdkName,sdk_version:this.config.sdkVersion},this.config.os&&(this.context.os=this.config.os),this.config.locale&&(this.context.locale=this.config.locale),this.restoreQueue(),this.startTimer();}get distinctId(){return this.identity.getDistinctId()}get anonymousId(){return this.identity.getAnonymousId()}capture(e,s={}){try{let r={...this.config.defaultProperties(),...s.properties??{}},n=V({context:this.context,distinctId:this.identity.getDistinctId(),eventName:e,properties:r,sessionId:s.sessionId,timestamp:s.timestamp},this.config.clock,this.config.ids);this.enqueue(n);}catch(r){this.config.onError(r);}}identify(e,s={}){let r=this.identity.getAnonymousId(),n=!this.identity.isIdentified(),o=this.identity.identify(e),a={};n&&o.changed&&(a.$anon_distinct_id=r),s.set&&(a.$set=s.set),this.capture("$identify",{properties:a});}alias(e){this.capture("$create_alias",{properties:{alias:e}});}group(e,s,r){let n={$group_key:s,$group_type:e};r&&(n.$set=r),this.capture("$group",{properties:n});}setPersonProperties(e,s){let r={};e&&(r.$set=e),s&&(r.$set_once=s),this.capture("$set",{properties:r});}async getAllFlags(){let e=this.identity.getDistinctId(),s=await this.flagsClient.fetchAll(e);return this.cachedFlags={distinctId:e,flags:s},s}async isFeatureEnabled(e){return (await this.getAllFlags())[e]??false}getCachedFlag(e){if(!(!this.cachedFlags||this.cachedFlags.distinctId!==this.distinctId))return this.cachedFlags.flags[e]}async getLocalFlags(e={}){let s=await this.flagSnapshot();return M(s.flags,{attributes:e.attributes,distinctId:this.identity.getDistinctId(),properties:e.properties})}async isFeatureEnabledLocal(e,s){return (await this.getLocalFlags(s))[e]??false}async flagSnapshot(){let e=this.config.clock.now().getTime();if(this.cachedSnapshot&&e-this.cachedSnapshot.fetchedAt<re)return this.cachedSnapshot.snapshot;let s=await this.flagsClient.snapshot();return this.cachedSnapshot={fetchedAt:e,snapshot:s},s}async getInbox(){return this.messagesClient.inbox(this.identity.getDistinctId())}async markMessageRead(e){await this.messagesClient.markRead(e,this.identity.getDistinctId());}async flush(){if(this.flushing||this.queue.size===0)return;this.flushing=true;let e=this.queue.drain(se);try{await this.transport.send({body:{events:e,sent_at:E(this.config.clock.now())},projectKey:this.config.apiKey,url:`${this.config.host}/v1/events`}),this.persistQueue();}catch(s){this.queue.requeue(e),this.persistQueue(),this.config.onError(s);}finally{this.flushing=false;}}reset(){this.identity.reset(),this.cachedFlags=void 0,this.cachedSnapshot=void 0;}async shutdown(){this.stopTimer(),await this.flush();}enqueue(e){this.queue.enqueue(e),this.persistQueue(),this.queue.size>=this.config.flushAt&&this.flush();}persistQueue(){try{this.config.storage.setItem(this.persistKey(),JSON.stringify(this.queue.snapshot()));}catch(e){this.config.onError(e);}}restoreQueue(){try{let e=this.config.storage.getItem(this.persistKey());if(!e)return;let s=JSON.parse(e);Array.isArray(s)&&this.queue.restore(s);}catch(e){this.config.onError(e);}}startTimer(){if(this.config.flushIntervalMs<=0)return;let e=setInterval(()=>{this.flush();},this.config.flushIntervalMs),s=e;typeof s.unref=="function"&&s.unref(),this.flushTimer=e;}stopTimer(){this.flushTimer!==void 0&&(clearInterval(this.flushTimer),this.flushTimer=void 0);}persistKey(){return `pdx.${this.config.namespace}.${te}`}};function rt(t){return new k(t)}export{i as a,d as b,y as c,f as d,l as e,g as f,h as g,m as h,le as i,X as j,T as k,S as l,R as m,U as n,B as o,M as p,b as q,x as r,I as s,k as t,rt as u};//# sourceMappingURL=chunk-FIZWZVZG.js.map
2
- //# sourceMappingURL=chunk-FIZWZVZG.js.map