@sazabi/react-native 0.1.0 → 0.1.1

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.
@@ -18,4 +18,5 @@ export { createTraceContextManager, type HostSpanContext, readHostSpanContext, t
18
18
  export { createSdkHealthReporter, SDK_DIAGNOSTIC_KEY, type SdkHealthDiagnostic, type SdkHealthReport, type SdkHealthReporter, } from "./sdk-health.js";
19
19
  export { createTransport, encodeLogRecord, type FetchLike, type OtlpLogRecord, type Transport, type TransportOptions, } from "./transport.js";
20
20
  export { isUnderBase, type ParsedUrl, parseAbsoluteUrl } from "./url.js";
21
- export type { AttributeValue, ClientEvent, ClientEventType, ConsoleCaptureConfig, ConsoleCaptureLevel, EventAttributes, EventSeverity, NetworkCaptureConfig, PointerCaptureConfig, } from "./types.js";
21
+ export { createBeforeSendGate } from "./before-send.js";
22
+ export type { AttributeValue, BeforeSend, ClientEvent, ClientEventType, ConsoleCaptureConfig, ConsoleCaptureLevel, EventAttributes, EventSeverity, NetworkCaptureConfig, PointerCaptureConfig, } from "./types.js";
@@ -19,6 +19,12 @@ export interface ClientEvent {
19
19
  spanId?: string;
20
20
  attributes: EventAttributes;
21
21
  }
22
+ /**
23
+ * Runs on every event before it is queued. Return the event (edited or as
24
+ * given) to send it, or `null` to drop it. The hook sees the event's own
25
+ * attributes; the session and page fields are stamped afterwards.
26
+ */
27
+ export type BeforeSend = (event: ClientEvent) => ClientEvent | null;
22
28
  export type ConsoleCaptureLevel = "error" | "warn" | "info" | "debug";
23
29
  export interface ConsoleCaptureConfig {
24
30
  /** Mirror console output into the event stream. Default true. */
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type EventSeverity } from "./client-sdk-core/index.js";
2
2
  import { SazabiRoot } from "./interactions.js";
3
3
  import { trackNavigation } from "./navigation.js";
4
4
  import type { ReactNativeSdkConfig } from "./types.js";
5
- export type { AttributeValue, ClientEvent, ClientEventType, ConsoleCaptureConfig, ConsoleCaptureLevel, ErrorCaptureConfig, RejectionTracker, EventAttributes, EventSeverity, NavigationContainerRefLike, NetworkCaptureConfig, PointerCaptureConfig, ReactNativeSdkConfig, StorageAdapter, } from "./types.js";
5
+ export type { AttributeValue, BeforeSend, ClientEvent, ClientEventType, ConsoleCaptureConfig, ConsoleCaptureLevel, ErrorCaptureConfig, RejectionTracker, EventAttributes, EventSeverity, NavigationContainerRefLike, NetworkCaptureConfig, PointerCaptureConfig, ReactNativeSdkConfig, StorageAdapter, } from "./types.js";
6
6
  export { SazabiRoot, trackNavigation };
7
7
  declare module "react-native" {
8
8
  interface ViewProps {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import{a as K,b as Z,c as ie,d as tt,e as he,f as be,g as nt,h as rt,i as ye,j as ot,k as G,l as it,m as st,n as at,o as dt,p as ct,q as lt,r as ut,s as j,t as ft,u as pt,w as gt,x as vt}from"./chunk-c8j7sr2j.js";var d=globalThis.__sazabiReactNative??={initialized:!1,warnedWebHost:!1,warnedRejectionSlot:!1,generation:0,pendingReset:!1,screen:{}};var ne="@sazabi/react-native",V="0.1.0",H="[@sazabi/react-native]";var ke=()=>globalThis.HermesInternal,Ee=(e)=>{try{e()}catch{}},mt=(e)=>{try{let t=typeof e==="string"?e:typeof e==="object"&&e!==null?JSON.stringify(e)??String(e):String(e);return K(t)}catch{try{return K(Object.prototype.toString.call(e))}catch{return"[unreadable thrown value]"}}},re=(e,t)=>{let n=e instanceof Error?e:void 0,r=(s)=>{try{let l=n?.[s];return typeof l==="string"?K(l):void 0}catch{return}},i=r("name")||(t==="unhandledrejection"?"UnhandledRejection":"Error"),o=n?r("message")??"":mt(e);return{type:"error",body:K(`${i}: ${o}`,512),severity:"ERROR",timeUnixMs:Date.now(),attributes:{"exception.type":i,"exception.message":o,"exception.stacktrace":r("stack")??"","app.error.kind":t}}},we=(e)=>{try{d.renderErrorSink?.(e)}catch{}},ht=(e)=>{if(e instanceof Error)return e.stack||`${e.name}: ${e.message}`;if(typeof e==="string")return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}},oe=(e)=>{if(!j())return;try{let t=e();ie(()=>console.warn(t))}catch{}},Re=(e)=>{let t=globalThis.ErrorUtils,n=t?.getGlobalHandler?.(),r=!0,i=!1,o=(l)=>{if(!r||i)return;i=!0,setTimeout(()=>{i=!1},0),e.onFatal(re(l,"fatal"))},s=(l,u)=>{let c=()=>n?.(l,u);if(!r){c();return}try{if(u)o(l);else e.emit(re(l,"uncaught"))}catch{}ie(c)};if(t?.setGlobalHandler?.(s),d.renderErrorSink=o,e.unhandledRejections){let l=e.previousRejectionTracker;if(!l&&!d.warnedRejectionSlot&&j()&&typeof ke()?.enablePromiseRejectionTracker==="function")d.warnedRejectionSlot=!0,oe(()=>`${H} init() takes over Hermes's only promise rejection tracker slot, and a tracker another library installed before it cannot be seen. If one exists, pass errors.previousRejectionTracker to keep it running, or errors.unhandledRejections: false to leave the slot alone.`);let u={allRejections:!0,onUnhandled:(c,f)=>{if(r)try{e.emit(re(f,"unhandledrejection"))}catch{}if(l){Ee(()=>l.onUnhandled(c,f));return}oe(()=>`Possible unhandled promise rejection (id: ${c}):
2
- ${ht(f)}`)},onHandled:(c)=>{if(l){Ee(()=>l.onHandled?.(c));return}oe(()=>`Promise rejection handled (id: ${c})
3
- This means you can ignore any previous messages of the form "Possible unhandled promise rejection (id: ${c}):"`)}};try{ke()?.enablePromiseRejectionTracker?.(u)}catch{}}return{teardown(){if(r=!1,d.renderErrorSink===o)d.renderErrorSink=void 0;try{if(n&&t?.getGlobalHandler?.()===s)t.setGlobalHandler?.(n)}catch{}}}};import{Component as yt,createElement as bt}from"react";import{View as St}from"react-native";var se=(e)=>{d.tracker=e},kt=60,Et=3,xe=64,wt="sazabiName",Rt="sazabiMask",Te=new Set(["button","link","tab","menuitem","checkbox","radio","switch","togglebutton","imagebutton","searchbox"]),X=(e)=>{if(typeof e!=="string")return;let t=e.replace(/\s+/g," ").trim();if(!t)return;return t.length>xe?`${t.slice(0,xe)}…`:t},xt=(e)=>{let t=e.type??e.elementType;if(typeof t==="function"){let n=t;return X(n.displayName||n.name)}if(typeof t==="object"&&t!==null){let n=t.render??t.type;if(typeof n==="function"){let r=n;return X(r.displayName||r.name)}}return},Tt=(e)=>{try{let t=e;if(!t||typeof t!=="object")return;let n,r=!1,i=!1,o=[];for(let s=0;t&&s<kt;s+=1){let l=t.memoizedProps??void 0;if(l){if(l[Rt])r=!0;if(n===void 0)n=X(l[wt])??X(l.accessibilityLabel)??X(l.testID);if(typeof l.onPress==="function"||typeof l.onPressIn==="function"||typeof l.accessibilityRole==="string"&&Te.has(l.accessibilityRole)||typeof l.role==="string"&&Te.has(l.role))i=!0}if(o.length<Et){let u=xt(t);if(u&&u!=="SazabiRoot")o.unshift(u)}t=t.return}return{id:o.length>0?o.join(" > "):void 0,name:r?void 0:n,tag:o[o.length-1],interactive:i}}catch{return}},Ct=(e)=>{let t=d.tracker;if(!t)return;try{let{changedTouches:n,touches:r}=e.nativeEvent,i=Tt(e._targetInst);for(let o of n)t.down({id:o.identifier,type:"touch",primary:r.length<=1,x:o.pageX,y:o.pageY,pressure:o.force||void 0,target:i})}catch{}},Pt=(e)=>{let t=d.tracker;if(!t)return;try{for(let n of e.nativeEvent.changedTouches)t.move(n.identifier,n.pageX,n.pageY,n.force||void 0)}catch{}},At=(e)=>{let t=d.tracker;if(!t)return;try{for(let n of e.nativeEvent.changedTouches)t.up(n.identifier,n.pageX,n.pageY)}catch{}},_t=(e)=>{let t=d.tracker;if(!t)return;try{for(let n of e.nativeEvent.changedTouches)t.cancel(n.identifier)}catch{}},Nt={flex:1};class Ce extends yt{static displayName="SazabiRoot";state={};static getDerivedStateFromError(e){return we(e),{error:{value:e}}}render(){let e=this.state.error;if(e)throw e.value;return bt(St,{style:Nt,collapsable:!1,onTouchStart:Ct,onTouchMove:Pt,onTouchEnd:At,onTouchCancel:_t},this.props.children)}}import{AppState as Pe}from"react-native";var Ae=(e)=>{let t=Pe.currentState,n=(i)=>{try{if(i===t)return;if(t=i,i!=="active"&&i!=="background"&&i!=="inactive")return;if(e.emit({type:"lifecycle",body:`lifecycle ${i}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.lifecycle.state":i}}),i!=="active")e.onBackground()}catch{}},r;try{r=Pe.addEventListener("change",n)}catch{}return{teardown(){try{r?.remove()}catch{}}}};var ae=()=>d.screen,de=(e,t)=>{d.navigationEmit=e,d.navigationRedactUrl=t},Ot=(e)=>{if(!e)return;let t=Object.keys(e);return t.length>0?t.join(","):void 0},It=(e)=>{let t=()=>{try{let r=e.getCurrentRoute();if(!r)return;let i=d.screen;if(r.key===i.key&&r.name===i.name&&r.path===i.path)return;d.screen={name:r.name,path:r.path,key:r.key},d.navigationEmit?.({type:"navigation",body:`navigation ${r.name}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.navigation.type":"screen","app.screen.name":r.name,"url.path":r.path===void 0?void 0:d.navigationRedactUrl?.(r.path)??r.path,"app.navigation.from":i.name,"app.navigation.params":Ot(r.params)}})}catch{}};t();let n;try{n=e.addListener("state",t)}catch{}return()=>{try{n?.()}catch{}}},_e=()=>{d.screen={},d.navigationEmit=void 0,d.navigationRedactUrl=void 0};var Ht=async(e,t)=>{try{let n=await e.getItem(t);return typeof n==="string"?n:null}catch{return null}},U=(e)=>typeof e?.then==="function",Ne=(e,t)=>{try{let n=e();return U(n)?Promise.resolve(n).then(t,()=>{return}):t(n)}catch{return}},Oe=(e,t)=>Ne(()=>e.getItem(t),(n)=>({value:typeof n==="string"?n:null})),Ie=(e)=>Ne(()=>e.getAllKeys?.(),(t)=>Array.isArray(t)?t.filter((n)=>typeof n==="string"):void 0),q=(e,t,n)=>{try{let r=e.setItem(t,n);return U(r)?Promise.resolve(r).then(()=>!0,()=>!1):!0}catch{return!1}},k=(e,t)=>{try{let n=e.removeItem(t);return U(n)?Promise.resolve(n).then(()=>!0,()=>!1):!0}catch{return!1}},He=(e,t)=>{let n=G(),r=new Set,i=(async()=>{for(let o of t){let s=await Ht(e,o);if(s!==null&&!r.has(o))n.set(o,s)}})();return{store:{get:(o)=>n.get(o),set(o,s){n.set(o,s),r.add(o),q(e,o,s)},remove(o){n.remove(o),r.add(o),k(e,o)}},ready:i}};var le="sazabi.outbox.",De="sazabi.outbox.index",ue="sazabi.outbox.index.unmerged",Be="sazabi.outbox",Fe="sazabi.outbox.unmerged",B="sazabi.outbox.queue",ze="app.outbox.id",Ke=20,je=524288,T=(e)=>`${le}${e}`,Ut=/^(?:[0-9a-f]{16}|legacy|legacy-unmerged)$/,Mt=(e,t)=>(e??[]).filter((n)=>n.startsWith(le)).map((n)=>n.slice(le.length)).filter((n)=>Ut.test(n)&&!t.has(n)),Ue=new WeakMap,P=(e)=>{let t=Ue.get(e);if(t)return t;let n={batches:[],unmerged:[],loaded:!1,inFlight:new Set,discarded:0,unsaved:0};return Ue.set(e,n),n},Xe=(e,t)=>{P(e).report=t},$e=(e,t)=>{let n=P(e);if(n.report===t)n.report=void 0},Ge=(e)=>{if(e.discarded===0&&e.unsaved===0)return;let{discarded:t,unsaved:n}=e;e.discarded=0,e.unsaved=0,e.report?.({diagnostic:"outbox_discarded",attributes:{"app.sdk.outbox_discarded":t,"app.sdk.outbox_unsaved":n}})},fe=(e,t)=>{let n=e.report;if(!n)return;w(t,(r)=>{if(!r&&e.report===n)n({diagnostic:"outbox_persist_failed"})})},w=(e,t)=>U(e)?Promise.resolve(e).then(t):t(e),W=(e)=>e.some(U)?Promise.all(e):e,Me=(e,t)=>W(t.map((n)=>Oe(e,n))),F=(e,t,n)=>n.length===0?k(e,t):q(e,t,JSON.stringify(n)),D=(e)=>e.map((t)=>t.id),Le=(e)=>{let t=new Set;return e.filter((n)=>{if(t.has(n.id))return!1;return t.add(n.id),!0})},ge=(e)=>{let t=P(e);if(!t.loaded)return t.unmergedRead!==!1&&F(e,ue,D(t.unmerged));return w(F(e,De,D(t.batches)),(n)=>n&&t.unmergedRead?w(k(e,ue),()=>n):n)},qe=(e)=>{let t=0,n=0;for(let r=e.length-1;r>=0;r-=1){if(t+=e[r].length,n===Ke||t>je&&n>0)break;n+=1}return e.slice(e.length-n)},pe=(e,t)=>{let n=0,r=0;for(let i=t.length-1;i>=0;i-=1){let o=t[i]?.envelopes??[];n+=o.length;for(let s of o)r+=s.length;if(i<t.length-1&&(n>Ke||r>je)){let s=t.splice(0,i+1);for(let l of s)e.discarded+=l.envelopes?.length??0;return s}}return[]},Q=(e)=>{try{return JSON.parse(e)}catch{return}},Ye=(e)=>Array.isArray(e)?e.filter((t)=>typeof t==="string"):[],J=(e)=>Ye(e?Q(e):void 0),ce=(e,t)=>{let n=t?Q(t):void 0,r=Ye(n).filter((o)=>{let s=Q(o);return typeof s==="object"&&s!==null}),i=!t?0:Array.isArray(n)?n.length-r.length:1;if(e.discarded+=i,i)e.warn?.("discarded a stored crash report that is not valid JSON."),e.warn=void 0;return{envelopes:r,discarded:i}},Lt=(e,t,[n,r,i,o,s],l,u)=>{if(r)t.unmergedRead=!0;else if(t.unmergedRead===void 0)t.unmergedRead=!1;let c=new Set,f=new Map,v=(m)=>m.flatMap((p)=>{let C=f.get(p);if(C)return C;let _=l.get(p),x;if(!_)x=[{id:p}];else if(_.value===null)x=[];else{let{envelopes:O,discarded:I}=ce(t,_.value);if(O.length===0)c.add(p),x=[];else{if(I)F(e,T(p),O);x=[{id:p,envelopes:O}]}}return f.set(p,x),x}),h=v(J(n?.value)),b=v(J(r?.value)),Y=new Set(D([...t.batches,...t.unmerged])),z=v(u.filter((m)=>!Y.has(m)));if(!n&&t.unmergedRead===!1){t.discarded=0,t.unsaved=0;return}let S=new Set(D([...h,...b,...z,...t.batches,...t.unmerged])),N=[],M=(m,p)=>{if(!m||p.length===0||S.has(m))return!0;return S.add(m),c.delete(m),N.push({id:m,envelopes:p}),F(e,T(m),p)},L=[];for(let[m,p,C]of[[i,"legacy",Be],[o,"legacy-unmerged",Fe]]){if(!m?.value)continue;L.push([C,M(p,ce(t,m.value).envelopes)])}let A=s?.value?Q(s.value):void 0;if(typeof A?.discarded==="number"&&A.discarded>0)t.unsaved+=Math.floor(A.discarded);let E=M(typeof A?.id==="string"?A.id:void 0,ce(t,JSON.stringify(A?.envelopes??[])).envelopes),R;if(n)t.batches=Le([...h,...b,...z,...N,...t.unmerged]),t.unmerged=[],t.loaded=!0,R=pe(t,t.batches);else t.unmerged=Le([...b,...N,...t.unmerged]),R=pe(t,t.unmerged);Ge(t),w(ge(e),(m)=>{for(let p of D(R))k(e,T(p));if(!m)return;for(let p of c)k(e,T(p));return w(W([E,...L.map(([,p])=>p)]),([p,...C])=>{for(let[_,[x]]of L.entries())if(C[_])k(e,x);if(!s||!p)return;return w(s.value?k(e,B):!0,()=>{t.queueRead=!0})})})},ve=(e,t)=>{let n=P(e);if(n.loading)return n.loading;n.warn??=t;let r=Ie(e),i=w(Me(e,[De,ue,Be,Fe,B]),(s)=>w(r,(l)=>{let u=[...new Set([...J(s[0]?.value),...J(s[1]?.value)])],c=s[0]&&s[1]?Mt(l,new Set(u)):[],f=[...u,...c];return w(Me(e,f.map(T)),(v)=>{Lt(e,n,s,new Map(f.map((h,b)=>[h,v[b]])),c)})}));if(!U(i)){if(n.loaded)n.loading=Promise.resolve();return Promise.resolve()}let o=i.then(()=>{if(!n.loaded)n.loading=void 0});return n.loading=o,o},Ve=async(e,t,n)=>{let r=P(e),i=n.filter((c)=>!r.inFlight.has(c));if(i.length===0)return;for(let c of i)r.inFlight.add(c);let o;try{o=await Promise.all(i.map((c)=>t.sendEnvelope(c)))}finally{for(let c of i)r.inFlight.delete(c)}let s=new Set(i.filter((c,f)=>o[f]));if(s.size===0)return;let l=[];for(let c of[r.batches,r.unmerged])for(let f of c){let v=f.envelopes?.filter((h)=>!s.has(h));if(!v||v.length===f.envelopes?.length)continue;if(f.envelopes=v,v.length>0)F(e,T(f.id),v);else l.push([c,f])}let u=await W(l.map(([,c])=>w(k(e,T(c.id)),(f)=>f||q(e,T(c.id),"[]"))));l.forEach(([c,f],v)=>{let h=c.indexOf(f);if(u[v]&&h>=0)c.splice(h,1)}),await ge(e)},Qe=(e,t,n)=>{let r=t.drainEnvelopes({[ze]:n}),i=qe(r);if(i.length===0)return!0;let o=P(e);o.discarded+=r.length-i.length;let s=o.loaded?o.batches:o.unmerged;s.push({id:n,envelopes:i});let l=pe(o,s),u=F(e,T(n),i),c=ge(e),f=c===!0&&u===!0;for(let v of D(l))k(e,T(v));if(Ge(o),fe(o,u),o.loaded||o.unmergedRead!==!1)fe(o,c);if(o.queueSaved===t)o.queueSaved=void 0,w(W([u,c]),(v)=>{if(v.every(Boolean)&&o.queueSaved===void 0)k(e,B)});if(!f)Ve(e,t,i);return f},me=async(e,t)=>{await ve(e);let n=P(e);await Ve(e,t,[...new Set([...n.batches,...n.unmerged].flatMap((r)=>r.envelopes??[]))])},Je=(e,t,n)=>{let r=P(e);if(!r.queueRead)return;let i=t.snapshotEnvelopes({[ze]:n}),o=qe(i);if(r.queueSaved=o.length>0?t:void 0,r.queueSaved){let s=i.length-o.length;fe(r,q(e,B,JSON.stringify(s>0?{id:n,envelopes:o,discarded:s}:{id:n,envelopes:o})))}else k(e,B)},We=(e,t)=>{let n=P(e);if(n.queueSaved!==t)return;n.queueSaved=void 0,k(e,B)};var Dt=5000,Bt=57344,Ft=500,zt=200,Kt=["x-request-id","cf-ray","x-vercel-id","x-amz-cf-id","fly-request-id"],jt=["sazabi.session","sazabi.distinctId"],Xt=2000,$t="javascript",Ze=(e,t)=>({type:"custom",body:`identify ${e}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.custom.name":"identify",...t?Z(t,"custom"):{}}}),Gt=(e)=>{let t=globalThis.fetch;if(typeof t!=="function")return;let n=(a,g)=>t(a,g),r=be(e);if(!r)return;let i=`${r.baseUrl}/v1/logs`,o=rt(),s=e.storage,l=(a)=>console.warn(`${H} ${a}`),u=ct({url:i,publicKey:r.publicKey,resourceAttributes:{"service.name":e.serviceName,"service.version":e.serviceVersion,"deployment.environment":e.environment,"telemetry.sdk.name":ne,"telemetry.sdk.version":V,"telemetry.sdk.language":$t,...ut()},scope:{name:ne,version:V},fetchImpl:n,flushIntervalMs:e.flushIntervalMs??Dt,maxBatchBytes:e.maxBatchBytes??Bt,maxQueuedEvents:e.maxQueuedEvents??Ft,warn:l,onHealth:(a)=>M(a),onIdle:()=>{if(s)We(s,u)}}),c,f=[],v=0,h=!1,b=e.network??{},Y=(a)=>nt(a,b.redactQueryParams),z=(a,g,y=ae())=>{g.touch();let te={"app.event_type":a.type,"session.id":g.getSessionId(),"session.window_id":g.getWindowId(),"session.distinct_id":g.getDistinctId(),"app.screen.name":y.name,"app.screen.url":y.path===void 0?void 0:Y(y.path),"derived.source":"sdk"};u.enqueue(dt(a,te))},S=(a)=>{if(h)return;try{if(c)z(a,c);else if(v<zt||a.type==="sdk_health")f.push({kind:"event",event:a,screen:ae()}),v+=1}catch{}},N=(a)=>{try{S(a())}catch{}},M=at(S);if(s)Xe(s,M),ve(s,l);let L=ft(),A=(a)=>he({url:a,base:r.baseUrl})||L!==void 0&&he({url:a,base:L})||j()&&a.includes("/symbolicate"),E=[];if(s)E.push(()=>$e(s,M));let R,m=!1;E.push(()=>{if(R!==void 0)clearTimeout(R);R=void 0});let p=Re({emit:S,unhandledRejections:e.errors?.unhandledRejections!==!1,previousRejectionTracker:e.errors?.previousRejectionTracker,onFatal:(a)=>{m=!0,u.holdFlushes(!0);try{if(ee(),S(a),s)Qe(s,u,ye(o,8))}finally{u.holdFlushes(!1)}if(!s){u.flush();return}if(R===void 0&&!h)R=setTimeout(()=>{R=void 0,me(s,u)},Xt)}});if(E.push(()=>p.teardown()),e.pointer?.capture!==!1){let a=ot({emit:S,randomBytes:o,sampleIntervalMs:e.pointer?.sampleIntervalMs,partialIntervalMs:e.pointer?.partialIntervalMs});se(a),E.push(()=>{se(void 0),a.teardown()})}if(de(S,Y),E.push(()=>de(void 0)),e.console?.capture!==!1){let a=tt({emit:S,levels:e.console?.levels??["error","warn"],selfPrefix:H});E.push(()=>a.teardown())}let C=b.capture??!0,_=b.propagateTraceContext??!0;if(C||_){let a=vt({emit:S,traceContext:st({sampledFlag:b.sampledFlag??!1,randomBytes:o}),capture:C,propagateTraceContext:_,allowlist:b.allowlist??[],redactQueryParams:b.redactQueryParams,requestIdHeaders:b.requestIdHeaders??Kt,isInternalUrl:A,resolveUrl:pt,isDefaultInjectionTarget:()=>!0});E.push(()=>a.teardown())}let x=Ae({emit:S,onBackground:()=>{if(s)Je(s,u,ye(o,8));u.flush()}});E.push(()=>x.teardown());let O,I;if(s){let a=He(s,jt);O=a.store,I=a.ready}else O=G(),I=Promise.resolve();let ee=()=>{if(c||h)return;let a=it({store:O,windowStore:G(),randomBytes:o});if(c=a,d.pendingReset)a.reset(),d.pendingReset=!1;let g=d.pendingIdentity;if(d.pendingIdentity=void 0,g)a.setDistinctId(g.distinctId),S(Ze(g.distinctId,g.traits));for(let y of f.splice(0))try{if(y.kind==="identify")a.setDistinctId(y.distinctId);else if(y.kind==="reset")a.reset();else z(y.event,a,y.screen)}catch{}if(s&&!m)me(s,u)},Se=(a)=>{let g=f.length;while(g>0&&f[g-1]?.kind!=="event")g-=1;let y=f.splice(g);if(a.kind==="reset"||y.some((te)=>te.kind==="reset"))f.push({kind:"reset"});if(a.kind==="identify")f.push(a)};d.instance={identify(a,g){N(()=>{if(c)c.setDistinctId(a);else Se({kind:"identify",distinctId:a});return Ze(a,g)})},reset(){try{if(c)c.reset();else Se({kind:"reset"})}catch{}},addEvent(a,g){N(()=>({type:"custom",body:`custom ${a}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.custom.name":a,...g?Z(g,"custom"):{}}}))},log(a,g,y){N(()=>({type:"log",body:g,severity:a,timeUnixMs:Date.now(),attributes:y?Z(y):{}}))},async flush(){await I,await u.flush()},async shutdown(){for(let a of E.reverse())try{a()}catch{}h=!0,gt(),_e(),await I,await u.shutdown()}},I.then(ee,ee)},et=(e)=>{try{Gt(e)}catch{}},xn=(e)=>{if(lt()){if(!d.warnedWebHost)d.warnedWebHost=!0,console.warn(`${H} this app is running in a browser; use @sazabi/browser instead. SDK disabled.`);return}if(d.initialized)return;d.initialized=!0,d.generation+=1;let t=d.generation;if(!e.serviceName||!be(e)){console.warn(`${H} init() requires intakeUrl and serviceName; SDK disabled. Pass publicKey too if the intake URL is a proxy that carries no key.`);return}if(e.consent===void 0){et(e);return}try{Promise.resolve(e.consent()).then((n)=>{if(n===!0&&t===d.generation)et(e)}).catch(()=>{})}catch{}},Tn=(e,t)=>{if(d.instance)d.instance.identify(e,t);else d.pendingIdentity={distinctId:e,traits:t}},Cn=()=>{if(d.instance)d.instance.reset();else d.pendingReset=!0,d.pendingIdentity=void 0},Pn=(e,t)=>{d.instance?.addEvent(e,t)},An=(e,t,n)=>{d.instance?.log(e,t,n)},_n=async()=>{await d.instance?.flush()},Nn=async()=>{let e=d.instance;d.instance=void 0,d.initialized=!1,d.generation+=1,d.pendingIdentity=void 0,d.pendingReset=!1,await e?.shutdown()};export{V as SDK_VERSION,Ce as SazabiRoot,Pn as addEvent,_n as flush,Tn as identify,xn as init,An as log,Cn as reset,Nn as shutdown,It as trackNavigation};
1
+ import{n,i,e,r,t,a,s,c,o,u,l,p,f}from"./chunk-h2nxjrr9.js";var ee=(d,m=4096)=>d.length>m?d.slice(0,m):d,ge=(d,m="",g=0)=>{let y={};for(let[b,v]of Object.entries(d)){let S=m?`${m}.${b}`:b;if(v===null||v===void 0)continue;if(typeof v==="object"&&!Array.isArray(v)&&g<4){Object.assign(y,ge(v,S,g+1));continue}if(typeof v==="number"||typeof v==="boolean")y[S]=v;else if(typeof v==="string")y[S]=ee(v);else try{y[S]=ee(JSON.stringify(v)??"")}catch{}}return y};var qt={error:"ERROR",warn:"WARN",info:"INFO",debug:"DEBUG"},Ie=0,Ce=(d)=>{Ie+=1;try{d()}finally{Ie-=1}},We=1000,Gt=4000,Qt=(d)=>{let m;if(typeof d==="string")m=d;else if(d instanceof Error)m=`${d.name}: ${d.message}`;else try{m=JSON.stringify(d)??String(d)}catch{m=String(d)}return m.length>We?`${m.slice(0,We)}…`:m},Je=(d)=>{let m=[],g=!1;for(let y of d.levels){let b=console[y];if(typeof b!=="function"||i(b))continue;let v=function(...S){if(b.apply(this??console,S),g||Ie>0)return;try{if(typeof S[0]==="string"&&S[0].startsWith(d.selfPrefix))return;g=!0;let k=S.map(Qt).join(" ").slice(0,Gt);d.emit({type:"log",body:k||`console.${y}`,severity:qt[y],timeUnixMs:Date.now(),attributes:{"app.console.level":y}})}catch{}finally{g=!1}};n(v);try{console[y]=v}catch{continue}m.push(()=>{if(console[y]===v)console[y]=b})}return{teardown(){for(let y of m)try{y()}catch{}}}};var Wt=/^([0-9a-f]{32})\./,Jt=/^[a-z0-9-]+?-([0-9a-f]{32})\./,Zt=(d)=>{let m=e(d)?.hostname;if(!m)return;let g=(Wt.exec(m)??Jt.exec(m))?.[1];return g?`sazabi_public_${g}`:void 0},Ze="/v1/logs",en=(d)=>{let m=e(d);if(!m)return;if(m.protocol!=="https:"&&m.protocol!=="http:")return;let g=m.pathname.replace(/\/+$/,"");if(g.endsWith(Ze))g=g.slice(0,-Ze.length);return`${m.origin}${g}`},Pe=(d)=>{let m=d.intakeUrl??d.intakeHost;if(!m)return;let g=en(m);if(!g)return;let y=d.publicKey??Zt(m);if(!y)return;return{baseUrl:g,publicKey:y}};var et=()=>{let d=globalThis.crypto,m=d?.getRandomValues;if(typeof m==="function")return(b)=>{let v=new Uint8Array(b);return m.call(d,v),v};let g=(Date.now()^2654435769)>>>0,y=Math.random()*4294967295>>>0;return(b)=>{let v=new Uint8Array(b);for(let S=0;S<b;S+=1){let k=g,w=y;g=w,k^=k<<23,k^=k>>>17,k^=w^w>>>26,y=k>>>0,v[S]=g+y&255}return v}},Oe=(d)=>Array.from(d,(m)=>m.toString(16).padStart(2,"0")).join(""),Se=(d,m)=>Oe(d(m)),ae=(d,m)=>`${m}_${Date.now().toString(36)}${Se(d,8)}`;var tn=1000,nn=1e4,rn=10,on=500,tt=1000,nt=30,sn=4,an=10,Me=(d,m,g,y)=>Math.hypot(g-d,y-m),rt=(d)=>({"app.widget.id":d?.id,"app.widget.name":d?.name,"app.widget.tag":d?.tag}),ot=(d)=>{let m=d.sampleIntervalMs??tn,g=d.partialIntervalMs??nn,y=new Map,b=[],v=Number.NEGATIVE_INFINITY,S,k=(h,C)=>{h.path.push(`${Math.round(C-h.startPerf)}:${Math.round(h.lastX)},${Math.round(h.lastY)}`),h.sampleCount+=1,h.lastSamplePerf=C},w=(h,C,U)=>{let{contact:M}=h,O=U===void 0,z=Math.round(C-h.startPerf),F=Me(M.x,M.y,h.lastX,h.lastY);try{d.emit({type:"pointer",body:`pointer ${M.type} ${z}ms ${Math.round(F)}px${O?" (ongoing)":""}`,severity:"INFO",timeUnixMs:O?Date.now():h.startUnixMs,attributes:{"app.pointer.id":String(M.id),"app.pointer.type":M.type,"app.pointer.primary":M.primary,"app.pointer.gesture_id":h.gestureId,"app.screen.coordinate.x":Math.round(M.x),"app.screen.coordinate.y":Math.round(M.y),"app.pointer.end.x":Math.round(h.lastX),"app.pointer.end.y":Math.round(h.lastY),"app.pointer.distance":Math.round(F),"app.pointer.duration_ms":z,"app.pointer.pressure":h.maxPressure,"app.pointer.concurrent":h.maxConcurrent,"app.pointer.path":h.path.join(";")||void 0,"app.pointer.sample_count":h.sampleCount,"app.pointer.partial":O?!0:void 0,"app.pointer.ended_by":U,...rt(M.target)}})}catch{}h.path=[]},E=(h)=>{h.partialTimer=setTimeout(()=>{h.partialTimer=void 0;try{let C=t();if(C-h.lastSamplePerf>=m)k(h,C);w(h,C,void 0),E(h)}catch{}},g)},I=(h,C)=>{let U=h.target?.name,M=U?`"${U}"`:h.target?.id??`${Math.round(h.x)},${Math.round(h.y)}`,O={...rt(h.target),"app.pointer.type":h.pointerType,"app.pointer.gesture_id":h.gestureId,"app.screen.coordinate.x":Math.round(h.x),"app.screen.coordinate.y":Math.round(h.y)};try{d.emit({type:"click",body:`click ${M}`,severity:"INFO",timeUnixMs:h.timeUnixMs,attributes:O})}catch{}b.push({time:C,x:h.x,y:h.y});while(b.length>0&&C-b[0].time>tt)b.shift();let z=b.filter((F)=>Math.abs(F.x-h.x)<=nt&&Math.abs(F.y-h.y)<=nt);if(z.length>=sn&&C-v>tt){v=C;try{d.emit({type:"rage_click",body:`rage click ${M}`,severity:"WARN",timeUnixMs:Date.now(),attributes:{...O,"app.pointer.tap_count":z.length}})}catch{}}try{d.onTap?.({x:h.x,y:h.y,target:h.target,gestureId:h.gestureId})}catch{}},H=(h,C)=>{let{contact:U}=h;if(h.maxConcurrent!==1||(U.button??0)!==0||C-h.startPerf>on||h.maxDistance>rn)return;I({x:h.lastX,y:h.lastY,target:U.target,pointerType:U.type,gestureId:h.gestureId,timeUnixMs:h.startUnixMs},C)},B=(h,C,U,M)=>{let O=t();if(y.delete(h.contact.id),h.partialTimer!==void 0)clearTimeout(h.partialTimer),h.partialTimer=void 0;if(h.lastX=C,h.lastY=U,h.maxDistance=Math.max(h.maxDistance,Me(h.contact.x,h.contact.y,C,U)),w(h,O,M),M==="up")H(h,O);if(y.size===0)S=void 0};return{down(h){try{let C=y.get(h.id);if(C)B(C,C.lastX,C.lastY,"cancel");if(y.size>=an)return;let U=t();if(y.size===0||S===void 0)S=ae(d.randomBytes,"gest");let M=y.size+1;for(let z of y.values())z.maxConcurrent=Math.max(z.maxConcurrent,M);let O={contact:h,gestureId:S,startUnixMs:Date.now(),startPerf:U,lastSamplePerf:U,lastX:h.x,lastY:h.y,maxDistance:0,maxPressure:h.pressure,maxConcurrent:M,path:[],sampleCount:0};k(O,U),y.set(h.id,O),E(O)}catch{}},move(h,C,U,M){try{let O=y.get(h);if(!O)return;if(O.lastX=C,O.lastY=U,O.maxDistance=Math.max(O.maxDistance,Me(O.contact.x,O.contact.y,C,U)),M!==void 0)O.maxPressure=Math.max(O.maxPressure??0,M);let z=t();if(z-O.lastSamplePerf>=m)k(O,z)}catch{}},up(h,C,U){try{let M=y.get(h);if(M)B(M,C,U,"up")}catch{}},cancel(h){try{let C=y.get(h);if(C)B(C,C.lastX,C.lastY,"cancel")}catch{}},tap(h){try{I({x:h.x,y:h.y,target:h.target,pointerType:"none",timeUnixMs:Date.now()},t())}catch{}},teardown(){for(let h of Array.from(y.values()))try{B(h,h.lastX,h.lastY,"teardown")}catch{}y.clear(),b.length=0}}};var Ee="sazabi.session",Ne="sazabi.windowId",ke="sazabi.distinctId",dn=1800000,cn=86400000,un=60000,ln=5000,ye=()=>{let d=new Map;return{get:(m)=>d.get(m)??null,set:(m,g)=>{d.set(m,g)},remove:(m)=>{d.delete(m)}}},pn=(d)=>{if(!d)return;try{let m=JSON.parse(d);if(typeof m==="object"&&m!==null&&typeof m.id==="string"&&typeof m.startedAt==="number"&&typeof m.lastActivityAt==="number")return m}catch{}return},st=(d)=>{let{store:m,windowStore:g,randomBytes:y}=d,b=0,v=()=>{let w=Date.now(),E=pn(m.get(Ee));if(E&&w-E.lastActivityAt<=dn&&w-E.lastActivityAt>=-un&&w-E.startedAt<=cn)return E;let I={id:ae(y,"sess"),startedAt:w,lastActivityAt:w};return m.set(Ee,JSON.stringify(I)),b=w,I},S=g.get(Ne);if(!S)S=ae(y,"win"),g.set(Ne,S);let k=()=>{let w=Date.now();m.set(Ee,JSON.stringify({id:ae(y,"sess"),startedAt:w,lastActivityAt:w})),b=w,S=ae(y,"win"),g.set(Ne,S)};return{getSessionId(){return v().id},getWindowId(){return S},getDistinctId(){return m.get(ke)??void 0},setDistinctId(w){let E=m.get(ke)??void 0;if(E!==void 0&&E!==w)k();m.set(ke,w)},reset(){m.remove(ke),k()},touch(){let w=Date.now(),E=v();if(w-b>=ln)m.set(Ee,JSON.stringify({...E,lastActivityAt:w})),b=w}}};var fn=1,mn=/^[0-9a-f]{32}$/,gn=/^[0-9a-f]{16}$/,yn="0".repeat(32),vn="0".repeat(16),it=(d,m)=>{let g;do g=d(m);while(g.every((y)=>y===0));return Oe(g)},hn=(d)=>{if(typeof d!=="object"||d===null)return!1;let{traceId:m,spanId:g,traceFlags:y}=d;return typeof m==="string"&&mn.test(m)&&m!==yn&&typeof g==="string"&&gn.test(g)&&g!==vn&&typeof y==="number"},bn=Symbol.for("opentelemetry.js.api.1"),Sn=Symbol.for("OpenTelemetry Context Key SPAN"),En=()=>{try{let y=globalThis[bn]?.context?.active?.()?.getValue?.(Sn)?.spanContext?.();return hn(y)?y:void 0}catch{return}},kn=(d)=>{let m=(d.traceFlags&255).toString(16).padStart(2,"0");return`00-${d.traceId}-${d.spanId}-${m}`},xn=(d)=>{try{return d.traceState?.serialize()||void 0}catch{return}},at=(d)=>{let m=()=>({traceId:it(d.randomBytes,16),spanId:it(d.randomBytes,8),traceFlags:d.sampledFlag?fn:0});return{forRequest(){let g=En()??m(),y={traceparent:kn(g)},b=xn(g);if(b)y.tracestate=b;return{headers:y,traceId:g.traceId,spanId:g.spanId}}}};var dt=(d)=>{let m=new Set;return(g)=>{if(m.has(g.diagnostic))return;m.add(g.diagnostic);try{d({type:"sdk_health",body:`sdk_health ${g.diagnostic}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{["app.sdk.diagnostic"]:g.diagnostic,...g.attributes}})}catch{}}};var wn={DEBUG:5,INFO:9,WARN:13,ERROR:17},Rn=1024,Tn=(d)=>{if(typeof d==="boolean")return{boolValue:d};if(typeof d==="number")return Number.isInteger(d)?{intValue:String(d)}:{doubleValue:d};return{stringValue:ee(d)}},xe=(d)=>{let m=[];for(let[g,y]of Object.entries(d)){if(y===void 0)continue;m.push({key:g,value:Tn(y)})}return m},ut=(d,m)=>{let g={timeUnixNano:`${d.timeUnixMs}000000`,severityNumber:wn[d.severity],severityText:d.severity,body:{stringValue:ee(d.body,Rn)},attributes:xe({...m,...d.attributes})};if(d.traceId)g.traceId=d.traceId;if(d.spanId)g.spanId=d.spanId;return g},De=(d)=>{let m=d.length;for(let g=0;g<d.length;g+=1){let y=d.charCodeAt(g);if(y<128)continue;if(y<2048)m+=1;else if(y>=55296&&y<=56319&&(d.charCodeAt(g+1)&64512)===56320)m+=2,g+=1;else m+=2}return m},An=4,ct=1048576,_n=30000,In=1000,Cn=60000,Pn=300000,On="app.sdk.dropped_events",Mn="x-sazabi-sdk",Le={kind:"retry",network:!0},Nn=(d)=>{try{let m=d.headers?.get?.("retry-after");if(!m)return;let g=Number(m),y=Number.isFinite(g)?g*1000:Date.parse(m)-Date.now();return y>0?Math.min(y,Pn):void 0}catch{return}},Dn=(d)=>{let m=d?.status;if(typeof m!=="number"||m>=200&&m<300)return{kind:"sent"};if(m===408||m===429||m>=500)return{kind:"retry",retryAfterMs:Nn(d)};return{kind:m===413?"split":"drop",status:m}},lt=(d)=>{let m=[],g=0,y=0,b,v=!1,S=!1,k=new Set,w=new Set,E=!1,I=0,H=0,B=0,h=0,C=new Set,U=(x)=>{try{d.onHealth?.(x)}catch{}},M=(x,_)=>{if(C.has(x))return;C.add(x);try{d.warn?.(_)}catch{}},O=(x)=>JSON.stringify({resourceLogs:[{resource:{attributes:xe(d.resourceAttributes)},scopeLogs:[{scope:{name:d.scope.name,version:d.scope.version},logRecords:x}]}]}),z=De(O([]))+64,F=Math.max(4096,d.maxBatchBytes-z),j=()=>{if(b!==void 0)clearTimeout(b),b=void 0},Z=()=>{if(b!==void 0||v)return;let x=B-Date.now();b=setTimeout(()=>{b=void 0,V()},x>0?x:d.flushIntervalMs)},ne=()=>{while(m.length>d.maxQueuedEvents||g>ct){let x=m.shift();if(g-=x.bytes,I+=1,x.saved)E=!0;M("full","the event queue is full (is the device offline?); dropping the oldest events.")}},K=(x,_)=>{let D=[];if(_<=0)return D;let A=[],P=0;for(let X of x){if(A.length>0&&P+X.bytes>F){if(D.push(A),A=[],P=0,D.length>=_)break}A.push(X),P+=X.bytes}if(A.length>0)D.push(A);return D},N=(x)=>{let _=K(m,x),D=0;for(let A of _)D+=A.length;for(let A of m.splice(0,D))g-=A.bytes;return _},Y=(x,_)=>_.length===0?x:{...x,attributes:[...x.attributes.filter((D)=>!_.some(({key:A})=>A===D.key)),..._]},Q=(x)=>{let _=x.map((P)=>P.record),D=I,A=_[0];if(D>0&&A)I=0,_[0]={...A,attributes:[...A.attributes,{key:On,value:{intValue:String(D)}}]};return{records:_,count:A?D:0}},q=(x,_=!1)=>{let D=globalThis.AbortController,A,P;try{A=D?new D:void 0,P=d.fetchImpl(d.url,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${d.publicKey}`,[Mn]:`${d.scope.name}/${d.scope.version}`},body:x,keepalive:_,signal:A?.signal})}catch{return Promise.resolve(Le)}return new Promise((X)=>{let be=setTimeout(()=>{try{A?.abort?.()}catch{}X(Le)},_n);Promise.resolve(P).then(Dn,()=>Le).then((jt)=>{clearTimeout(be),X(jt)})})},W=()=>Date.now()<B,se=(x)=>{m.push(...x),m.sort((_,D)=>_.seq-D.seq);for(let _ of x)g+=_.bytes;ne()},_e=(x,_)=>{let D=Date.now();if(D>=B){if(H+=1,_)h+=1}let A=Math.min(Cn,In*2**(H-1)),P=Math.max(x??0,A/2+Math.random()*A/2);B=Math.max(B,D+P),j(),Z()},ue=async(x,_)=>{let{records:D,count:A}=Q(x),P=await q(O(D),_);if(h>0&&(P.kind!=="retry"||P.network!==!0)){let X=h;h=0,U({diagnostic:"intake_unreachable",attributes:{"app.sdk.attempts":X}})}if(P.kind==="sent"){H=0;return}if(I+=A,P.kind==="split"&&x.length>1){let X=Math.ceil(x.length/2);for(let be of[x.slice(0,X),x.slice(X)])if(!_&&!v&&W())se(be),Z();else await ue(be,_);return}if(P.kind==="retry"){if(v){if(x.some((X)=>X.saved))E=!0;return}se(x),_e(P.retryAfterMs,P.network===!0);return}I+=x.length,M(String(P.status),`the intake refused a batch with HTTP ${P.status}; dropped ${x.length} event(s).`),U({diagnostic:"intake_rejected",attributes:{"app.sdk.http_status":P.status}})},re=0,ie=new Map,me=(x,_)=>{let D=re;re+=1;let A=ue(x,_).then(()=>{if(k.delete(A),w.delete(x),ie.delete(D),m.length===0&&k.size===0&&!E)try{d.onIdle?.()}catch{}});return k.add(A),w.add(x),ie.set(D,A),A},R=null,L=async()=>{while(!W()){for(let x of N(An-k.size))me(x,!1);if(m.length===0)break;await Promise.race(k)}},V=async(x)=>{j();let _=x?.keepalive===!0;if(_||v){await Promise.all(N(Number.POSITIVE_INFINITY).map((P)=>me(P,_)));return}let D=re;while(m.length>0&&!W()){if(R===null)R=L().finally(()=>{R=null});await R}if(m.length>0)Z();let A=[];for(let[P,X]of ie)if(P>=D)A.push(X);await Promise.all(A)};return{enqueue(x){if(v)return;let _=De(JSON.stringify(x))+1;if(_>ct){I+=1,M("oversized","dropped an event larger than the 1 MiB queue limit.");return}if(m.push({record:x,bytes:_,seq:y}),y+=1,g+=_,ne(),S)return;if(g>=F&&!W())V();else Z()},flush:V,drainEnvelopes(x){j();let _=x?xe(x):[];return N(Number.POSITIVE_INFINITY).map((D)=>{let{records:A}=Q(D);return O(A.map((P)=>Y(P,_)))})},snapshotEnvelopes(x){let _=xe(x);E=!1;for(let A of m){A.record=Y(A.record,_);let P=De(JSON.stringify(A.record))+1;g+=P-A.bytes,A.bytes=P,A.saved=!0}let D=new Set(m);for(let A of w)for(let P of A)if(P.saved)D.add(P);return K([...D].sort((A,P)=>A.seq-P.seq),Number.POSITIVE_INFINITY).map((A)=>O(A.map((P)=>P.record)))},holdFlushes(x){S=x},async sendEnvelope(x){let _=await q(x);if(_.kind==="retry")return!1;if(_.kind!=="sent")M(String(_.status),`the intake refused a stored crash report with HTTP ${_.status}; dropped it.`),U({diagnostic:"intake_rejected",attributes:{"app.sdk.http_status":_.status}});return!0},async shutdown(){v=!0,await V()}}};var pt=(d,m)=>{if(!d)return(y)=>y;let g=!1;return(y)=>{if(g)return m({reason:"before_send_nested",message:"an event was captured while beforeSend was running; nested events are dropped."}),null;g=!0;let b;try{b=d(y)}catch(v){return m({reason:"before_send_threw",message:`beforeSend threw (${v instanceof Error?v.message:String(v)}); the event was dropped.`}),null}finally{g=!1}if(b===null)return null;if(typeof b!=="object"||typeof b.type!=="string"||typeof b.body!=="string"||typeof b.severity!=="string"||typeof b.timeUnixMs!=="number"||typeof b.attributes!=="object"||b.attributes===null)return m({reason:"before_send_invalid",message:"beforeSend must return the event or null; the event was dropped."}),null;return b}};var T=globalThis.__sazabiReactNative??={initialized:!1,warnedWebHost:!1,warnedRejectionSlot:!1,generation:0,pendingReset:!1,screen:{}};var Ue="@sazabi/react-native",we="0.1.1",de="[@sazabi/react-native]";var ft=()=>globalThis.HermesInternal,mt=(d)=>{try{d()}catch{}},Ln=(d)=>{try{let m=typeof d==="string"?d:typeof d==="object"&&d!==null?JSON.stringify(d)??String(d):String(d);return ee(m)}catch{try{return ee(Object.prototype.toString.call(d))}catch{return"[unreadable thrown value]"}}},He=(d,m)=>{let g=d instanceof Error?d:void 0,y=(S)=>{try{let k=g?.[S];return typeof k==="string"?ee(k):void 0}catch{return}},b=y("name")||(m==="unhandledrejection"?"UnhandledRejection":"Error"),v=g?y("message")??"":Ln(d);return{type:"error",body:ee(`${b}: ${v}`,512),severity:"ERROR",timeUnixMs:Date.now(),attributes:{"exception.type":b,"exception.message":v,"exception.stacktrace":y("stack")??"","app.error.kind":m}}},gt=(d)=>{try{T.renderErrorSink?.(d)}catch{}},Un=(d)=>{if(d instanceof Error)return d.stack||`${d.name}: ${d.message}`;if(typeof d==="string")return d;try{return JSON.stringify(d)??String(d)}catch{return String(d)}},Be=(d)=>{if(!o())return;try{let m=d();Ce(()=>console.warn(m))}catch{}},yt=(d)=>{let m=globalThis.ErrorUtils,g=m?.getGlobalHandler?.(),y=!0,b=!1,v=(k)=>{if(!y||b)return;b=!0,setTimeout(()=>{b=!1},0),d.onFatal(He(k,"fatal"))},S=(k,w)=>{let E=()=>g?.(k,w);if(!y){E();return}try{if(w)v(k);else d.emit(He(k,"uncaught"))}catch{}Ce(E)};if(m?.setGlobalHandler?.(S),T.renderErrorSink=v,d.unhandledRejections){let k=d.previousRejectionTracker;if(!k&&!T.warnedRejectionSlot&&o()&&typeof ft()?.enablePromiseRejectionTracker==="function")T.warnedRejectionSlot=!0,Be(()=>`${de} init() takes over Hermes's only promise rejection tracker slot, and a tracker another library installed before it cannot be seen. If one exists, pass errors.previousRejectionTracker to keep it running, or errors.unhandledRejections: false to leave the slot alone.`);let w={allRejections:!0,onUnhandled:(E,I)=>{if(y)try{d.emit(He(I,"unhandledrejection"))}catch{}if(k){mt(()=>k.onUnhandled(E,I));return}Be(()=>`Possible unhandled promise rejection (id: ${E}):
2
+ ${Un(I)}`)},onHandled:(E)=>{if(k){mt(()=>k.onHandled?.(E));return}Be(()=>`Promise rejection handled (id: ${E})
3
+ This means you can ignore any previous messages of the form "Possible unhandled promise rejection (id: ${E}):"`)}};try{ft()?.enablePromiseRejectionTracker?.(w)}catch{}}return{teardown(){if(y=!1,T.renderErrorSink===v)T.renderErrorSink=void 0;try{if(g&&m?.getGlobalHandler?.()===S)m.setGlobalHandler?.(g)}catch{}}}};import{Component as Hn,createElement as Bn}from"react";import{View as Fn}from"react-native";var Fe=(d)=>{T.tracker=d},Kn=60,$n=3,vt=64,Vn="sazabiName",zn="sazabiMask",ht=new Set(["button","link","tab","menuitem","checkbox","radio","switch","togglebutton","imagebutton","searchbox"]),ve=(d)=>{if(typeof d!=="string")return;let m=d.replace(/\s+/g," ").trim();if(!m)return;return m.length>vt?`${m.slice(0,vt)}…`:m},Yn=(d)=>{let m=d.type??d.elementType;if(typeof m==="function"){let g=m;return ve(g.displayName||g.name)}if(typeof m==="object"&&m!==null){let g=m.render??m.type;if(typeof g==="function"){let y=g;return ve(y.displayName||y.name)}}return},Xn=(d)=>{try{let m=d;if(!m||typeof m!=="object")return;let g,y=!1,b=!1,v=[];for(let S=0;m&&S<Kn;S+=1){let k=m.memoizedProps??void 0;if(k){if(k[zn])y=!0;if(g===void 0)g=ve(k[Vn])??ve(k.accessibilityLabel)??ve(k.testID);if(typeof k.onPress==="function"||typeof k.onPressIn==="function"||typeof k.accessibilityRole==="string"&&ht.has(k.accessibilityRole)||typeof k.role==="string"&&ht.has(k.role))b=!0}if(v.length<$n){let w=Yn(m);if(w&&w!=="SazabiRoot")v.unshift(w)}m=m.return}return{id:v.length>0?v.join(" > "):void 0,name:y?void 0:g,tag:v[v.length-1],interactive:b}}catch{return}},jn=(d)=>{let m=T.tracker;if(!m)return;try{let{changedTouches:g,touches:y}=d.nativeEvent,b=Xn(d._targetInst);for(let v of g)m.down({id:v.identifier,type:"touch",primary:y.length<=1,x:v.pageX,y:v.pageY,pressure:v.force||void 0,target:b})}catch{}},qn=(d)=>{let m=T.tracker;if(!m)return;try{for(let g of d.nativeEvent.changedTouches)m.move(g.identifier,g.pageX,g.pageY,g.force||void 0)}catch{}},Gn=(d)=>{let m=T.tracker;if(!m)return;try{for(let g of d.nativeEvent.changedTouches)m.up(g.identifier,g.pageX,g.pageY)}catch{}},Qn=(d)=>{let m=T.tracker;if(!m)return;try{for(let g of d.nativeEvent.changedTouches)m.cancel(g.identifier)}catch{}},Wn={flex:1};class bt extends Hn{static displayName="SazabiRoot";state={};static getDerivedStateFromError(d){return gt(d),{error:{value:d}}}render(){let d=this.state.error;if(d)throw d.value;return Bn(Fn,{style:Wn,collapsable:!1,onTouchStart:jn,onTouchMove:qn,onTouchEnd:Gn,onTouchCancel:Qn},this.props.children)}}import{AppState as St}from"react-native";var Et=(d)=>{let m=St.currentState,g=(b)=>{try{if(b===m)return;if(m=b,b!=="active"&&b!=="background"&&b!=="inactive")return;if(d.emit({type:"lifecycle",body:`lifecycle ${b}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.lifecycle.state":b}}),b!=="active")d.onBackground()}catch{}},y;try{y=St.addEventListener("change",g)}catch{}return{teardown(){try{y?.remove()}catch{}}}};var Ke=()=>T.screen,$e=(d,m)=>{T.navigationEmit=d,T.navigationRedactUrl=m},Jn=(d)=>{if(!d)return;let m=Object.keys(d);return m.length>0?m.join(","):void 0},Zn=(d)=>{let m=()=>{try{let y=d.getCurrentRoute();if(!y)return;let b=T.screen;if(y.key===b.key&&y.name===b.name&&y.path===b.path)return;T.screen={name:y.name,path:y.path,key:y.key},T.navigationEmit?.({type:"navigation",body:`navigation ${y.name}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.navigation.type":"screen","app.screen.name":y.name,"url.path":y.path===void 0?void 0:T.navigationRedactUrl?.(y.path)??y.path,"app.navigation.from":b.name,"app.navigation.params":Jn(y.params)}})}catch{}};m();let g;try{g=d.addListener("state",m)}catch{}return()=>{try{g?.()}catch{}}},kt=()=>{T.screen={},T.navigationEmit=void 0,T.navigationRedactUrl=void 0};var er=async(d,m)=>{try{let g=await d.getItem(m);return typeof g==="string"?g:null}catch{return null}},ce=(d)=>typeof d?.then==="function",xt=(d,m)=>{try{let g=d();return ce(g)?Promise.resolve(g).then(m,()=>{return}):m(g)}catch{return}},wt=(d,m)=>xt(()=>d.getItem(m),(g)=>({value:typeof g==="string"?g:null})),Rt=(d)=>xt(()=>d.getAllKeys?.(),(m)=>Array.isArray(m)?m.filter((g)=>typeof g==="string"):void 0),he=(d,m,g)=>{try{let y=d.setItem(m,g);return ce(y)?Promise.resolve(y).then(()=>!0,()=>!1):!0}catch{return!1}},G=(d,m)=>{try{let g=d.removeItem(m);return ce(g)?Promise.resolve(g).then(()=>!0,()=>!1):!0}catch{return!1}},Tt=(d,m)=>{let g=ye(),y=new Set,b=(async()=>{for(let v of m){let S=await er(d,v);if(S!==null&&!y.has(v))g.set(v,S)}})();return{store:{get:(v)=>g.get(v),set(v,S){g.set(v,S),y.add(v),he(d,v,S)},remove(v){g.remove(v),y.add(v),G(d,v)}},ready:b}};var ze="sazabi.outbox.",Ct="sazabi.outbox.index",Ye="sazabi.outbox.index.unmerged",Pt="sazabi.outbox",Ot="sazabi.outbox.unmerged",pe="sazabi.outbox.queue",Mt="app.outbox.id",Nt=20,Dt=524288,te=(d)=>`${ze}${d}`,tr=/^(?:[0-9a-f]{16}|legacy|legacy-unmerged)$/,nr=(d,m)=>(d??[]).filter((g)=>g.startsWith(ze)).map((g)=>g.slice(ze.length)).filter((g)=>tr.test(g)&&!m.has(g)),At=new WeakMap,oe=(d)=>{let m=At.get(d);if(m)return m;let g={batches:[],unmerged:[],loaded:!1,inFlight:new Set,discarded:0,unsaved:0};return At.set(d,g),g},Lt=(d,m)=>{oe(d).report=m},Ut=(d,m)=>{let g=oe(d);if(g.report===m)g.report=void 0},Ht=(d)=>{if(d.discarded===0&&d.unsaved===0)return;let{discarded:m,unsaved:g}=d;d.discarded=0,d.unsaved=0,d.report?.({diagnostic:"outbox_discarded",attributes:{"app.sdk.outbox_discarded":m,"app.sdk.outbox_unsaved":g}})},Xe=(d,m)=>{let g=d.report;if(!g)return;J(m,(y)=>{if(!y&&d.report===g)g({diagnostic:"outbox_persist_failed"})})},J=(d,m)=>ce(d)?Promise.resolve(d).then(m):m(d),Ae=(d)=>d.some(ce)?Promise.all(d):d,_t=(d,m)=>Ae(m.map((g)=>wt(d,g))),fe=(d,m,g)=>g.length===0?G(d,m):he(d,m,JSON.stringify(g)),le=(d)=>d.map((m)=>m.id),It=(d)=>{let m=new Set;return d.filter((g)=>{if(m.has(g.id))return!1;return m.add(g.id),!0})},qe=(d)=>{let m=oe(d);if(!m.loaded)return m.unmergedRead!==!1&&fe(d,Ye,le(m.unmerged));return J(fe(d,Ct,le(m.batches)),(g)=>g&&m.unmergedRead?J(G(d,Ye),()=>g):g)},Bt=(d)=>{let m=0,g=0;for(let y=d.length-1;y>=0;y-=1){if(m+=d[y].length,g===Nt||m>Dt&&g>0)break;g+=1}return d.slice(d.length-g)},je=(d,m)=>{let g=0,y=0;for(let b=m.length-1;b>=0;b-=1){let v=m[b]?.envelopes??[];g+=v.length;for(let S of v)y+=S.length;if(b<m.length-1&&(g>Nt||y>Dt)){let S=m.splice(0,b+1);for(let k of S)d.discarded+=k.envelopes?.length??0;return S}}return[]},Re=(d)=>{try{return JSON.parse(d)}catch{return}},Ft=(d)=>Array.isArray(d)?d.filter((m)=>typeof m==="string"):[],Te=(d)=>Ft(d?Re(d):void 0),Ve=(d,m)=>{let g=m?Re(m):void 0,y=Ft(g).filter((v)=>{let S=Re(v);return typeof S==="object"&&S!==null}),b=!m?0:Array.isArray(g)?g.length-y.length:1;if(d.discarded+=b,b)d.warn?.("discarded a stored crash report that is not valid JSON."),d.warn=void 0;return{envelopes:y,discarded:b}},rr=(d,m,[g,y,b,v,S],k,w)=>{if(y)m.unmergedRead=!0;else if(m.unmergedRead===void 0)m.unmergedRead=!1;let E=new Set,I=new Map,H=(K)=>K.flatMap((N)=>{let Y=I.get(N);if(Y)return Y;let Q=k.get(N),q;if(!Q)q=[{id:N}];else if(Q.value===null)q=[];else{let{envelopes:W,discarded:se}=Ve(m,Q.value);if(W.length===0)E.add(N),q=[];else{if(se)fe(d,te(N),W);q=[{id:N,envelopes:W}]}}return I.set(N,q),q}),B=H(Te(g?.value)),h=H(Te(y?.value)),C=new Set(le([...m.batches,...m.unmerged])),U=H(w.filter((K)=>!C.has(K)));if(!g&&m.unmergedRead===!1){m.discarded=0,m.unsaved=0;return}let M=new Set(le([...B,...h,...U,...m.batches,...m.unmerged])),O=[],z=(K,N)=>{if(!K||N.length===0||M.has(K))return!0;return M.add(K),E.delete(K),O.push({id:K,envelopes:N}),fe(d,te(K),N)},F=[];for(let[K,N,Y]of[[b,"legacy",Pt],[v,"legacy-unmerged",Ot]]){if(!K?.value)continue;F.push([Y,z(N,Ve(m,K.value).envelopes)])}let j=S?.value?Re(S.value):void 0;if(typeof j?.discarded==="number"&&j.discarded>0)m.unsaved+=Math.floor(j.discarded);let Z=z(typeof j?.id==="string"?j.id:void 0,Ve(m,JSON.stringify(j?.envelopes??[])).envelopes),ne;if(g)m.batches=It([...B,...h,...U,...O,...m.unmerged]),m.unmerged=[],m.loaded=!0,ne=je(m,m.batches);else m.unmerged=It([...h,...O,...m.unmerged]),ne=je(m,m.unmerged);Ht(m),J(qe(d),(K)=>{for(let N of le(ne))G(d,te(N));if(!K)return;for(let N of E)G(d,te(N));return J(Ae([Z,...F.map(([,N])=>N)]),([N,...Y])=>{for(let[Q,[q]]of F.entries())if(Y[Q])G(d,q);if(!S||!N)return;return J(S.value?G(d,pe):!0,()=>{m.queueRead=!0})})})},Ge=(d,m)=>{let g=oe(d);if(g.loading)return g.loading;g.warn??=m;let y=Rt(d),b=J(_t(d,[Ct,Ye,Pt,Ot,pe]),(S)=>J(y,(k)=>{let w=[...new Set([...Te(S[0]?.value),...Te(S[1]?.value)])],E=S[0]&&S[1]?nr(k,new Set(w)):[],I=[...w,...E];return J(_t(d,I.map(te)),(H)=>{rr(d,g,S,new Map(I.map((B,h)=>[B,H[h]])),E)})}));if(!ce(b)){if(g.loaded)g.loading=Promise.resolve();return Promise.resolve()}let v=b.then(()=>{if(!g.loaded)g.loading=void 0});return g.loading=v,v},Kt=async(d,m,g)=>{let y=oe(d),b=g.filter((E)=>!y.inFlight.has(E));if(b.length===0)return;for(let E of b)y.inFlight.add(E);let v;try{v=await Promise.all(b.map((E)=>m.sendEnvelope(E)))}finally{for(let E of b)y.inFlight.delete(E)}let S=new Set(b.filter((E,I)=>v[I]));if(S.size===0)return;let k=[];for(let E of[y.batches,y.unmerged])for(let I of E){let H=I.envelopes?.filter((B)=>!S.has(B));if(!H||H.length===I.envelopes?.length)continue;if(I.envelopes=H,H.length>0)fe(d,te(I.id),H);else k.push([E,I])}let w=await Ae(k.map(([,E])=>J(G(d,te(E.id)),(I)=>I||he(d,te(E.id),"[]"))));k.forEach(([E,I],H)=>{let B=E.indexOf(I);if(w[H]&&B>=0)E.splice(B,1)}),await qe(d)},$t=(d,m,g)=>{let y=m.drainEnvelopes({[Mt]:g}),b=Bt(y);if(b.length===0)return!0;let v=oe(d);v.discarded+=y.length-b.length;let S=v.loaded?v.batches:v.unmerged;S.push({id:g,envelopes:b});let k=je(v,S),w=fe(d,te(g),b),E=qe(d),I=E===!0&&w===!0;for(let H of le(k))G(d,te(H));if(Ht(v),Xe(v,w),v.loaded||v.unmergedRead!==!1)Xe(v,E);if(v.queueSaved===m)v.queueSaved=void 0,J(Ae([w,E]),(H)=>{if(H.every(Boolean)&&v.queueSaved===void 0)G(d,pe)});if(!I)Kt(d,m,b);return I},Qe=async(d,m)=>{await Ge(d);let g=oe(d);await Kt(d,m,[...new Set([...g.batches,...g.unmerged].flatMap((y)=>y.envelopes??[]))])},Vt=(d,m,g)=>{let y=oe(d);if(!y.queueRead)return;let b=m.snapshotEnvelopes({[Mt]:g}),v=Bt(b);if(y.queueSaved=v.length>0?m:void 0,y.queueSaved){let S=b.length-v.length;Xe(y,he(d,pe,JSON.stringify(S>0?{id:g,envelopes:v,discarded:S}:{id:g,envelopes:v})))}else G(d,pe)},zt=(d,m)=>{let g=oe(d);if(g.queueSaved!==m)return;g.queueSaved=void 0,G(d,pe)};var or=5000,sr=57344,ir=500,ar=200,dr=["x-request-id","cf-ray","x-vercel-id","x-amz-cf-id","fly-request-id"],cr=["sazabi.session","sazabi.distinctId"],ur=2000,lr="javascript",Yt=(d,m)=>({type:"custom",body:`identify ${d}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.custom.name":"identify",...m?ge(m,"custom"):{}}}),pr=(d)=>{let m=globalThis.fetch;if(typeof m!=="function")return;let g=(R,L)=>m(R,L),y=Pe(d);if(!y)return;let b=`${y.baseUrl}/v1/logs`,v=et(),S=d.storage,k=(R)=>console.warn(`${de} ${R}`),w=lt({url:b,publicKey:y.publicKey,resourceAttributes:{"service.name":d.serviceName,"service.version":d.serviceVersion,"deployment.environment":d.environment,"telemetry.sdk.name":Ue,"telemetry.sdk.version":we,"telemetry.sdk.language":lr,...c()},scope:{name:Ue,version:we},fetchImpl:g,flushIntervalMs:d.flushIntervalMs??or,maxBatchBytes:d.maxBatchBytes??sr,maxQueuedEvents:d.maxQueuedEvents??ir,warn:k,onHealth:(R)=>Z(R),onIdle:()=>{if(S)zt(S,w)}}),E,I=[],H=0,B=!1,h=d.network??{},C=(R)=>a(R,h.redactQueryParams),U=(R,L,V=Ke())=>{L.touch();let x={"app.event_type":R.type,"session.id":L.getSessionId(),"session.window_id":L.getWindowId(),"session.distinct_id":L.getDistinctId(),"app.screen.name":V.name,"app.screen.url":V.path===void 0?void 0:C(V.path),"derived.source":"sdk"};w.enqueue(ut(R,x))},M=new Set,O=(R)=>{if(M.has(R.reason))return;M.add(R.reason);let{message:L}=R;k(L)},z=pt(d.beforeSend,O),F=(R)=>{if(B)return;try{let L=z(R);if(!L)return;if(E)U(L,E);else if(H<ar||L.type==="sdk_health")I.push({kind:"event",event:L,screen:Ke()}),H+=1}catch{}},j=(R)=>{try{F(R())}catch{}},Z=dt(F);if(S)Lt(S,Z),Ge(S,k);let ne=u(),K=(R)=>r({url:R,base:y.baseUrl})||ne!==void 0&&r({url:R,base:ne})||o()&&R.includes("/symbolicate"),N=[];if(S)N.push(()=>Ut(S,Z));let Y,Q=!1;N.push(()=>{if(Y!==void 0)clearTimeout(Y);Y=void 0});let q=yt({emit:F,unhandledRejections:d.errors?.unhandledRejections!==!1,previousRejectionTracker:d.errors?.previousRejectionTracker,onFatal:(R)=>{Q=!0,w.holdFlushes(!0);try{if(ie(),F(R),S)$t(S,w,Se(v,8))}finally{w.holdFlushes(!1)}if(!S){w.flush();return}if(Y===void 0&&!B)Y=setTimeout(()=>{Y=void 0,Qe(S,w)},ur)}});if(N.push(()=>q.teardown()),d.pointer?.capture!==!1){let R=ot({emit:F,randomBytes:v,sampleIntervalMs:d.pointer?.sampleIntervalMs,partialIntervalMs:d.pointer?.partialIntervalMs});Fe(R),N.push(()=>{Fe(void 0),R.teardown()})}if($e(F,C),N.push(()=>$e(void 0)),d.console?.capture!==!1){let R=Je({emit:F,levels:d.console?.levels??["error","warn"],selfPrefix:de});N.push(()=>R.teardown())}let W=h.capture??!0,se=h.propagateTraceContext??!0;if(W||se){let R=f({emit:F,traceContext:at({sampledFlag:h.sampledFlag??!1,randomBytes:v}),capture:W,propagateTraceContext:se,allowlist:h.allowlist??[],redactQueryParams:h.redactQueryParams,requestIdHeaders:h.requestIdHeaders??dr,isInternalUrl:K,resolveUrl:l,isDefaultInjectionTarget:()=>!0});N.push(()=>R.teardown())}let _e=Et({emit:F,onBackground:()=>{if(S)Vt(S,w,Se(v,8));w.flush()}});N.push(()=>_e.teardown());let ue,re;if(S){let R=Tt(S,cr);ue=R.store,re=R.ready}else ue=ye(),re=Promise.resolve();let ie=()=>{if(E||B)return;let R=st({store:ue,windowStore:ye(),randomBytes:v});if(E=R,T.pendingReset)R.reset(),T.pendingReset=!1;let L=T.pendingIdentity;if(T.pendingIdentity=void 0,L)R.setDistinctId(L.distinctId),F(Yt(L.distinctId,L.traits));for(let V of I.splice(0))try{if(V.kind==="identify")R.setDistinctId(V.distinctId);else if(V.kind==="reset")R.reset();else U(V.event,R,V.screen)}catch{}if(S&&!Q)Qe(S,w)},me=(R)=>{let L=I.length;while(L>0&&I[L-1]?.kind!=="event")L-=1;let V=I.splice(L);if(R.kind==="reset"||V.some((x)=>x.kind==="reset"))I.push({kind:"reset"});if(R.kind==="identify")I.push(R)};T.instance={identify(R,L){j(()=>{if(E)E.setDistinctId(R);else me({kind:"identify",distinctId:R});return Yt(R,L)})},reset(){try{if(E)E.reset();else me({kind:"reset"})}catch{}},addEvent(R,L){j(()=>({type:"custom",body:`custom ${R}`,severity:"INFO",timeUnixMs:Date.now(),attributes:{"app.custom.name":R,...L?ge(L,"custom"):{}}}))},log(R,L,V){j(()=>({type:"log",body:L,severity:R,timeUnixMs:Date.now(),attributes:V?ge(V):{}}))},async flush(){await re,await w.flush()},async shutdown(){for(let R of N.reverse())try{R()}catch{}B=!0,p(),kt(),await re,await w.shutdown()}},re.then(ie,ie)},Xt=(d)=>{try{pr(d)}catch{}},ao=(d)=>{if(s()){if(!T.warnedWebHost)T.warnedWebHost=!0,console.warn(`${de} this app is running in a browser; use @sazabi/browser instead. SDK disabled.`);return}if(T.initialized)return;T.initialized=!0,T.generation+=1;let m=T.generation;if(!d.serviceName||!Pe(d)){console.warn(`${de} init() requires intakeUrl and serviceName; SDK disabled. Pass publicKey too if the intake URL is a proxy that carries no key.`);return}if(d.consent===void 0){Xt(d);return}try{Promise.resolve(d.consent()).then((g)=>{if(g===!0&&m===T.generation)Xt(d)}).catch(()=>{})}catch{}},co=(d,m)=>{if(T.instance)T.instance.identify(d,m);else T.pendingIdentity={distinctId:d,traits:m}},uo=()=>{if(T.instance)T.instance.reset();else T.pendingReset=!0,T.pendingIdentity=void 0},lo=(d,m)=>{T.instance?.addEvent(d,m)},po=(d,m,g)=>{T.instance?.log(d,m,g)},fo=async()=>{await T.instance?.flush()},mo=async()=>{let d=T.instance;T.instance=void 0,T.initialized=!1,T.generation+=1,T.pendingIdentity=void 0,T.pendingReset=!1,await d?.shutdown()};export{we as SDK_VERSION,bt as SazabiRoot,lo as addEvent,fo as flush,co as identify,ao as init,po as log,uo as reset,mo as shutdown,Zn as trackNavigation};
4
4
 
5
- //# debugId=ACB6EA50D2850DE964756E2164756E21
5
+ //# debugId=B9F1449F62B086F864756E2164756E21
6
6
  //# sourceMappingURL=index.js.map