@corbado/observe 1.9.0 → 1.9.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.
- package/dist/analysis/config-manager.mjs +143 -14
- package/dist/analysis/config.mjs +12 -4
- package/dist/analysis/version.mjs +1 -1
- package/dist/cdn/script.global.js +4 -4
- package/dist/index.d.mts +21 -8
- package/dist/index.d.ts +21 -8
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var ft=0;function k(){if(ft===4294967295)throw new Error("Low-event capture sequence exhausted");return++ft}function ht(i,e){if(i==="passkey-login")switch(e){case"passkey-known-identifier":case"passkey-no-identifier":return"passkey-button";case"passkey-known-identifier-auto":case"passkey-no-identifier-auto":case"passkey-immediate":return"automatic"}else if(i==="passkey-enrollment")switch(e){case"manual":return"passkey-button";case"auto":case"conditional":return"automatic"}}import{v7 as Br}from"uuid";function M(i){if(i!=null){if(i instanceof Error)return{name:i.name,message:i.message};if(typeof i=="string")return{message:i};if(typeof i=="object"){let e=i;if(typeof e.message=="string"||typeof e.code=="string")return{name:typeof e.name=="string"?e.name:void 0,message:typeof e.message=="string"?e.message:void 0,code:typeof e.code=="string"?e.code:void 0}}return{message:String(i)}}}var Pr={maxStackFrames:{min:1,max:100,default:50},depth:{min:0,max:10,default:3},maxBreadth:{min:1,max:1e3,default:30},maxValueLength:{min:1,max:1e4,default:1024},maxCauseDepth:{min:0,max:10,default:3},maxBytes:{min:0,max:65536,default:32768}},Lr=1024,B=class extends Error{},Fr=["name","message","code","errors","stack"],Rr=/[^\x20-\x7E]/,N=i=>Object.prototype.toString.call(i).slice(8,-1),Dr=i=>i===null?"null":typeof i=="object"?N(i):typeof i,Ar=i=>i instanceof Error||N(i)==="Error"||N(i)==="DOMException";function yt(i){return Rr.test(i)?new TextEncoder().encode(i).byteLength:i.length}function H(i,e){let t=Pr[i];return typeof e!="number"||!Number.isFinite(e)?t.default:Math.min(t.max,Math.max(t.min,Math.floor(e)))}function gt(i={}){return{stack:i.stack===!0,maxStackFrames:H("maxStackFrames",i.maxStackFrames),depth:H("depth",i.depth),maxBreadth:H("maxBreadth",i.maxBreadth),maxValueLength:H("maxValueLength",i.maxValueLength),maxCauseDepth:H("maxCauseDepth",i.maxCauseDepth),maxBytes:H("maxBytes",i.maxBytes)}}function vt(i,e={}){if(i===void 0)return;let t=gt(),r=n=>{let o=JSON.stringify(n);return o===void 0||yt(o)<=t.maxBytes};try{if(t=gt(e),t.maxBytes===0)return;let n=R(Dr(i),1024);for(let s=t.depth;s>=0;s--){let a={limits:t,causeBudget:t.maxCauseDepth,seen:new Set,nodes:0,textBytes:0};try{let l={type:n,value:J(i,s,a)};if(r(l))return l}catch(l){if(!(l instanceof B))throw l}}let o={type:n,truncated:!0};return r(o)?o:void 0}catch{let n={type:"unserializable"};return r(n)?n:void 0}}function G(i,e){if(i.length>e.limits.maxBytes)throw new B;if(e.textBytes+=yt(JSON.stringify(i)),e.textBytes>e.limits.maxBytes)throw new B;return i}function J(i,e,t){if(++t.nodes>Lr)throw new B;let r=_r(i,e,t);return typeof r=="string"?G(r,t):r}function _r(i,e,t){switch(typeof i){case"string":return R(i,t.limits.maxValueLength);case"number":return Number.isFinite(i)?i:String(i);case"boolean":case"undefined":return i;case"bigint":case"symbol":return R(String(i),t.limits.maxValueLength);case"function":return`[Function: ${i.name||"anonymous"}]`}if(i===null)return null;let r=i;if(t.seen.has(r))return"[Circular]";if(e<0)return`[${N(r)}]`;t.seen.add(r);try{return Mr(r,e,t)}finally{t.seen.delete(r)}}function R(i,e){return i.length>e?i.slice(0,e)+"\u2026":i}function mt(i,e,t){let r=i.length>t;i=R(i,t);let n=i.split(`
|
|
2
2
|
`);if(n.length<=e+1)return R(i,t);let o=n.slice(0,e+1).join(`
|
|
3
3
|
`),s=r?"[truncated]":`[+${n.length-e-1} frames]`;return R(`${o}
|
|
4
|
-
${s}`,t)}function Dr(i,e,t){let{limits:r}=t,n=N(i),o=u=>Y(u,e-1,t);if(n==="Date")return Number.isNaN(i.getTime())?"[Invalid Date]":i.toISOString();if(n==="RegExp")return R(String(i),r.maxValueLength);if(n==="ArrayBuffer")return`[ArrayBuffer(${i.byteLength})]`;if(ArrayBuffer.isView(i))return`[${n}(${i.byteLength})]`;if(n==="Map"||n==="Set"){let u=i,h=[];for(let m of u){if(h.length===r.maxBreadth)break;h.push(o(m))}return u.size>h.length&&h.push(`[+${u.size-h.length} more]`),h}if(n==="Promise"||n==="WeakMap"||n==="WeakSet"||n==="Window")return`[${n}]`;if(typeof Node<"u"&&i instanceof Node)return`[${n}]`;if(Array.isArray(i)){let u=i.slice(0,r.maxBreadth).map(o);return i.length>r.maxBreadth&&u.push(`[+${i.length-r.maxBreadth} more]`),u}if(typeof Response<"u"&&i instanceof Response)return{status:o(i.status),statusText:o(i.statusText),url:o(i.url),redirected:o(i.redirected)};if(typeof Event<"u"&&i instanceof Event){let u=i,h={type:o(u.type)};for(let m of["message","filename","lineno","colno"])m in u&&(h[m]=o(u[m]));return"error"in u&&u.error!=null&&(h.error=o(u.error)),h}let s=Object.create(null),a=i,l=Fr(i);if(l){for(let h of Or){if(h==="stack"&&!r.stack)continue;let m=a[h];if(!(m==null||typeof m=="function")){if(h==="stack"){r.stack&&typeof m=="string"&&(s.stack=W(ht(m,r.maxStackFrames,r.maxValueLength),t));continue}s[h]=o(m)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=_r(u,e-1,t))}let p=0,d=Object.keys(a);for(let u of d){if(u in s||u==="stack"&&!r.stack||l&&u==="cause")continue;if(++p>r.maxBreadth){s["\u2026"]=`[+${d.length-r.maxBreadth} keys]`;break}let h=a[u];typeof h!="function"&&(s[W(u,t)]=u==="stack"&&typeof h=="string"?W(ht(h,r.maxStackFrames,r.maxValueLength),t):o(h))}return!l&&n!=="Object"&&p===0?`[${n}]`:s}function _r(i,e,t){if(typeof i!="object"||i===null)return Y(i,e,t);if(t.causeBudget<=0)return W(`[${N(i)}]`,t);t.causeBudget--;try{return Y(i,e,t)}finally{t.causeBudget++}}var Mr=1500,f=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:k,enqueueLowEvent:r=>this.tracker.enqueueLowEvent({...r,captureSeq:r.captureSeq??k(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:r.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),passwordManagerDomScan:()=>this.tracker.isPasswordManagerDomScanEnabled(),registerInputs:(r,n)=>this.tracker.getWindowObserver().registerInputs(r,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),n),beginCeremony:r=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:r??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(r=>t.capturePrefill(r)),t}catch(t){this.tracker.getLogger().error("Failed to attach low-event collector",t);return}}registerLowFlusher(e){this.lowFlushers.push(e)}captureOptions(e,t=this.startReference,r=this.captureSessionId,n){if(!t&&!n)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??r),n&&(o.initiator=e?.initiator??n),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,r){this.startReference=e,this.captureSessionId=t,this.captureSpecType=r}subflowStart(e,t){try{for(let r of this.lowFlushers)try{r()}catch(n){this.tracker.getLogger().error("Failed to flush previous low-event context",n)}this.captureSpecType=e?.explicitSpecType,this.startReference=Ar(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(r){this.tracker.getLogger().error("Failed to start low-event capture context",r)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(r){this.tracker.getLogger().error("Failed to capture input prefill",r)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,r,n){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(r),n)}subflowStepFinished(e,t,r){(!r?.subflowStartEventId||r.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(r))}subflowStepError(e,t,r){let n=t;try{let o=this.tracker.getSdkConfig().rawErrors?r?.rawError:void 0;o!==void 0&&(n={...t,rawError:mt(o,r?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,n,this.captureOptions(r))}withWindowLowEvents(e,t){let r,n=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==r||t.scheduleDisarm(Mr)},o=e;return{...e,start:(s,a)=>{r=a?.subflowStartEventId??this.startReference;let l=s?.explicitSpecType??this.captureSpecType,p=a?.initiator??ct(this.operationName,l);t.arm(p,l==="passkey-cui"),o.start(s,p?{...a,initiator:p}:a)},finished:(s,a)=>{o.finished(s,a),n(a)},error:(s,a)=>{o.error(s,a),n(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),n(a)}}}defineStep(e,t){let r,n,o,s=l=>this.captureOptions(l,r,n,o);return{start:(l,p)=>{r=this.startReference,n=this.captureSessionId,o=p?.initiator,this.subflowStepStarted(e,l,s(p),t)},finished:(l,p)=>{this.subflowStepFinished(e,l,s(p))},error:(l,p)=>{this.subflowStepError(e,{error:M(l)},s(p))},errorTyped:(l,p)=>{this.subflowStepError(e,l,s(p))}}}};function yt(i,e){if(e.explicitSpecType!==void 0)try{i.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var J=class extends f{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:yt(e,t)})}},X=class extends f{prepare;postResponse;constructor(e,t={}){super(e,"key-registration"),this.prepare=this.defineStep("prepare"),this.postResponse=this.defineStep("post-response"),this.subflowStart({actor:"system",explicitSpecType:yt(e,t)})}};function Hr(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch{return i}}function Br(i,e){let t=i.toLowerCase();return e.some(r=>{let n=r.toLowerCase();return n.endsWith("*")?t.startsWith(n.slice(0,-1)):t===n})}function vt(i,e,t){return e!=="allowlist"||i===""||i==="?"?i:`?${(i.startsWith("?")?i.slice(1):i).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||Br(Hr(a),t)?o:`${a}=*`}).join("&")}`}function x(i,e,t,r){return r===void 0?window.addEventListener(e,t):window.addEventListener(e,t,r),()=>window.removeEventListener(e,t)}function Z(i){return document.visibilityState==="hidden"}function bt(i){return document.readyState==="complete"}function St(i){return window.location.href}function wt(i,e,t){let r=vt(window.location.search,e,t);return`${window.location.pathname}${r}`}function ee(i){return typeof navigator>"u"?"":navigator.userAgent??""}async function Tt(i){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async function Et(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function It(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async function xt(i){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,r.toString()]))}async function kt(i){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,r=e.mobile,n=e.platformVersion,o=e.model||void 0;if(!(!t||r===void 0||!n))return{platform:t,mobile:r,platformVersion:n,model:o}}function Ct(i){if(!(typeof navigator>"u"))return navigator.webdriver}function Ot(i){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}import{v7 as Nr}from"uuid";var We=(i,e,t)=>{let r=!1,n,o=null,s=null,a=()=>{s!==null&&(clearTimeout(s),s=null);let p=o;r=!1,o=null,p!==null&&i({...n===void 0?{}:{captureSeq:n},lowType:e,ts:p,durationMs:Date.now()-p})};return{extend:()=>{if(!r){let p=t?.();r=!0,o=Date.now(),n=p}s!==null&&clearTimeout(s),s=setTimeout(a,150)},flush:a}};function Pt(i,e,t){let r=[],n=(s,a,l)=>{let p=d=>t(a,()=>l(d));s.addEventListener(a,p),r.push(()=>s.removeEventListener(a,p))};n(window,"blur",()=>e.blur()),n(window,"focus",()=>e.focus()),n(document,"visibilitychange",()=>e.visibilityChange(document.visibilityState==="hidden")),n(document,"focusout",s=>e.focusOut(s.target,!!s.relatedTarget)),n(document,"focusin",s=>e.focusIn(()=>s.composedPath())),n(document,"pointerdown",s=>e.pointerDown(s.target)),window.visualViewport&&(n(window.visualViewport,"resize",()=>e.viewportResize()),n(window.visualViewport,"scroll",()=>e.viewportScroll())),n(window,"pagehide",()=>e.pageHide());let o=window.navigation;return o&&n(o,"currententrychange",s=>{let a=s,l=a.from?.index,p=o.currentEntry?.index;a.navigationType==="traverse"&&typeof l=="number"&&typeof p=="number"&&l>=0&&p>=0&&p<l&&e.navigateBack()}),r}function Lt(i){let e=[];for(let t=document.activeElement;t;t=t.shadowRoot?.activeElement??null)e.push(t);return e}function Ft(i){let e=document.activeElement;return{active:e,idle:e===document.body||!e}}var Ur,$=()=>Ur??=Nr(),te=class{constructor(e,t,r){this.logger=e;this.enqueue=t;this.flushKeepalive=r;typeof window>"u"||typeof document>"u"||(this.removers=Pt(0,{blur:()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)},focus:()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0},visibilityChange:n=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${n?"hidden":"visible"}`,ts:Date.now()})},focusOut:(n,o)=>{let s=this.findInput(n);this.lastBlur=s&&!o&&Date.now()-this.unrelatedPointerAt>250?{registration:s,ts:Date.now()}:void 0},focusIn:n=>{this.lastBlur=void 0;let o=this.inputFocusListeners.size>0&&n().find(s=>this.findInput(s));o&&this.notifyInputFocus(o)},pointerDown:n=>{this.findInput(n)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())},viewportResize:()=>this.extendViewport("resize"),viewportScroll:()=>this.extendViewport("scroll"),pageHide:()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()},navigateBack:()=>{this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()})}},(n,o)=>{try{o()}catch(s){this.logger.error(`Failed to observe window ${n}`,s)}}))}inputs=new Set;inputFocusListeners=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=We(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",k);scroll=We(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",k);registerInputs(e,t,r){if(this.destroyed)return()=>{};let n={fields:e,context:t,flush:r};if(this.inputs.add(n),this.inputFocusListeners.size>0&&typeof document<"u"){let o=Lt(0),s=e.find(a=>o.includes(a));s&&this.notifyInputFocus(s)}return()=>{this.inputs.delete(n),this.lastBlur?.registration===n&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let r=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:n=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(r,n)},destroy:r}}onInputFocus(e){return this.destroyed?()=>{}:(this.inputFocusListeners.add(e),()=>this.inputFocusListeners.delete(e))}notifyInputFocus(e){for(let t of this.inputFocusListeners)try{t(e)}catch(r){this.logger.error("Failed to notify registered input focus",r)}}context(){let e=[...this.ceremonies].filter(o=>!o.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=Ft(0),r=this.findInput(t.active);if(r)return r.context();let n=this.lastBlur;if(n&&Date.now()-n.ts<=250&&t.idle)return n.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(r=>r===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:r,...n}=t??{};this.enqueue({...e,...n,captureSeq:e.captureSeq??k(),sourceKind:"window",captureVersion:1,pageId:$()},r)}extendViewport(e){let t=this.context(),r=this.viewportContext[e];(r?.subflowStartEventId!==t?.subflowStartEventId||r?.fieldRole!==t?.fieldRole||r?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear(),this.inputFocusListeners.clear()}}};var qr=(g=>(g.FlowStarted="flow_started",g.FlowDecided="flow_decided",g.FlowFinished="flow_finished",g.FlowReset="flow_reset",g.AuthMethodDecisionStarted="auth_method_decision_started",g.AuthMethodDecisionFinished="auth_method_decision_finished",g.FlowAutoFinished="flow_auto_finished",g.AuthDecisionStarted="auth_decision_started",g.AuthDecisionFinished="auth_decision_finished",g.SubflowStepStarted="subflow_step_started",g.SubflowStepFinished="subflow_step_finished",g.SubflowStepError="subflow_step_error",g.SubflowTrigger="subflow_trigger",g.SubflowError="subflow_error",g.SubflowStarted="subflow_started",g.SubflowFinished="subflow_finished",g.FlowEnriched="flow_enriched",g.Conversion="conversion",g))(qr||{});var Dt="cbo_sdk_config",_t="X-Corbado-Observe-Config",Gn=500,zn=50,jn=1e3,b={flushIntervalMs:{min:100,max:6e4},retryMaxAttempts:{min:1,max:10},retryDelayMs:{min:50,max:12e4},sessionInactivityMs:{min:6e4,max:864e5},seqLockTimeoutMs:{min:0,max:250},deviceInfoCollectorTimeoutMs:{min:10,max:1e4},flushOnFlowTypeFinished:{maxEntries:20,maxNameLength:100},sourcePathQueryAllow:{maxEntries:50,maxKeyLength:64}},Kr=1800*1e3,v={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:Kr,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,pmd:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function D(i,e,t){return Math.min(Math.max(i,e),t)}function _(i,e){return typeof i=="number"&&Number.isFinite(i)?i:e}function L(i,e){return typeof i=="boolean"?i:e}function Rt(i,e){return typeof i=="string"?i:e}function Vr(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0&&e.length<=b.flushOnFlowTypeFinished.maxNameLength).slice(0,b.flushOnFlowTypeFinished.maxEntries):[]}function Wr(i){return typeof i=="string"&&i.trim().toLowerCase()==="all"?"all":"allowlist"}function $r(i){return Array.isArray(i)?i.filter(e=>typeof e=="string").map(e=>e.trim()).filter(e=>e.length>0&&e.length<=b.sourcePathQueryAllow.maxKeyLength).slice(0,b.sourcePathQueryAllow.maxEntries):[]}function G(i){if(!i||typeof i!="object")return null;let e=i;return typeof e.version!="string"||e.version===""?null:At(e)}function At(i){let e=i.retry&&typeof i.retry=="object"?i.retry:{},t=D(_(e.baseDelayMs,v.retry.baseDelayMs),b.retryDelayMs.min,b.retryDelayMs.max);return{version:Rt(i.version,""),flushIntervalMs:D(_(i.flushIntervalMs,v.flushIntervalMs),b.flushIntervalMs.min,b.flushIntervalMs.max),durableOutbox:i.durableOutbox===!0,durableLowOutbox:i.durableLowOutbox===!0,beaconKeepalive:i.beaconKeepalive===!0,sessionContinuity:i.sessionContinuity===!0,sessionInactivityMs:D(_(i.sessionInactivityMs,v.sessionInactivityMs),b.sessionInactivityMs.min,b.sessionInactivityMs.max),seqLockTimeoutMs:D(_(i.seqLockTimeoutMs,v.seqLockTimeoutMs),b.seqLockTimeoutMs.min,b.seqLockTimeoutMs.max),tvc:L(i.tvc,v.tvc),tph:L(i.tph,v.tph),td:L(i.td,v.td),tlf:L(i.tlf,v.tlf),telemetry:L(i.telemetry,v.telemetry),flushOnTelemetry:i.flushOnTelemetry===!0,flushOnFlowTypeFinished:Vr(i.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:D(_(i.deviceInfoCollectorTimeoutMs,v.deviceInfoCollectorTimeoutMs),b.deviceInfoCollectorTimeoutMs.min,b.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:i.deviceInfoTiming===!0,rawErrors:L(i.rawErrors,v.rawErrors),pmd:L(i.pmd,v.pmd),aap:Rt(i.aap,""),sourcePathQuery:Wr(i.sourcePathQuery),sourcePathQueryAllow:$r(i.sourcePathQueryAllow),retry:{maxAttempts:D(_(e.maxAttempts,v.retry.maxAttempts),b.retryMaxAttempts.min,b.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:D(_(e.maxDelayMs,v.retry.maxDelayMs),t,b.retryDelayMs.max)}}}function $e(i,e={}){let t=i??v,r=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),n=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=At({...t,...r,retry:{...t.retry,...n}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(n).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function Mt(i){try{if(!i||typeof i!="object")return;let e=i,t=e.pmd,r=typeof t=="boolean";return{pmd:r?t:!1,pmdExplicit:r,privateMode:L(e.privateMode,!0)}}catch{return}}function Ht(i){return G(i.getItem(Dt))}function Bt(i,e){i.setItem(Dt,e)}function re(i,e,t){return fetch(e,t)}function Nt(i){if(typeof navigator?.sendBeacon=="function")return(e,t)=>navigator.sendBeacon(e,t)}var Gr=6e4,zr=6e4,ie=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let r=JSON.stringify(e),n=typeof AbortController<"u"?new AbortController:void 0,o=n?setTimeout(()=>n.abort(),zr):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:r,keepalive:new Blob([r]).size<=Gr,...n?{signal:n.signal}:{}},a=await re(0,this.options.url,s),l={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(l.deliveryAccepted=!0),a.status===200)try{let p=G(await a.json());p&&(l.config=p)}catch(p){this.options.logger.error("Failed to parse SDK config response",p),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return l}finally{o&&clearTimeout(o)}}catch(r){return this.options.logger.error("Failed to send event",r),{}}}sendBeacon(e){try{this.options.logger.debug(`Sending ${e.events.length} events via beacon`);let t=Nt(0);if(!t)return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let r=new Blob([JSON.stringify(e)],{type:"text/plain"});return t(this.options.url,r)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};import{v7 as Xr}from"uuid";function ne(i,e,t,r={}){let n=typeof navigator<"u"?navigator.locks:void 0;if(n?.request){let o=r.timeoutMs,s=o!==void 0&&typeof AbortController<"u"?new AbortController:null;if(o!==void 0&&!s)return Promise.resolve().then(t);try{let a=!1,l,p=()=>{l!==void 0&&(clearTimeout(l),l=void 0)},d=()=>(a=!0,p(),t()),u=s?n.request(e,{signal:s.signal},d):n.request(e,d);return s&&o!==void 0&&!a&&(l=setTimeout(()=>{l=void 0,s.abort();try{r.onTimeout?.()}catch{}},o)),u.catch(h=>{if(a)throw h;return t()}).finally(p)}catch{}}try{return Promise.resolve(t())}catch(o){return Promise.reject(o)}}function Ut(i){return typeof navigator<"u"&&!!navigator.locks?.request}var jr="cbo_outbox",Ge="cbo_outbox",Qr=500,Yr=512*1024;function Jr(i){if(!i||typeof i!="object")return!1;let e=i;return typeof e.id=="string"&&e.id!==""&&typeof e.sessionId=="string"&&typeof e.flushAfter=="number"&&Number.isFinite(e.flushAfter)&&typeof e.attempts=="number"&&Number.isFinite(e.attempts)&&typeof e.event=="object"&&e.event!==null}var U=class{constructor(e,t,r=Qr,n=Yr,o=Ge,s=jr){this.storage=e;this.logger=t;this.maxEntries=r;this.maxSerializedLength=n;this.lockName=o;this.storageKey=s;this.entries=this.read()}entries=[];reportedMalformed=!1;read(){let e=this.storage.getItem(this.storageKey);if(!Array.isArray(e))return[];let t=e.filter(Jr);return t.length<e.length&&!this.reportedMalformed&&(this.reportedMalformed=!0,this.logger.error(`EventStore dropped ${e.length-t.length} malformed outbox entries`),this.logger.reportTelemetry?.("error","event store dropped malformed outbox entries")),t}mutate(e){return ne(0,this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let r=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${r} oldest entries (cap ${this.maxEntries})`),this.logger.reportTelemetry?.("error","event store evicted entries (cap)")}t=this.enforceSizeBudget(t),this.entries=t,this.storage.setItem(this.storageKey,t)}catch(t){this.logger.error("Failed to mutate event store",t),this.logger.reportTelemetry?.("error","failed to mutate event store")}})}enforceSizeBudget(e){let t=e.map(o=>JSON.stringify(o).length),r=t.reduce((o,s)=>o+s,e.length+1),n=0;for(;r>this.maxSerializedLength&&n<e.length;)r-=t[n]+1,n++;return n===0?e:(this.logger.error(`EventStore evicted ${n} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(n))}add(e){return this.mutate(t=>t.some(r=>r.id===e.id)?t:[...t,e])}all(){return this.entries=this.read(),this.entries}getDue(e){return this.all().filter(t=>t.flushAfter<=e)}remove(e){if(e.length===0)return Promise.resolve();let t=new Set(e);return this.mutate(r=>r.filter(n=>!t.has(n.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(r=>[r.id,r]));return this.mutate(r=>r.map(n=>t.get(n.id)??n))}size(){return this.all().length}};var Zr=500,ei=512*1024,qt=200,Kt=200*1024,ti=16*1024,Vt=6e4,ze=32e3;function oe(i){let e=0;for(let t=0;t<i.length;t++){let r=i.charCodeAt(t);r<128?e+=1:r<2048?e+=2:r>=55296&&r<=56319&&t+1<i.length?(e+=4,t++):e+=3}return e}var se=class{constructor(e,t,r,n,o={},s){this.logger=e;this.transport=t;this.sessionId=r;this.sdk=n;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.fixedData=o.fixedData===!0,this.beforeEventBatchSend=o.beforeEventBatchSend,this.standaloneDeviceInfo=o.standaloneDeviceInfo,this.config=o.config??v,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new U(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new U(this.storage,this.logger,1e3,256*1024,`${this.outboxLockName??"cbo_outbox"}:lows`,"cbo_low_outbox_v1");let a=this.lowStore.all();this.lowPending=a.filter(l=>this.validPendingLow(l)),this.lowStore.remove(a.filter(l=>!this.validPendingLow(l)).map(l=>l.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];probeQueue=[];probeBytes=0;probesDropped=0;timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;removeVisibilityChange=null;removePageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;fixedData;beforeEventBatchSend;standaloneDeviceInfo;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let r={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(r),this.store?.add(r),this.scheduleAfterEnqueue(e)}catch(r){this.logger.error("Failed to enqueue event",r)}}enqueueLow(e,t=this.sessionId){try{let r={...e,id:e.id??Xr()};if(this.config.durableLowOutbox){let n={id:r.id,sessionId:t,event:r,attempts:0,flushAfter:0};this.lowPending.push(n),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(n)}else this.lowsQueue.push({sessionId:t,event:r});this.scheduleAfterEnqueue()}catch(r){this.logger.error("Failed to enqueue low event",r)}}notifyDeviceInfo(){try{this.dirtySinceSyncFlush=!0,this.scheduleFlush(this.flushInterval(),"timer")}catch(e){this.logger.error("Failed to schedule device info flush",e)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}enqueueProbe(e,t=this.sessionId){try{if(this.destroyed)return;let r=JSON.stringify(e.payload);if(typeof r!="string"||oe(r)>ti){this.probesDropped++;return}let n={...e,payload:JSON.parse(r)},o=oe(JSON.stringify(n));for(this.probeQueue.push({sessionId:t,entry:n,bytes:o,attempts:0,flushAfter:0}),this.probeBytes+=o;this.probeQueue.length>Zr||this.probeBytes>ei&&this.probeQueue.length>1;){let s=this.probeQueue.shift();this.probeBytes-=s.bytes,this.probesDropped++}this.scheduleFlush(this.flushInterval(),"timer")}catch(r){this.logger.error("Failed to enqueue probe",r)}}droppedProbeCount(){return this.probesDropped}dueProbes(e){return this.probeQueue.filter(t=>t.flushAfter<=e)}selectProbes(e,t,r,n){let o=[],s=0;for(let a of e){if(o.length>=r)break;if(a.sessionId===t){if(s+a.bytes>n){o.length===0&&n>=Kt&&o.push(a);break}s+=a.bytes,o.push(a)}}return o}removeProbes(e){if(e.length===0)return;let t=new Set(e);this.probeQueue=this.probeQueue.filter(r=>!t.has(r));for(let r of e)this.probeBytes-=r.bytes}dropProbes(e){this.removeProbes(e),this.probesDropped+=e.length}handleProbeSendResult(e,t,r){if(t.length===0)return;let n=e.statusCode;if(typeof n=="number"&&n>=200&&n<300){this.removeProbes(t);return}if(!this.isRetryable(n)){this.dropProbes(t);return}let o=Math.max(1,this.config.retry.maxAttempts),s=this.parseRetryAfter(e),a=[];for(let l of t)l.attempts+=1,l.attempts>=o?a.push(l):l.flushAfter=r+this.backoffForAttempt(l.attempts,s);this.dropProbes(a)}sendUnloadProbes(e,t,r,n){let o=this.sessionId,s={sessionId:o,events:[],sdk:this.sdk,probes:[]};this.attachBatchMeta(s,[],t);let a=oe(JSON.stringify(s))+120,l=e>a?this.selectProbes(this.probeQueue,o,qt,e-a):[];l.length>0&&(s.probes=l.map(p=>p.entry),this.attachBatchMeta(s,l,t),n&&this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(s):Promise.resolve(this.transport.send(s)).catch(()=>{}),this.removeProbes(l)),r&&this.dropProbes(this.probeQueue.slice())}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){if(e==="destroy"){await this.flushingDone;try{this.sendUnloadProbes(ze,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}}return}this.isFlushing=!0;let t;this.flushingDone=new Promise(r=>{t=r});try{for(this.clearTimer();;){let r=Date.now(),n=this.getDuePending(r),o=this.lowPending.filter(g=>g.flushAfter<=r),s=e==="destroy"?[]:this.dueProbes(r),a=n.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0&&s.length===0;if(a&&!this.hasStandaloneDeviceInfo())break;let l=n[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??s[0]?.sessionId??this.sessionId,p=n.filter(g=>g.sessionId===l).slice(0,this.batchSize),d=o.filter(g=>g.sessionId===l).slice(0,100),u=[...d.map(g=>g.event),...this.takeLows(l,100-d.length)];this.prepareEvents(p,e);let h=l===this.sessionId?this.takeTelemetry():[],m=l===this.sessionId?this.takeStandaloneDeviceInfo():void 0,y=this.selectProbes(s,l,qt,Kt),c={sessionId:l,events:p.map(g=>g.event),sdk:this.sdk};if(u.length>0&&(c.lows=u),h.length>0&&(c.telemetry=h),y.length>0&&(c.probes=y.map(g=>g.entry)),m&&(c.deviceInfo=m),a&&!m)break;this.attachBatchMeta(c,[...p,...d,...y],e),d.length&&(c.deliveryAck=!0);let w=this.shouldRequestConfig()?{[_t]:this.config.version||"1"}:void 0,T=await this.transport.send(c,w).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(c.deliveryAck&&T.statusCode&&T.statusCode>=200&&T.statusCode<300&&!T.deliveryAccepted&&(T={...T,statusCode:503}),this.requestConfig&&this.handleConfigResponse(T),this.handleLowSendResult(T,d,r),this.handleProbeSendResult(T,y,r),!this.handleSendResult(T,p,r))break}e==="destroy"&&this.sendUnloadProbes(ze,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,r){e.meta={...e.meta,flushReason:r};let n=this.readDataPolicy();n!==void 0&&(e.meta={...e.meta,dataPolicy:n}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version}),this.fixedData&&(e.meta={...e.meta,fixedData:!0});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}prepareEvents(e,t){if(!(!this.beforeEventBatchSend||e.length===0))try{this.beforeEventBatchSend(e.map(r=>r.event),t)}catch(r){this.logger.error("Failed to prepare events for sending",r)}}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let r=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),n=new Set(r);return this.lowsQueue=this.lowsQueue.filter(o=>!n.has(o)),r.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(r=>!t.has(r.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,r){let n=e.statusCode;if(n!==void 0&&n>=200&&n<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,r);return}if(!this.isRetryable(n)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,r,this.parseRetryAfter(e))}deferLowEntries(e,t,r=null){let n=[];for(let o of e){if(!this.validPendingLow(o)){n.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,r))}this.removeLowEntries(n),this.lowStore?.update(e.filter(o=>!n.includes(o.id)))}hasStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.has()??!1}catch(e){return this.logger.error("Failed to read device info for batch",e),!1}}takeStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.take()}catch(e){this.logger.error("Failed to read device info for batch",e);return}}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let n=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of n)this.enqueueLow(o,s)}let r=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new U(this.storage,this.logger,void 0,void 0,this.outboxLockName);let n=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!n.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],r=o.length>0}r?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,r){let n=e.statusCode,o=typeof n=="number"&&n>=200&&n<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(d=>d.id)),!0;if(!this.isRetryable(n))return this.removeEntries(t.map(d=>d.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),l=[],p=[];for(let d of t)d.attempts+=1,d.attempts>=s?l.push(d.id):(d.flushAfter=r+this.backoffForAttempt(d.attempts,a),p.push(d));return this.removeEntries(l),this.store?.update(p),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let r=this.config.retry,n=r.baseDelayMs*Math.pow(2,Math.max(0,e-1));r.maxDelayMs>0&&(n=Math.min(n,r.maxDelayMs));let o=Math.round(n/2+Math.random()*(n/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let r=Number(t);if(!Number.isNaN(r))return r*1e3;let n=Date.parse(t);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(r=>!t.has(r.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0&&this.probeQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(r=>r.flushAfter<=e)||this.lowsQueue.length>0||this.probeQueue.some(r=>r.flushAfter<=e)){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending,...this.probeQueue].map(r=>r.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),Z(0)&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.removeVisibilityChange=x(0,"visibilitychange",this.onVisibilityChange),this.removePageHide=x(0,"pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:St(0)};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){let t=this.flushSyncEvents(e);e==="pagehide"&&this.probeQueue.length>0&&this.sendUnloadProbes(Math.min(Vt-t,ze),e,!0,!0)}flushSyncEvents(e){if(!this.dirtySinceSyncFlush)return 0;let t=this.sessionId,r=this.pending.filter(d=>d.sessionId===t),n=r.slice(0,this.batchSize),o=this.lowPending.filter(d=>d.sessionId===t).slice(0,100),s=[...o.map(d=>d.event),...this.takeLows(t,100-o.length)];this.prepareEvents(n,e);let a=this.takeTelemetry(),l=this.takeStandaloneDeviceInfo();if(n.length===0&&s.length===0&&a.length===0&&!l)return this.dirtySinceSyncFlush=!1,0;let p={sessionId:t,events:n.map(d=>d.event),sdk:this.sdk};return s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),l&&(p.deviceInfo=l),this.attachBatchMeta(p,[...n,...o],e),o.length&&(p.deliveryAck=!0),this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(p)||this.transport.send(p):this.transport.send(p),this.config.durableOutbox||this.removeEntries(n.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&r.length>n.length,this.approximateSize(p)}approximateSize(e){try{return oe(JSON.stringify(e))}catch{return Vt}}destroy(){try{this.destroyed=!0,this.clearTimer(),this.dropProbes(this.probeQueue.slice()),typeof window<"u"&&(this.removeVisibilityChange&&this.removeVisibilityChange(),this.removePageHide&&this.removePageHide())}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};import{v7 as $t}from"uuid";import ri from"detectincognitojs";async function Wt(i){return(await ri()).isPrivate}var ii=300,z=6e3,Gt="cbo_pm",ni=10080*60*1e3,zt="detectincognitojs@1.9.0",jt={timing:!1},je="cbo_tab_id",Qt={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function C(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Yt(i,e,t){return{field:i,source:e,error:{name:"TimeoutError",message:`Device info collection timed out after ${t}ms`}}}async function Qe(i,e){let t;try{return await Promise.race([i.then(()=>!0,()=>!0),new Promise(r=>{t=setTimeout(()=>r(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var ae=class{constructor(e,t,r="localstorage",n,o=()=>jt,s,a=!0){this.logger=e;this.storage=t;this.storageSource=r;this.sessionStorage=n;this.settings=o;this.emitTelemetry=s;this.privateModeEnabled=a}pagePrivateMode;privateModeDetectionStarted=!1;lastKnown={};async collect(e,t={}){try{let r=this.resolveSettings(),n=C(),o=this.getClientEnvHandle(),s={type:"web",clientEnvHandle:o.value,clientEnvHandleMeta:{timestamp:o.timestamp,source:o.source},tabId:this.getTabId()},a=typeof __CBO_DATA_PRIVATE_MODE__=="boolean"?__CBO_DATA_PRIVATE_MODE__:this.privateModeEnabled,l=a?this.knownPrivateMode(r.timing):void 0,p,d=a&&l===void 0&&!this.privateModeDetectionStarted?this.detectPrivateMode(r.timing).then(I=>{p=I}):void 0,u=this.startFastFields();await Qe(Promise.all(u.map(I=>I.promise)),ii);let h=C()-n,m=t.refresh?this.lastKnown:{};r.timing&&this.reportFastTiming(h,u);let y=()=>p?.error?[p.error]:[];this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,y()),"fast");let c=u.filter(I=>!I.settled),w=d!==void 0&&p===void 0;if(c.length===0&&!w)return;let T=C();await Promise.all([Qe(Promise.all(c.map(I=>I.promise)),z-(T-n)),d]);let g=c.filter(I=>!I.settled).map(I=>Yt(I.field,I.source,z));g.push(...y()),r.timing&&c.length>0&&this.reportLateTiming(C()-n,c),this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,g),"update")}catch(r){this.logger.error("Failed to collect device info",r)}}async getInfo(){let e;return await this.collect(t=>{e=t}),e??{}}startFastFields(){return[this.startField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>Tt(0)),this.startField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>xt(0)),this.startField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>Et(0)),this.startField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>It(0)),this.startField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>kt(0)),this.startField("webdriver","navigator.webdriver",()=>Ct(0)),this.startField("maxTouchPoints","navigator.maxTouchPoints",()=>Ot(0))]}startField(e,t,r){let n=C(),o={field:e,source:t};return o.promise=Promise.resolve().then(r).then(s=>({field:e,value:s,durationMs:C()-n}),s=>(this.logger.error(`Failed to collect device info field "${e}"`,s),{field:e,durationMs:C()-n,error:{field:e,source:t,error:M(s)??{message:"Unknown error"}}})).then(s=>(o.settled=s,s)),o}buildInfo(e,t,r,n,o){let s={},a=[];for(let p of t)p.settled?(p.settled.error&&a.push(p.settled.error),s[p.field]=p.settled.value,this.remember(p.field,p.settled.value)):s[p.field]=n[p.field];s.privateMode=r,a.push(...o);let l={...e,data:{bluetoothAvailable:s.bluetoothAvailable,javaScriptHighEntropy:s.javaScriptHighEntropy,privateMode:s.privateMode,webdriver:s.webdriver,conditionalMediationAvailable:s.conditionalMediationAvailable,userVerifyingPlatformAuthenticatorAvailable:s.userVerifyingPlatformAuthenticatorAvailable,clientCapabilities:s.clientCapabilities,maxTouchPoints:s.maxTouchPoints}};return a.length>0&&(l.collectionErrors=a),l}remember(e,t){t!==void 0&&(this.lastKnown[e]=t)}safePublish(e,t,r){try{e(t,r)}catch(n){this.logger.error("Failed to publish device info",n)}}knownPrivateMode(e){if(this.pagePrivateMode!==void 0)return this.pagePrivateMode;let t=this.readPrivateModeCache();return t&&(this.pagePrivateMode=t.value,e&&this.reportTelemetry(`device info privateMode from cache, age ${Math.round((Date.now()-t.ts)/1e3)}s`)),this.pagePrivateMode}canCachePrivateMode(){return this.storageSource==="localstorage"}readPrivateModeCache(){if(this.canCachePrivateMode())try{let e=this.storage.getItem(Gt);if(!e||typeof e!="object"||typeof e.value!="boolean"||typeof e.ts!="number"||e.dv!==zt)return;let t=Date.now()-e.ts;return t<0||t>=ni?void 0:e}catch(e){this.logger.debug("Failed to read cached privateMode",e);return}}writePrivateModeCache(e){if(this.canCachePrivateMode())try{this.storage.setItem(Gt,{value:e,ts:Date.now(),dv:zt})}catch(t){this.logger.error("Failed to cache privateMode",t)}}async detectPrivateMode(e){this.privateModeDetectionStarted=!0;let t="detectIncognito",r=C(),n=this.startField("privateMode",t,()=>typeof __CBO_DATA_PRIVATE_MODE__=="boolean"&&!__CBO_DATA_PRIVATE_MODE__?void 0:Wt(0));if(!await Qe(n.promise,z)||!n.settled)return e&&this.reportTelemetry(`device info privateMode timed out after ${z}ms`),{error:Yt("privateMode",t,z)};if(e&&this.reportTelemetry(`device info privateMode detected in ${Math.round(C()-r)}ms`),n.settled.error)return{error:n.settled.error};let s=n.settled.value;return typeof s!="boolean"?{value:void 0}:(this.pagePrivateMode=s,this.writePrivateModeCache(s),{value:s})}resolveSettings(){try{return{timing:this.settings()?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),jt}}reportFastTiming(e,t){let r=t.map(n=>`${Qt[n.field]}=${Math.round(n.settled?.durationMs??e)}`).join(",");this.reportTelemetry(`device info collected in ${Math.round(e)}ms (${r})`)}reportLateTiming(e,t){let r=t.map(n=>`${Qt[n.field]}=${n.settled?Math.round(n.settled.durationMs):"timeout"}`).join(",");this.reportTelemetry(`device info late fields done in ${Math.round(e)}ms (${r})`)}reportTelemetry(e){if(this.emitTelemetry)try{this.emitTelemetry("info",e)}catch(t){this.logger.error("Failed to report device info timing",t)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return ee(0)}static getOsName(){let e=this.getUserAgent();return e.includes("iOS")?"iOS":e.includes("Android")?"Android":e.includes("Windows")?"Windows":e.includes("Macintosh")?"macOS":e.includes("Linux")?"Linux":e.includes("ChromeOS")?"ChromeOS":"other"}static getBrowserName(){let e=this.getUserAgent();return e.includes("Chrome")?"Chrome":e.includes("Firefox")?"Firefox":e.includes("Safari")?"Safari":e.includes("Edge")?"Edge":e.includes("Opera")?"Opera":e.includes("IE")?"IE":"other"}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=$t(),r={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",r),r}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(je);if(e)return e;let t=$t();if(this.sessionStorage.setItem(je,t),this.sessionStorage.getItem(je)===t)return t}};function oi(){return typeof document<"u"&&Z(0)}var le=class{constructor(e,t,r,n,o,s){this.logger=e;this.source=t;this.refreshInterval=r;this.attachInterval=n;this.diagnostics=o;this.onUndelivered=s}snapshot;snapshotPhase;publishedAt=0;version=0;deliveredVersion=0;refreshedAt=0;lastAttachedAt=null;eventsSeen=!1;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(this.eventsSeen=!0,Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot){if(this.version!==this.deliveredVersion)return this.markDelivered("event");if(!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}}hasUndelivered(){return this.snapshot!==void 0&&this.version!==this.deliveredVersion}takeUndelivered(){if(this.hasUndelivered())return this.markDelivered("flush")}hasStandalone(){return this.eventsSeen&&this.hasUndelivered()}takeStandalone(){if(this.hasStandalone())return this.markDelivered("request")}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}markDelivered(e){return this.deliveredVersion=this.version,this.lastAttachedAt=Date.now(),this.snapshotPhase==="update"&&this.report(`device info update delivered via ${e} after ${Math.max(0,Date.now()-this.publishedAt)}ms`),this.snapshot}publish(e,t){if(t==="fast"&&(this.refreshedAt=Date.now()),!(this.snapshot&&JSON.stringify(this.snapshot)===JSON.stringify(e))&&(this.snapshot=e,this.snapshotPhase=t,this.publishedAt=Date.now(),this.version++,this.eventsSeen&&this.onUndelivered))try{this.onUndelivered()}catch(r){this.logger.error("Failed to announce undelivered device info",r)}}report(e){if(this.diagnostics)try{this.diagnostics.timing()&&this.diagnostics.emit("info",e)}catch(t){this.logger.error("Failed to report device info delivery",t)}}scheduleRefresh(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.snapshot&&oi())return this.destroyed||this.scheduleRefresh(),Promise.resolve();let e=this.snapshot!==void 0;return this.refreshPromise=Promise.resolve().then(()=>this.source.collect((t,r)=>this.publish(t,r),{refresh:e})).catch(t=>this.logger.error("Failed to refresh device info",t)).finally(()=>{this.refreshPromise=void 0,this.destroyed||this.scheduleRefresh()}),this.refreshPromise}};function Jt(i){return{getItem:e=>localStorage.getItem(e),setItem:(e,t)=>localStorage.setItem(e,t),removeItem:e=>localStorage.removeItem(e)}}function Xt(i){return{getItem:e=>sessionStorage.getItem(e),setItem:(e,t)=>sessionStorage.setItem(e,t),removeItem:e=>sessionStorage.removeItem(e)}}function Zt(i){return{read:()=>document.cookie,write:e=>{document.cookie=e}}}function O(i,e){return`${i}_${e}`}var pe=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(O(e,this.namespace))}setItem(e,t){this.engine.setItem(O(e,this.namespace),t)}removeItem(e){this.engine.removeItem(O(e,this.namespace))}},de=class{constructor(e){this.logger=e}area=Jt(0);getItem(e){try{if(typeof localStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},ue=class{constructor(e,t){this.logger=e;this.domain=t}jar=Zt(0);getItem(e){try{if(typeof document>"u")return null;let t=e+"=",r=this.jar.read().split(";");for(let n=0;n<r.length;n++){let o=r[n].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let r=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(r+=`; domain=${this.domain}`),this.jar.write(r)}catch(r){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),this.jar.write(t)}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},ce=class{constructor(e){this.logger=e}area=Xt(0);getItem(e){try{if(typeof sessionStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var fe=1,he="cbo_storage_schema",si=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],ai=["cbo_session_id","cbo_tab_id"],li=["cbo_client_env_handle"];function ge(i,e,t){return i.setItem(e,t),JSON.stringify(i.getItem(e))===JSON.stringify(t)}function Ye(i,e,t){let r=i.getItem(he);if(r!==null){if(r.version!==fe||r.projectId!==e)return!1;if(r.complete===!0)return!0;if(r.complete!==!1)return!1}else{if(t.some(n=>i.getItem(O(n,e))!==null))return ge(i,he,{version:fe,projectId:e,complete:!0});if(!ge(i,he,{version:fe,projectId:e,complete:!1}))return!1}for(let n of t){let o=O(n,e);if(i.getItem(o)!==null)continue;let s=i.getItem(n);if(s!==null&&!ge(i,o,s))return!1}return ge(i,he,{version:fe,projectId:e,complete:!0})}function er(i,e,t,r,n){try{if(!Ye(e,i,si))return;Ye(t,i,ai),r&&Ye(r,i,li)}catch(o){n.error("Failed to migrate legacy Observe storage",o)}}var pi=10*1e3,di=600*1e3,ui=[1e3,3e3],me=class{constructor(e,t,r){this.url=e;this.storage=t;this.logger=r;this.initialConfig=Ht(t)??void 0}initialConfig;refreshTimer;requestTimer;retryTimer;controller;fetching=!1;stopped=!1;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.fetchConfig())}async fetchConfig(e=0){if(this.stopped||this.fetching)return;e===0&&(clearTimeout(this.refreshTimer),clearTimeout(this.retryTimer),this.refreshTimer=setTimeout(()=>{this.fetchConfig()},di)),this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),pi):void 0;let r=!0;try{let n=await re(0,this.url,{method:"GET",cache:"no-store",...t?{signal:t.signal}:{}});if(!n.ok)throw r=(n.status===408||n.status===429||n.status>=500)&&!n.headers.has("Retry-After"),new Error(`SDK config request failed (${n.status})`);let o=await n.json();r=!1;let s=G(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;Bt(this.storage,s),this.onConfig?.(s)}catch(n){if(!this.stopped){this.logger.error("Failed to fetch SDK config",n);let o=ui[e];(r&&!(n instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,clearTimeout(this.refreshTimer),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};import{v7 as P}from"uuid";var q=class{constructor(e,t){this.logger=e;this.sink=t}lease;destroyed=!1;arm(e,t=!1){if(this.disarm(),!(this.destroyed||t))try{this.lease=this.sink.beginCeremony?.(e)}catch(r){this.logger.error("Failed to register ceremony low-event context",r)}}scheduleDisarm(e){try{this.lease?.settle(e)}catch(t){this.logger.error("Failed to settle ceremony low-event context",t)}}disarm(){try{this.lease?.destroy()}catch(e){this.logger.error("Failed to release ceremony low-event context",e)}this.lease=void 0}destroy(){this.disarm(),this.destroyed=!0}};var ye=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new q(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType})}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker.destroy()}};var K=class{constructor(e,t,r,n){this.previousLength=e;this.pushLow=t;this.logger=r;this.reserveCaptureSeq=n}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;markInputObserved(){this.prefillSettled=!0}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect,r){let n=this.inputBatch;if(!n){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:r};return}n.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e.ts,this.ringEffect,e.captureSeq);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,r=-1/0;for(let n=1;n<e.length;n++){let o=e[n].ts-e[n-1].ts;if(o>80)return!1;o<t&&(t=o),o>r&&(r=o)}return r-t<=25}record(e,t=Date.now(),r=!1,n=this.reserveCaptureSeq?.()){this.markInputObserved(),this.scheduleIdle();let o=this.previousLength;this.currentEffect=e===0?"clear":o===0?"fill":"modify";let s=e-o;if(this.previousLength=e,e===0&&o>0){this.flush(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(r){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let a=this.autofillStreak;if(a){if(s===1&&t-a.lastTimestamp<=80){a.lastTimestamp=t;return}this.flushAutofillStreak()}if(s!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}let l=this.autofillTimestamps;if(l.length===0&&(this.ringEffect=this.currentEffect),l.push({ts:t,captureSeq:n}),l.length>5){let u=l.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let p=l[0],d=l[l.length-1];l.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:p.ts,captureSeq:p.captureSeq,lastTimestamp:d.ts,effect:this.ringEffect}}};var V=class{constructor(e,t,r,n,o){this.inputs=t;this.logger=r;this.changed=n;this.reserveCaptureSeq=o;for(let s of t)s.addEventListener("paste",this.onPaste,!0),s.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,r=this.captureSeq;this.clear();try{let n=0,o=!1;this.inputs.forEach((s,a)=>{let l=e[a],p=s.value;if(l===p)return;o=!0;let d=0;for(;d<l.length&&d<p.length&&l[d]===p[d];)d++;let u=0;for(;u<l.length-d&&u<p.length-d&&l[l.length-u-1]===p[p.length-u-1];)u++;n+=p.length-d-u}),o&&this.changed(t,n,r)}catch(n){this.logger.error("Failed to finish paste observation",n)}}clear(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.before=null,this.pasteEvent=void 0}destroy(){this.flush();for(let e of this.inputs)e.removeEventListener("paste",this.onPaste,!0),e.removeEventListener("beforeinput",this.onBeforeInput,!0)}};var ci=["focus","blur","pointerdown","pointerup","click","input","keyup"];function ve(i,e,t,r,n=ci){let o=[];for(let s of n){let a=fi(s,t,r);a&&o.push([s,a])}for(let[s,a]of o)e.addEventListener(s,a);return()=>{for(let[s,a]of o)e.removeEventListener(s,a)}}function fi(i,e,t){switch(i){case"focus":case"blur":{let r=e[i];return r&&(n=>t(i,()=>r(n.relatedTarget)))}case"pointerdown":case"pointerup":case"click":{let r=e[i];return r&&(()=>t(i,()=>r()))}case"input":{let r=e.input;return r&&(n=>t("input",()=>r(n.isComposing||n.inputType==="insertCompositionText",n)))}case"keyup":{let r=e.keyupEscape;return r&&(n=>t("keyup",()=>{n.key==="Escape"&&r()}))}}}function tr(i,e){return e.type==="checkbox"||e.type==="radio"?e.checked?1:0:e.value.length}function rr(i,e){return e.reduce((t,r)=>t+r.value.length,0)}function be(i,e){let t=document.activeElement;return e.find(r=>r===t)}var hi=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],gi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",ir="pa-4",mi='[popover="manual"]',yi=400,vi=20,Je="pa-5",Xe="pa-6",Ze=(i,e)=>{try{return Array.from(i.querySelectorAll(e))}catch{return[]}},nr=i=>{if(i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(e.length<yi||!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/display:\s*block\b/i.test(e)||(e.match(/initial\s*!important/gi)?.length??0)<vi)},bi=i=>{if(nr(i)||i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/backdrop-filter:\s*[^;]*blur\(\s*20px\s*\)/i.test(e)||!/background-color:\s*rgba\(\s*35\s*,\s*35\s*,\s*35\s*,/i.test(e))},Si=i=>{i(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&i(t)}},wi=()=>{let i=new Set;return typeof document>"u"||Si(e=>{for(let t of hi)i.has(t.eventType)||Ze(e,t.query).length>0&&i.add(t.eventType);if(!i.has(ir)&&Ze(e,gi).length>0&&i.add(ir),!i.has(Je)||!i.has(Xe))for(let t of Ze(e,mi)){if(!i.has(Je)&&nr(t)){i.add(Je);continue}!i.has(Xe)&&bi(t)&&i.add(Xe)}}),i};function or(i){return wi()}var Ti=500,Ei=250;function j(i){return tr(0,i)}var E=class{constructor(e,t,r){this.logger=e;this.inputField=t;this.sink=r;this.changes=new K(j(t),this.pushLow,e,r.reserveCaptureSeq),this.pasteObserver=new V(0,[t],e,(n,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=j(t),this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:n,inputEffect:j(t)===0?"clear":a===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;removeFieldListeners;removePageHide;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.mountProbeTimer!==null&&(clearTimeout(this.mountProbeTimer),this.mountProbeTimer=null),this.focusProbeTimer!==null&&(clearTimeout(this.focusProbeTimer),this.focusProbeTimer=null),this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;this.removeFieldListeners=ve(0,e,{focus:()=>this.handleFocus(),blur:()=>this.handleBlur(),pointerdown:()=>this.enqueueNonInputEvent("pointerdown"),pointerup:()=>this.enqueueNonInputEvent("pointerup"),click:()=>this.enqueueNonInputEvent("click"),input:(t,r)=>this.handleInput(r,t),keyupEscape:()=>this.enqueueNonInputEvent("keyup-escape")},(t,r)=>{try{r()}catch(n){t==="input"?this.logger.error("Failed to observe input",n):this.logger.error(`Failed to handle low event "${t}"`,n)}}),typeof window<"u"&&(this.removePageHide=x(0,"pagehide",this.wrapHandler("pagehide",()=>this.flushForTeardown()))),typeof document<"u"&&be(0,[e])&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),Ti))}detach(){this.removeFieldListeners?.(),typeof window<"u"&&this.removePageHide?.()}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.sink.passwordManagerDomScan?.()!==!1){let e=or(0),t=Date.now();for(let r of e)this.emittedSignals.has(r)||(this.emittedSignals.add(r),this.pushLow({lowType:r,ts:t}))}}catch(e){this.logger.error("Failed to run input env probe",e)}}scheduleFocusProbe(){this.firstFocusHandled||(this.firstFocusHandled=!0,this.focusProbeTimer=setTimeout(()=>this.runEnvProbe(),Ei))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(j(this.inputField),e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.scheduleFocusProbe(),this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e,t){this.pasteObserver.handlesInput(e)||this.changes.record(j(this.inputField),Date.now(),t)}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var Se=class{constructor(e,t,r){this.logger=e;this.sink=r;this.inputs=[...new Set(t)],this.changes=new K(this.length(),o=>r.enqueueLowEvent(o),e,r.reserveCaptureSeq),this.paste=new V(0,this.inputs,e,(o,s,a)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=this.length(),r.enqueueLowEvent({...a===void 0?{}:{captureSeq:a},lowType:"input-paste",ts:o,inputEffect:this.length()===0?"clear":l===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();let n=(o,s)=>this.safe(s);for(let o of this.inputs)this.listeners.push(ve(0,o,{input:(s,a)=>{this.paste.handlesInput(a)||(this.composing||=s,this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=r.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))},focus:s=>{this.contains(s)||this.emit("focus")},blur:s=>{this.contains(s)||(this.flushPending(),this.emit("blur"))},click:()=>this.emit("click"),pointerdown:()=>this.emit("pointerdown"),pointerup:()=>this.emit("pointerup"),keyupEscape:()=>this.emit("keyup-escape")},n,["input","focus","blur","click","pointerdown","pointerup","keyup"]));typeof window<"u"&&this.listeners.push(x(0,"pagehide",o=>this.safe(()=>{this.flushPending(),r.flushKeepalive()}))),typeof document<"u"&&be(0,this.inputs)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;changeSeq;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return rr(0,this.inputs)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing,this.changeSeq),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var F=class{constructor(e,t,r){this.logger=e;this.inputSink=t;this.groupSink=r}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let r=[...new Set(e)];if(t===this.grouped&&r.length===this.fields.length&&r.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,r.length===0))return;let n=t?this.groupSink:this.inputSink,o={...n,enqueueLowEvent:s=>this.enqueue(n,s)};this.collector=t?new Se(this.logger,r,o):new E(this.logger,r[0],o),this.fields=r}catch(r){this.logger.error("Failed to bind OTP inputs",r)}}enqueue(e,t){if(t.lowType==="input-prefill"){if(this.prefillClaimed)return;this.prefillClaimed=!0}else["input","input-idle","input-clear","input-paste","big-input-paste","big-input-add","big-input-rem"].includes(t.lowType)&&(this.prefillClaimed=!0);e.enqueueLowEvent(t)}capturePrefill(e=!1){e&&(this.prefillClaimed=!1),this.collector?.capturePrefill(e)}flushPending(){this.collector?.flushPending()}destroy(){this.destroyed=!0,this.collector?.destroy(),this.collector=void 0,this.fields=[]}};var we=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"email-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType,emailDomain:t.emailDomain}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Te=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Ii=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];function sr(i){if(!i)return!1;let e=i.toLowerCase();return Ii.some(t=>e.includes(t))}var et="@corbado/observe",tt="1.9.0";import{v7 as xi}from"uuid";var rt="cbo_email_link_starts";function it(i,e){let t=i.getItem(rt);return Array.isArray(t)?t.filter(r=>!!r&&typeof r=="object"&&typeof r.transactionId=="string"&&typeof r.anchor=="string"&&typeof r.sessionId=="string"&&typeof r.startedAt=="number"&&e-r.startedAt<864e5):[]}function ar(i,e){if(i)try{let t=it(i,e.startedAt).filter(r=>r.transactionId!==e.transactionId);t.push(e),i.setItem(rt,t.slice(-10))}catch{}}function lr(i,e,t=Date.now()){if(i)try{let r=it(i,t);if(e.transactionId)return r.find(o=>o.transactionId===e.transactionId);let n=r.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return n[n.length-1]}catch{return}}function pr(i,e){if(i)try{let t=it(i,Date.now()).map(r=>r.transactionId===e?{...r,continued:!0}:r);i.setItem(rt,t)}catch{}}var Ee=class extends f{send;postResponse;resend;transactionId;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.transactionId=t.transactionId||xi(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let r=this.captureReference,n=this.captureSession;r&&n&&ar(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:r,sessionId:n,specType:t.explicitSpecType,startedAt:Date.now()})}},Ie=class extends f{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();removePageHide;constructor(e,t={}){super(e,"email-link"),this.continuationTracker=e,this.specType=t.explicitSpecType,this.transaction=t.transactionId,this.postResponse=this.deferrable(this.defineStep("post-response"),!0),this.resend=this.deferrable(this.defineStep("resend"));let r=e.getPersistentStorage(),n=lr(r,{transactionId:t.transactionId,specType:t.explicitSpecType});if(n&&n.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??n.transactionId,this.adoptCapture(n.anchor,n.sessionId,n.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&(this.removePageHide=x(0,"pagehide",this.onPageHide))}get transactionId(){return this.transaction}setTransactionId(e){!e||this.transaction||(this.transaction=e,this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt()))}flush(){this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt())}destroy(){this.flush(),this.removePageHideListener()}firstDeferredAt(){return this.deferred[0]?.at??this.createdAt}startDetached(e){this.started=!0,this.removePageHideListener(),this.subflowStart({explicitSpecType:this.specType,continuation:!0},{explicitTimestamp:e,...this.transaction?{userReference:{crossEnvironmentTransactionIDFinish:this.transaction}}:{}});let t=this.deferred;this.deferred=[];for(let r of t)r.run(r.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&this.removePageHide?.()}deferrable(e,t=!1){let r=(n,o)=>{if(this.started){n(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:n})};return{start:(n,o)=>r(s=>e.start(n,{...o,explicitTimestamp:s}),o),finished:(n,o)=>{r(s=>e.finished(n,{...o,explicitTimestamp:s}),o),t&&this.transaction&&pr(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(n,o)=>r(s=>e.error(n,{...o,explicitTimestamp:s}),o)}}};var xe=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new q(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType,...t?.ignoreAsInteraction?{ignoreAsInteraction:!0}:{}})}destroy(){this.lowEventTracker.destroy()}};function dr(i){let e=i.debug,t,r=(n,o)=>`[Corbado Observe SDK ${n}] ${o}`;return{reportTelemetry(n,o){if(t)try{t(n,o)}catch{}},setTelemetrySink(n){t=n},debug(n,...o){e&&console.log(r("DEBUG",n),...o)},info(n,...o){e&&console.log(r("INFO",n),...o)},warn(n,...o){e&&console.warn(r("WARN",n),...o)},error(n,...o){e&&console.error(r("ERROR",n),...o)},critical(n,...o){console.error(r("CRITICAL",n),...o)}}}var ke=class extends f{userConfirmation;deletion;constructor(e,t={}){super(e,"passkey-deletion"),this.userConfirmation=this.defineStep("user-confirmation"),this.deletion=this.defineStep("deletion"),this.subflowStart({})}};var Ce=class extends f{clientValidation;postResponse;cui;lowEventTracker;identifierLowEventTracker;constructor(e,t){super(e,"password-login"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.cui={getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.identifierInputHtmlField&&(this.identifierLowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker?.destroy(),this.identifierLowEventTracker?.destroy()}};var Oe=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t){super(e,"password-enrollment"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Pe=class extends f{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(r,n)=>{this.trigger(r,n)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(r,n)=>{this.trigger(r,n)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Le=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"social-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code"),this.subflowStart({explicitSpecType:t.explicitSpecType,entry:t.entry})}};var Fe=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"sso-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code");let{explicitSpecType:r,organizationDomain:n,actor:o}=ki(t??{},e);this.subflowStart({explicitSpecType:r,organizationDomain:n,actor:o})}};function ki(i,e){let t={...i},r=o=>{try{e.getLogger().warn(`SSO login: unsupported ${o}; omitted from telemetry`)}catch{}},n=t.organizationDomain;return n!==void 0&&(typeof n!="string"||n.includes("@")||n.length>253)&&(delete t.organizationDomain,r("organizationDomain")),t.actor!==void 0&&t.actor!=="user"&&t.actor!=="system"&&(delete t.actor,r("actor")),t}var Re=class extends f{lowEventTracker;postResponse;constructor(e,t={}){super(e,"totp"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var De=class extends f{ceremony;retry;postResponse;constructor(e,t={}){super(e,"app-confirmation"),this.ceremony=this.defineStep("ceremony"),this.retry=this.defineStep("retry"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var _e=class extends f{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var Ae=class{constructor(e,t){this.logger=e;this.sink=t}trackers=new Map;destroyed=!1;setFields(e){if(this.destroyed)return;let t=new Set(e);for(let[r,n]of this.trackers)t.has(r)||(this.safe(()=>n.destroy()),this.trackers.delete(r));for(let r of t)this.trackers.has(r)||this.safe(()=>this.trackers.set(r,new E(this.logger,r,this.sink())))}capturePrefill(e=!1){for(let t of this.trackers.values())this.safe(()=>t.capturePrefill(e))}flushPending(){for(let e of this.trackers.values())this.safe(()=>e.flushPending())}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.trackers.values())this.safe(()=>e.destroy());this.trackers.clear()}}safe(e){try{e()}catch(t){this.logger.error("Form input binding failed",t)}}};var nt=50,Ci=6e4,Oi=40,Pi=/^[A-Za-z0-9._-]+$/,Me=class extends f{submit;skip;inputBinding;constructor(e,t){super(e,"form"),this.submit=this.defineStep("submit"),this.skip=this.defineStep("skip"),this.subflowStart(Fi(e,t),Li(e,t)),this.inputBinding=this.createLowCollector(()=>new Ae(e.getLogger(),()=>this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.inputBinding?.flushPending()),t?.inputHtmlFields?.length&&this.setInputFields(t.inputHtmlFields)}setInputFields(e){this.inputBinding?.setFields(e)}destroy(){this.inputBinding?.destroy()}};function Li(i,e){let t=e?.startedAt;if(t===void 0)return;let r=Date.now();if(typeof t!="number"||!Number.isFinite(t)||t>r||r-t>Ci){Q(i,"Form: implausible startedAt ignored; using the current time");return}return{explicitTimestamp:t}}function Fi(i,e){let t={},r=e?.name;typeof r=="string"&&r.trim()!==""?t.name=r:Q(i,"Form: missing name; the form will not be counted");let n=e?.fields;if(n===void 0)return t;if(!Array.isArray(n))return Q(i,"Form: fields must be an array of field names; omitted from telemetry"),t;let o=n.filter(s=>typeof s=="string"&&s.length<=Oi&&Pi.test(s));return o.length<n.length&&Q(i,"Form: unsupported field names omitted from telemetry"),o.length>nt&&Q(i,`Form: more than ${nt} field names; the rest is omitted from telemetry`),o.length>0&&(t.fields=o.slice(0,nt)),t}function Q(i,e){try{i.getLogger().warn(e)}catch{}}function ot(i,e,t){if(i===null||typeof i!="object")return i;try{let r={...i};r.purpose===void 0&&e.purpose!==void 0&&(r.purpose=e.purpose),r.storage===void 0&&e.storage!==void 0&&(r.storage=e.storage),r.trustName===void 0&&e.trustName!==void 0&&(r.trustName=e.trustName);for(let[n,o]of[["bindingReference",255],["trustName",128]])if(typeof r[n]=="string"&&[...r[n]].length>o){delete r[n];try{t.getLogger().debug(`Trusted device: omitted ${n} exceeding ${o} characters`)}catch{}}return r}catch{return i}}function He(i,e,t){return{...i,start:(r,n)=>i.start(ot(r,e,t),n),finished:(r,n)=>i.finished(ot(r,e,t),n)}}var Be=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=ur(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",r,e),this.ceremony=this.checkStep("ceremony",r,e),this.postResponse=this.checkStep("post-response",r,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,r){let n=this.defineStep(e,!0);return{...He(n,t,r),errorTyped:(o,s)=>{n.errorTyped(ot({code:o?.code,error:M(o?.error)},t,r),s)}}}},Ne=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=ur(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=He(this.defineStep("get-options"),r,e),this.ceremony=He(this.defineStep("ceremony"),r,e),this.postResponse=He(this.defineStep("post-response"),r,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function ur(i,e){let t={...i},r=n=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${n}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,r("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,r("storage")),t}var Ue=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:r,...n}=t;this.subflowStart(n),r&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),r,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Ri="/inline/injected/webauthn-listeners.js",cr=/\/dashlane-(?:shadow-dom|top-layer)-page-script\.js/,Di=/-extension:\/\/[^/]+\/content-scripts\/passkey_proxy\/index\.js$/,_i=/-extension:\/\/[^/]+\/content_scripts\/shadow-dom\/shadowAttachNotifier\.js:/,fr=/-extension:\/\/[^/]+\/js\/nordpass-script\.js:/,Ai=/-extension:\/\/[^/]+\/js\/passkeys\.js:/,Mi=/["'`](?:keeper:shadow-root-attached|webauthn-(?:get|create)-request)["'`]/,Hi=/Intercept cancelled for `(?:get|create)`|["'`](?:conditionalMediationAvailable|verifyingPlatformAuthenticatorAvailable)["'`]/,st=()=>Object.keys(window._sentryDebugIds??{}),at=i=>{try{i()}catch(e){return String(e?.stack??"")}return""},hr=()=>at(()=>Element.prototype.attachShadow.call(null,{mode:"open"})),Bi=()=>{let i=Object.getOwnPropertyDescriptor(navigator.credentials??{},"get");if(!i?.get||!i.set||i.configurable)return!1;let e=()=>{},t=i.get.call({_get:e});return t===e||typeof t=="function"&&t===i.get.call({})&&!Function.prototype.toString.call(t).includes("[native code]")},lt=(...i)=>{let e=navigator.credentials;return e?i.map(t=>Object.getOwnPropertyDescriptor(e,t)?.value):[]},Ni=()=>[navigator.credentials?.get,...lt("get","_get")].some(i=>typeof i=="function"&&i.name==="getWebAuthnCredential"),Ui=()=>{let i=document.documentElement,e=document.adoptedStyleSheets;if(!i||typeof i.getAnimations!="function"||typeof e?.push!="function"||i.getAnimations().length>0)return!1;let t=new CSSStyleSheet;t.replaceSync(":where(:root){animation:bitwardenfill 1s 1000s paused}"),e.push(t);try{let r=i.getAnimations().filter(n=>n.animationName==="bitwardenfill");return r.forEach(n=>n.cancel()),r.length>0}finally{let r=e.indexOf(t);r>=0&&e.splice(r,1)}},qi,Ki=()=>qi??=Ui(),Vi=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;if(typeof i!="function"||!Object.prototype.hasOwnProperty.call(i,Symbol.hasInstance))return!1;let e=i[Symbol.hasInstance]({});return e instanceof Promise?(e.catch(()=>{}),!0):!1},Wi=()=>{let i={get nodeType(){throw new Error("probe")}};return at(()=>MutationObserver.prototype.observe.call(null,i))},$i=()=>{let i=new Error("probe"),e=[],t={get nodeType(){return e.push("nodeType"),1},get ownerDocument(){throw e.push("ownerDocument"),i}};try{MutationObserver.prototype.observe.call(null,t)}catch(r){return r===i&&e.join()==="nodeType,ownerDocument"}return!1},Gi=()=>[Element.prototype.attachShadow,navigator.credentials?.get,navigator.credentials?.create,...lt("get","_get","create")].some(e=>typeof e=="function"&&Mi.test(Function.prototype.toString.call(e))),zi=()=>{let i=document;for(;i;){if(i.querySelector("[data-lastpass-icon-root], [data-lastpass-root]"))return!0;i=i.activeElement?.shadowRoot}return!1},ji=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;return[navigator.credentials?.get,...lt("get","_get"),i?.isConditionalMediationAvailable,i?._isConditionalMediationAvailable,i?.isUserVerifyingPlatformAuthenticatorAvailable,i?._isUserVerifyingPlatformAuthenticatorAvailable].some(t=>typeof t=="function"&&Hi.test(Function.prototype.toString.call(t)))},Qi=[{name:"1password",signal:"in-field button",signedIn:!0,test:()=>document.querySelector("com-1password-button")!==null},{name:"1password",signal:"credentials.get accessor",test:Bi},{name:"1password",signal:"Sentry debug id",test:()=>st().some(i=>i.includes(Ri))},{name:"bitwarden",signal:"passkey override",signedIn:!0,test:Ni},{name:"bitwarden",signal:"autofill keyframes",test:Ki},{name:"dashlane",signal:"injected script tag",test:()=>document.querySelector('script[src*="-extension://"][src*="/dashlane-"][src$="-page-script.js"]')!==null},{name:"dashlane",signal:"PublicKeyCredential hasInstance trap",test:Vi},{name:"dashlane",signal:"page script stack",test:()=>cr.test(hr())||typeof HTMLDialogElement<"u"&&cr.test(at(()=>HTMLDialogElement.prototype.showModal.call(null)))},{name:"kaspersky",signal:"passkey proxy flag",test:()=>window.wasKPMKeyPassProxyInited===!0},{name:"kaspersky",signal:"injected script tag",test:()=>Di.test(document.querySelector('script[src*="/content-scripts/passkey_proxy/"]')?.src??"")},{name:"keeper",signal:"attachShadow stack",test:()=>_i.test(hr())},{name:"keeper",signal:"override source",test:Gi},{name:"keeper",signal:"field lock",test:()=>document.querySelector("[data-keeper-lock-id]")!==null},{name:"lastpass",signal:"passkey override",signedIn:!0,test:()=>typeof window.__nativeCredentialsGet=="function"},{name:"lastpass",signal:"icon root",test:zi},{name:"nordpass",signal:"observer proxy stack",test:()=>fr.test(Wi())},{name:"nordpass",signal:"observer read order",test:$i},{name:"nordpass",signal:"passkeys Sentry debug id",test:()=>st().some(i=>Ai.test(i))},{name:"nordpass",signal:"Sentry debug id",test:()=>st().some(i=>fr.test(i))},{name:"protonpass",signal:"WebAuthn override source",test:ji},{name:"protonpass",signal:"field icon",test:()=>document.querySelector("[data-protonpass-role]")!==null}];function Yi(){return typeof window>"u"||typeof document>"u"?[]:Qi.map(({name:i,signal:e,signedIn:t,test:r})=>{try{return{name:i,signal:e,signedIn:t,matched:r()}}catch(n){return{name:i,signal:e,signedIn:t,matched:!1,error:n}}})}function gr(){let i=new Map;for(let{name:e,signedIn:t,matched:r}of Yi()){if(!r)continue;let n=i.get(e)??{name:e};t&&(n.signedIn=!0),i.set(e,n)}return[...i.values()]}function mr(i){return gr()}var yr=3e3,Ji=500,Xi=6,Zi=1e3,qe=class{constructor(e,t,r){this.logger=e;this.isEnabled=t;if(typeof window>"u"||typeof document>"u")return;if(this.sample(),bt(0))this.sampleAfter(yr);else{let o=()=>{this.sampleWhenIdle(),this.sampleAfter(yr)};this.removers.push(x(0,"load",o,{once:!0}))}let n=r.onInputFocus(o=>{!this.isEnabled()||this.sampledFields.has(o)||(this.sampledFields.add(o),++this.focusSamples>=Xi&&n(),this.sampleAfter(Ji))});this.removers.push(n)}detected=new Map;timers=new Set;idleCallbacks=new Set;sampledFields=new WeakSet;focusSamples=0;removers=[];destroyed=!1;reportedCounts=new Map;getDetected(){return[...this.detected.values()]}takeReport(e){if(!(!this.isEnabled()||this.detected.size<=(this.reportedCounts.get(e)??0)))return this.reportedCounts.set(e,this.detected.size),this.getDetected().map(({name:t})=>({name:t}))}destroy(){this.destroyed=!0;for(let e of this.removers)e();for(let e of this.timers)clearTimeout(e);this.timers.clear();for(let e of this.idleCallbacks)cancelIdleCallback(e);this.idleCallbacks.clear()}sampleAfter(e){let t=setTimeout(()=>{this.timers.delete(t),this.sampleWhenIdle()},e);this.timers.add(t)}sampleWhenIdle(){if(typeof requestIdleCallback!="function"){this.sample();return}let e=requestIdleCallback(()=>{this.idleCallbacks.delete(e),this.sample()},{timeout:Zi});this.idleCallbacks.add(e)}sample(){if(!(this.destroyed||!this.isEnabled()))try{let e=mr(0);for(let t of e){let r=this.detected.get(t.name);(!r||t.signedIn&&!r.signedIn)&&this.detected.set(t.name,t)}}catch(e){this.logger.error("Failed to detect password manager extensions",e)}}};var pt={name:et,version:tt},en=/^[0-9A-Za-z.+_-]{1,32}$/;function tn(i,e){return i===void 0?pt:typeof i=="string"&&en.test(i)?{...pt,integrationVersion:i}:(e.debug("Ignoring invalid integrationVersion (expected <= 32 chars of [0-9A-Za-z.+_-])"),pt)}var vr="cbo_session_id",dt="cbo_session",A="cbo_seq",br="cbo_experiments",Sr="cbo_data_policy",rn=255,nn=/^[A-Za-z0-9_-]+$/,on=128,sn=256,wr=1e3,an=/^[a-z][a-z0-9_-]{0,31}$/,Tr=/^[A-Za-z0-9_-]{1,16}$/,ln=64,pn=32,dn=50,un="cbo_seq",Er=1e3,Ir=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Ke=class i{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??dr({debug:this.options.debug});let t=new de(this.logger),r=new ce(this.logger),n=e.storage==="cookie",o=n?new ue(this.logger,e.cookieDomain):void 0;er(e.projectId,t,r,o,this.logger);let s=e.projectId,a=c=>new pe(c,s);this.seqLockName=O(un,s),this.sessionStorage=a(r),this.persistentStorage=a(t),this.storage=a(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]},...e.sdkConfig?.sourcePathQueryAllow&&{sourcePathQueryAllow:[...e.sdkConfig.sourcePathQueryAllow]}},this.fixedData=Mt(e.fixedDataConfig),this.fixedData&&(this.configOverrides.pmd=this.fixedData.pmd);let l=Object.keys(v).every(c=>this.configOverrides[c]!==void 0)&&Object.keys(v.retry).every(c=>this.configOverrides.retry?.[c]!==void 0);l||(this.configManager=new me(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=$e(p,this.configOverrides),!l&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!l&&!p&&e.deviceInfoCollectorTimeout!=null&&this.configOverrides.deviceInfoCollectorTimeoutMs===void 0&&(this.config={...this.config,deviceInfoCollectorTimeoutMs:e.deviceInfoCollectorTimeout}),e.apiBaseUrl!==""&&(/^https?:\/\//.test(e.apiBaseUrl)||(this.logger.critical(`Invalid apiBaseUrl: URL must start with http:// or https:// (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: missing http(s) scheme")),e.apiBaseUrl.endsWith("/")&&(this.logger.critical(`Invalid apiBaseUrl: URL must not have a trailing slash (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: trailing slash")));let d=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${d}`);let u=new ie({logger:this.logger,url:d});this.sessionId=this.resolveSessionId(),this.queue=new se(this.logger,u,this.sessionId,tn(this.options.integrationVersion,this.logger),{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:O(Ge,s),getDataPolicy:()=>this.dataPolicy,fixedData:this.fixedData!==void 0||typeof __CBO_DATA_PMD__=="boolean"||typeof __CBO_DATA_PRIVATE_MODE__=="boolean",beforeEventBatchSend:c=>this.attachUndeliveredDeviceInfo(c),standaloneDeviceInfo:{has:()=>this.deviceInfoManager?.hasStandalone()??!1,take:()=>this.deviceInfoManager?.takeStandalone()}},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((c,w)=>this.reportTelemetry(c,w));try{this.getWindowObserver()}catch(c){this.logger.error("Failed to attach page low-event observer",c)}if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.fixedData?.pmd!==!1)try{this.passwordManagerSampler=this.isTrackingBlocked()?void 0:new qe(this.logger,()=>typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.config.pmd,this.getWindowObserver())}catch(c){this.logger.error("Failed to start password manager detection",c)}let h=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let c of h)this.telemetry(c.level,c.message);let m=new ae(this.logger,this.storage,n?"cookie":"localstorage",this.sessionStorage,()=>({timing:this.config.deviceInfoTiming}),(c,w)=>this.telemetry(c,w),this.fixedData?.privateMode??!0);this.deviceCollector=m;let y=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new le(this.logger,m,Math.max(1,y),y,{timing:()=>this.config.deviceInfoTiming,emit:(c,w)=>this.telemetry(c,w)},()=>this.queue.notifyDeviceInfo()),this.deviceInfoManager.start(),this.experiments=this.loadPersistedExperiments(),e.experiments&&this.setExperiments(e.experiments),this.dataPolicy=this.loadPersistedDataPolicy(),e.dataPolicy!==void 0&&this.setDataPolicy(e.dataPolicy),this.configManager?.start(c=>this.handleConfig(c))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;fixedData;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];probePageId;probeSeqs=new Map;windowObserver;passwordManagerSampler;getWindowObserver(){return this.windowObserver??=new te(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=$e(e,this.configOverrides);t.sessionContinuity||=this.config.sessionContinuity,t.durableOutbox||=this.config.durableOutbox,this.config=t,this.queue.updateConfig(this.config)}getLogger(){return this.logger}applicationTag(){return this.options.applicationId?{applicationId:this.options.applicationId.toLowerCase()}:{}}setExperiment(e,t){this.setExperiments({[e]:t})}setExperiments(e){try{if(!e||typeof e!="object")return;let t=!1;for(let[r,n]of Object.entries(e)){if(!i.isValidExperimentKey(r)||!i.isValidExperimentVariant(n)){this.logger.debug(`Ignoring invalid experiment assignment "${String(r)}"`);continue}this.experiments[r]!==n&&(this.experiments[r]=n,t=!0)}t&&this.persistExperiments()}catch(t){this.logger.error("Failed to set experiments",t)}}clearExperiment(e){try{Object.prototype.hasOwnProperty.call(this.experiments,e)&&(delete this.experiments[e],this.persistExperiments())}catch(t){this.logger.error("Failed to clear experiment",t)}}clearExperiments(){try{if(Object.keys(this.experiments).length===0)return;this.experiments={},this.persistExperiments()}catch(e){this.logger.error("Failed to clear experiments",e)}}getExperiments(){return{...this.experiments}}getPersistentStorage(){return this.persistentStorage}getSdkConfig(){return Object.freeze({version:this.config.version,aap:this.config.aap,rawErrors:this.config.rawErrors})}setDataPolicy(e){try{if(!i.isValidDataPolicy(e)){this.logger.debug(`Ignoring invalid data policy code "${String(e)}"`);return}this.dataPolicy!==e&&(this.dataPolicy=e,this.persistDataPolicy())}catch(t){this.logger.error("Failed to set data policy",t)}}getDataPolicy(){return this.dataPolicy}static isValidDataPolicy(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=rn}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(Sr);return i.isValidDataPolicy(e)?e:void 0}catch(e){this.logger.debug("Failed to load persisted data policy",e);return}}persistDataPolicy(){try{if(this.dataPolicy===void 0)return;this.persistentStorage.setItem(Sr,this.dataPolicy)}catch(e){this.logger.debug("Failed to persist data policy",e)}}static isValidExperimentKey(e){return typeof e=="string"&&e.length>0&&e.length<=on&&nn.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=sn}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(br);if(!e||typeof e!="object")return{};let t={};for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(br,this.experiments)}catch(e){this.logger.debug("Failed to persist experiments",e)}}resolveExperiments(e){let t={...this.experiments};if(e&&typeof e=="object")for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:sr(ee(0))}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let r=P();return this.persistPerTabSession(r,e),this.seq=0,this.logger.debug("Created session id",r),r}catch(e){return this.logger.error("Failed to get session id",e),this.reportTelemetry("error","failed to get session id"),""}}getContinuitySessionId(){let e=Date.now(),t=this.persistentStorage.getItem(dt);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(A)??0,t.id;if(!t?.id){let n=this.readPerTabSession();if(n&&e-n.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(n.id,e),this.persistentStorage.setItem(A,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",n.id),n.id}let r=P();return this.persistContinuitySession(r,e),this.persistentStorage.setItem(A,0),this.seq=0,this.logger.debug("Created continuity session id",r),r}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(dt,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(vr);if(e){if(typeof e=="string")return Ir.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return Ir.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let r=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(vr,{id:e,lastActiveAt:t,...r===void 0?{}:{inactivityMs:r}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let r=Date.now();return this.sessionId&&r-this.lastActivityWriteAt>=Er&&this.persistPerTabSession(this.sessionId,r),this.seq++}let e=()=>{let r=Date.now(),n=this.persistentStorage.getItem(dt),o=!1;if(!n?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,r);else if(n?.id)r-this.lastActivityWriteAt>=Er&&this.persistContinuitySession(n.id,r),n.id!==this.sessionId&&(this.sessionId=n.id,this.queue.setSessionId(n.id),o=!0);else{let l=P();this.persistContinuitySession(l,r),this.persistentStorage.setItem(A,0),this.sessionId=l,this.queue.setSessionId(l),this.seq=0,o=!0}let s=this.persistentStorage.getItem(A);o&&(this.seq=typeof s=="number"?s:0);let a=typeof s=="number"&&s>this.seq?s:this.seq;return this.seq=a+1,this.persistentStorage.setItem(A,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||!Ut(0)?e():ne(0,this.seqLockName,e,{timeoutMs:t,onTimeout:()=>{this.logger.warn(`Sequence Web Lock acquisition timed out after ${t}ms; using fallback`),this.reportTelemetry("info",`seq web lock timeout; using fallback, ${t}ms`)}})}resolveTrackingSourcePath(){if(!(typeof window>"u"))return wt(0,this.config.sourcePathQuery,this.config.sourcePathQueryAllow)}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,r,n){let o={subflowType:e,...t};this.track("subflow_started",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{id:n,subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowTrigger(e,t,r){let n={subflowType:e,...t};this.track("subflow_trigger",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepStarted(e,t,r,n,o){let s={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier,ignoreAsInteraction:o};this.track("subflow_step_started",s,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepFinished(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_finished",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepError(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_error",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowError(e,t,r){let n={subflowType:e,stepData:t};this.track("subflow_error",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}async track(e,t,r,n,o,s,a,l){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping event "${e}" for blocked user agent.`);return}(e==="flow_finished"||e==="flow_auto_finished"||e==="flow_reset")&&this.windowObserver?.flushInputs();let p=s??Date.now(),d=l?.id??P(),u=l?.sessionId??this.sessionId,h=this.nextSeq(),m=typeof h=="number"?h:await h,y=this.resolveTrackingSourcePath(),c={type:"predefined",name:e,id:d,timestamp:p,seq:m,data:t,user:r,contexts:o,tags:n,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:$(),initiator:l?.initiator,trackingSourcePath:y??"",subflowStartEventId:l?.subflowStartEventId,tabId:this.resolveEventTabId()}},w=this.deviceInfoManager.getForEvent();w&&(c.deviceInfo=w),this.logger.debug(`Track: ${e}`,JSON.stringify(c,null,2));let T=this.passwordManagerSampler?.takeReport(u);T&&(c.passwordManagers=T),this.queue.enqueue(c,u)}catch(p){this.logger.error(`Failed to process event "${e}" before enqueue`,p),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,r,n,o){try{let s=P(),a=this.sessionId,l={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,l,n,o?.explicitTimestamp,r,{id:s,sessionId:a}),this.flowHandle(s,a)}catch(s){return this.logger.warn("Failed to start flow",s),{enrich:async()=>{}}}}flowDecided(e,t,r){this.track("flow_decided",e,void 0,t,void 0,void 0,r)}conversion(e,t,r){let{userId:n,identifier:o,crossEnvironmentTransactionID:s,...a}=e,l={userId:n,identifier:o,crossEnvironmentTransactionID:s},p={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,l,p,void 0,void 0,r)}flowFinished(e,t,r){try{let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o},l=P(),p=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,r,{id:l,sessionId:p}),this.flowHandle(l,p)}catch(n){return this.logger.warn("Failed to finish flow",n),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async r=>{try{await this.track("flow_enriched",{targetEventId:e},{...r},void 0,void 0,void 0,void 0,{sessionId:t})}catch(n){this.logger.warn("Failed to enrich flow",n)}}}}flowReset(e,t,r){this.track("flow_reset",e,void 0,t,void 0,void 0,r)}flowAutoFinished(e,t,r){let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,r)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}setFlowTags(e,t){try{if(!e||typeof e!="object"){this.logger.warn("setFlowTags: ignoring non-object tags");return}let r={};for(let[o,s]of Object.entries(e)){if(o===""||typeof s!="string"){this.logger.warn(`setFlowTags: ignoring invalid tag "${o}"`);continue}r[o]=s}if(Object.keys(r).length===0)return;let n={match:{flowType:t?.flowType??"*",at:"during"}};t?.expandToChildren!==void 0&&(n.expCh=t.expandToChildren),t?.expandToFollowing!==void 0&&(n.expFol=t.expandToFollowing),this.track("flow_enriched",n,void 0,r)}catch(r){this.logger.warn("Failed to set flow tags",r)}}authMethodsDecisionStarted(e,t,r,n){this.track("auth_method_decision_started",e,void 0,t,void 0,n?.explicitTimestamp,r)}authMethodsDecisionFinished(e,t,r){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,r)}authDecisionStarted(e,t,r){this.track("auth_decision_started",e,void 0,t,void 0,void 0,r)}authDecisionFinished(e,t,r){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,r)}enqueueLowEvent(e,t){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping low event "${e.lowType}" for blocked user agent.`);return}this.queue.enqueueLow({...e,captureSeq:e.captureSeq??k(),captureVersion:1,pageId:e.pageId??$()},t)}catch(r){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,r)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let r=typeof t=="string"?t:String(t);if(r.length===0)return;let n={id:P(),level:e,message:r.length>wr?r.slice(0,wr):r,ts:Date.now()};this.queue.enqueueTelemetry(n)}catch(r){this.logger.error("Failed to process telemetry before enqueue",r)}}probe(e){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping probe for blocked user agent.");return}if(!e||typeof e!="object"||typeof e.kind!="string"||!an.test(e.kind)){this.logger.debug("Dropping probe with an invalid kind.");return}let t=e.payload;if(!t||typeof t!="object"){this.logger.debug(`Dropping probe "${e.kind}" without an object payload.`);return}let r=typeof e.pageId=="string"&&Tr.test(e.pageId)?e.pageId:this.defaultProbePageId(),n={id:P(),kind:e.kind,ts:typeof e.ts=="number"&&Number.isFinite(e.ts)?Math.round(e.ts):Date.now(),pageId:r,seq:this.nextProbeSeq(r),payload:t};typeof e.cfg=="string"&&Tr.test(e.cfg)&&(n.cfg=e.cfg);let o=hn(e.ctx);o&&(n.ctx=o),this.queue.enqueueProbe(n)}catch(t){this.logger.error("Failed to process probe before enqueue",t)}}defaultProbePageId(){return this.probePageId??=fn()}nextProbeSeq(e){let t=this.probeSeqs.get(e)??0;if(this.probeSeqs.delete(e),this.probeSeqs.set(e,t+1),this.probeSeqs.size>pn){let r=this.probeSeqs.keys().next().value;r!==void 0&&this.probeSeqs.delete(r)}return t}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}attachUndeliveredDeviceInfo(e){try{let t=this.deviceInfoManager;if(!t?.hasUndelivered())return;let r=$(),n=e.find(o=>o.meta?.pageId===r&&!o.deviceInfo);n&&(n.deviceInfo=t.takeUndelivered())}catch(t){this.logger.error("Failed to attach device info to batch",t)}}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=dn)return;if(this.reportedTelemetryKeys.add(t),!this.telemetryReady){this.pendingSelfTelemetry.push({level:e,message:t});return}this.telemetry(e,t)}catch{}finally{this.telemetryReporting=!1}}}flushKeepalive(e="manual"){try{this.queue.flushKeepalive(e)}catch(t){this.logger.error("Failed to flush queue keepalive",t)}}isPasswordManagerDomScanEnabled(){return this.fixedData?.pmdExplicit?this.fixedData.pmd:!0}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new ye(this,e)}passkeyEnrollmentFullOperation(e){return new xe(this,e)}passkeyDeletionOperationFull(e){return new ke(this,e)}passwordLoginFullOperation(e){return new Ce(this,e)}passwordEnrollmentFullOperation(e){return new Oe(this,e)}emailLinkOperationFull(e){return new Ee(this,e)}continueEmailLinkOperation(e){return new Ie(this,e)}emailOtpOperationFull(e){return new we(this,e)}smsOtpOperationFull(e){return new Te(this,e)}totpOperationFull(e){return new Re(this,e)}provideIdentifierOperationFull(e){return new Pe(this,e)}provideDataOperationFull(e){return new Ue(this,e)}formOperationFull(e){return new Me(this,e)}socialLoginOperationFull(e){return new Le(this,e)}ssoLoginOperationFull(e){return new Fe(this,e)}appConfirmationOperationFull(e){return new De(this,e)}keySigningOperationFull(e){return new J(this,e)}keyRegistrationOperationFull(e){return new X(this,e)}captchaOperationFull(e){return new _e(this,e)}trustedDeviceCheckOperationFull(e){return new Be(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ne(this,e)}async destroy(){if(this.configManager?.destroy(),this.passwordManagerSampler?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSessionId();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}resetSession(){let e=P();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(A,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}},cn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";function fn(){let i=new Uint8Array(16);try{crypto.getRandomValues(i)}catch{for(let t=0;t<i.length;t++)i[t]=Math.floor(Math.random()*256)}let e="";for(let t=0;t<i.length;t++)e+=cn[i[t]&63];return e}function hn(i){if(!i||typeof i!="object")return;let e={};for(let t of["state","flowType","step"]){let r=i[t];typeof r=="string"&&r.length>0&&(e[t]=r.slice(0,ln))}return Object.keys(e).length>0?e:void 0}var gn=["none","presence","size","class","format","partial","enum","computed","token","pseudonym","redacted","raw"];var mn={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function yn(i,e){return Ve(i,"creationOptions",e)}function vn(i,e){return Ve(i,"creationResponse",e)}function bn(i){return Ve(i,"requestOptions")}function Sn(i,e){return Ve(i,"assertionResponse",e)}function Ve(i,e,t={}){try{let r=typeof i=="string"?JSON.parse(i):i;if(!wn(r))return;let n=new Set(mn[e]),o=new Set,s=(a,l,p=0)=>{if(!n.has(l)){if(e==="creationOptions"&&l==="/user/id"||(e==="creationResponse"||e==="assertionResponse")&&l==="/response/userHandle"){if(a===null)return null;if(!t.userId)return;let d=typeof a=="string"?a:a instanceof ArrayBuffer||ArrayBuffer.isView(a)?xr(a):void 0;if(d===void 0)return;try{let u=t.userId(d);return typeof u=="string"||u===null?u:void 0}catch{return}}if(a===null||typeof a=="string"||typeof a=="boolean")return a;if(typeof a=="number")return Number.isFinite(a)?a:null;if(typeof a=="object"){if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))return xr(a);if(p>64||o.has(a))throw new TypeError("Invalid telemetry payload");o.add(a);try{if(Array.isArray(a))return a.map((m,y)=>s(m,`${l}/${y}`,p+1));let d=Object.create(null);for(let m in a){let y=`${l}/${m.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(n.has(y)||m==="toJSON")continue;let c=s(a[m],y,p+1);c!==void 0&&(d[m]=c)}let u=a,h=(m,y)=>{if(d[y]!==void 0||typeof u[m]!="function")return;let c=`${l}/${y}`,w=s(Reflect.apply(u[m],a,[]),c,p+1);w!==void 0&&(d[y]=w)};return l===""&&(e==="creationResponse"||e==="assertionResponse")&&h("getClientExtensionResults","clientExtensionResults"),l==="/response"&&e==="creationResponse"&&(h("getTransports","transports"),h("getAuthenticatorData","authenticatorData"),h("getPublicKey","publicKey"),h("getPublicKeyAlgorithm","publicKeyAlgorithm")),d}finally{o.delete(a)}}}};return JSON.stringify(s(r,""))}catch{return}}function wn(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)&&!(i instanceof ArrayBuffer)&&!ArrayBuffer.isView(i)}function xr(i){let e=i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength),t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var S;function el(i){let e=new Ke(i);return S=e,e}function tl(){return S}function rl(){return S?.resetSession()}function il(){return S?.getSessionId()}function nl(i){S?.setUser(i)}function ol(i,e){S?.setFlowTags(i,e)}function sl(i,e){S?.setExperiment(i,e)}function al(i){S?.setExperiments(i)}function ll(i){S?.clearExperiment(i)}function pl(){S?.clearExperiments()}function dl(){return S?.getExperiments()??{}}function ul(i,e){S?.telemetry(i,e)}function cl(i){S?.logInfo(i)}function fl(i){S?.logError(i)}async function hl(){S&&(await S.destroy(),S=void 0)}export{De as AppConfirmationOperationFull,qr as AuthEventName,Mr as CEREMONY_LOW_EVENT_TAIL_MS,b as CONFIG_BOUNDS,_t as CONFIG_REQUEST_HEADER,Dt as CONFIG_STORAGE_KEY,_e as CaptchaOperationFull,ue as CookieStorage,Ke as CorbadoTracker,jn as DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,Gn as DEFAULT_FLUSH_INTERVAL_MS,Qr as DEFAULT_MAX_ENTRIES,Yr as DEFAULT_MAX_SERIALIZED_LENGTH,v as DEFAULT_RELIABILITY_CONFIG,zn as DEFAULT_SEQ_LOCK_TIMEOUT_MS,Kr as DEFAULT_SESSION_INACTIVITY_MS,Ie as EmailLinkContinuationOperation,Ee as EmailLinkOperationFull,we as EmailOtpOperationFull,U as EventStore,Me as FormOperationFull,X as KeyRegistrationOperationFull,J as KeySigningOperationFull,de as LocalStorage,pe as NamespacedStorage,Ge as OUTBOX_LOCK_NAME,jr as OUTBOX_STORAGE_KEY,f as OperationFull,Pe as OperationFullProvideIdentifierWithCUI,Kt as PROBE_BATCH_MAX_BYTES,qt as PROBE_BATCH_MAX_ITEMS,ti as PROBE_PAYLOAD_MAX_BYTES,ei as PROBE_QUEUE_MAX_BYTES,Zr as PROBE_QUEUE_MAX_ITEMS,ke as PasskeyDeletionOperationFull,xe as PasskeyEnrollmentOperationFull,ye as PasskeyLoginOperationFull,Oe as PasswordEnrollmentOperationFull,Ce as PasswordLoginOperationFull,Ue as ProvideDataOperationFull,kr as RAW_ERROR_BOUNDS,gn as READER_EXPOSURES,se as RequestQueue,et as SDK_NAME,tt as SDK_VERSION,ce as SessionStorage,Te as SmsOtpOperationFull,Le as SocialLoginOperationFull,Fe as SsoLoginOperationFull,Re as TotpOperationFull,Be as TrustedDeviceCheckOperationFull,Ne as TrustedDeviceEnrollmentOperationFull,Vt as UNLOAD_BUDGET_BYTES,ze as UNLOAD_PROBE_MAX_BYTES,Bt as cacheConfig,ll as clearExperiment,pl as clearExperiments,dr as createLogger,hl as destroy,gr as detectPasswordManagerExtensions,dl as getExperiments,il as getSessionId,tl as getTracker,el as init,Ht as loadCachedConfig,fl as logError,cl as logInfo,O as namespacedKey,G as parseReliabilityConfig,rl as resetSession,Mt as resolveFixedDataConfig,ft as resolveRawErrorLimits,$e as resolveReliabilityConfig,Sn as sanitizeAssertionResponse,yn as sanitizeCreationOptions,vn as sanitizeCreationResponse,bn as sanitizeRequestOptions,mt as serializeRawError,sl as setExperiment,al as setExperiments,ol as setFlowTags,nl as setUser,ul as telemetry,oe as utf8Length};
|
|
4
|
+
${s}`,t)}function Mr(i,e,t){let{limits:r}=t,n=N(i),o=u=>J(u,e-1,t);if(n==="Date")return Number.isNaN(i.getTime())?"[Invalid Date]":i.toISOString();if(n==="RegExp")return R(String(i),r.maxValueLength);if(n==="ArrayBuffer")return`[ArrayBuffer(${i.byteLength})]`;if(ArrayBuffer.isView(i))return`[${n}(${i.byteLength})]`;if(n==="Map"||n==="Set"){let u=i,h=[];for(let m of u){if(h.length===r.maxBreadth)break;h.push(o(m))}return u.size>h.length&&h.push(`[+${u.size-h.length} more]`),h}if(n==="Promise"||n==="WeakMap"||n==="WeakSet"||n==="Window")return`[${n}]`;if(typeof Node<"u"&&i instanceof Node)return`[${n}]`;if(Array.isArray(i)){let u=i.slice(0,r.maxBreadth).map(o);return i.length>r.maxBreadth&&u.push(`[+${i.length-r.maxBreadth} more]`),u}if(typeof Response<"u"&&i instanceof Response)return{status:o(i.status),statusText:o(i.statusText),url:o(i.url),redirected:o(i.redirected)};if(typeof Event<"u"&&i instanceof Event){let u=i,h={type:o(u.type)};for(let m of["message","filename","lineno","colno"])m in u&&(h[m]=o(u[m]));return"error"in u&&u.error!=null&&(h.error=o(u.error)),h}let s=Object.create(null),a=i,l=Ar(i);if(l){for(let h of Fr){if(h==="stack"&&!r.stack)continue;let m=a[h];if(!(m==null||typeof m=="function")){if(h==="stack"){r.stack&&typeof m=="string"&&(s.stack=G(mt(m,r.maxStackFrames,r.maxValueLength),t));continue}s[h]=o(m)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=Hr(u,e-1,t))}let p=0,d=Object.keys(a);for(let u of d){if(u in s||u==="stack"&&!r.stack||l&&u==="cause")continue;if(++p>r.maxBreadth){s["\u2026"]=`[+${d.length-r.maxBreadth} keys]`;break}let h=a[u];typeof h!="function"&&(s[G(u,t)]=u==="stack"&&typeof h=="string"?G(mt(h,r.maxStackFrames,r.maxValueLength),t):o(h))}return!l&&n!=="Object"&&p===0?`[${n}]`:s}function Hr(i,e,t){if(typeof i!="object"||i===null)return J(i,e,t);if(t.causeBudget<=0)return G(`[${N(i)}]`,t);t.causeBudget--;try{return J(i,e,t)}finally{t.causeBudget++}}var Nr=1500,f=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:k,enqueueLowEvent:r=>this.tracker.enqueueLowEvent({...r,captureSeq:r.captureSeq??k(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:r.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),passwordManagerDomScan:()=>this.tracker.isPasswordManagerDomScanEnabled(),registerInputs:(r,n)=>this.tracker.getWindowObserver().registerInputs(r,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),n),beginCeremony:r=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:r??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(r=>t.capturePrefill(r)),t}catch(t){this.tracker.getLogger().error("Failed to attach low-event collector",t);return}}registerLowFlusher(e){this.lowFlushers.push(e)}captureOptions(e,t=this.startReference,r=this.captureSessionId,n){if(!t&&!n)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??r),n&&(o.initiator=e?.initiator??n),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,r){this.startReference=e,this.captureSessionId=t,this.captureSpecType=r}subflowStart(e,t){try{for(let r of this.lowFlushers)try{r()}catch(n){this.tracker.getLogger().error("Failed to flush previous low-event context",n)}this.captureSpecType=e?.explicitSpecType,this.startReference=Br(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(r){this.tracker.getLogger().error("Failed to start low-event capture context",r)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(r){this.tracker.getLogger().error("Failed to capture input prefill",r)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,r,n){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(r),n)}subflowStepFinished(e,t,r){(!r?.subflowStartEventId||r.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(r))}subflowStepError(e,t,r){let n=t;try{let o=this.tracker.getSdkConfig().rawErrors?r?.rawError:void 0;o!==void 0&&(n={...t,rawError:vt(o,r?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,n,this.captureOptions(r))}withWindowLowEvents(e,t){let r,n=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==r||t.scheduleDisarm(Nr)},o=e;return{...e,start:(s,a)=>{r=a?.subflowStartEventId??this.startReference;let l=s?.explicitSpecType??this.captureSpecType,p=a?.initiator??ht(this.operationName,l);t.arm(p,l==="passkey-cui"),o.start(s,p?{...a,initiator:p}:a)},finished:(s,a)=>{o.finished(s,a),n(a)},error:(s,a)=>{o.error(s,a),n(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),n(a)}}}defineStep(e,t){let r,n,o,s=l=>this.captureOptions(l,r,n,o);return{start:(l,p)=>{r=this.startReference,n=this.captureSessionId,o=p?.initiator,this.subflowStepStarted(e,l,s(p),t)},finished:(l,p)=>{this.subflowStepFinished(e,l,s(p))},error:(l,p)=>{this.subflowStepError(e,{error:M(l)},s(p))},errorTyped:(l,p)=>{this.subflowStepError(e,l,s(p))}}}};function bt(i,e){if(e.explicitSpecType!==void 0)try{i.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var X=class extends f{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:bt(e,t)})}},Z=class extends f{prepare;postResponse;constructor(e,t={}){super(e,"key-registration"),this.prepare=this.defineStep("prepare"),this.postResponse=this.defineStep("post-response"),this.subflowStart({actor:"system",explicitSpecType:bt(e,t)})}};function Ur(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch{return i}}function qr(i,e){let t=i.toLowerCase();return e.some(r=>{let n=r.toLowerCase();return n.endsWith("*")?t.startsWith(n.slice(0,-1)):t===n})}function St(i,e,t){return e!=="allowlist"||i===""||i==="?"?i:`?${(i.startsWith("?")?i.slice(1):i).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||qr(Ur(a),t)?o:`${a}=*`}).join("&")}`}function I(i,e,t,r){return r===void 0?window.addEventListener(e,t):window.addEventListener(e,t,r),()=>window.removeEventListener(e,t)}function U(i){return document.visibilityState==="hidden"}function wt(i){return document.readyState==="complete"}function Tt(i){return window.location.href}function Et(i,e,t){let r=St(window.location.search,e,t);return`${window.location.pathname}${r}`}function ee(i){return typeof navigator>"u"?"":navigator.userAgent??""}async function It(i){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async function xt(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function kt(i){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async function Ct(i){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,r.toString()]))}async function Ot(i){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,r=e.mobile,n=e.platformVersion,o=e.model||void 0;if(!(!t||r===void 0||!n))return{platform:t,mobile:r,platformVersion:n,model:o}}function Pt(i){if(!(typeof navigator>"u"))return navigator.webdriver}function Lt(i){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}import{v7 as Kr}from"uuid";var $e=(i,e,t)=>{let r=!1,n,o=null,s=null,a=()=>{s!==null&&(clearTimeout(s),s=null);let p=o;r=!1,o=null,p!==null&&i({...n===void 0?{}:{captureSeq:n},lowType:e,ts:p,durationMs:Date.now()-p})};return{extend:()=>{if(!r){let p=t?.();r=!0,o=Date.now(),n=p}s!==null&&clearTimeout(s),s=setTimeout(a,150)},flush:a}};function Ft(i,e,t){let r=[],n=(s,a,l)=>{let p=d=>t(a,()=>l(d));s.addEventListener(a,p),r.push(()=>s.removeEventListener(a,p))};n(window,"blur",()=>e.blur()),n(window,"focus",()=>e.focus()),n(document,"visibilitychange",()=>e.visibilityChange(document.visibilityState==="hidden")),n(document,"focusout",s=>e.focusOut(s.target,!!s.relatedTarget)),n(document,"focusin",s=>e.focusIn(()=>s.composedPath())),n(document,"pointerdown",s=>e.pointerDown(s.target)),window.visualViewport&&(n(window.visualViewport,"resize",()=>e.viewportResize()),n(window.visualViewport,"scroll",()=>e.viewportScroll())),n(window,"pagehide",()=>e.pageHide());let o=window.navigation;return o&&n(o,"currententrychange",s=>{let a=s,l=a.from?.index,p=o.currentEntry?.index;a.navigationType==="traverse"&&typeof l=="number"&&typeof p=="number"&&l>=0&&p>=0&&p<l&&e.navigateBack()}),r}function Rt(i){let e=[];for(let t=document.activeElement;t;t=t.shadowRoot?.activeElement??null)e.push(t);return e}function Dt(i){let e=document.activeElement;return{active:e,idle:e===document.body||!e}}var Vr,z=()=>Vr??=Kr(),te=class{constructor(e,t,r){this.logger=e;this.enqueue=t;this.flushKeepalive=r;typeof window>"u"||typeof document>"u"||(this.removers=Ft(0,{blur:()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)},focus:()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0},visibilityChange:n=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${n?"hidden":"visible"}`,ts:Date.now()})},focusOut:(n,o)=>{let s=this.findInput(n);this.lastBlur=s&&!o&&Date.now()-this.unrelatedPointerAt>250?{registration:s,ts:Date.now()}:void 0},focusIn:n=>{this.lastBlur=void 0;let o=this.inputFocusListeners.size>0&&n().find(s=>this.findInput(s));o&&this.notifyInputFocus(o)},pointerDown:n=>{this.findInput(n)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())},viewportResize:()=>this.extendViewport("resize"),viewportScroll:()=>this.extendViewport("scroll"),pageHide:()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()},navigateBack:()=>{this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()})}},(n,o)=>{try{o()}catch(s){this.logger.error(`Failed to observe window ${n}`,s)}}))}inputs=new Set;inputFocusListeners=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=$e(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",k);scroll=$e(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",k);registerInputs(e,t,r){if(this.destroyed)return()=>{};let n={fields:e,context:t,flush:r};if(this.inputs.add(n),this.inputFocusListeners.size>0&&typeof document<"u"){let o=Rt(0),s=e.find(a=>o.includes(a));s&&this.notifyInputFocus(s)}return()=>{this.inputs.delete(n),this.lastBlur?.registration===n&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let r=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:n=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(r,n)},destroy:r}}onInputFocus(e){return this.destroyed?()=>{}:(this.inputFocusListeners.add(e),()=>this.inputFocusListeners.delete(e))}notifyInputFocus(e){for(let t of this.inputFocusListeners)try{t(e)}catch(r){this.logger.error("Failed to notify registered input focus",r)}}context(){let e=[...this.ceremonies].filter(o=>!o.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=Dt(0),r=this.findInput(t.active);if(r)return r.context();let n=this.lastBlur;if(n&&Date.now()-n.ts<=250&&t.idle)return n.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(r=>r===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:r,...n}=t??{};this.enqueue({...e,...n,captureSeq:e.captureSeq??k(),sourceKind:"window",captureVersion:1,pageId:z()},r)}extendViewport(e){let t=this.context(),r=this.viewportContext[e];(r?.subflowStartEventId!==t?.subflowStartEventId||r?.fieldRole!==t?.fieldRole||r?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear(),this.inputFocusListeners.clear()}}};var Wr=(g=>(g.FlowStarted="flow_started",g.FlowDecided="flow_decided",g.FlowFinished="flow_finished",g.FlowReset="flow_reset",g.AuthMethodDecisionStarted="auth_method_decision_started",g.AuthMethodDecisionFinished="auth_method_decision_finished",g.FlowAutoFinished="flow_auto_finished",g.AuthDecisionStarted="auth_decision_started",g.AuthDecisionFinished="auth_decision_finished",g.SubflowStepStarted="subflow_step_started",g.SubflowStepFinished="subflow_step_finished",g.SubflowStepError="subflow_step_error",g.SubflowTrigger="subflow_trigger",g.SubflowError="subflow_error",g.SubflowStarted="subflow_started",g.SubflowFinished="subflow_finished",g.FlowEnriched="flow_enriched",g.Conversion="conversion",g))(Wr||{});var Ge="cbo_sdk_config",_t="cbo_sdk_config_cache",Mt="X-Corbado-Observe-Config",Xn=500,Zn=50,eo=1e3,b={flushIntervalMs:{min:100,max:6e4},retryMaxAttempts:{min:1,max:10},retryDelayMs:{min:50,max:12e4},sessionInactivityMs:{min:6e4,max:864e5},seqLockTimeoutMs:{min:0,max:250},deviceInfoCollectorTimeoutMs:{min:10,max:1e4},flushOnFlowTypeFinished:{maxEntries:20,maxNameLength:100},sourcePathQueryAllow:{maxEntries:50,maxKeyLength:64}},$r=1800*1e3,v={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:$r,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,pmd:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function D(i,e,t){return Math.min(Math.max(i,e),t)}function A(i,e){return typeof i=="number"&&Number.isFinite(i)?i:e}function L(i,e){return typeof i=="boolean"?i:e}function At(i,e){return typeof i=="string"?i:e}function Gr(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0&&e.length<=b.flushOnFlowTypeFinished.maxNameLength).slice(0,b.flushOnFlowTypeFinished.maxEntries):[]}function zr(i){return typeof i=="string"&&i.trim().toLowerCase()==="all"?"all":"allowlist"}function jr(i){return Array.isArray(i)?i.filter(e=>typeof e=="string").map(e=>e.trim()).filter(e=>e.length>0&&e.length<=b.sourcePathQueryAllow.maxKeyLength).slice(0,b.sourcePathQueryAllow.maxEntries):[]}function q(i){if(!i||typeof i!="object")return null;let e=i;return typeof e.version!="string"||e.version===""?null:Ht(e)}function Ht(i){let e=i.retry&&typeof i.retry=="object"?i.retry:{},t=D(A(e.baseDelayMs,v.retry.baseDelayMs),b.retryDelayMs.min,b.retryDelayMs.max);return{version:At(i.version,""),flushIntervalMs:D(A(i.flushIntervalMs,v.flushIntervalMs),b.flushIntervalMs.min,b.flushIntervalMs.max),durableOutbox:i.durableOutbox===!0,durableLowOutbox:i.durableLowOutbox===!0,beaconKeepalive:i.beaconKeepalive===!0,sessionContinuity:i.sessionContinuity===!0,sessionInactivityMs:D(A(i.sessionInactivityMs,v.sessionInactivityMs),b.sessionInactivityMs.min,b.sessionInactivityMs.max),seqLockTimeoutMs:D(A(i.seqLockTimeoutMs,v.seqLockTimeoutMs),b.seqLockTimeoutMs.min,b.seqLockTimeoutMs.max),tvc:L(i.tvc,v.tvc),tph:L(i.tph,v.tph),td:L(i.td,v.td),tlf:L(i.tlf,v.tlf),telemetry:L(i.telemetry,v.telemetry),flushOnTelemetry:i.flushOnTelemetry===!0,flushOnFlowTypeFinished:Gr(i.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:D(A(i.deviceInfoCollectorTimeoutMs,v.deviceInfoCollectorTimeoutMs),b.deviceInfoCollectorTimeoutMs.min,b.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:i.deviceInfoTiming===!0,rawErrors:L(i.rawErrors,v.rawErrors),pmd:L(i.pmd,v.pmd),aap:At(i.aap,""),sourcePathQuery:zr(i.sourcePathQuery),sourcePathQueryAllow:jr(i.sourcePathQueryAllow),retry:{maxAttempts:D(A(e.maxAttempts,v.retry.maxAttempts),b.retryMaxAttempts.min,b.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:D(A(e.maxDelayMs,v.retry.maxDelayMs),t,b.retryDelayMs.max)}}}function ze(i,e={}){let t=i??v,r=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),n=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=Ht({...t,...r,retry:{...t.retry,...n}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(n).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function Bt(i){try{if(!i||typeof i!="object")return;let e=i,t=e.pmd,r=typeof t=="boolean";return{pmd:r?t:!1,pmdExplicit:r,privateMode:L(e.privateMode,!0)}}catch{return}}function re(i){let e=i.getItem(_t),t=e&&typeof e=="object"?q(e.config):null;return t?{...e,config:t}:null}function Nt(i){return re(i)?.config??q(i.getItem(Ge))}function Ut(i,e){i.setItem(_t,e)}function ie(i,e,t){return fetch(e,t)}function qt(i){if(typeof navigator?.sendBeacon=="function")return(e,t)=>navigator.sendBeacon(e,t)}var Qr=6e4,Yr=6e4,ne=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let r=JSON.stringify(e),n=typeof AbortController<"u"?new AbortController:void 0,o=n?setTimeout(()=>n.abort(),Yr):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:r,keepalive:new Blob([r]).size<=Qr,...n?{signal:n.signal}:{}},a=await ie(0,this.options.url,s),l={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(l.deliveryAccepted=!0),a.status===200)try{let p=q(await a.json());p&&(l.config=p)}catch(p){this.options.logger.error("Failed to parse SDK config response",p),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return l}finally{o&&clearTimeout(o)}}catch(r){return this.options.logger.error("Failed to send event",r),{}}}sendBeacon(e){try{this.options.logger.debug(`Sending ${e.events.length} events via beacon`);let t=qt(0);if(!t)return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let r=new Blob([JSON.stringify(e)],{type:"text/plain"});return t(this.options.url,r)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};import{v7 as ti}from"uuid";function oe(i,e,t,r={}){let n=typeof navigator<"u"?navigator.locks:void 0;if(n?.request){let o=r.timeoutMs,s=o!==void 0&&typeof AbortController<"u"?new AbortController:null;if(o!==void 0&&!s)return Promise.resolve().then(t);try{let a=!1,l,p=()=>{l!==void 0&&(clearTimeout(l),l=void 0)},d=()=>(a=!0,p(),t()),u=s?n.request(e,{signal:s.signal},d):n.request(e,d);return s&&o!==void 0&&!a&&(l=setTimeout(()=>{l=void 0,s.abort();try{r.onTimeout?.()}catch{}},o)),u.catch(h=>{if(a)throw h;return t()}).finally(p)}catch{}}try{return Promise.resolve(t())}catch(o){return Promise.reject(o)}}function Kt(i){return typeof navigator<"u"&&!!navigator.locks?.request}var Jr="cbo_outbox",je="cbo_outbox",Xr=500,Zr=512*1024;function ei(i){if(!i||typeof i!="object")return!1;let e=i;return typeof e.id=="string"&&e.id!==""&&typeof e.sessionId=="string"&&typeof e.flushAfter=="number"&&Number.isFinite(e.flushAfter)&&typeof e.attempts=="number"&&Number.isFinite(e.attempts)&&typeof e.event=="object"&&e.event!==null}var K=class{constructor(e,t,r=Xr,n=Zr,o=je,s=Jr){this.storage=e;this.logger=t;this.maxEntries=r;this.maxSerializedLength=n;this.lockName=o;this.storageKey=s;this.entries=this.read()}entries=[];reportedMalformed=!1;read(){let e=this.storage.getItem(this.storageKey);if(!Array.isArray(e))return[];let t=e.filter(ei);return t.length<e.length&&!this.reportedMalformed&&(this.reportedMalformed=!0,this.logger.error(`EventStore dropped ${e.length-t.length} malformed outbox entries`),this.logger.reportTelemetry?.("error","event store dropped malformed outbox entries")),t}mutate(e){return oe(0,this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let r=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${r} oldest entries (cap ${this.maxEntries})`),this.logger.reportTelemetry?.("error","event store evicted entries (cap)")}t=this.enforceSizeBudget(t),this.entries=t,this.storage.setItem(this.storageKey,t)}catch(t){this.logger.error("Failed to mutate event store",t),this.logger.reportTelemetry?.("error","failed to mutate event store")}})}enforceSizeBudget(e){let t=e.map(o=>JSON.stringify(o).length),r=t.reduce((o,s)=>o+s,e.length+1),n=0;for(;r>this.maxSerializedLength&&n<e.length;)r-=t[n]+1,n++;return n===0?e:(this.logger.error(`EventStore evicted ${n} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(n))}add(e){return this.mutate(t=>t.some(r=>r.id===e.id)?t:[...t,e])}all(){return this.entries=this.read(),this.entries}getDue(e){return this.all().filter(t=>t.flushAfter<=e)}remove(e){if(e.length===0)return Promise.resolve();let t=new Set(e);return this.mutate(r=>r.filter(n=>!t.has(n.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(r=>[r.id,r]));return this.mutate(r=>r.map(n=>t.get(n.id)??n))}size(){return this.all().length}};var ri=500,ii=512*1024,Vt=200,Wt=200*1024,ni=16*1024,$t=6e4,Qe=32e3;function se(i){let e=0;for(let t=0;t<i.length;t++){let r=i.charCodeAt(t);r<128?e+=1:r<2048?e+=2:r>=55296&&r<=56319&&t+1<i.length?(e+=4,t++):e+=3}return e}var ae=class{constructor(e,t,r,n,o={},s){this.logger=e;this.transport=t;this.sessionId=r;this.sdk=n;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.fixedData=o.fixedData===!0,this.beforeEventBatchSend=o.beforeEventBatchSend,this.standaloneDeviceInfo=o.standaloneDeviceInfo,this.config=o.config??v,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new K(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new K(this.storage,this.logger,1e3,256*1024,`${this.outboxLockName??"cbo_outbox"}:lows`,"cbo_low_outbox_v1");let a=this.lowStore.all();this.lowPending=a.filter(l=>this.validPendingLow(l)),this.lowStore.remove(a.filter(l=>!this.validPendingLow(l)).map(l=>l.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];probeQueue=[];probeBytes=0;probesDropped=0;timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;removeVisibilityChange=null;removePageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;fixedData;beforeEventBatchSend;standaloneDeviceInfo;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let r={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(r),this.store?.add(r),this.scheduleAfterEnqueue(e)}catch(r){this.logger.error("Failed to enqueue event",r)}}enqueueLow(e,t=this.sessionId){try{let r={...e,id:e.id??ti()};if(this.config.durableLowOutbox){let n={id:r.id,sessionId:t,event:r,attempts:0,flushAfter:0};this.lowPending.push(n),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(n)}else this.lowsQueue.push({sessionId:t,event:r});this.scheduleAfterEnqueue()}catch(r){this.logger.error("Failed to enqueue low event",r)}}notifyDeviceInfo(){try{this.dirtySinceSyncFlush=!0,this.scheduleFlush(this.flushInterval(),"timer")}catch(e){this.logger.error("Failed to schedule device info flush",e)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}enqueueProbe(e,t=this.sessionId){try{if(this.destroyed)return;let r=JSON.stringify(e.payload);if(typeof r!="string"||se(r)>ni){this.probesDropped++;return}let n={...e,payload:JSON.parse(r)},o=se(JSON.stringify(n));for(this.probeQueue.push({sessionId:t,entry:n,bytes:o,attempts:0,flushAfter:0}),this.probeBytes+=o;this.probeQueue.length>ri||this.probeBytes>ii&&this.probeQueue.length>1;){let s=this.probeQueue.shift();this.probeBytes-=s.bytes,this.probesDropped++}this.scheduleFlush(this.flushInterval(),"timer")}catch(r){this.logger.error("Failed to enqueue probe",r)}}droppedProbeCount(){return this.probesDropped}dueProbes(e){return this.probeQueue.filter(t=>t.flushAfter<=e)}selectProbes(e,t,r,n){let o=[],s=0;for(let a of e){if(o.length>=r)break;if(a.sessionId===t){if(s+a.bytes>n){o.length===0&&n>=Wt&&o.push(a);break}s+=a.bytes,o.push(a)}}return o}removeProbes(e){if(e.length===0)return;let t=new Set(e);this.probeQueue=this.probeQueue.filter(r=>!t.has(r));for(let r of e)this.probeBytes-=r.bytes}dropProbes(e){this.removeProbes(e),this.probesDropped+=e.length}handleProbeSendResult(e,t,r){if(t.length===0)return;let n=e.statusCode;if(typeof n=="number"&&n>=200&&n<300){this.removeProbes(t);return}if(!this.isRetryable(n)){this.dropProbes(t);return}let o=Math.max(1,this.config.retry.maxAttempts),s=this.parseRetryAfter(e),a=[];for(let l of t)l.attempts+=1,l.attempts>=o?a.push(l):l.flushAfter=r+this.backoffForAttempt(l.attempts,s);this.dropProbes(a)}sendUnloadProbes(e,t,r,n){let o=this.sessionId,s={sessionId:o,events:[],sdk:this.sdk,probes:[]};this.attachBatchMeta(s,[],t);let a=se(JSON.stringify(s))+120,l=e>a?this.selectProbes(this.probeQueue,o,Vt,e-a):[];l.length>0&&(s.probes=l.map(p=>p.entry),this.attachBatchMeta(s,l,t),n&&this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(s):Promise.resolve(this.transport.send(s)).catch(()=>{}),this.removeProbes(l)),r&&this.dropProbes(this.probeQueue.slice())}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){if(e==="destroy"){await this.flushingDone;try{this.sendUnloadProbes(Qe,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}}return}this.isFlushing=!0;let t;this.flushingDone=new Promise(r=>{t=r});try{for(this.clearTimer();;){let r=Date.now(),n=this.getDuePending(r),o=this.lowPending.filter(g=>g.flushAfter<=r),s=e==="destroy"?[]:this.dueProbes(r),a=n.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0&&s.length===0;if(a&&!this.hasStandaloneDeviceInfo())break;let l=n[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??s[0]?.sessionId??this.sessionId,p=n.filter(g=>g.sessionId===l).slice(0,this.batchSize),d=o.filter(g=>g.sessionId===l).slice(0,100),u=[...d.map(g=>g.event),...this.takeLows(l,100-d.length)];this.prepareEvents(p,e);let h=l===this.sessionId?this.takeTelemetry():[],m=l===this.sessionId?this.takeStandaloneDeviceInfo():void 0,y=this.selectProbes(s,l,Vt,Wt),c={sessionId:l,events:p.map(g=>g.event),sdk:this.sdk};if(u.length>0&&(c.lows=u),h.length>0&&(c.telemetry=h),y.length>0&&(c.probes=y.map(g=>g.entry)),m&&(c.deviceInfo=m),a&&!m)break;this.attachBatchMeta(c,[...p,...d,...y],e),d.length&&(c.deliveryAck=!0);let w=this.shouldRequestConfig()?{[Mt]:this.config.version||"1"}:void 0,T=await this.transport.send(c,w).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(c.deliveryAck&&T.statusCode&&T.statusCode>=200&&T.statusCode<300&&!T.deliveryAccepted&&(T={...T,statusCode:503}),this.requestConfig&&this.handleConfigResponse(T),this.handleLowSendResult(T,d,r),this.handleProbeSendResult(T,y,r),!this.handleSendResult(T,p,r))break}e==="destroy"&&this.sendUnloadProbes(Qe,e,!0,!1)}catch(r){this.logger.error("Unexpected error in queue flush",r)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,r){e.meta={...e.meta,flushReason:r};let n=this.readDataPolicy();n!==void 0&&(e.meta={...e.meta,dataPolicy:n}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version}),this.fixedData&&(e.meta={...e.meta,fixedData:!0});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}prepareEvents(e,t){if(!(!this.beforeEventBatchSend||e.length===0))try{this.beforeEventBatchSend(e.map(r=>r.event),t)}catch(r){this.logger.error("Failed to prepare events for sending",r)}}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let r=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),n=new Set(r);return this.lowsQueue=this.lowsQueue.filter(o=>!n.has(o)),r.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(r=>!t.has(r.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,r){let n=e.statusCode;if(n!==void 0&&n>=200&&n<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,r);return}if(!this.isRetryable(n)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,r,this.parseRetryAfter(e))}deferLowEntries(e,t,r=null){let n=[];for(let o of e){if(!this.validPendingLow(o)){n.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,r))}this.removeLowEntries(n),this.lowStore?.update(e.filter(o=>!n.includes(o.id)))}hasStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.has()??!1}catch(e){return this.logger.error("Failed to read device info for batch",e),!1}}takeStandaloneDeviceInfo(){try{return this.standaloneDeviceInfo?.take()}catch(e){this.logger.error("Failed to read device info for batch",e);return}}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let n=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of n)this.enqueueLow(o,s)}let r=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new K(this.storage,this.logger,void 0,void 0,this.outboxLockName);let n=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!n.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],r=o.length>0}r?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,r){let n=e.statusCode,o=typeof n=="number"&&n>=200&&n<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(d=>d.id)),!0;if(!this.isRetryable(n))return this.removeEntries(t.map(d=>d.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),l=[],p=[];for(let d of t)d.attempts+=1,d.attempts>=s?l.push(d.id):(d.flushAfter=r+this.backoffForAttempt(d.attempts,a),p.push(d));return this.removeEntries(l),this.store?.update(p),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let r=this.config.retry,n=r.baseDelayMs*Math.pow(2,Math.max(0,e-1));r.maxDelayMs>0&&(n=Math.min(n,r.maxDelayMs));let o=Math.round(n/2+Math.random()*(n/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let r=Number(t);if(!Number.isNaN(r))return r*1e3;let n=Date.parse(t);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(r=>!t.has(r.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0&&this.probeQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(r=>r.flushAfter<=e)||this.lowsQueue.length>0||this.probeQueue.some(r=>r.flushAfter<=e)){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending,...this.probeQueue].map(r=>r.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),U(0)&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.removeVisibilityChange=I(0,"visibilitychange",this.onVisibilityChange),this.removePageHide=I(0,"pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:Tt(0)};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){let t=this.flushSyncEvents(e);e==="pagehide"&&this.probeQueue.length>0&&this.sendUnloadProbes(Math.min($t-t,Qe),e,!0,!0)}flushSyncEvents(e){if(!this.dirtySinceSyncFlush)return 0;let t=this.sessionId,r=this.pending.filter(d=>d.sessionId===t),n=r.slice(0,this.batchSize),o=this.lowPending.filter(d=>d.sessionId===t).slice(0,100),s=[...o.map(d=>d.event),...this.takeLows(t,100-o.length)];this.prepareEvents(n,e);let a=this.takeTelemetry(),l=this.takeStandaloneDeviceInfo();if(n.length===0&&s.length===0&&a.length===0&&!l)return this.dirtySinceSyncFlush=!1,0;let p={sessionId:t,events:n.map(d=>d.event),sdk:this.sdk};return s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),l&&(p.deviceInfo=l),this.attachBatchMeta(p,[...n,...o],e),o.length&&(p.deliveryAck=!0),this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(p)||this.transport.send(p):this.transport.send(p),this.config.durableOutbox||this.removeEntries(n.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&r.length>n.length,this.approximateSize(p)}approximateSize(e){try{return se(JSON.stringify(e))}catch{return $t}}destroy(){try{this.destroyed=!0,this.clearTimer(),this.dropProbes(this.probeQueue.slice()),typeof window<"u"&&(this.removeVisibilityChange&&this.removeVisibilityChange(),this.removePageHide&&this.removePageHide())}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};import{v7 as zt}from"uuid";import oi from"detectincognitojs";async function Gt(i){return(await oi()).isPrivate}var si=300,j=6e3,jt="cbo_pm",ai=10080*60*1e3,Qt="detectincognitojs@1.9.0",Yt={timing:!1},Ye="cbo_tab_id",Jt={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function C(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Xt(i,e,t){return{field:i,source:e,error:{name:"TimeoutError",message:`Device info collection timed out after ${t}ms`}}}async function Je(i,e){let t;try{return await Promise.race([i.then(()=>!0,()=>!0),new Promise(r=>{t=setTimeout(()=>r(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var le=class{constructor(e,t,r="localstorage",n,o=()=>Yt,s,a=!0){this.logger=e;this.storage=t;this.storageSource=r;this.sessionStorage=n;this.settings=o;this.emitTelemetry=s;this.privateModeEnabled=a}pagePrivateMode;privateModeDetectionStarted=!1;lastKnown={};async collect(e,t={}){try{let r=this.resolveSettings(),n=C(),o=this.getClientEnvHandle(),s={type:"web",clientEnvHandle:o.value,clientEnvHandleMeta:{timestamp:o.timestamp,source:o.source},tabId:this.getTabId()},a=typeof __CBO_DATA_PRIVATE_MODE__=="boolean"?__CBO_DATA_PRIVATE_MODE__:this.privateModeEnabled,l=a?this.knownPrivateMode(r.timing):void 0,p,d=a&&l===void 0&&!this.privateModeDetectionStarted?this.detectPrivateMode(r.timing).then(x=>{p=x}):void 0,u=this.startFastFields();await Je(Promise.all(u.map(x=>x.promise)),si);let h=C()-n,m=t.refresh?this.lastKnown:{};r.timing&&this.reportFastTiming(h,u);let y=()=>p?.error?[p.error]:[];this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,y()),"fast");let c=u.filter(x=>!x.settled),w=d!==void 0&&p===void 0;if(c.length===0&&!w)return;let T=C();await Promise.all([Je(Promise.all(c.map(x=>x.promise)),j-(T-n)),d]);let g=c.filter(x=>!x.settled).map(x=>Xt(x.field,x.source,j));g.push(...y()),r.timing&&c.length>0&&this.reportLateTiming(C()-n,c),this.safePublish(e,this.buildInfo(s,u,p?p.value:l,m,g),"update")}catch(r){this.logger.error("Failed to collect device info",r)}}async getInfo(){let e;return await this.collect(t=>{e=t}),e??{}}startFastFields(){return[this.startField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>It(0)),this.startField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>Ct(0)),this.startField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>xt(0)),this.startField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>kt(0)),this.startField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>Ot(0)),this.startField("webdriver","navigator.webdriver",()=>Pt(0)),this.startField("maxTouchPoints","navigator.maxTouchPoints",()=>Lt(0))]}startField(e,t,r){let n=C(),o={field:e,source:t};return o.promise=Promise.resolve().then(r).then(s=>({field:e,value:s,durationMs:C()-n}),s=>(this.logger.error(`Failed to collect device info field "${e}"`,s),{field:e,durationMs:C()-n,error:{field:e,source:t,error:M(s)??{message:"Unknown error"}}})).then(s=>(o.settled=s,s)),o}buildInfo(e,t,r,n,o){let s={},a=[];for(let p of t)p.settled?(p.settled.error&&a.push(p.settled.error),s[p.field]=p.settled.value,this.remember(p.field,p.settled.value)):s[p.field]=n[p.field];s.privateMode=r,a.push(...o);let l={...e,data:{bluetoothAvailable:s.bluetoothAvailable,javaScriptHighEntropy:s.javaScriptHighEntropy,privateMode:s.privateMode,webdriver:s.webdriver,conditionalMediationAvailable:s.conditionalMediationAvailable,userVerifyingPlatformAuthenticatorAvailable:s.userVerifyingPlatformAuthenticatorAvailable,clientCapabilities:s.clientCapabilities,maxTouchPoints:s.maxTouchPoints}};return a.length>0&&(l.collectionErrors=a),l}remember(e,t){t!==void 0&&(this.lastKnown[e]=t)}safePublish(e,t,r){try{e(t,r)}catch(n){this.logger.error("Failed to publish device info",n)}}knownPrivateMode(e){if(this.pagePrivateMode!==void 0)return this.pagePrivateMode;let t=this.readPrivateModeCache();return t&&(this.pagePrivateMode=t.value,e&&this.reportTelemetry(`device info privateMode from cache, age ${Math.round((Date.now()-t.ts)/1e3)}s`)),this.pagePrivateMode}canCachePrivateMode(){return this.storageSource==="localstorage"}readPrivateModeCache(){if(this.canCachePrivateMode())try{let e=this.storage.getItem(jt);if(!e||typeof e!="object"||typeof e.value!="boolean"||typeof e.ts!="number"||e.dv!==Qt)return;let t=Date.now()-e.ts;return t<0||t>=ai?void 0:e}catch(e){this.logger.debug("Failed to read cached privateMode",e);return}}writePrivateModeCache(e){if(this.canCachePrivateMode())try{this.storage.setItem(jt,{value:e,ts:Date.now(),dv:Qt})}catch(t){this.logger.error("Failed to cache privateMode",t)}}async detectPrivateMode(e){this.privateModeDetectionStarted=!0;let t="detectIncognito",r=C(),n=this.startField("privateMode",t,()=>typeof __CBO_DATA_PRIVATE_MODE__=="boolean"&&!__CBO_DATA_PRIVATE_MODE__?void 0:Gt(0));if(!await Je(n.promise,j)||!n.settled)return e&&this.reportTelemetry(`device info privateMode timed out after ${j}ms`),{error:Xt("privateMode",t,j)};if(e&&this.reportTelemetry(`device info privateMode detected in ${Math.round(C()-r)}ms`),n.settled.error)return{error:n.settled.error};let s=n.settled.value;return typeof s!="boolean"?{value:void 0}:(this.pagePrivateMode=s,this.writePrivateModeCache(s),{value:s})}resolveSettings(){try{return{timing:this.settings()?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),Yt}}reportFastTiming(e,t){let r=t.map(n=>`${Jt[n.field]}=${Math.round(n.settled?.durationMs??e)}`).join(",");this.reportTelemetry(`device info collected in ${Math.round(e)}ms (${r})`)}reportLateTiming(e,t){let r=t.map(n=>`${Jt[n.field]}=${n.settled?Math.round(n.settled.durationMs):"timeout"}`).join(",");this.reportTelemetry(`device info late fields done in ${Math.round(e)}ms (${r})`)}reportTelemetry(e){if(this.emitTelemetry)try{this.emitTelemetry("info",e)}catch(t){this.logger.error("Failed to report device info timing",t)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return ee(0)}static getOsName(){let e=this.getUserAgent();return e.includes("iOS")?"iOS":e.includes("Android")?"Android":e.includes("Windows")?"Windows":e.includes("Macintosh")?"macOS":e.includes("Linux")?"Linux":e.includes("ChromeOS")?"ChromeOS":"other"}static getBrowserName(){let e=this.getUserAgent();return e.includes("Chrome")?"Chrome":e.includes("Firefox")?"Firefox":e.includes("Safari")?"Safari":e.includes("Edge")?"Edge":e.includes("Opera")?"Opera":e.includes("IE")?"IE":"other"}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=zt(),r={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",r),r}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(Ye);if(e)return e;let t=zt();if(this.sessionStorage.setItem(Ye,t),this.sessionStorage.getItem(Ye)===t)return t}};function li(){return typeof document<"u"&&U(0)}var pe=class{constructor(e,t,r,n,o,s){this.logger=e;this.source=t;this.refreshInterval=r;this.attachInterval=n;this.diagnostics=o;this.onUndelivered=s}snapshot;snapshotPhase;publishedAt=0;version=0;deliveredVersion=0;refreshedAt=0;lastAttachedAt=null;eventsSeen=!1;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(this.eventsSeen=!0,Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot){if(this.version!==this.deliveredVersion)return this.markDelivered("event");if(!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}}hasUndelivered(){return this.snapshot!==void 0&&this.version!==this.deliveredVersion}takeUndelivered(){if(this.hasUndelivered())return this.markDelivered("flush")}hasStandalone(){return this.eventsSeen&&this.hasUndelivered()}takeStandalone(){if(this.hasStandalone())return this.markDelivered("request")}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}markDelivered(e){return this.deliveredVersion=this.version,this.lastAttachedAt=Date.now(),this.snapshotPhase==="update"&&this.report(`device info update delivered via ${e} after ${Math.max(0,Date.now()-this.publishedAt)}ms`),this.snapshot}publish(e,t){if(t==="fast"&&(this.refreshedAt=Date.now()),!(this.snapshot&&JSON.stringify(this.snapshot)===JSON.stringify(e))&&(this.snapshot=e,this.snapshotPhase=t,this.publishedAt=Date.now(),this.version++,this.eventsSeen&&this.onUndelivered))try{this.onUndelivered()}catch(r){this.logger.error("Failed to announce undelivered device info",r)}}report(e){if(this.diagnostics)try{this.diagnostics.timing()&&this.diagnostics.emit("info",e)}catch(t){this.logger.error("Failed to report device info delivery",t)}}scheduleRefresh(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.snapshot&&li())return this.destroyed||this.scheduleRefresh(),Promise.resolve();let e=this.snapshot!==void 0;return this.refreshPromise=Promise.resolve().then(()=>this.source.collect((t,r)=>this.publish(t,r),{refresh:e})).catch(t=>this.logger.error("Failed to refresh device info",t)).finally(()=>{this.refreshPromise=void 0,this.destroyed||this.scheduleRefresh()}),this.refreshPromise}};function Zt(i){return{getItem:e=>localStorage.getItem(e),setItem:(e,t)=>localStorage.setItem(e,t),removeItem:e=>localStorage.removeItem(e)}}function er(i){return{getItem:e=>sessionStorage.getItem(e),setItem:(e,t)=>sessionStorage.setItem(e,t),removeItem:e=>sessionStorage.removeItem(e)}}function tr(i){return{read:()=>document.cookie,write:e=>{document.cookie=e}}}function O(i,e){return`${i}_${e}`}var de=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(O(e,this.namespace))}setItem(e,t){this.engine.setItem(O(e,this.namespace),t)}removeItem(e){this.engine.removeItem(O(e,this.namespace))}},ue=class{constructor(e){this.logger=e}area=Zt(0);getItem(e){try{if(typeof localStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},ce=class{constructor(e,t){this.logger=e;this.domain=t}jar=tr(0);getItem(e){try{if(typeof document>"u")return null;let t=e+"=",r=this.jar.read().split(";");for(let n=0;n<r.length;n++){let o=r[n].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let r=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(r+=`; domain=${this.domain}`),this.jar.write(r)}catch(r){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),this.jar.write(t)}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},fe=class{constructor(e){this.logger=e}area=er(0);getItem(e){try{if(typeof sessionStorage>"u")return null;let t=this.area.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;this.area.setItem(e,JSON.stringify(t))}catch(r){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,r),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;this.area.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var he=1,ge="cbo_storage_schema",pi=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],di=["cbo_session_id","cbo_tab_id"],ui=["cbo_client_env_handle"];function me(i,e,t){return i.setItem(e,t),JSON.stringify(i.getItem(e))===JSON.stringify(t)}function Xe(i,e,t){let r=i.getItem(ge);if(r!==null){if(r.version!==he||r.projectId!==e)return!1;if(r.complete===!0)return!0;if(r.complete!==!1)return!1}else{if(t.some(n=>i.getItem(O(n,e))!==null))return me(i,ge,{version:he,projectId:e,complete:!0});if(!me(i,ge,{version:he,projectId:e,complete:!1}))return!1}for(let n of t){let o=O(n,e);if(i.getItem(o)!==null)continue;let s=i.getItem(n);if(s!==null&&!me(i,o,s))return!1}return me(i,ge,{version:he,projectId:e,complete:!0})}function rr(i,e,t,r,n){try{if(!Xe(e,i,pi))return;Xe(t,i,di),r&&Xe(r,i,ui)}catch(o){n.error("Failed to migrate legacy Observe storage",o)}}var ci=10*1e3,fi=60*1e3,hi=3600*1e3,gi=300*1e3,ir=1440*60*1e3,mi=[1e3,3e3];function yi(i){let e=/(?:^|[\s,])max-age\s*=\s*"?(\d+)"?/i.exec(i?.get("Cache-Control")??"");if(!e)return hi;let t=Number(i?.get("Age")??0),r=(Number(e[1])-(Number.isFinite(t)&&t>0?t:0))*1e3;return Math.min(Math.max(r,gi),ir)}var ye=class{constructor(e,t,r){this.url=e;this.storage=t;this.logger=r;this.initialConfig=Nt(t)??void 0,this.appliedVersion=this.initialConfig?.version}initialConfig;requestTimer;retryTimer;controller;removers=[];fetching=!1;stopped=!1;lastAttemptAt;appliedVersion;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.listen(),this.refresh())}listen(){if(typeof window>"u")return;let e=()=>{typeof document>"u"||U(0)||this.refresh()};this.removers.push(I(0,"visibilitychange",e),I(0,"pageshow",t=>{t.persisted&&this.refresh()}))}refresh(){try{if(this.stopped||this.fetching)return;let e=Date.now(),t=re(this.storage),{fetchedAt:r,expiresAt:n}=t??{};if(t?.endpoint===this.url&&typeof r=="number"&&typeof n=="number"&&r>0&&n-r<=ir&&r<=e&&e<n){t.config.version!==this.appliedVersion&&(this.appliedVersion=t.config.version,this.onConfig?.(t.config));return}let o=this.lastAttemptAt===void 0?1/0:e-this.lastAttemptAt;if(o>=0&&o<fi)return;this.lastAttemptAt=e,clearTimeout(this.retryTimer),this.fetchConfig()}catch(e){this.logger.error("Unexpected error in SDK config refresh",e)}}async fetchConfig(e=0){if(this.stopped||this.fetching)return;this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),ci):void 0;let r=!0;try{let n=await ie(0,this.url,{method:"GET",cache:"no-cache",...t?{signal:t.signal}:{}});if(!n.ok)throw r=(n.status===408||n.status===429||n.status>=500)&&!n.headers.has("Retry-After"),new Error(`SDK config request failed (${n.status})`);let o=await n.json();r=!1;let s=q(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;let a=Date.now();Ut(this.storage,{endpoint:this.url,fetchedAt:a,expiresAt:a+yi(n.headers),config:s}),re(this.storage)&&this.storage.removeItem(Ge),this.appliedVersion=s.version,this.onConfig?.(s)}catch(n){if(!this.stopped){this.logger.error("Failed to fetch SDK config",n);let o=mi[e];(r&&!(n instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,this.removers.splice(0).forEach(e=>e()),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};import{v7 as P}from"uuid";var V=class{constructor(e,t){this.logger=e;this.sink=t}lease;destroyed=!1;arm(e,t=!1){if(this.disarm(),!(this.destroyed||t))try{this.lease=this.sink.beginCeremony?.(e)}catch(r){this.logger.error("Failed to register ceremony low-event context",r)}}scheduleDisarm(e){try{this.lease?.settle(e)}catch(t){this.logger.error("Failed to settle ceremony low-event context",t)}}disarm(){try{this.lease?.destroy()}catch(e){this.logger.error("Failed to release ceremony low-event context",e)}this.lease=void 0}destroy(){this.disarm(),this.destroyed=!0}};var ve=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType})}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker.destroy()}};var W=class{constructor(e,t,r,n){this.previousLength=e;this.pushLow=t;this.logger=r;this.reserveCaptureSeq=n}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;markInputObserved(){this.prefillSettled=!0}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect,r){let n=this.inputBatch;if(!n){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:r};return}n.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e.ts,this.ringEffect,e.captureSeq);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,r=-1/0;for(let n=1;n<e.length;n++){let o=e[n].ts-e[n-1].ts;if(o>80)return!1;o<t&&(t=o),o>r&&(r=o)}return r-t<=25}record(e,t=Date.now(),r=!1,n=this.reserveCaptureSeq?.()){this.markInputObserved(),this.scheduleIdle();let o=this.previousLength;this.currentEffect=e===0?"clear":o===0?"fill":"modify";let s=e-o;if(this.previousLength=e,e===0&&o>0){this.flush(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(r){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...n===void 0?{}:{captureSeq:n},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let a=this.autofillStreak;if(a){if(s===1&&t-a.lastTimestamp<=80){a.lastTimestamp=t;return}this.flushAutofillStreak()}if(s!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,n);return}let l=this.autofillTimestamps;if(l.length===0&&(this.ringEffect=this.currentEffect),l.push({ts:t,captureSeq:n}),l.length>5){let u=l.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let p=l[0],d=l[l.length-1];l.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:p.ts,captureSeq:p.captureSeq,lastTimestamp:d.ts,effect:this.ringEffect}}};var $=class{constructor(e,t,r,n,o){this.inputs=t;this.logger=r;this.changed=n;this.reserveCaptureSeq=o;for(let s of t)s.addEventListener("paste",this.onPaste,!0),s.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,r=this.captureSeq;this.clear();try{let n=0,o=!1;this.inputs.forEach((s,a)=>{let l=e[a],p=s.value;if(l===p)return;o=!0;let d=0;for(;d<l.length&&d<p.length&&l[d]===p[d];)d++;let u=0;for(;u<l.length-d&&u<p.length-d&&l[l.length-u-1]===p[p.length-u-1];)u++;n+=p.length-d-u}),o&&this.changed(t,n,r)}catch(n){this.logger.error("Failed to finish paste observation",n)}}clear(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.before=null,this.pasteEvent=void 0}destroy(){this.flush();for(let e of this.inputs)e.removeEventListener("paste",this.onPaste,!0),e.removeEventListener("beforeinput",this.onBeforeInput,!0)}};var vi=["focus","blur","pointerdown","pointerup","click","input","keyup"];function be(i,e,t,r,n=vi){let o=[];for(let s of n){let a=bi(s,t,r);a&&o.push([s,a])}for(let[s,a]of o)e.addEventListener(s,a);return()=>{for(let[s,a]of o)e.removeEventListener(s,a)}}function bi(i,e,t){switch(i){case"focus":case"blur":{let r=e[i];return r&&(n=>t(i,()=>r(n.relatedTarget)))}case"pointerdown":case"pointerup":case"click":{let r=e[i];return r&&(()=>t(i,()=>r()))}case"input":{let r=e.input;return r&&(n=>t("input",()=>r(n.isComposing||n.inputType==="insertCompositionText",n)))}case"keyup":{let r=e.keyupEscape;return r&&(n=>t("keyup",()=>{n.key==="Escape"&&r()}))}}}function nr(i,e){return e.type==="checkbox"||e.type==="radio"?e.checked?1:0:e.value.length}function or(i,e){return e.reduce((t,r)=>t+r.value.length,0)}function Se(i,e){let t=document.activeElement;return e.find(r=>r===t)}var Si=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],wi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",sr="pa-4",Ti='[popover="manual"]',Ei=400,Ii=20,Ze="pa-5",et="pa-6",tt=(i,e)=>{try{return Array.from(i.querySelectorAll(e))}catch{return[]}},ar=i=>{if(i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(e.length<Ei||!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/display:\s*block\b/i.test(e)||(e.match(/initial\s*!important/gi)?.length??0)<Ii)},xi=i=>{if(ar(i)||i.getAttribute("popover")!=="manual")return!1;let e=i.getAttribute("style")??"";return!(!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/backdrop-filter:\s*[^;]*blur\(\s*20px\s*\)/i.test(e)||!/background-color:\s*rgba\(\s*35\s*,\s*35\s*,\s*35\s*,/i.test(e))},ki=i=>{i(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&i(t)}},Ci=()=>{let i=new Set;return typeof document>"u"||ki(e=>{for(let t of Si)i.has(t.eventType)||tt(e,t.query).length>0&&i.add(t.eventType);if(!i.has(sr)&&tt(e,wi).length>0&&i.add(sr),!i.has(Ze)||!i.has(et))for(let t of tt(e,Ti)){if(!i.has(Ze)&&ar(t)){i.add(Ze);continue}!i.has(et)&&xi(t)&&i.add(et)}}),i};function lr(i){return Ci()}var Oi=500,Pi=250;function Q(i){return nr(0,i)}var E=class{constructor(e,t,r){this.logger=e;this.inputField=t;this.sink=r;this.changes=new W(Q(t),this.pushLow,e,r.reserveCaptureSeq),this.pasteObserver=new $(0,[t],e,(n,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=Q(t),this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:n,inputEffect:Q(t)===0?"clear":a===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;removeFieldListeners;removePageHide;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.mountProbeTimer!==null&&(clearTimeout(this.mountProbeTimer),this.mountProbeTimer=null),this.focusProbeTimer!==null&&(clearTimeout(this.focusProbeTimer),this.focusProbeTimer=null),this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;this.removeFieldListeners=be(0,e,{focus:()=>this.handleFocus(),blur:()=>this.handleBlur(),pointerdown:()=>this.enqueueNonInputEvent("pointerdown"),pointerup:()=>this.enqueueNonInputEvent("pointerup"),click:()=>this.enqueueNonInputEvent("click"),input:(t,r)=>this.handleInput(r,t),keyupEscape:()=>this.enqueueNonInputEvent("keyup-escape")},(t,r)=>{try{r()}catch(n){t==="input"?this.logger.error("Failed to observe input",n):this.logger.error(`Failed to handle low event "${t}"`,n)}}),typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.wrapHandler("pagehide",()=>this.flushForTeardown()))),typeof document<"u"&&Se(0,[e])&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),Oi))}detach(){this.removeFieldListeners?.(),typeof window<"u"&&this.removePageHide?.()}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.sink.passwordManagerDomScan?.()!==!1){let e=lr(0),t=Date.now();for(let r of e)this.emittedSignals.has(r)||(this.emittedSignals.add(r),this.pushLow({lowType:r,ts:t}))}}catch(e){this.logger.error("Failed to run input env probe",e)}}scheduleFocusProbe(){this.firstFocusHandled||(this.firstFocusHandled=!0,this.focusProbeTimer=setTimeout(()=>this.runEnvProbe(),Pi))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(Q(this.inputField),e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.scheduleFocusProbe(),this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e,t){this.pasteObserver.handlesInput(e)||this.changes.record(Q(this.inputField),Date.now(),t)}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var we=class{constructor(e,t,r){this.logger=e;this.sink=r;this.inputs=[...new Set(t)],this.changes=new W(this.length(),o=>r.enqueueLowEvent(o),e,r.reserveCaptureSeq),this.paste=new $(0,this.inputs,e,(o,s,a)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=this.length(),r.enqueueLowEvent({...a===void 0?{}:{captureSeq:a},lowType:"input-paste",ts:o,inputEffect:this.length()===0?"clear":l===0?"fill":"modify"})},r.reserveCaptureSeq),this.unregisterInputs=r.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();let n=(o,s)=>this.safe(s);for(let o of this.inputs)this.listeners.push(be(0,o,{input:(s,a)=>{this.paste.handlesInput(a)||(this.composing||=s,this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=r.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))},focus:s=>{this.contains(s)||this.emit("focus")},blur:s=>{this.contains(s)||(this.flushPending(),this.emit("blur"))},click:()=>this.emit("click"),pointerdown:()=>this.emit("pointerdown"),pointerup:()=>this.emit("pointerup"),keyupEscape:()=>this.emit("keyup-escape")},n,["input","focus","blur","click","pointerdown","pointerup","keyup"]));typeof window<"u"&&this.listeners.push(I(0,"pagehide",o=>this.safe(()=>{this.flushPending(),r.flushKeepalive()}))),typeof document<"u"&&Se(0,this.inputs)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;changeSeq;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return or(0,this.inputs)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing,this.changeSeq),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var F=class{constructor(e,t,r){this.logger=e;this.inputSink=t;this.groupSink=r}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let r=[...new Set(e)];if(t===this.grouped&&r.length===this.fields.length&&r.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,r.length===0))return;let n=t?this.groupSink:this.inputSink,o={...n,enqueueLowEvent:s=>this.enqueue(n,s)};this.collector=t?new we(this.logger,r,o):new E(this.logger,r[0],o),this.fields=r}catch(r){this.logger.error("Failed to bind OTP inputs",r)}}enqueue(e,t){if(t.lowType==="input-prefill"){if(this.prefillClaimed)return;this.prefillClaimed=!0}else["input","input-idle","input-clear","input-paste","big-input-paste","big-input-add","big-input-rem"].includes(t.lowType)&&(this.prefillClaimed=!0);e.enqueueLowEvent(t)}capturePrefill(e=!1){e&&(this.prefillClaimed=!1),this.collector?.capturePrefill(e)}flushPending(){this.collector?.flushPending()}destroy(){this.destroyed=!0,this.collector?.destroy(),this.collector=void 0,this.fields=[]}};var Te=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"email-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType,emailDomain:t.emailDomain}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Ee=class extends f{lowEventTracker;send;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Li=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];function pr(i){if(!i)return!1;let e=i.toLowerCase();return Li.some(t=>e.includes(t))}var rt="@corbado/observe",it="1.9.1";import{v7 as Fi}from"uuid";var nt="cbo_email_link_starts";function ot(i,e){let t=i.getItem(nt);return Array.isArray(t)?t.filter(r=>!!r&&typeof r=="object"&&typeof r.transactionId=="string"&&typeof r.anchor=="string"&&typeof r.sessionId=="string"&&typeof r.startedAt=="number"&&e-r.startedAt<864e5):[]}function dr(i,e){if(i)try{let t=ot(i,e.startedAt).filter(r=>r.transactionId!==e.transactionId);t.push(e),i.setItem(nt,t.slice(-10))}catch{}}function ur(i,e,t=Date.now()){if(i)try{let r=ot(i,t);if(e.transactionId)return r.find(o=>o.transactionId===e.transactionId);let n=r.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return n[n.length-1]}catch{return}}function cr(i,e){if(i)try{let t=ot(i,Date.now()).map(r=>r.transactionId===e?{...r,continued:!0}:r);i.setItem(nt,t)}catch{}}var Ie=class extends f{send;postResponse;resend;transactionId;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.transactionId=t.transactionId||Fi(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let r=this.captureReference,n=this.captureSession;r&&n&&dr(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:r,sessionId:n,specType:t.explicitSpecType,startedAt:Date.now()})}},xe=class extends f{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();removePageHide;constructor(e,t={}){super(e,"email-link"),this.continuationTracker=e,this.specType=t.explicitSpecType,this.transaction=t.transactionId,this.postResponse=this.deferrable(this.defineStep("post-response"),!0),this.resend=this.deferrable(this.defineStep("resend"));let r=e.getPersistentStorage(),n=ur(r,{transactionId:t.transactionId,specType:t.explicitSpecType});if(n&&n.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??n.transactionId,this.adoptCapture(n.anchor,n.sessionId,n.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&(this.removePageHide=I(0,"pagehide",this.onPageHide))}get transactionId(){return this.transaction}setTransactionId(e){!e||this.transaction||(this.transaction=e,this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt()))}flush(){this.mode==="detached"&&!this.started&&this.startDetached(this.firstDeferredAt())}destroy(){this.flush(),this.removePageHideListener()}firstDeferredAt(){return this.deferred[0]?.at??this.createdAt}startDetached(e){this.started=!0,this.removePageHideListener(),this.subflowStart({explicitSpecType:this.specType,continuation:!0},{explicitTimestamp:e,...this.transaction?{userReference:{crossEnvironmentTransactionIDFinish:this.transaction}}:{}});let t=this.deferred;this.deferred=[];for(let r of t)r.run(r.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&this.removePageHide?.()}deferrable(e,t=!1){let r=(n,o)=>{if(this.started){n(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:n})};return{start:(n,o)=>r(s=>e.start(n,{...o,explicitTimestamp:s}),o),finished:(n,o)=>{r(s=>e.finished(n,{...o,explicitTimestamp:s}),o),t&&this.transaction&&cr(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(n,o)=>r(s=>e.error(n,{...o,explicitTimestamp:s}),o)}}};var ke=class extends f{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new V(e.getLogger(),this.lowEventSink("ceremony")),this.registerLowFlusher(()=>this.lowEventTracker.disarm()),this.getOptions=this.defineStep("get-options"),this.ceremony=this.withWindowLowEvents(this.defineStep("ceremony"),this.lowEventTracker),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType,...t?.ignoreAsInteraction?{ignoreAsInteraction:!0}:{}})}destroy(){this.lowEventTracker.destroy()}};function fr(i){let e=i.debug,t,r=(n,o)=>`[Corbado Observe SDK ${n}] ${o}`;return{reportTelemetry(n,o){if(t)try{t(n,o)}catch{}},setTelemetrySink(n){t=n},debug(n,...o){e&&console.log(r("DEBUG",n),...o)},info(n,...o){e&&console.log(r("INFO",n),...o)},warn(n,...o){e&&console.warn(r("WARN",n),...o)},error(n,...o){e&&console.error(r("ERROR",n),...o)},critical(n,...o){console.error(r("CRITICAL",n),...o)}}}var Ce=class extends f{userConfirmation;deletion;constructor(e,t={}){super(e,"passkey-deletion"),this.userConfirmation=this.defineStep("user-confirmation"),this.deletion=this.defineStep("deletion"),this.subflowStart({})}};var Oe=class extends f{clientValidation;postResponse;cui;lowEventTracker;identifierLowEventTracker;constructor(e,t){super(e,"password-login"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.cui={getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.identifierInputHtmlField&&(this.identifierLowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}trigger(e,t){super.trigger(e,t)}destroy(){this.lowEventTracker?.destroy(),this.identifierLowEventTracker?.destroy()}};var Pe=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t){super(e,"password-enrollment"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Le=class extends f{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(r,n)=>{this.trigger(r,n)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(r,n)=>{this.trigger(r,n)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Fe=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"social-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code"),this.subflowStart({explicitSpecType:t.explicitSpecType,entry:t.entry})}};var Re=class extends f{getRedirectUrl;exchangeCode;constructor(e,t={}){super(e,"sso-login"),this.getRedirectUrl=this.defineStep("get-redirect-url"),this.exchangeCode=this.defineStep("exchange-code");let{explicitSpecType:r,organizationDomain:n,actor:o}=Ri(t??{},e);this.subflowStart({explicitSpecType:r,organizationDomain:n,actor:o})}};function Ri(i,e){let t={...i},r=o=>{try{e.getLogger().warn(`SSO login: unsupported ${o}; omitted from telemetry`)}catch{}},n=t.organizationDomain;return n!==void 0&&(typeof n!="string"||n.includes("@")||n.length>253)&&(delete t.organizationDomain,r("organizationDomain")),t.actor!==void 0&&t.actor!=="user"&&t.actor!=="system"&&(delete t.actor,r("actor")),t}var De=class extends f{lowEventTracker;postResponse;constructor(e,t={}){super(e,"totp"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new F(e.getLogger(),this.lowEventSink("input","otp"),this.lowEventSink("input-group","otp"))),t.inputHtmlFields?.length?this.setInputFields(t.inputHtmlFields):t.inputHtmlField&&this.lowEventTracker?.setFields([t.inputHtmlField],!1),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending())}setInputFields(e){this.lowEventTracker?.setFields(e)}destroy(){this.lowEventTracker?.destroy()}};var Ae=class extends f{ceremony;retry;postResponse;constructor(e,t={}){super(e,"app-confirmation"),this.ceremony=this.defineStep("ceremony"),this.retry=this.defineStep("retry"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var _e=class extends f{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var Me=class{constructor(e,t){this.logger=e;this.sink=t}trackers=new Map;destroyed=!1;setFields(e){if(this.destroyed)return;let t=new Set(e);for(let[r,n]of this.trackers)t.has(r)||(this.safe(()=>n.destroy()),this.trackers.delete(r));for(let r of t)this.trackers.has(r)||this.safe(()=>this.trackers.set(r,new E(this.logger,r,this.sink())))}capturePrefill(e=!1){for(let t of this.trackers.values())this.safe(()=>t.capturePrefill(e))}flushPending(){for(let e of this.trackers.values())this.safe(()=>e.flushPending())}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.trackers.values())this.safe(()=>e.destroy());this.trackers.clear()}}safe(e){try{e()}catch(t){this.logger.error("Form input binding failed",t)}}};var st=50,Di=6e4,Ai=40,_i=/^[A-Za-z0-9._-]+$/,He=class extends f{submit;skip;inputBinding;constructor(e,t){super(e,"form"),this.submit=this.defineStep("submit"),this.skip=this.defineStep("skip"),this.subflowStart(Hi(e,t),Mi(e,t)),this.inputBinding=this.createLowCollector(()=>new Me(e.getLogger(),()=>this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.inputBinding?.flushPending()),t?.inputHtmlFields?.length&&this.setInputFields(t.inputHtmlFields)}setInputFields(e){this.inputBinding?.setFields(e)}destroy(){this.inputBinding?.destroy()}};function Mi(i,e){let t=e?.startedAt;if(t===void 0)return;let r=Date.now();if(typeof t!="number"||!Number.isFinite(t)||t>r||r-t>Di){Y(i,"Form: implausible startedAt ignored; using the current time");return}return{explicitTimestamp:t}}function Hi(i,e){let t={},r=e?.name;typeof r=="string"&&r.trim()!==""?t.name=r:Y(i,"Form: missing name; the form will not be counted");let n=e?.fields;if(n===void 0)return t;if(!Array.isArray(n))return Y(i,"Form: fields must be an array of field names; omitted from telemetry"),t;let o=n.filter(s=>typeof s=="string"&&s.length<=Ai&&_i.test(s));return o.length<n.length&&Y(i,"Form: unsupported field names omitted from telemetry"),o.length>st&&Y(i,`Form: more than ${st} field names; the rest is omitted from telemetry`),o.length>0&&(t.fields=o.slice(0,st)),t}function Y(i,e){try{i.getLogger().warn(e)}catch{}}function at(i,e,t){if(i===null||typeof i!="object")return i;try{let r={...i};r.purpose===void 0&&e.purpose!==void 0&&(r.purpose=e.purpose),r.storage===void 0&&e.storage!==void 0&&(r.storage=e.storage),r.trustName===void 0&&e.trustName!==void 0&&(r.trustName=e.trustName);for(let[n,o]of[["bindingReference",255],["trustName",128]])if(typeof r[n]=="string"&&[...r[n]].length>o){delete r[n];try{t.getLogger().debug(`Trusted device: omitted ${n} exceeding ${o} characters`)}catch{}}return r}catch{return i}}function Be(i,e,t){return{...i,start:(r,n)=>i.start(at(r,e,t),n),finished:(r,n)=>i.finished(at(r,e,t),n)}}var Ne=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=hr(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",r,e),this.ceremony=this.checkStep("ceremony",r,e),this.postResponse=this.checkStep("post-response",r,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,r){let n=this.defineStep(e,!0);return{...Be(n,t,r),errorTyped:(o,s)=>{n.errorTyped(at({code:o?.code,error:M(o?.error)},t,r),s)}}}},Ue=class extends f{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=hr(t,e);let r={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Be(this.defineStep("get-options"),r,e),this.ceremony=Be(this.defineStep("ceremony"),r,e),this.postResponse=Be(this.defineStep("post-response"),r,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function hr(i,e){let t={...i},r=n=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${n}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,r("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,r("storage")),t}var qe=class extends f{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:r,...n}=t;this.subflowStart(n),r&&(this.lowEventTracker=this.createLowCollector(()=>new E(e.getLogger(),r,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Bi="/inline/injected/webauthn-listeners.js",gr=/\/dashlane-(?:shadow-dom|top-layer)-page-script\.js/,Ni=/-extension:\/\/[^/]+\/content-scripts\/passkey_proxy\/index\.js$/,Ui=/-extension:\/\/[^/]+\/content_scripts\/shadow-dom\/shadowAttachNotifier\.js:/,mr=/-extension:\/\/[^/]+\/js\/nordpass-script\.js:/,qi=/-extension:\/\/[^/]+\/js\/passkeys\.js:/,Ki=/["'`](?:keeper:shadow-root-attached|webauthn-(?:get|create)-request)["'`]/,Vi=/Intercept cancelled for `(?:get|create)`|["'`](?:conditionalMediationAvailable|verifyingPlatformAuthenticatorAvailable)["'`]/,lt=()=>Object.keys(window._sentryDebugIds??{}),pt=i=>{try{i()}catch(e){return String(e?.stack??"")}return""},yr=()=>pt(()=>Element.prototype.attachShadow.call(null,{mode:"open"})),Wi=()=>{let i=Object.getOwnPropertyDescriptor(navigator.credentials??{},"get");if(!i?.get||!i.set||i.configurable)return!1;let e=()=>{},t=i.get.call({_get:e});return t===e||typeof t=="function"&&t===i.get.call({})&&!Function.prototype.toString.call(t).includes("[native code]")},dt=(...i)=>{let e=navigator.credentials;return e?i.map(t=>Object.getOwnPropertyDescriptor(e,t)?.value):[]},$i=()=>[navigator.credentials?.get,...dt("get","_get")].some(i=>typeof i=="function"&&i.name==="getWebAuthnCredential"),Gi=()=>{let i=document.documentElement,e=document.adoptedStyleSheets;if(!i||typeof i.getAnimations!="function"||typeof e?.push!="function"||i.getAnimations().length>0)return!1;let t=new CSSStyleSheet;t.replaceSync(":where(:root){animation:bitwardenfill 1s 1000s paused}"),e.push(t);try{let r=i.getAnimations().filter(n=>n.animationName==="bitwardenfill");return r.forEach(n=>n.cancel()),r.length>0}finally{let r=e.indexOf(t);r>=0&&e.splice(r,1)}},zi,ji=()=>zi??=Gi(),Qi=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;if(typeof i!="function"||!Object.prototype.hasOwnProperty.call(i,Symbol.hasInstance))return!1;let e=i[Symbol.hasInstance]({});return e instanceof Promise?(e.catch(()=>{}),!0):!1},Yi=()=>{let i={get nodeType(){throw new Error("probe")}};return pt(()=>MutationObserver.prototype.observe.call(null,i))},Ji=()=>{let i=new Error("probe"),e=[],t={get nodeType(){return e.push("nodeType"),1},get ownerDocument(){throw e.push("ownerDocument"),i}};try{MutationObserver.prototype.observe.call(null,t)}catch(r){return r===i&&e.join()==="nodeType,ownerDocument"}return!1},Xi=()=>[Element.prototype.attachShadow,navigator.credentials?.get,navigator.credentials?.create,...dt("get","_get","create")].some(e=>typeof e=="function"&&Ki.test(Function.prototype.toString.call(e))),Zi=()=>{let i=document;for(;i;){if(i.querySelector("[data-lastpass-icon-root], [data-lastpass-root]"))return!0;i=i.activeElement?.shadowRoot}return!1},en=()=>{let i=typeof PublicKeyCredential>"u"?void 0:PublicKeyCredential;return[navigator.credentials?.get,...dt("get","_get"),i?.isConditionalMediationAvailable,i?._isConditionalMediationAvailable,i?.isUserVerifyingPlatformAuthenticatorAvailable,i?._isUserVerifyingPlatformAuthenticatorAvailable].some(t=>typeof t=="function"&&Vi.test(Function.prototype.toString.call(t)))},tn=[{name:"1password",signal:"in-field button",signedIn:!0,test:()=>document.querySelector("com-1password-button")!==null},{name:"1password",signal:"credentials.get accessor",test:Wi},{name:"1password",signal:"Sentry debug id",test:()=>lt().some(i=>i.includes(Bi))},{name:"bitwarden",signal:"passkey override",signedIn:!0,test:$i},{name:"bitwarden",signal:"autofill keyframes",test:ji},{name:"dashlane",signal:"injected script tag",test:()=>document.querySelector('script[src*="-extension://"][src*="/dashlane-"][src$="-page-script.js"]')!==null},{name:"dashlane",signal:"PublicKeyCredential hasInstance trap",test:Qi},{name:"dashlane",signal:"page script stack",test:()=>gr.test(yr())||typeof HTMLDialogElement<"u"&&gr.test(pt(()=>HTMLDialogElement.prototype.showModal.call(null)))},{name:"kaspersky",signal:"passkey proxy flag",test:()=>window.wasKPMKeyPassProxyInited===!0},{name:"kaspersky",signal:"injected script tag",test:()=>Ni.test(document.querySelector('script[src*="/content-scripts/passkey_proxy/"]')?.src??"")},{name:"keeper",signal:"attachShadow stack",test:()=>Ui.test(yr())},{name:"keeper",signal:"override source",test:Xi},{name:"keeper",signal:"field lock",test:()=>document.querySelector("[data-keeper-lock-id]")!==null},{name:"lastpass",signal:"passkey override",signedIn:!0,test:()=>typeof window.__nativeCredentialsGet=="function"},{name:"lastpass",signal:"icon root",test:Zi},{name:"nordpass",signal:"observer proxy stack",test:()=>mr.test(Yi())},{name:"nordpass",signal:"observer read order",test:Ji},{name:"nordpass",signal:"passkeys Sentry debug id",test:()=>lt().some(i=>qi.test(i))},{name:"nordpass",signal:"Sentry debug id",test:()=>lt().some(i=>mr.test(i))},{name:"protonpass",signal:"WebAuthn override source",test:en},{name:"protonpass",signal:"field icon",test:()=>document.querySelector("[data-protonpass-role]")!==null}];function rn(){return typeof window>"u"||typeof document>"u"?[]:tn.map(({name:i,signal:e,signedIn:t,test:r})=>{try{return{name:i,signal:e,signedIn:t,matched:r()}}catch(n){return{name:i,signal:e,signedIn:t,matched:!1,error:n}}})}function vr(){let i=new Map;for(let{name:e,signedIn:t,matched:r}of rn()){if(!r)continue;let n=i.get(e)??{name:e};t&&(n.signedIn=!0),i.set(e,n)}return[...i.values()]}function br(i){return vr()}var Sr=3e3,nn=500,on=6,sn=1e3,Ke=class{constructor(e,t,r){this.logger=e;this.isEnabled=t;if(typeof window>"u"||typeof document>"u")return;if(this.sample(),wt(0))this.sampleAfter(Sr);else{let o=()=>{this.sampleWhenIdle(),this.sampleAfter(Sr)};this.removers.push(I(0,"load",o,{once:!0}))}let n=r.onInputFocus(o=>{!this.isEnabled()||this.sampledFields.has(o)||(this.sampledFields.add(o),++this.focusSamples>=on&&n(),this.sampleAfter(nn))});this.removers.push(n)}detected=new Map;timers=new Set;idleCallbacks=new Set;sampledFields=new WeakSet;focusSamples=0;removers=[];destroyed=!1;reportedCounts=new Map;getDetected(){return[...this.detected.values()]}takeReport(e){if(!(!this.isEnabled()||this.detected.size<=(this.reportedCounts.get(e)??0)))return this.reportedCounts.set(e,this.detected.size),this.getDetected().map(({name:t})=>({name:t}))}destroy(){this.destroyed=!0;for(let e of this.removers)e();for(let e of this.timers)clearTimeout(e);this.timers.clear();for(let e of this.idleCallbacks)cancelIdleCallback(e);this.idleCallbacks.clear()}sampleAfter(e){let t=setTimeout(()=>{this.timers.delete(t),this.sampleWhenIdle()},e);this.timers.add(t)}sampleWhenIdle(){if(typeof requestIdleCallback!="function"){this.sample();return}let e=requestIdleCallback(()=>{this.idleCallbacks.delete(e),this.sample()},{timeout:sn});this.idleCallbacks.add(e)}sample(){if(!(this.destroyed||!this.isEnabled()))try{let e=br(0);for(let t of e){let r=this.detected.get(t.name);(!r||t.signedIn&&!r.signedIn)&&this.detected.set(t.name,t)}}catch(e){this.logger.error("Failed to detect password manager extensions",e)}}};var ut={name:rt,version:it},an=/^[0-9A-Za-z.+_-]{1,32}$/;function ln(i,e){return i===void 0?ut:typeof i=="string"&&an.test(i)?{...ut,integrationVersion:i}:(e.debug("Ignoring invalid integrationVersion (expected <= 32 chars of [0-9A-Za-z.+_-])"),ut)}var wr="cbo_session_id",ct="cbo_session",_="cbo_seq",Tr="cbo_experiments",Er="cbo_data_policy",pn=255,dn=/^[A-Za-z0-9_-]+$/,un=128,cn=256,Ir=1e3,fn=/^[a-z][a-z0-9_-]{0,31}$/,xr=/^[A-Za-z0-9_-]{1,16}$/,hn=64,gn=32,mn=50,yn="cbo_seq",kr=1e3,Cr=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Ve=class i{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??fr({debug:this.options.debug});let t=new ue(this.logger),r=new fe(this.logger),n=e.storage==="cookie",o=n?new ce(this.logger,e.cookieDomain):void 0;rr(e.projectId,t,r,o,this.logger);let s=e.projectId,a=c=>new de(c,s);this.seqLockName=O(yn,s),this.sessionStorage=a(r),this.persistentStorage=a(t),this.storage=a(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]},...e.sdkConfig?.sourcePathQueryAllow&&{sourcePathQueryAllow:[...e.sdkConfig.sourcePathQueryAllow]}},this.fixedData=Bt(e.fixedDataConfig),this.fixedData&&(this.configOverrides.pmd=this.fixedData.pmd);let l=Object.keys(v).every(c=>this.configOverrides[c]!==void 0)&&Object.keys(v.retry).every(c=>this.configOverrides.retry?.[c]!==void 0);l||(this.configManager=new ye(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=ze(p,this.configOverrides),!l&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!l&&!p&&e.deviceInfoCollectorTimeout!=null&&this.configOverrides.deviceInfoCollectorTimeoutMs===void 0&&(this.config={...this.config,deviceInfoCollectorTimeoutMs:e.deviceInfoCollectorTimeout}),e.apiBaseUrl!==""&&(/^https?:\/\//.test(e.apiBaseUrl)||(this.logger.critical(`Invalid apiBaseUrl: URL must start with http:// or https:// (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: missing http(s) scheme")),e.apiBaseUrl.endsWith("/")&&(this.logger.critical(`Invalid apiBaseUrl: URL must not have a trailing slash (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: trailing slash")));let d=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${d}`);let u=new ne({logger:this.logger,url:d});this.sessionId=this.resolveSessionId(),this.queue=new ae(this.logger,u,this.sessionId,ln(this.options.integrationVersion,this.logger),{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:O(je,s),getDataPolicy:()=>this.dataPolicy,fixedData:this.fixedData!==void 0||typeof __CBO_DATA_PMD__=="boolean"||typeof __CBO_DATA_PRIVATE_MODE__=="boolean",beforeEventBatchSend:c=>this.attachUndeliveredDeviceInfo(c),standaloneDeviceInfo:{has:()=>this.deviceInfoManager?.hasStandalone()??!1,take:()=>this.deviceInfoManager?.takeStandalone()}},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((c,w)=>this.reportTelemetry(c,w));try{this.getWindowObserver()}catch(c){this.logger.error("Failed to attach page low-event observer",c)}if(typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.fixedData?.pmd!==!1)try{this.passwordManagerSampler=this.isTrackingBlocked()?void 0:new Ke(this.logger,()=>typeof __CBO_DATA_PMD__=="boolean"?__CBO_DATA_PMD__:this.config.pmd,this.getWindowObserver())}catch(c){this.logger.error("Failed to start password manager detection",c)}let h=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let c of h)this.telemetry(c.level,c.message);let m=new le(this.logger,this.storage,n?"cookie":"localstorage",this.sessionStorage,()=>({timing:this.config.deviceInfoTiming}),(c,w)=>this.telemetry(c,w),this.fixedData?.privateMode??!0);this.deviceCollector=m;let y=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new pe(this.logger,m,Math.max(1,y),y,{timing:()=>this.config.deviceInfoTiming,emit:(c,w)=>this.telemetry(c,w)},()=>this.queue.notifyDeviceInfo()),this.deviceInfoManager.start(),this.experiments=this.loadPersistedExperiments(),e.experiments&&this.setExperiments(e.experiments),this.dataPolicy=this.loadPersistedDataPolicy(),e.dataPolicy!==void 0&&this.setDataPolicy(e.dataPolicy),this.configManager?.start(c=>this.handleConfig(c))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;fixedData;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];probePageId;probeSeqs=new Map;windowObserver;passwordManagerSampler;getWindowObserver(){return this.windowObserver??=new te(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=ze(e,this.configOverrides);t.sessionContinuity||=this.config.sessionContinuity,t.durableOutbox||=this.config.durableOutbox,this.config=t,this.queue.updateConfig(this.config)}getLogger(){return this.logger}applicationTag(){return this.options.applicationId?{applicationId:this.options.applicationId.toLowerCase()}:{}}setExperiment(e,t){this.setExperiments({[e]:t})}setExperiments(e){try{if(!e||typeof e!="object")return;let t=!1;for(let[r,n]of Object.entries(e)){if(!i.isValidExperimentKey(r)||!i.isValidExperimentVariant(n)){this.logger.debug(`Ignoring invalid experiment assignment "${String(r)}"`);continue}this.experiments[r]!==n&&(this.experiments[r]=n,t=!0)}t&&this.persistExperiments()}catch(t){this.logger.error("Failed to set experiments",t)}}clearExperiment(e){try{Object.prototype.hasOwnProperty.call(this.experiments,e)&&(delete this.experiments[e],this.persistExperiments())}catch(t){this.logger.error("Failed to clear experiment",t)}}clearExperiments(){try{if(Object.keys(this.experiments).length===0)return;this.experiments={},this.persistExperiments()}catch(e){this.logger.error("Failed to clear experiments",e)}}getExperiments(){return{...this.experiments}}getPersistentStorage(){return this.persistentStorage}getSdkConfig(){return Object.freeze({version:this.config.version,aap:this.config.aap,rawErrors:this.config.rawErrors})}setDataPolicy(e){try{if(!i.isValidDataPolicy(e)){this.logger.debug(`Ignoring invalid data policy code "${String(e)}"`);return}this.dataPolicy!==e&&(this.dataPolicy=e,this.persistDataPolicy())}catch(t){this.logger.error("Failed to set data policy",t)}}getDataPolicy(){return this.dataPolicy}static isValidDataPolicy(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=pn}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(Er);return i.isValidDataPolicy(e)?e:void 0}catch(e){this.logger.debug("Failed to load persisted data policy",e);return}}persistDataPolicy(){try{if(this.dataPolicy===void 0)return;this.persistentStorage.setItem(Er,this.dataPolicy)}catch(e){this.logger.debug("Failed to persist data policy",e)}}static isValidExperimentKey(e){return typeof e=="string"&&e.length>0&&e.length<=un&&dn.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=cn}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(Tr);if(!e||typeof e!="object")return{};let t={};for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(Tr,this.experiments)}catch(e){this.logger.debug("Failed to persist experiments",e)}}resolveExperiments(e){let t={...this.experiments};if(e&&typeof e=="object")for(let[r,n]of Object.entries(e))i.isValidExperimentKey(r)&&i.isValidExperimentVariant(n)&&(t[r]=n);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:pr(ee(0))}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let r=P();return this.persistPerTabSession(r,e),this.seq=0,this.logger.debug("Created session id",r),r}catch(e){return this.logger.error("Failed to get session id",e),this.reportTelemetry("error","failed to get session id"),""}}getContinuitySessionId(){let e=Date.now(),t=this.persistentStorage.getItem(ct);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(_)??0,t.id;if(!t?.id){let n=this.readPerTabSession();if(n&&e-n.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(n.id,e),this.persistentStorage.setItem(_,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",n.id),n.id}let r=P();return this.persistContinuitySession(r,e),this.persistentStorage.setItem(_,0),this.seq=0,this.logger.debug("Created continuity session id",r),r}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(ct,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(wr);if(e){if(typeof e=="string")return Cr.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return Cr.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let r=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(wr,{id:e,lastActiveAt:t,...r===void 0?{}:{inactivityMs:r}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let r=Date.now();return this.sessionId&&r-this.lastActivityWriteAt>=kr&&this.persistPerTabSession(this.sessionId,r),this.seq++}let e=()=>{let r=Date.now(),n=this.persistentStorage.getItem(ct),o=!1;if(!n?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,r);else if(n?.id)r-this.lastActivityWriteAt>=kr&&this.persistContinuitySession(n.id,r),n.id!==this.sessionId&&(this.sessionId=n.id,this.queue.setSessionId(n.id),o=!0);else{let l=P();this.persistContinuitySession(l,r),this.persistentStorage.setItem(_,0),this.sessionId=l,this.queue.setSessionId(l),this.seq=0,o=!0}let s=this.persistentStorage.getItem(_);o&&(this.seq=typeof s=="number"?s:0);let a=typeof s=="number"&&s>this.seq?s:this.seq;return this.seq=a+1,this.persistentStorage.setItem(_,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||!Kt(0)?e():oe(0,this.seqLockName,e,{timeoutMs:t,onTimeout:()=>{this.logger.warn(`Sequence Web Lock acquisition timed out after ${t}ms; using fallback`),this.reportTelemetry("info",`seq web lock timeout; using fallback, ${t}ms`)}})}resolveTrackingSourcePath(){if(!(typeof window>"u"))return Et(0,this.config.sourcePathQuery,this.config.sourcePathQueryAllow)}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,r,n){let o={subflowType:e,...t};this.track("subflow_started",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{id:n,subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowTrigger(e,t,r){let n={subflowType:e,...t};this.track("subflow_trigger",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepStarted(e,t,r,n,o){let s={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier,ignoreAsInteraction:o};this.track("subflow_step_started",s,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepFinished(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_finished",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowStepError(e,t,r,n){let o={subflowType:e,stepName:t,stepData:r,identifier:n?.identifier};this.track("subflow_step_error",o,n?.userReference,void 0,void 0,n?.explicitTimestamp,n?.experiments,{subflowStartEventId:n?.subflowStartEventId,sessionId:n?.captureSessionId,initiator:n?.initiator})}trackSubflowError(e,t,r){let n={subflowType:e,stepData:t};this.track("subflow_error",n,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}async track(e,t,r,n,o,s,a,l){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping event "${e}" for blocked user agent.`);return}(e==="flow_finished"||e==="flow_auto_finished"||e==="flow_reset")&&this.windowObserver?.flushInputs();let p=s??Date.now(),d=l?.id??P(),u=l?.sessionId??this.sessionId,h=this.nextSeq(),m=typeof h=="number"?h:await h,y=this.resolveTrackingSourcePath(),c={type:"predefined",name:e,id:d,timestamp:p,seq:m,data:t,user:r,contexts:o,tags:n,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:z(),initiator:l?.initiator,trackingSourcePath:y??"",subflowStartEventId:l?.subflowStartEventId,tabId:this.resolveEventTabId()}},w=this.deviceInfoManager.getForEvent();w&&(c.deviceInfo=w),this.logger.debug(`Track: ${e}`,JSON.stringify(c,null,2));let T=this.passwordManagerSampler?.takeReport(u);T&&(c.passwordManagers=T),this.queue.enqueue(c,u)}catch(p){this.logger.error(`Failed to process event "${e}" before enqueue`,p),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,r,n,o){try{let s=P(),a=this.sessionId,l={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,l,n,o?.explicitTimestamp,r,{id:s,sessionId:a}),this.flowHandle(s,a)}catch(s){return this.logger.warn("Failed to start flow",s),{enrich:async()=>{}}}}flowDecided(e,t,r){this.track("flow_decided",e,void 0,t,void 0,void 0,r)}conversion(e,t,r){let{userId:n,identifier:o,crossEnvironmentTransactionID:s,...a}=e,l={userId:n,identifier:o,crossEnvironmentTransactionID:s},p={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,l,p,void 0,void 0,r)}flowFinished(e,t,r){try{let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o},l=P(),p=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,r,{id:l,sessionId:p}),this.flowHandle(l,p)}catch(n){return this.logger.warn("Failed to finish flow",n),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async r=>{try{await this.track("flow_enriched",{targetEventId:e},{...r},void 0,void 0,void 0,void 0,{sessionId:t})}catch(n){this.logger.warn("Failed to enrich flow",n)}}}}flowReset(e,t,r){this.track("flow_reset",e,void 0,t,void 0,void 0,r)}flowAutoFinished(e,t,r){let{userId:n,identifier:o,...s}=e,a={userId:n,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,r)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}setFlowTags(e,t){try{if(!e||typeof e!="object"){this.logger.warn("setFlowTags: ignoring non-object tags");return}let r={};for(let[o,s]of Object.entries(e)){if(o===""||typeof s!="string"){this.logger.warn(`setFlowTags: ignoring invalid tag "${o}"`);continue}r[o]=s}if(Object.keys(r).length===0)return;let n={match:{flowType:t?.flowType??"*",at:"during"}};t?.expandToChildren!==void 0&&(n.expCh=t.expandToChildren),t?.expandToFollowing!==void 0&&(n.expFol=t.expandToFollowing),this.track("flow_enriched",n,void 0,r)}catch(r){this.logger.warn("Failed to set flow tags",r)}}authMethodsDecisionStarted(e,t,r,n){this.track("auth_method_decision_started",e,void 0,t,void 0,n?.explicitTimestamp,r)}authMethodsDecisionFinished(e,t,r){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,r)}authDecisionStarted(e,t,r){this.track("auth_decision_started",e,void 0,t,void 0,void 0,r)}authDecisionFinished(e,t,r){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,r)}enqueueLowEvent(e,t){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping low event "${e.lowType}" for blocked user agent.`);return}this.queue.enqueueLow({...e,captureSeq:e.captureSeq??k(),captureVersion:1,pageId:e.pageId??z()},t)}catch(r){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,r)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let r=typeof t=="string"?t:String(t);if(r.length===0)return;let n={id:P(),level:e,message:r.length>Ir?r.slice(0,Ir):r,ts:Date.now()};this.queue.enqueueTelemetry(n)}catch(r){this.logger.error("Failed to process telemetry before enqueue",r)}}probe(e){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping probe for blocked user agent.");return}if(!e||typeof e!="object"||typeof e.kind!="string"||!fn.test(e.kind)){this.logger.debug("Dropping probe with an invalid kind.");return}let t=e.payload;if(!t||typeof t!="object"){this.logger.debug(`Dropping probe "${e.kind}" without an object payload.`);return}let r=typeof e.pageId=="string"&&xr.test(e.pageId)?e.pageId:this.defaultProbePageId(),n={id:P(),kind:e.kind,ts:typeof e.ts=="number"&&Number.isFinite(e.ts)?Math.round(e.ts):Date.now(),pageId:r,seq:this.nextProbeSeq(r),payload:t};typeof e.cfg=="string"&&xr.test(e.cfg)&&(n.cfg=e.cfg);let o=Sn(e.ctx);o&&(n.ctx=o),this.queue.enqueueProbe(n)}catch(t){this.logger.error("Failed to process probe before enqueue",t)}}defaultProbePageId(){return this.probePageId??=bn()}nextProbeSeq(e){let t=this.probeSeqs.get(e)??0;if(this.probeSeqs.delete(e),this.probeSeqs.set(e,t+1),this.probeSeqs.size>gn){let r=this.probeSeqs.keys().next().value;r!==void 0&&this.probeSeqs.delete(r)}return t}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}attachUndeliveredDeviceInfo(e){try{let t=this.deviceInfoManager;if(!t?.hasUndelivered())return;let r=z(),n=e.find(o=>o.meta?.pageId===r&&!o.deviceInfo);n&&(n.deviceInfo=t.takeUndelivered())}catch(t){this.logger.error("Failed to attach device info to batch",t)}}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=mn)return;if(this.reportedTelemetryKeys.add(t),!this.telemetryReady){this.pendingSelfTelemetry.push({level:e,message:t});return}this.telemetry(e,t)}catch{}finally{this.telemetryReporting=!1}}}flushKeepalive(e="manual"){try{this.queue.flushKeepalive(e)}catch(t){this.logger.error("Failed to flush queue keepalive",t)}}isPasswordManagerDomScanEnabled(){return this.fixedData?.pmdExplicit?this.fixedData.pmd:!0}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new ve(this,e)}passkeyEnrollmentFullOperation(e){return new ke(this,e)}passkeyDeletionOperationFull(e){return new Ce(this,e)}passwordLoginFullOperation(e){return new Oe(this,e)}passwordEnrollmentFullOperation(e){return new Pe(this,e)}emailLinkOperationFull(e){return new Ie(this,e)}continueEmailLinkOperation(e){return new xe(this,e)}emailOtpOperationFull(e){return new Te(this,e)}smsOtpOperationFull(e){return new Ee(this,e)}totpOperationFull(e){return new De(this,e)}provideIdentifierOperationFull(e){return new Le(this,e)}provideDataOperationFull(e){return new qe(this,e)}formOperationFull(e){return new He(this,e)}socialLoginOperationFull(e){return new Fe(this,e)}ssoLoginOperationFull(e){return new Re(this,e)}appConfirmationOperationFull(e){return new Ae(this,e)}keySigningOperationFull(e){return new X(this,e)}keyRegistrationOperationFull(e){return new Z(this,e)}captchaOperationFull(e){return new _e(this,e)}trustedDeviceCheckOperationFull(e){return new Ne(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ue(this,e)}async destroy(){if(this.configManager?.destroy(),this.passwordManagerSampler?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSessionId();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}resetSession(){let e=P();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(_,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}},vn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";function bn(){let i=new Uint8Array(16);try{crypto.getRandomValues(i)}catch{for(let t=0;t<i.length;t++)i[t]=Math.floor(Math.random()*256)}let e="";for(let t=0;t<i.length;t++)e+=vn[i[t]&63];return e}function Sn(i){if(!i||typeof i!="object")return;let e={};for(let t of["state","flowType","step"]){let r=i[t];typeof r=="string"&&r.length>0&&(e[t]=r.slice(0,hn))}return Object.keys(e).length>0?e:void 0}var wn=["none","presence","size","class","format","partial","enum","computed","token","pseudonym","redacted","raw"];var Tn={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function En(i,e){return We(i,"creationOptions",e)}function In(i,e){return We(i,"creationResponse",e)}function xn(i){return We(i,"requestOptions")}function kn(i,e){return We(i,"assertionResponse",e)}function We(i,e,t={}){try{let r=typeof i=="string"?JSON.parse(i):i;if(!Cn(r))return;let n=new Set(Tn[e]),o=new Set,s=(a,l,p=0)=>{if(!n.has(l)){if(e==="creationOptions"&&l==="/user/id"||(e==="creationResponse"||e==="assertionResponse")&&l==="/response/userHandle"){if(a===null)return null;if(!t.userId)return;let d=typeof a=="string"?a:a instanceof ArrayBuffer||ArrayBuffer.isView(a)?Or(a):void 0;if(d===void 0)return;try{let u=t.userId(d);return typeof u=="string"||u===null?u:void 0}catch{return}}if(a===null||typeof a=="string"||typeof a=="boolean")return a;if(typeof a=="number")return Number.isFinite(a)?a:null;if(typeof a=="object"){if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))return Or(a);if(p>64||o.has(a))throw new TypeError("Invalid telemetry payload");o.add(a);try{if(Array.isArray(a))return a.map((m,y)=>s(m,`${l}/${y}`,p+1));let d=Object.create(null);for(let m in a){let y=`${l}/${m.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(n.has(y)||m==="toJSON")continue;let c=s(a[m],y,p+1);c!==void 0&&(d[m]=c)}let u=a,h=(m,y)=>{if(d[y]!==void 0||typeof u[m]!="function")return;let c=`${l}/${y}`,w=s(Reflect.apply(u[m],a,[]),c,p+1);w!==void 0&&(d[y]=w)};return l===""&&(e==="creationResponse"||e==="assertionResponse")&&h("getClientExtensionResults","clientExtensionResults"),l==="/response"&&e==="creationResponse"&&(h("getTransports","transports"),h("getAuthenticatorData","authenticatorData"),h("getPublicKey","publicKey"),h("getPublicKeyAlgorithm","publicKeyAlgorithm")),d}finally{o.delete(a)}}}};return JSON.stringify(s(r,""))}catch{return}}function Cn(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)&&!(i instanceof ArrayBuffer)&&!ArrayBuffer.isView(i)}function Or(i){let e=i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength),t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}var S;function al(i){let e=new Ve(i);return S=e,e}function ll(){return S}function pl(){return S?.resetSession()}function dl(){return S?.getSessionId()}function ul(i){S?.setUser(i)}function cl(i,e){S?.setFlowTags(i,e)}function fl(i,e){S?.setExperiment(i,e)}function hl(i){S?.setExperiments(i)}function gl(i){S?.clearExperiment(i)}function ml(){S?.clearExperiments()}function yl(){return S?.getExperiments()??{}}function vl(i,e){S?.telemetry(i,e)}function bl(i){S?.logInfo(i)}function Sl(i){S?.logError(i)}async function wl(){S&&(await S.destroy(),S=void 0)}export{Ae as AppConfirmationOperationFull,Wr as AuthEventName,Nr as CEREMONY_LOW_EVENT_TAIL_MS,b as CONFIG_BOUNDS,_t as CONFIG_CACHE_STORAGE_KEY,Mt as CONFIG_REQUEST_HEADER,Ge as CONFIG_STORAGE_KEY,_e as CaptchaOperationFull,ce as CookieStorage,Ve as CorbadoTracker,eo as DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,Xn as DEFAULT_FLUSH_INTERVAL_MS,Xr as DEFAULT_MAX_ENTRIES,Zr as DEFAULT_MAX_SERIALIZED_LENGTH,v as DEFAULT_RELIABILITY_CONFIG,Zn as DEFAULT_SEQ_LOCK_TIMEOUT_MS,$r as DEFAULT_SESSION_INACTIVITY_MS,xe as EmailLinkContinuationOperation,Ie as EmailLinkOperationFull,Te as EmailOtpOperationFull,K as EventStore,He as FormOperationFull,Z as KeyRegistrationOperationFull,X as KeySigningOperationFull,ue as LocalStorage,de as NamespacedStorage,je as OUTBOX_LOCK_NAME,Jr as OUTBOX_STORAGE_KEY,f as OperationFull,Le as OperationFullProvideIdentifierWithCUI,Wt as PROBE_BATCH_MAX_BYTES,Vt as PROBE_BATCH_MAX_ITEMS,ni as PROBE_PAYLOAD_MAX_BYTES,ii as PROBE_QUEUE_MAX_BYTES,ri as PROBE_QUEUE_MAX_ITEMS,Ce as PasskeyDeletionOperationFull,ke as PasskeyEnrollmentOperationFull,ve as PasskeyLoginOperationFull,Pe as PasswordEnrollmentOperationFull,Oe as PasswordLoginOperationFull,qe as ProvideDataOperationFull,Pr as RAW_ERROR_BOUNDS,wn as READER_EXPOSURES,ae as RequestQueue,rt as SDK_NAME,it as SDK_VERSION,fe as SessionStorage,Ee as SmsOtpOperationFull,Fe as SocialLoginOperationFull,Re as SsoLoginOperationFull,De as TotpOperationFull,Ne as TrustedDeviceCheckOperationFull,Ue as TrustedDeviceEnrollmentOperationFull,$t as UNLOAD_BUDGET_BYTES,Qe as UNLOAD_PROBE_MAX_BYTES,Ut as cacheConfigRecord,gl as clearExperiment,ml as clearExperiments,fr as createLogger,wl as destroy,vr as detectPasswordManagerExtensions,yl as getExperiments,dl as getSessionId,ll as getTracker,al as init,Nt as loadCachedConfig,re as loadConfigRecord,Sl as logError,bl as logInfo,O as namespacedKey,q as parseReliabilityConfig,pl as resetSession,Bt as resolveFixedDataConfig,gt as resolveRawErrorLimits,ze as resolveReliabilityConfig,kn as sanitizeAssertionResponse,En as sanitizeCreationOptions,In as sanitizeCreationResponse,xn as sanitizeRequestOptions,vt as serializeRawError,fl as setExperiment,hl as setExperiments,cl as setFlowTags,ul as setUser,vl as telemetry,se as utf8Length};
|