@corbado/observe 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/script.global.js +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";(()=>{var it=0;function k(){if(it===4294967295)throw new Error("Low-event capture sequence exhausted");return++it}function rt(n,e){if(n==="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(n==="passkey-enrollment")switch(e){case"manual":return"passkey-button";case"auto":case"conditional":return"automatic"}}var w=[];for(let n=0;n<256;++n)w.push((n+256).toString(16).slice(1));function nt(n,e=0){return(w[n[e+0]]+w[n[e+1]]+w[n[e+2]]+w[n[e+3]]+"-"+w[n[e+4]]+w[n[e+5]]+"-"+w[n[e+6]]+w[n[e+7]]+"-"+w[n[e+8]]+w[n[e+9]]+"-"+w[n[e+10]]+w[n[e+11]]+w[n[e+12]]+w[n[e+13]]+w[n[e+14]]+w[n[e+15]]).toLowerCase()}var Me,Vt=new Uint8Array(16);function Z(){if(!Me){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Me=crypto.getRandomValues.bind(crypto)}return Me(Vt)}var He={};function $t(n,e,t){let i;if(n)i=ot(n.random??n.rng?.()??Z(),n.msecs,n.seq,e,t);else{let r=Date.now(),o=Z();Qt(He,r,o),i=ot(o,He.msecs,He.seq,e,t)}return e??nt(i)}function Qt(n,e,t){return n.msecs??=-1/0,n.seq??=0,e>n.msecs?(n.seq=t[6]<<23|t[7]<<16|t[8]<<8|t[9],n.msecs=e):(n.seq=n.seq+1|0,n.seq===0&&n.msecs++),n}function ot(n,e,t,i,r=0){if(n.length<16)throw new Error("Random bytes length must be >= 16");if(!i)i=new Uint8Array(16),r=0;else if(r<0||r+16>i.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);return e??=Date.now(),t??=n[6]*127<<24|n[7]<<16|n[8]<<8|n[9],i[r++]=e/1099511627776&255,i[r++]=e/4294967296&255,i[r++]=e/16777216&255,i[r++]=e/65536&255,i[r++]=e/256&255,i[r++]=e&255,i[r++]=112|t>>>28&15,i[r++]=t>>>20&255,i[r++]=128|t>>>14&63,i[r++]=t>>>6&255,i[r++]=t<<2&255|n[10]&3,i[r++]=n[11],i[r++]=n[12],i[r++]=n[13],i[r++]=n[14],i[r++]=n[15],i}var y=$t;function D(n){if(n!=null){if(n instanceof Error)return{name:n.name,message:n.message};if(typeof n=="string")return{message:n};if(typeof n=="object"){let e=n;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(n)}}}var Gt={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}},Wt=1024,M=class extends Error{},zt=["name","message","code","errors","stack"],jt=/[^\x20-\x7E]/,H=n=>Object.prototype.toString.call(n).slice(8,-1),Yt=n=>n===null?"null":typeof n=="object"?H(n):typeof n,Xt=n=>n instanceof Error||H(n)==="Error"||H(n)==="DOMException";function lt(n){return jt.test(n)?new TextEncoder().encode(n).byteLength:n.length}function _(n,e){let t=Gt[n];return typeof e!="number"||!Number.isFinite(e)?t.default:Math.min(t.max,Math.max(t.min,Math.floor(e)))}function st(n={}){return{stack:n.stack===!0,maxStackFrames:_("maxStackFrames",n.maxStackFrames),depth:_("depth",n.depth),maxBreadth:_("maxBreadth",n.maxBreadth),maxValueLength:_("maxValueLength",n.maxValueLength),maxCauseDepth:_("maxCauseDepth",n.maxCauseDepth),maxBytes:_("maxBytes",n.maxBytes)}}function pt(n,e={}){if(n===void 0)return;let t=st(),i=r=>{let o=JSON.stringify(r);return o===void 0||lt(o)<=t.maxBytes};try{if(t=st(e),t.maxBytes===0)return;let r=L(Yt(n),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 p={type:r,value:ee(n,s,a)};if(i(p))return p}catch(p){if(!(p instanceof M))throw p}}let o={type:r,truncated:!0};return i(o)?o:void 0}catch{let r={type:"unserializable"};return i(r)?r:void 0}}function j(n,e){if(n.length>e.limits.maxBytes)throw new M;if(e.textBytes+=lt(JSON.stringify(n)),e.textBytes>e.limits.maxBytes)throw new M;return n}function ee(n,e,t){if(++t.nodes>Wt)throw new M;let i=Jt(n,e,t);return typeof i=="string"?j(i,t):i}function Jt(n,e,t){switch(typeof n){case"string":return L(n,t.limits.maxValueLength);case"number":return Number.isFinite(n)?n:String(n);case"boolean":case"undefined":return n;case"bigint":case"symbol":return L(String(n),t.limits.maxValueLength);case"function":return`[Function: ${n.name||"anonymous"}]`}if(n===null)return null;let i=n;if(t.seen.has(i))return"[Circular]";if(e<0)return`[${H(i)}]`;t.seen.add(i);try{return Zt(i,e,t)}finally{t.seen.delete(i)}}function L(n,e){return n.length>e?n.slice(0,e)+"\u2026":n}function at(n,e,t){let i=n.length>t;n=L(n,t);let r=n.split(`
|
|
2
2
|
`);if(r.length<=e+1)return L(n,t);let o=r.slice(0,e+1).join(`
|
|
3
3
|
`),s=i?"[truncated]":`[+${r.length-e-1} frames]`;return L(`${o}
|
|
4
|
-
${s}`,t)}function Zt(n,e,t){let{limits:i}=t,r=H(n),o=u=>ee(u,e-1,t);if(r==="Date")return Number.isNaN(n.getTime())?"[Invalid Date]":n.toISOString();if(r==="RegExp")return L(String(n),i.maxValueLength);if(r==="ArrayBuffer")return`[ArrayBuffer(${n.byteLength})]`;if(ArrayBuffer.isView(n))return`[${r}(${n.byteLength})]`;if(r==="Map"||r==="Set"){let u=n,c=[];for(let f of u){if(c.length===i.maxBreadth)break;c.push(o(f))}return u.size>c.length&&c.push(`[+${u.size-c.length} more]`),c}if(r==="Promise"||r==="WeakMap"||r==="WeakSet"||r==="Window")return`[${r}]`;if(typeof Node<"u"&&n instanceof Node)return`[${r}]`;if(Array.isArray(n)){let u=n.slice(0,i.maxBreadth).map(o);return n.length>i.maxBreadth&&u.push(`[+${n.length-i.maxBreadth} more]`),u}if(typeof Response<"u"&&n instanceof Response)return{status:o(n.status),statusText:o(n.statusText),url:o(n.url),redirected:o(n.redirected)};if(typeof Event<"u"&&n instanceof Event){let u=n,c={type:o(u.type)};for(let f of["message","filename","lineno","colno"])f in u&&(c[f]=o(u[f]));return"error"in u&&u.error!=null&&(c.error=o(u.error)),c}let s=Object.create(null),a=n,p=Xt(n);if(p){for(let c of zt){if(c==="stack"&&!i.stack)continue;let f=a[c];if(!(f==null||typeof f=="function")){if(c==="stack"){i.stack&&typeof f=="string"&&(s.stack=j(at(f,i.maxStackFrames,i.maxValueLength),t));continue}s[c]=o(f)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=ei(u,e-1,t))}let d=0,l=Object.keys(a);for(let u of l){if(u in s||u==="stack"&&!i.stack||p&&u==="cause")continue;if(++d>i.maxBreadth){s["\u2026"]=`[+${l.length-i.maxBreadth} keys]`;break}let c=a[u];typeof c!="function"&&(s[j(u,t)]=u==="stack"&&typeof c=="string"?j(at(c,i.maxStackFrames,i.maxValueLength),t):o(c))}return!p&&r!=="Object"&&d===0?`[${r}]`:s}function ei(n,e,t){if(typeof n!="object"||n===null)return ee(n,e,t);if(t.causeBudget<=0)return j(`[${H(n)}]`,t);t.causeBudget--;try{return ee(n,e,t)}finally{t.causeBudget++}}var ti=1500,m=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:k,enqueueLowEvent:i=>this.tracker.enqueueLowEvent({...i,captureSeq:i.captureSeq??k(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:i.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),registerInputs:(i,r)=>this.tracker.getWindowObserver().registerInputs(i,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),r),beginCeremony:i=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:i??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(i=>t.capturePrefill(i)),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,i=this.captureSessionId,r){if(!t&&!r)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??i),r&&(o.initiator=e?.initiator??r),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,i){this.startReference=e,this.captureSessionId=t,this.captureSpecType=i}subflowStart(e,t){try{for(let i of this.lowFlushers)try{i()}catch(r){this.tracker.getLogger().error("Failed to flush previous low-event context",r)}this.captureSpecType=e?.explicitSpecType,this.startReference=y(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(i){this.tracker.getLogger().error("Failed to start low-event capture context",i)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(i){this.tracker.getLogger().error("Failed to capture input prefill",i)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,i,r){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(i),r)}subflowStepFinished(e,t,i){(!i?.subflowStartEventId||i.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(i))}subflowStepError(e,t,i){let r=t;try{let o=this.tracker.getSdkConfig().rawErrors?i?.rawError:void 0;o!==void 0&&(r={...t,rawError:pt(o,i?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,r,this.captureOptions(i))}withWindowLowEvents(e,t){let i,r=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==i||t.scheduleDisarm(ti)},o=e;return{...e,start:(s,a)=>{i=a?.subflowStartEventId??this.startReference;let p=s?.explicitSpecType??this.captureSpecType,d=a?.initiator??rt(this.operationName,p);t.arm(d,p==="passkey-cui"),o.start(s,d?{...a,initiator:d}:a)},finished:(s,a)=>{o.finished(s,a),r(a)},error:(s,a)=>{o.error(s,a),r(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),r(a)}}}defineStep(e,t){let i,r,o,s=p=>this.captureOptions(p,i,r,o);return{start:(p,d)=>{i=this.startReference,r=this.captureSessionId,o=d?.initiator,this.subflowStepStarted(e,p,s(d),t)},finished:(p,d)=>{this.subflowStepFinished(e,p,s(d))},error:(p,d)=>{this.subflowStepError(e,{error:D(p)},s(d))},errorTyped:(p,d)=>{this.subflowStepError(e,p,s(d))}}}};function dt(n,e){if(e.explicitSpecType!==void 0)try{n.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var te=class extends m{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:dt(e,t)})}},ie=class extends m{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:dt(e,t)})}};function ii(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch{return n}}function ri(n,e){let t=n.toLowerCase();return e.some(i=>{let r=i.toLowerCase();return r.endsWith("*")?t.startsWith(r.slice(0,-1)):t===r})}function ut(n,e,t){return e!=="allowlist"||n===""||n==="?"?n:`?${(n.startsWith("?")?n.slice(1):n).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||ri(ii(a),t)?o:`${a}=*`}).join("&")}`}var Ne=(n,e,t)=>{let i=!1,r,o=null,s=null,a=()=>{s!==null&&(window.clearTimeout(s),s=null);let d=o;i=!1,o=null,d!==null&&n({...r===void 0?{}:{captureSeq:r},lowType:e,ts:d,durationMs:Date.now()-d})};return{extend:()=>{if(!i){let d=t?.();i=!0,o=Date.now(),r=d}s!==null&&window.clearTimeout(s),s=window.setTimeout(a,150)},flush:a}};var ni,ne=()=>ni??=y(),re=class{constructor(e,t,i){this.logger=e;this.enqueue=t;this.flushKeepalive=i;typeof window>"u"||typeof document>"u"||(this.listen(window,"blur",()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)}),this.listen(window,"focus",()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0}),this.listen(document,"visibilitychange",()=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${document.visibilityState==="hidden"?"hidden":"visible"}`,ts:Date.now()})}),this.listen(document,"focusout",r=>{let o=this.findInput(r.target);this.lastBlur=o&&!r.relatedTarget&&Date.now()-this.unrelatedPointerAt>250?{registration:o,ts:Date.now()}:void 0}),this.listen(document,"focusin",()=>{this.lastBlur=void 0}),this.listen(document,"pointerdown",r=>{this.findInput(r.target)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())}),window.visualViewport&&(this.listen(window.visualViewport,"resize",()=>this.extendViewport("resize")),this.listen(window.visualViewport,"scroll",()=>this.extendViewport("scroll"))),this.listen(window,"pagehide",()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()}),this.observeNavigation())}inputs=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=Ne(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",k);scroll=Ne(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",k);registerInputs(e,t,i){if(this.destroyed)return()=>{};let r={fields:e,context:t,flush:i};return this.inputs.add(r),()=>{this.inputs.delete(r),this.lastBlur?.registration===r&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let i=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:r=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(i,r)},destroy:i}}context(){let e=[...this.ceremonies].filter(r=>!r.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=this.findInput(document.activeElement);if(t)return t.context();let i=this.lastBlur;if(i&&Date.now()-i.ts<=250&&(document.activeElement===document.body||!document.activeElement))return i.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(i=>i===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:i,...r}=t??{};this.enqueue({...e,...r,captureSeq:e.captureSeq??k(),sourceKind:"window",captureVersion:1,pageId:ne()},i)}listen(e,t,i){let r=o=>{try{i(o)}catch(s){this.logger.error(`Failed to observe window ${t}`,s)}};e.addEventListener(t,r),this.removers.push(()=>e.removeEventListener(t,r))}extendViewport(e){let t=this.context(),i=this.viewportContext[e];(i?.subflowStartEventId!==t?.subflowStartEventId||i?.fieldRole!==t?.fieldRole||i?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}observeNavigation(){let e=window.navigation;e&&this.listen(e,"currententrychange",t=>{let i=t,r=i.from?.index,o=e.currentEntry?.index;i.navigationType==="traverse"&&typeof r=="number"&&typeof o=="number"&&r>=0&&o>=0&&o<r&&(this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()}))})}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()}}};var ft="cbo_sdk_config",ht="X-Corbado-Observe-Config";var 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}},oi=1800*1e3,S={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:oi,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function P(n,e,t){return Math.min(Math.max(n,e),t)}function R(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function N(n,e){return typeof n=="boolean"?n:e}function ct(n,e){return typeof n=="string"?n:e}function si(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0&&e.length<=b.flushOnFlowTypeFinished.maxNameLength).slice(0,b.flushOnFlowTypeFinished.maxEntries):[]}function ai(n){return typeof n=="string"&&n.trim().toLowerCase()==="all"?"all":"allowlist"}function li(n){return Array.isArray(n)?n.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 Y(n){if(!n||typeof n!="object")return null;let e=n;return typeof e.version!="string"||e.version===""?null:gt(e)}function gt(n){let e=n.retry&&typeof n.retry=="object"?n.retry:{},t=P(R(e.baseDelayMs,S.retry.baseDelayMs),b.retryDelayMs.min,b.retryDelayMs.max);return{version:ct(n.version,""),flushIntervalMs:P(R(n.flushIntervalMs,S.flushIntervalMs),b.flushIntervalMs.min,b.flushIntervalMs.max),durableOutbox:n.durableOutbox===!0,durableLowOutbox:n.durableLowOutbox===!0,beaconKeepalive:n.beaconKeepalive===!0,sessionContinuity:n.sessionContinuity===!0,sessionInactivityMs:P(R(n.sessionInactivityMs,S.sessionInactivityMs),b.sessionInactivityMs.min,b.sessionInactivityMs.max),seqLockTimeoutMs:P(R(n.seqLockTimeoutMs,S.seqLockTimeoutMs),b.seqLockTimeoutMs.min,b.seqLockTimeoutMs.max),tvc:N(n.tvc,S.tvc),tph:N(n.tph,S.tph),td:N(n.td,S.td),tlf:N(n.tlf,S.tlf),telemetry:N(n.telemetry,S.telemetry),flushOnTelemetry:n.flushOnTelemetry===!0,flushOnFlowTypeFinished:si(n.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:P(R(n.deviceInfoCollectorTimeoutMs,S.deviceInfoCollectorTimeoutMs),b.deviceInfoCollectorTimeoutMs.min,b.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:n.deviceInfoTiming===!0,rawErrors:N(n.rawErrors,S.rawErrors),aap:ct(n.aap,""),sourcePathQuery:ai(n.sourcePathQuery),sourcePathQueryAllow:li(n.sourcePathQueryAllow),retry:{maxAttempts:P(R(e.maxAttempts,S.retry.maxAttempts),b.retryMaxAttempts.min,b.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:P(R(e.maxDelayMs,S.retry.maxDelayMs),t,b.retryDelayMs.max)}}}function Be(n,e={}){let t=n??S,i=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),r=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=gt({...t,...i,retry:{...t.retry,...r}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(r).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function mt(n){return Y(n.getItem(ft))}function yt(n,e){n.setItem(ft,e)}var pi=6e4,di=6e4,oe=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let i=JSON.stringify(e),r=typeof AbortController<"u"?new AbortController:void 0,o=r?setTimeout(()=>r.abort(),di):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:i,keepalive:new Blob([i]).size<=pi,...r?{signal:r.signal}:{}},a=await fetch(this.options.url,s),p={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(p.deliveryAccepted=!0),a.status===200)try{let d=Y(await a.json());d&&(p.config=d)}catch(d){this.options.logger.error("Failed to parse SDK config response",d),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return p}finally{o&&clearTimeout(o)}}catch(i){return this.options.logger.error("Failed to send event",i),{}}}sendBeacon(e){try{if(this.options.logger.debug(`Sending ${e.events.length} events via beacon`),typeof navigator?.sendBeacon!="function")return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let t=new Blob([JSON.stringify(e)],{type:"text/plain"});return navigator.sendBeacon(this.options.url,t)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};function se(n,e,t={}){let i=typeof navigator<"u"?navigator.locks:void 0;if(i?.request){let r=t.timeoutMs,o=r!==void 0&&typeof AbortController<"u"?new AbortController:null;if(r!==void 0&&!o)return Promise.resolve().then(e);try{let s=!1,a,p=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},d=()=>(s=!0,p(),e()),l=o?i.request(n,{signal:o.signal},d):i.request(n,d);return o&&r!==void 0&&!s&&(a=setTimeout(()=>{a=void 0,o.abort();try{t.onTimeout?.()}catch{}},r)),l.catch(u=>{if(s)throw u;return e()}).finally(p)}catch{}}try{return Promise.resolve(e())}catch(r){return Promise.reject(r)}}var ui="cbo_outbox",Ue="cbo_outbox",ci=500,fi=512*1024;function hi(n){if(!n||typeof n!="object")return!1;let e=n;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 B=class{constructor(e,t,i=ci,r=fi,o=Ue,s=ui){this.storage=e;this.logger=t;this.maxEntries=i;this.maxSerializedLength=r;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(hi);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 se(this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let i=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${i} 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),i=t.reduce((o,s)=>o+s,e.length+1),r=0;for(;i>this.maxSerializedLength&&r<e.length;)i-=t[r]+1,r++;return r===0?e:(this.logger.error(`EventStore evicted ${r} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(r))}add(e){return this.mutate(t=>t.some(i=>i.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(i=>i.filter(r=>!t.has(r.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(i=>[i.id,i]));return this.mutate(i=>i.map(r=>t.get(r.id)??r))}size(){return this.all().length}};var ae=class{constructor(e,t,i,r,o={},s){this.logger=e;this.transport=t;this.sessionId=i;this.sdk=r;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.config=o.config??S,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new B(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new B(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(p=>this.validPendingLow(p)),this.lowStore.remove(a.filter(p=>!this.validPendingLow(p)).map(p=>p.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;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 i={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(i),this.store?.add(i),this.scheduleAfterEnqueue(e)}catch(i){this.logger.error("Failed to enqueue event",i)}}enqueueLow(e,t=this.sessionId){try{let i={...e,id:e.id??y()};if(this.config.durableLowOutbox){let r={id:i.id,sessionId:t,event:i,attempts:0,flushAfter:0};this.lowPending.push(r),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(r)}else this.lowsQueue.push({sessionId:t,event:i});this.scheduleAfterEnqueue()}catch(i){this.logger.error("Failed to enqueue low event",i)}}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)}}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){e==="destroy"&&await this.flushingDone;return}this.isFlushing=!0;let t;this.flushingDone=new Promise(i=>{t=i});try{for(this.clearTimer();;){let i=Date.now(),r=this.getDuePending(i),o=this.lowPending.filter(g=>g.flushAfter<=i);if(r.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0)return;let s=r[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??this.sessionId,a=r.filter(g=>g.sessionId===s).slice(0,this.batchSize),p=o.filter(g=>g.sessionId===s).slice(0,100),d=[...p.map(g=>g.event),...this.takeLows(s,100-p.length)],l=s===this.sessionId?this.takeTelemetry():[],u={sessionId:s,events:a.map(g=>g.event),sdk:this.sdk};d.length>0&&(u.lows=d),l.length>0&&(u.telemetry=l),this.attachBatchMeta(u,[...a,...p],e),p.length&&(u.deliveryAck=!0);let c=this.shouldRequestConfig()?{[ht]:this.config.version||"1"}:void 0,f=await this.transport.send(u,c).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(u.deliveryAck&&f.statusCode&&f.statusCode>=200&&f.statusCode<300&&!f.deliveryAccepted&&(f={...f,statusCode:503}),this.requestConfig&&this.handleConfigResponse(f),this.handleLowSendResult(f,p,i),!this.handleSendResult(f,a,i))return}}catch(i){this.logger.error("Unexpected error in queue flush",i)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,i){e.meta={...e.meta,flushReason:i};let r=this.readDataPolicy();r!==void 0&&(e.meta={...e.meta,dataPolicy:r}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}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 i=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),r=new Set(i);return this.lowsQueue=this.lowsQueue.filter(o=>!r.has(o)),i.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(i=>!t.has(i.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,i){let r=e.statusCode;if(r!==void 0&&r>=200&&r<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,i);return}if(!this.isRetryable(r)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,i,this.parseRetryAfter(e))}deferLowEntries(e,t,i=null){let r=[];for(let o of e){if(!this.validPendingLow(o)){r.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,i))}this.removeLowEntries(r),this.lowStore?.update(e.filter(o=>!r.includes(o.id)))}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 r=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of r)this.enqueueLow(o,s)}let i=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new B(this.storage,this.logger,void 0,void 0,this.outboxLockName);let r=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!r.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],i=o.length>0}i?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,i){let r=e.statusCode,o=typeof r=="number"&&r>=200&&r<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(l=>l.id)),!0;if(!this.isRetryable(r))return this.removeEntries(t.map(l=>l.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),p=[],d=[];for(let l of t)l.attempts+=1,l.attempts>=s?p.push(l.id):(l.flushAfter=i+this.backoffForAttempt(l.attempts,a),d.push(l));return this.removeEntries(p),this.store?.update(d),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let i=this.config.retry,r=i.baseDelayMs*Math.pow(2,Math.max(0,e-1));i.maxDelayMs>0&&(r=Math.min(r,i.maxDelayMs));let o=Math.round(r/2+Math.random()*(r/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let i=Number(t);if(!Number.isNaN(i))return i*1e3;let r=Date.parse(t);return Number.isNaN(r)?null:Math.max(0,r-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(i=>!t.has(i.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(i=>i.flushAfter<=e)||this.lowsQueue.length>0){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending].map(i=>i.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"),document.visibilityState==="hidden"&&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)}},window.addEventListener("visibilitychange",this.onVisibilityChange),window.addEventListener("pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:window.location.href};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){if(!this.dirtySinceSyncFlush)return;let t=this.sessionId,i=this.pending.filter(d=>d.sessionId===t),r=i.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)],a=this.takeTelemetry();if(r.length===0&&s.length===0&&a.length===0){this.dirtySinceSyncFlush=!1;return}let p={sessionId:t,events:r.map(d=>d.event),sdk:this.sdk};s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),this.attachBatchMeta(p,[...r,...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(r.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&i.length>r.length}destroy(){try{this.destroyed=!0,this.clearTimer(),typeof window<"u"&&(this.onVisibilityChange&&window.removeEventListener("visibilitychange",this.onVisibilityChange),this.onPageHide&&window.removeEventListener("pagehide",this.onPageHide))}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var qe={d:(n,e)=>{for(var t in e)qe.o(e,t)&&!qe.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o:(n,e)=>Object.prototype.hasOwnProperty.call(n,e)},Ke={};qe.d(Ke,{A:()=>mi,k:()=>Ve});var U=function(n,e,t,i){return new(t||(t=Promise))(function(r,o){function s(d){try{p(i.next(d))}catch(l){o(l)}}function a(d){try{p(i.throw(d))}catch(l){o(l)}}function p(d){var l;d.done?r(d.value):(l=d.value,l instanceof t?l:new t(function(u){u(l)})).then(s,a)}p((i=i.apply(n,e||[])).next())})},q=function(n,e){var t,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(p){return function(d){return(function(l){if(t)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(s=0)),s;)try{if(t=1,i&&(r=2&l[0]?i.return:l[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,l[1])).done)return r;switch(i=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return s.label++,{value:l[1],done:!1};case 5:s.label++,i=l[1],l=[0];continue;case 7:l=s.ops.pop(),s.trys.pop();continue;default:if(r=s.trys,!((r=r.length>0&&r[r.length-1])||l[0]!==6&&l[0]!==2)){s=0;continue}if(l[0]===3&&(!r||l[1]>r[0]&&l[1]<r[3])){s.label=l[1];break}if(l[0]===6&&s.label<r[1]){s.label=r[1],r=l;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(l);break}r[2]&&s.ops.pop(),s.trys.pop();continue}l=e.call(n,s)}catch(u){l=[6,u],i=0}finally{t=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}})([p,d])}}};function Ve(){return U(this,void 0,Promise,function(){return q(this,function(n){switch(n.label){case 0:return[4,new Promise(function(e,t){var i="Unknown",r=!1;function o(l){r||(r=!0,e({isPrivate:l,browserName:i}))}function s(){var l=0,u=parseInt("-1");try{u.toFixed(u)}catch(c){l=c.message.length}return l}function a(){return U(this,void 0,void 0,function(){var l,u;return q(this,function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,navigator.storage.getDirectory()];case 1:return c.sent(),o(!1),[3,3];case 2:return l=c.sent(),u=l instanceof Error&&typeof l.message=="string"?l.message:String(l),o(u.includes("unknown transient reason")),[3,3];case 3:return[2]}})})}function p(){var l;return U(this,void 0,Promise,function(){return q(this,function(u){switch(u.label){case 0:return typeof((l=navigator.storage)===null||l===void 0?void 0:l.getDirectory)!="function"?[3,2]:[4,a()];case 1:return u.sent(),[3,3];case 2:navigator.maxTouchPoints!==void 0?(function(){var c=String(Math.random());try{var f=indexedDB.open(c,1);f.onupgradeneeded=function(g){var h=g.target.result,v=function(I){o(I)};try{h.createObjectStore("t",{autoIncrement:!0}).put(new Blob),v(!1)}catch(I){(I instanceof Error&&typeof I.message=="string"?I.message:String(I)).includes("are not yet supported")?v(!0):v(!1)}finally{h.close(),indexedDB.deleteDatabase(c)}},f.onerror=function(){return o(!1)}}catch{o(!1)}})():(function(){var c=window.openDatabase,f=window.localStorage;try{c(null,null,null,null)}catch{return void o(!0)}try{f.setItem("test","1"),f.removeItem("test")}catch{return void o(!0)}o(!1)})(),u.label=3;case 3:return[2]}})})}function d(){var l;return U(this,void 0,Promise,function(){var u,c,f;return q(this,function(g){switch(g.label){case 0:if(typeof((l=navigator.storage)===null||l===void 0?void 0:l.getDirectory)!="function")return[3,5];g.label=1;case 1:return g.trys.push([1,3,,4]),[4,navigator.storage.getDirectory()];case 2:return g.sent(),o(!1),[3,4];case 3:return u=g.sent(),c=u instanceof Error&&typeof u.message=="string"?u.message:String(u),o(c.includes("Security error")),[2];case 4:return[3,6];case 5:(f=indexedDB.open("inPrivate")).onerror=function(h){f.error&&f.error.name==="InvalidStateError"&&h.preventDefault(),o(!0)},f.onsuccess=function(){indexedDB.deleteDatabase("inPrivate"),o(!1)},g.label=6;case 6:return[2]}})})}(function(){return U(this,void 0,Promise,function(){return q(this,function(l){switch(l.label){case 0:return s()!==44&&s()!==43?[3,2]:(i="Safari",[4,p()]);case 1:return l.sent(),[3,6];case 2:return s()!==51?[3,3]:(u=navigator.userAgent,i=u.match(/Chrome/)?navigator.brave!==void 0?"Brave":u.match(/Edg/)?"Edge":u.match(/OPR/)?"Opera":"Chrome":"Chromium",(function(){var c=this,f="__di_"+Math.random().toString(36).slice(2),g=new Uint8Array(16384),h=indexedDB.open(f,1);h.onupgradeneeded=function(){h.result.createObjectStore("s")},h.onerror=function(){indexedDB.deleteDatabase(f),o(!1)},h.onsuccess=function(){var v=h.result,I=!1;try{var tt=v.transaction("s","readwrite",{durability:"strict"});I=tt.durability==="strict",tt.abort()}catch{}if(!I)return v.close(),indexedDB.deleteDatabase(f),void o(!1);var J=function(G){return new Promise(function(C,W){var z=performance.now(),A=0,E=function(){if(A!==15){var O=v.transaction("s","readwrite",{durability:G});O.objectStore("s").put(g,A),A++,O.oncomplete=E,O.onerror=O.onabort=function(){return W(O.error)}}else C(performance.now()-z)};E()})};U(c,void 0,void 0,function(){var G,C,W,z,A;return q(this,function(E){switch(E.label){case 0:return G=performance.now(),[4,J("relaxed")];case 1:return E.sent(),[4,J("strict")];case 2:E.sent(),C=[],W=0,E.label=3;case 3:return W<15?[4,J("relaxed")]:[3,7];case 4:return z=E.sent(),[4,J("strict")];case 5:if(A=E.sent(),C.push(z>0?A/z:1/0),C.length>=7&&performance.now()-G>=1e3)return[3,7];E.label=6;case 6:return W++,[3,3];case 7:return C.sort(function(O,Kt){return O-Kt}),v.close(),indexedDB.deleteDatabase(f),o(C[C.length>>1]<1.3),[2]}})}).catch(function(){v.close(),indexedDB.deleteDatabase(f),o(!1)})}})(),[3,6]);case 3:return s()!==25?[3,5]:(i="Firefox",[4,d()]);case 4:return l.sent(),[3,6];case 5:navigator.msSaveBlob!==void 0?(i="Internet Explorer",o(window.indexedDB===void 0)):t(new Error("detectIncognito cannot determine the browser")),l.label=6;case 6:return[2]}var u})})})().catch(t)})];case 1:return[2,n.sent()]}})})}typeof window<"u"&&(window.detectIncognito=Ve);var mi=Ve,vt=Ke.A,Or=Ke.k;var $e={collectorTimeoutMs:1e3,timing:!1},Qe="cbo_tab_id",vi={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function X(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var le=class{constructor(e,t,i="localstorage",r,o=()=>$e,s){this.logger=e;this.storage=t;this.storageSource=i;this.sessionStorage=r;this.settings=o;this.emitTelemetry=s}async getInfo(){try{let e=this.resolveSettings(),t=X(),i=this.getClientEnvHandle(),r=await Promise.all([this.collectField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>this.isBluetoothAvailable(),e.collectorTimeoutMs),this.collectField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>this.getClientCapabilities(),e.collectorTimeoutMs),this.collectField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>this.getUserVerifyingPlatformAuthenticatorAvailable(),e.collectorTimeoutMs),this.collectField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>this.isConditionalMediationAvailable(),e.collectorTimeoutMs),this.collectField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>this.getJavaScriptHighEntropy(),e.collectorTimeoutMs),this.collectField("privateMode","detectIncognito",()=>this.isPrivateMode(),e.collectorTimeoutMs),this.collectField("webdriver","navigator.webdriver",()=>this.getWebdriver(),e.collectorTimeoutMs),this.collectField("maxTouchPoints","navigator.maxTouchPoints",()=>this.getMaxTouchPoints(),e.collectorTimeoutMs)]),o=X()-t;e.timing&&this.reportTiming(o,r);let[s,a,p,d,l,u,c,f]=r,g=r.flatMap(v=>v.error?[v.error]:[]),h={type:"web",clientEnvHandle:i.value,clientEnvHandleMeta:{timestamp:i.timestamp,source:i.source},tabId:this.getTabId(),data:{bluetoothAvailable:s.value,javaScriptHighEntropy:l.value,privateMode:u.value,webdriver:c.value,conditionalMediationAvailable:d.value,userVerifyingPlatformAuthenticatorAvailable:p.value,clientCapabilities:a.value,maxTouchPoints:f.value}};return g.length>0&&(h.collectionErrors=g),h}catch(e){return this.logger.error("Failed to collect device info",e),{}}}async collectField(e,t,i,r){let o,s=X();try{let a=await Promise.race([Promise.resolve().then(i),new Promise((p,d)=>{o=setTimeout(()=>{let l=new Error(`Device info collection timed out after ${r}ms`);l.name="TimeoutError",d(l)},r)})]);return{field:e,value:a,durationMs:X()-s}}catch(a){return this.logger.error(`Failed to collect device info field "${e}"`,a),{field:e,durationMs:X()-s,error:{field:e,source:t,error:D(a)??{message:"Unknown error"}}}}finally{o&&clearTimeout(o)}}resolveSettings(){try{let e=this.settings(),t=e?.collectorTimeoutMs;return{collectorTimeoutMs:typeof t=="number"&&Number.isFinite(t)&&t>0?t:$e.collectorTimeoutMs,timing:e?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),$e}}reportTiming(e,t){if(this.emitTelemetry)try{let i=t.map(r=>`${vi[r.field]??r.field}=${Math.round(r.durationMs)}`).join(",");this.emitTelemetry("info",`device info collected in ${Math.round(e)}ms (${i})`)}catch(i){this.logger.error("Failed to report device info timing",i)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return typeof navigator>"u"?"":navigator.userAgent??""}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"}async isBluetoothAvailable(){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async getUserVerifyingPlatformAuthenticatorAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async isConditionalMediationAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async getClientCapabilities(){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i.toString()]))}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=y(),i={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",i),i}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(Qe);if(e)return e;let t=y();if(this.sessionStorage.setItem(Qe,t),this.sessionStorage.getItem(Qe)===t)return t}async getJavaScriptHighEntropy(){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,i=e.mobile,r=e.platformVersion,o=e.model||void 0;if(!(!t||i===void 0||!r))return{platform:t,mobile:i,platformVersion:r,model:o}}async isPrivateMode(){return(await vt()).isPrivate}getWebdriver(){if(!(typeof navigator>"u"))return navigator.webdriver}getMaxTouchPoints(){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}};var pe=class{constructor(e,t,i,r){this.logger=e;this.source=t;this.refreshInterval=i;this.attachInterval=r}snapshot;refreshedAt=0;lastAttachedAt=null;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot&&!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}refresh(){return this.refreshPromise?this.refreshPromise:(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.refreshPromise=Promise.resolve().then(()=>this.source.getInfo()).then(e=>{this.snapshot=e,this.refreshedAt=Date.now()}).catch(e=>this.logger.error("Failed to refresh device info",e)).finally(()=>{this.refreshPromise=void 0,this.destroyed||(this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval))}),this.refreshPromise)}};function x(n,e){return`${n}_${e}`}var de=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(x(e,this.namespace))}setItem(e,t){this.engine.setItem(x(e,this.namespace),t)}removeItem(e){this.engine.removeItem(x(e,this.namespace))}},ue=class{constructor(e){this.logger=e}getItem(e){try{if(typeof localStorage>"u")return null;let t=localStorage.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;localStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;localStorage.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}getItem(e){try{if(typeof document>"u")return null;let t=e+"=",i=document.cookie.split(";");for(let r=0;r<i.length;r++){let o=i[r].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 i=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(i+=`; domain=${this.domain}`),document.cookie=i}catch(i){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,i),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}`),document.cookie=t}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},fe=class{constructor(e){this.logger=e}getItem(e){try{if(typeof sessionStorage>"u")return null;let t=sessionStorage.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;sessionStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;sessionStorage.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var he=1,ge="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"],wi=["cbo_session_id","cbo_tab_id"],bi=["cbo_client_env_handle"];function me(n,e,t){return n.setItem(e,t),JSON.stringify(n.getItem(e))===JSON.stringify(t)}function Ge(n,e,t){let i=n.getItem(ge);if(i!==null){if(i.version!==he||i.projectId!==e)return!1;if(i.complete===!0)return!0;if(i.complete!==!1)return!1}else{if(t.some(r=>n.getItem(x(r,e))!==null))return me(n,ge,{version:he,projectId:e,complete:!0});if(!me(n,ge,{version:he,projectId:e,complete:!1}))return!1}for(let r of t){let o=x(r,e);if(n.getItem(o)!==null)continue;let s=n.getItem(r);if(s!==null&&!me(n,o,s))return!1}return me(n,ge,{version:he,projectId:e,complete:!0})}function St(n,e,t,i,r){try{if(!Ge(e,n,Si))return;Ge(t,n,wi),i&&Ge(i,n,bi)}catch(o){r.error("Failed to migrate legacy Observe storage",o)}}var Ti=10*1e3,Ei=600*1e3,Ii=[1e3,3e3],ye=class{constructor(e,t,i){this.url=e;this.storage=t;this.logger=i;this.initialConfig=mt(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()},Ei)),this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),Ti):void 0;let i=!0;try{let r=await fetch(this.url,{method:"GET",cache:"no-store",...t?{signal:t.signal}:{}});if(!r.ok)throw i=(r.status===408||r.status===429||r.status>=500)&&!r.headers.has("Retry-After"),new Error(`SDK config request failed (${r.status})`);let o=await r.json();i=!1;let s=Y(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;yt(this.storage,s),this.onConfig?.(s)}catch(r){if(!this.stopped){this.logger.error("Failed to fetch SDK config",r);let o=Ii[e];(i&&!(r 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}};var K=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(i){this.logger.error("Failed to register ceremony low-event context",i)}}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 m{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new K(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 V=class{constructor(e,t,i,r){this.previousLength=e;this.pushLow=t;this.logger=i;this.reserveCaptureSeq=r}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,i){let r=this.inputBatch;if(!r){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:i};return}r.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,i=-1/0;for(let r=1;r<e.length;r++){let o=e[r].ts-e[r-1].ts;if(o>80)return!1;o<t&&(t=o),o>i&&(i=o)}return i-t<=25}record(e,t=Date.now(),i=!1,r=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({...r===void 0?{}:{captureSeq:r},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(i){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},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,r);return}let p=this.autofillTimestamps;if(p.length===0&&(this.ringEffect=this.currentEffect),p.push({ts:t,captureSeq:r}),p.length>5){let u=p.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let d=p[0],l=p[p.length-1];p.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:d.ts,captureSeq:d.captureSeq,lastTimestamp:l.ts,effect:this.ringEffect}}};var $=class{constructor(e,t,i,r){this.inputs=e;this.logger=t;this.changed=i;this.reserveCaptureSeq=r;for(let o of e)o.addEventListener("paste",this.onPaste,!0),o.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,i=this.captureSeq;this.clear();try{let r=0,o=!1;this.inputs.forEach((s,a)=>{let p=e[a],d=s.value;if(p===d)return;o=!0;let l=0;for(;l<p.length&&l<d.length&&p[l]===d[l];)l++;let u=0;for(;u<p.length-l&&u<d.length-l&&p[p.length-u-1]===d[d.length-u-1];)u++;r+=d.length-l-u}),o&&this.changed(t,r,i)}catch(r){this.logger.error("Failed to finish paste observation",r)}}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 ki=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],xi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",wt="pa-4",Ci='[popover="manual"]',Oi=400,Li=20,We="pa-5",ze="pa-6",je=(n,e)=>{try{return Array.from(n.querySelectorAll(e))}catch{return[]}},bt=n=>{if(n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(e.length<Oi||!/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)<Li)},Pi=n=>{if(bt(n)||n.getAttribute("popover")!=="manual")return!1;let e=n.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))},Ri=n=>{n(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&n(t)}},Tt=()=>{let n=new Set;return typeof document>"u"||Ri(e=>{for(let t of ki)n.has(t.eventType)||je(e,t.query).length>0&&n.add(t.eventType);if(!n.has(wt)&&je(e,xi).length>0&&n.add(wt),!n.has(We)||!n.has(ze))for(let t of je(e,Ci)){if(!n.has(We)&&bt(t)){n.add(We);continue}!n.has(ze)&&Pi(t)&&n.add(ze)}}),n};var Fi=500,Ai=250,T=class{constructor(e,t,i){this.logger=e;this.inputField=t;this.sink=i;this.changes=new V(t.value.length,this.pushLow,e,i.reserveCaptureSeq),this.pasteObserver=new $([t],e,(r,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=t.value.length,this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:t.value.length===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.boundHandlers={focus:this.wrapHandler("focus",()=>this.handleFocus()),blur:this.wrapHandler("blur",()=>this.handleBlur()),pointerdown:this.wrapHandler("pointerdown",()=>this.enqueueNonInputEvent("pointerdown")),pointerup:this.wrapHandler("pointerup",()=>this.enqueueNonInputEvent("pointerup")),click:this.wrapHandler("click",()=>this.enqueueNonInputEvent("click")),input:r=>{try{this.handleInput(r)}catch(o){this.logger.error("Failed to observe input",o)}},keyup:this.wrapKeyboardHandler("keyup",r=>this.handleKeyUp(r)),pageHide:this.wrapHandler("pagehide",()=>this.flushForTeardown())},this.unregisterInputs=i.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;boundHandlers;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;e.addEventListener("focus",this.boundHandlers.focus),e.addEventListener("blur",this.boundHandlers.blur),e.addEventListener("pointerdown",this.boundHandlers.pointerdown),e.addEventListener("pointerup",this.boundHandlers.pointerup),e.addEventListener("click",this.boundHandlers.click),e.addEventListener("input",this.boundHandlers.input),e.addEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.addEventListener("pagehide",this.boundHandlers.pageHide),typeof document<"u"&&document.activeElement===e&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),Fi))}detach(){let e=this.inputField;e.removeEventListener("focus",this.boundHandlers.focus),e.removeEventListener("blur",this.boundHandlers.blur),e.removeEventListener("pointerdown",this.boundHandlers.pointerdown),e.removeEventListener("pointerup",this.boundHandlers.pointerup),e.removeEventListener("click",this.boundHandlers.click),e.removeEventListener("input",this.boundHandlers.input),e.removeEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.removeEventListener("pagehide",this.boundHandlers.pageHide)}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{let e=Tt(),t=Date.now();for(let i of e)this.emittedSignals.has(i)||(this.emittedSignals.add(i),this.pushLow({lowType:i,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(),Ai))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.inputField.value.length,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){this.pasteObserver.handlesInput(e)||this.changes.record(this.inputField.value.length,Date.now(),e.isComposing||e.inputType==="insertCompositionText")}handleKeyUp(e){e.key==="Escape"&&this.enqueueNonInputEvent("keyup-escape")}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(i){this.logger.error(`Failed to handle low event "${e}"`,i)}}}wrapKeyboardHandler(e,t){return i=>{try{t(i)}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var Se=class{constructor(e,t,i){this.logger=e;this.sink=i;this.inputs=[...new Set(t)],this.changes=new V(this.length(),r=>i.enqueueLowEvent(r),e,i.reserveCaptureSeq),this.paste=new $(this.inputs,e,(r,o,s)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=this.length(),i.enqueueLowEvent({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:this.length()===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();for(let r of this.inputs){this.listen(r,"input",o=>{this.paste.handlesInput(o)||(this.composing||=o.isComposing||o.inputType==="insertCompositionText",this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=i.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))}),this.listen(r,"focus",o=>{this.contains(o.relatedTarget)||this.emit("focus")}),this.listen(r,"blur",o=>{this.contains(o.relatedTarget)||(this.flushPending(),this.emit("blur"))});for(let o of["click","pointerdown","pointerup"])this.listen(r,o,()=>this.emit(o));this.listen(r,"keyup",o=>{o.key==="Escape"&&this.emit("keyup-escape")})}typeof window<"u"&&this.listen(window,"pagehide",()=>{this.flushPending(),i.flushKeepalive()}),typeof document<"u"&&this.contains(document.activeElement)&&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 this.inputs.reduce((e,t)=>e+t.value.length,0)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}listen(e,t,i){let r=o=>this.safe(()=>i(o));e.addEventListener(t,r),this.listeners.push(()=>e.removeEventListener(t,r))}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 Q=class{constructor(e,t,i){this.logger=e;this.inputSink=t;this.groupSink=i}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let i=[...new Set(e)];if(t===this.grouped&&i.length===this.fields.length&&i.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,i.length===0))return;let r=t?this.groupSink:this.inputSink,o={...r,enqueueLowEvent:s=>this.enqueue(r,s)};this.collector=t?new Se(this.logger,i,o):new T(this.logger,i[0],o),this.fields=i}catch(i){this.logger.error("Failed to bind OTP inputs",i)}}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 m{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 Q(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 be=class extends m{lowEventTracker;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new Q(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 Di=["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 Et(n){if(!n)return!1;let e=n.toLowerCase();return Di.some(t=>e.includes(t))}var It="@corbado/observe",kt="1.1.0";var Ye="cbo_email_link_starts";function Xe(n,e){let t=n.getItem(Ye);return Array.isArray(t)?t.filter(i=>!!i&&typeof i=="object"&&typeof i.transactionId=="string"&&typeof i.anchor=="string"&&typeof i.sessionId=="string"&&typeof i.startedAt=="number"&&e-i.startedAt<864e5):[]}function xt(n,e){if(n)try{let t=Xe(n,e.startedAt).filter(i=>i.transactionId!==e.transactionId);t.push(e),n.setItem(Ye,t.slice(-10))}catch{}}function Ct(n,e,t=Date.now()){if(n)try{let i=Xe(n,t);if(e.transactionId)return i.find(o=>o.transactionId===e.transactionId);let r=i.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return r[r.length-1]}catch{return}}function Ot(n,e){if(n)try{let t=Xe(n,Date.now()).map(i=>i.transactionId===e?{...i,continued:!0}:i);n.setItem(Ye,t)}catch{}}var Te=class extends m{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||y(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let i=this.captureReference,r=this.captureSession;i&&r&&xt(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:i,sessionId:r,specType:t.explicitSpecType,startedAt:Date.now()})}},Ee=class extends m{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();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 i=e.getPersistentStorage(),r=Ct(i,{transactionId:t.transactionId,specType:t.explicitSpecType});if(r&&r.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??r.transactionId,this.adoptCapture(r.anchor,r.sessionId,r.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&window.addEventListener("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 i of t)i.run(i.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&window.removeEventListener("pagehide",this.onPageHide)}deferrable(e,t=!1){let i=(r,o)=>{if(this.started){r(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:r})};return{start:(r,o)=>i(s=>e.start(r,{...o,explicitTimestamp:s}),o),finished:(r,o)=>{i(s=>e.finished(r,{...o,explicitTimestamp:s}),o),t&&this.transaction&&Ot(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(r,o)=>i(s=>e.error(r,{...o,explicitTimestamp:s}),o)}}};var Ie=class extends m{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new K(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 Lt(n){let e=n.debug,t,i=(r,o)=>`[Corbado Observe SDK ${r}] ${o}`;return{reportTelemetry(r,o){if(t)try{t(r,o)}catch{}},setTelemetrySink(r){t=r},debug(r,...o){e&&console.log(i("DEBUG",r),...o)},info(r,...o){e&&console.log(i("INFO",r),...o)},warn(r,...o){e&&console.warn(i("WARN",r),...o)},error(r,...o){e&&console.error(i("ERROR",r),...o)},critical(r,...o){console.error(i("CRITICAL",r),...o)}}}var ke=class extends m{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 T(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new T(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 xe=class extends m{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 T(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Ce=class extends m{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(i,r)=>{this.trigger(i,r)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(i,r)=>{this.trigger(i,r)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new T(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Oe=class extends m{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})}};var Le=class extends m{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 Pe=class extends m{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Je(n,e,t){if(n===null||typeof n!="object")return n;try{let i={...n};i.purpose===void 0&&e.purpose!==void 0&&(i.purpose=e.purpose),i.storage===void 0&&e.storage!==void 0&&(i.storage=e.storage),i.trustName===void 0&&e.trustName!==void 0&&(i.trustName=e.trustName);for(let[r,o]of[["bindingReference",255],["trustName",128]])if(typeof i[r]=="string"&&[...i[r]].length>o){delete i[r];try{t.getLogger().debug(`Trusted device: omitted ${r} exceeding ${o} characters`)}catch{}}return i}catch{return n}}function Re(n,e,t){return{...n,start:(i,r)=>n.start(Je(i,e,t),r),finished:(i,r)=>n.finished(Je(i,e,t),r)}}var Fe=class extends m{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=Pt(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",i,e),this.ceremony=this.checkStep("ceremony",i,e),this.postResponse=this.checkStep("post-response",i,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,i){let r=this.defineStep(e,!0);return{...Re(r,t,i),errorTyped:(o,s)=>{r.errorTyped(Je({code:o?.code,error:D(o?.error)},t,i),s)}}}},Ae=class extends m{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=Pt(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Re(this.defineStep("get-options"),i,e),this.ceremony=Re(this.defineStep("ceremony"),i,e),this.postResponse=Re(this.defineStep("post-response"),i,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Pt(n,e){let t={...n},i=r=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${r}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,i("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,i("storage")),t}var De=class extends m{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:i,...r}=t;this.subflowStart(r),i&&(this.lowEventTracker=this.createLowCollector(()=>new T(e.getLogger(),i,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var _i={name:It,version:kt},Rt="cbo_session_id",Ze="cbo_session",F="cbo_seq",Ft="cbo_experiments",At="cbo_data_policy",Mi=255,Hi=/^[A-Za-z0-9_-]+$/,Ni=128,Bi=256,Dt=1e3,Ui=50,qi="cbo_seq",_t=1e3,Mt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,_e=class n{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??Lt({debug:this.options.debug});let t=new ue(this.logger),i=new fe(this.logger),r=e.storage==="cookie",o=r?new ce(this.logger,e.cookieDomain):void 0;St(e.projectId,t,i,o,this.logger);let s=e.projectId,a=h=>new de(h,s);this.seqLockName=x(qi,s),this.sessionStorage=a(i),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]}};let p=Object.keys(S).every(h=>this.configOverrides[h]!==void 0)&&Object.keys(S.retry).every(h=>this.configOverrides.retry?.[h]!==void 0);p||(this.configManager=new ye(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let d=this.configManager?.initialConfig;this.config=Be(d,this.configOverrides),!p&&!d&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!p&&!d&&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 l=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${l}`);let u=new oe({logger:this.logger,url:l});this.sessionId=this.resolveSessionId(),this.queue=new ae(this.logger,u,this.sessionId,_i,{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:x(Ue,s),getDataPolicy:()=>this.dataPolicy},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((h,v)=>this.reportTelemetry(h,v));try{this.getWindowObserver()}catch(h){this.logger.error("Failed to attach page low-event observer",h)}let c=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let h of c)this.telemetry(h.level,h.message);let f=new le(this.logger,this.storage,r?"cookie":"localstorage",this.sessionStorage,()=>({collectorTimeoutMs:this.config.deviceInfoCollectorTimeoutMs,timing:this.config.deviceInfoTiming}),(h,v)=>this.telemetry(h,v));this.deviceCollector=f;let g=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new pe(this.logger,f,Math.max(1,g),g),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(h=>this.handleConfig(h))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];windowObserver;getWindowObserver(){return this.windowObserver??=new re(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=Be(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[i,r]of Object.entries(e)){if(!n.isValidExperimentKey(i)||!n.isValidExperimentVariant(r)){this.logger.debug(`Ignoring invalid experiment assignment "${String(i)}"`);continue}this.experiments[i]!==r&&(this.experiments[i]=r,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(!n.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<=Mi}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(At);return n.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(At,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<=Ni&&Hi.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=Bi}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(Ft);if(!e||typeof e!="object")return{};let t={};for(let[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(Ft,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[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:Et(navigator.userAgent)}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 i=y();return this.persistPerTabSession(i,e),this.seq=0,this.logger.debug("Created session id",i),i}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(Ze);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(F)??0,t.id;if(!t?.id){let r=this.readPerTabSession();if(r&&e-r.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(r.id,e),this.persistentStorage.setItem(F,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",r.id),r.id}let i=y();return this.persistContinuitySession(i,e),this.persistentStorage.setItem(F,0),this.seq=0,this.logger.debug("Created continuity session id",i),i}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(Ze,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(Rt);if(e){if(typeof e=="string")return Mt.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return Mt.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let i=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(Rt,{id:e,lastActiveAt:t,...i===void 0?{}:{inactivityMs:i}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let i=Date.now();return this.sessionId&&i-this.lastActivityWriteAt>=_t&&this.persistPerTabSession(this.sessionId,i),this.seq++}let e=()=>{let i=Date.now(),r=this.persistentStorage.getItem(Ze),o=!1;if(!r?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,i);else if(r?.id)i-this.lastActivityWriteAt>=_t&&this.persistContinuitySession(r.id,i),r.id!==this.sessionId&&(this.sessionId=r.id,this.queue.setSessionId(r.id),o=!0);else{let p=y();this.persistContinuitySession(p,i),this.persistentStorage.setItem(F,0),this.sessionId=p,this.queue.setSessionId(p),this.seq=0,o=!0}let s=this.persistentStorage.getItem(F);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(F,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||typeof navigator>"u"||!navigator.locks?.request?e():se(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;let e=ut(window.location.search,this.config.sourcePathQuery,this.config.sourcePathQueryAllow);return`${window.location.pathname}${e}`}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,i,r){let o={subflowType:e,...t};this.track("subflow_started",o,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{id:r,subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowTrigger(e,t,i){let r={subflowType:e,...t};this.track("subflow_trigger",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowStepStarted(e,t,i,r,o){let s={subflowType:e,stepName:t,stepData:i,ignoreAsInteraction:o};this.track("subflow_step_started",s,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepFinished(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_finished",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepError(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_error",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowError(e,t,i){let r={subflowType:e,stepData:t};this.track("subflow_error",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}async track(e,t,i,r,o,s,a,p){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 d=s??Date.now(),l=p?.id??y(),u=p?.sessionId??this.sessionId,c=this.nextSeq(),f=typeof c=="number"?c:await c,g=this.resolveTrackingSourcePath(),h={type:"predefined",name:e,id:l,timestamp:d,seq:f,data:t,user:i,contexts:o,tags:r,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:ne(),initiator:p?.initiator,trackingSourcePath:g??"",subflowStartEventId:p?.subflowStartEventId,tabId:this.resolveEventTabId()}},v=this.deviceInfoManager.getForEvent();v&&(h.deviceInfo=v),this.logger.debug(`Track: ${e}`,JSON.stringify(h,null,2)),this.queue.enqueue(h,u)}catch(d){this.logger.error(`Failed to process event "${e}" before enqueue`,d),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,i,r){try{let o=y(),s=this.sessionId,a={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,a,r,void 0,i,{id:o,sessionId:s}),this.flowHandle(o,s)}catch(o){return this.logger.warn("Failed to start flow",o),{enrich:async()=>{}}}}flowDecided(e,t,i){this.track("flow_decided",e,void 0,t,void 0,void 0,i)}conversion(e,t,i){let{userId:r,identifier:o,crossEnvironmentTransactionID:s,...a}=e,p={userId:r,identifier:o,crossEnvironmentTransactionID:s},d={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,p,d,void 0,void 0,i)}flowFinished(e,t,i){try{let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o},p=y(),d=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,i,{id:p,sessionId:d}),this.flowHandle(p,d)}catch(r){return this.logger.warn("Failed to finish flow",r),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async i=>{try{await this.track("flow_enriched",{targetEventId:e},{...i},void 0,void 0,void 0,void 0,{sessionId:t})}catch(r){this.logger.warn("Failed to enrich flow",r)}}}}flowReset(e,t,i){this.track("flow_reset",e,void 0,t,void 0,void 0,i)}flowAutoFinished(e,t,i){let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,i)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}authMethodsDecisionStarted(e,t,i,r){this.track("auth_method_decision_started",e,void 0,t,void 0,r?.explicitTimestamp,i)}authMethodsDecisionFinished(e,t,i){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,i)}authDecisionStarted(e,t,i){this.track("auth_decision_started",e,void 0,t,void 0,void 0,i)}authDecisionFinished(e,t,i){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,i)}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??ne()},t)}catch(i){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,i)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let i=typeof t=="string"?t:String(t);if(i.length===0)return;let r={id:y(),level:e,message:i.length>Dt?i.slice(0,Dt):i,ts:Date.now()};this.queue.enqueueTelemetry(r)}catch(i){this.logger.error("Failed to process telemetry before enqueue",i)}}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=Ui)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)}}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new ve(this,e)}passkeyEnrollmentFullOperation(e){return new Ie(this,e)}passwordLoginFullOperation(e){return new ke(this,e)}passwordEnrollmentFullOperation(e){return new xe(this,e)}emailLinkOperationFull(e){return new Te(this,e)}continueEmailLinkOperation(e){return new Ee(this,e)}emailOtpOperationFull(e){return new we(this,e)}smsOtpOperationFull(e){return new be(this,e)}provideIdentifierOperationFull(e){return new Ce(this,e)}provideDataOperationFull(e){return new De(this,e)}socialLoginOperationFull(e){return new Oe(this,e)}appConfirmationOperationFull(e){return new Le(this,e)}keySigningOperationFull(e){return new te(this,e)}keyRegistrationOperationFull(e){return new ie(this,e)}captchaOperationFull(e){return new Pe(this,e)}trustedDeviceCheckOperationFull(e){return new Fe(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ae(this,e)}async destroy(){if(this.configManager?.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=y();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(F,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}};var et={};function Ht(n,e="default"){et[e]=new _e(n)}function Nt(n="default"){if(!et[n])throw new Error(`Tracker ${n} not initialized (call Corbado.init() first)`);return et[n]}function Ki(n){for(let e of n)Ht(e[0],e[1])}var Bt={};function Ut(n,e,t=[],i){let r=Nt(n),o=r[e];if(typeof o!="function")return;let s=o.apply(r,t);i&&s&&typeof s=="object"&&(Bt[i]=s)}function qt(n,e,t=[]){let i=Bt[n];if(!i)return;let r=e.split("."),o=i;for(let a=0;a<r.length-1;a++)if(o=o?.[r[a]],!o)return;let s=o[r[r.length-1]];typeof s=="function"&&s.apply(o,t)}function Vi(n){for(let e of n)Ut(e[0],e[1],Array.isArray(e[2])?e[2]:[],e[3])}function $i(n){for(let e of n)qt(e[0],e[1],Array.isArray(e[2])?e[2]:[])}typeof window<"u"&&(window.Corbado?.IQ&&(Ki(window.Corbado.IQ),delete window.Corbado.IQ),window.Corbado?.MQ&&(Vi(window.Corbado.MQ),delete window.Corbado.MQ),window.Corbado?.OQ&&($i(window.Corbado.OQ),delete window.Corbado.OQ),window.Corbado={init:Ht,get:Nt,__dispatchMethod:Ut,__dispatchOp:qt});})();
|
|
4
|
+
${s}`,t)}function Zt(n,e,t){let{limits:i}=t,r=H(n),o=u=>ee(u,e-1,t);if(r==="Date")return Number.isNaN(n.getTime())?"[Invalid Date]":n.toISOString();if(r==="RegExp")return L(String(n),i.maxValueLength);if(r==="ArrayBuffer")return`[ArrayBuffer(${n.byteLength})]`;if(ArrayBuffer.isView(n))return`[${r}(${n.byteLength})]`;if(r==="Map"||r==="Set"){let u=n,c=[];for(let f of u){if(c.length===i.maxBreadth)break;c.push(o(f))}return u.size>c.length&&c.push(`[+${u.size-c.length} more]`),c}if(r==="Promise"||r==="WeakMap"||r==="WeakSet"||r==="Window")return`[${r}]`;if(typeof Node<"u"&&n instanceof Node)return`[${r}]`;if(Array.isArray(n)){let u=n.slice(0,i.maxBreadth).map(o);return n.length>i.maxBreadth&&u.push(`[+${n.length-i.maxBreadth} more]`),u}if(typeof Response<"u"&&n instanceof Response)return{status:o(n.status),statusText:o(n.statusText),url:o(n.url),redirected:o(n.redirected)};if(typeof Event<"u"&&n instanceof Event){let u=n,c={type:o(u.type)};for(let f of["message","filename","lineno","colno"])f in u&&(c[f]=o(u[f]));return"error"in u&&u.error!=null&&(c.error=o(u.error)),c}let s=Object.create(null),a=n,p=Xt(n);if(p){for(let c of zt){if(c==="stack"&&!i.stack)continue;let f=a[c];if(!(f==null||typeof f=="function")){if(c==="stack"){i.stack&&typeof f=="string"&&(s.stack=j(at(f,i.maxStackFrames,i.maxValueLength),t));continue}s[c]=o(f)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=ei(u,e-1,t))}let d=0,l=Object.keys(a);for(let u of l){if(u in s||u==="stack"&&!i.stack||p&&u==="cause")continue;if(++d>i.maxBreadth){s["\u2026"]=`[+${l.length-i.maxBreadth} keys]`;break}let c=a[u];typeof c!="function"&&(s[j(u,t)]=u==="stack"&&typeof c=="string"?j(at(c,i.maxStackFrames,i.maxValueLength),t):o(c))}return!p&&r!=="Object"&&d===0?`[${r}]`:s}function ei(n,e,t){if(typeof n!="object"||n===null)return ee(n,e,t);if(t.causeBudget<=0)return j(`[${H(n)}]`,t);t.causeBudget--;try{return ee(n,e,t)}finally{t.causeBudget++}}var ti=1500,m=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:k,enqueueLowEvent:i=>this.tracker.enqueueLowEvent({...i,captureSeq:i.captureSeq??k(),subflowStartEventId:this.startReference,sourceKind:e,fieldRole:t,initiator:i.initiator??(t?`input-${t}`:"unknown")},this.captureSessionId),flushKeepalive:()=>this.tracker.lowEventFlushKeepalive(),registerInputs:(i,r)=>this.tracker.getWindowObserver().registerInputs(i,()=>({subflowStartEventId:this.startReference,fieldRole:t,initiator:t?`input-${t}`:"unknown",sessionId:this.captureSessionId}),r),beginCeremony:i=>this.tracker.getWindowObserver().beginCeremony({subflowStartEventId:this.startReference,initiator:i??"unknown",sessionId:this.captureSessionId})}}createLowCollector(e){try{let t=e();return this.lowPrefillCapturers.push(i=>t.capturePrefill(i)),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,i=this.captureSessionId,r){if(!t&&!r)return e;let o={};return t&&(o.subflowStartEventId=e?.subflowStartEventId??t,o.captureSessionId=e?.captureSessionId??i),r&&(o.initiator=e?.initiator??r),Object.defineProperties({},{...Object.getOwnPropertyDescriptors(e??{}),...Object.getOwnPropertyDescriptors(o)})}get captureReference(){return this.startReference}get captureSession(){return this.captureSessionId}adoptCapture(e,t,i){this.startReference=e,this.captureSessionId=t,this.captureSpecType=i}subflowStart(e,t){try{for(let i of this.lowFlushers)try{i()}catch(r){this.tracker.getLogger().error("Failed to flush previous low-event context",r)}this.captureSpecType=e?.explicitSpecType,this.startReference=y(),this.captureSessionId=this.tracker.getSessionId(),this.tracker.trackSubflowStarted(this.operationName,e,this.captureOptions(t),this.startReference),this.captureInputPrefills(!0)}catch(i){this.tracker.getLogger().error("Failed to start low-event capture context",i)}}capturePrefill(){this.captureInputPrefills(!1)}captureInputPrefills(e){for(let t of this.lowPrefillCapturers)try{t(e)}catch(i){this.tracker.getLogger().error("Failed to capture input prefill",i)}}trigger(e,t){this.tracker.trackSubflowTrigger(this.operationName,e,this.captureOptions(t))}customStep(e){return this.defineStep(e)}subflowStepStarted(e,t,i,r){this.captureSpecType=t?.explicitSpecType??this.captureSpecType,this.tracker.trackSubflowStepStarted(this.operationName,e,t,this.captureOptions(i),r)}subflowStepFinished(e,t,i){(!i?.subflowStartEventId||i.subflowStartEventId===this.startReference)&&(this.captureSpecType=t?.explicitSpecType??this.captureSpecType),this.tracker.trackSubflowStepFinished(this.operationName,e,t,this.captureOptions(i))}subflowStepError(e,t,i){let r=t;try{let o=this.tracker.getSdkConfig().rawErrors?i?.rawError:void 0;o!==void 0&&(r={...t,rawError:pt(o,i?.rawErrorLimits)})}catch{}this.tracker.trackSubflowStepError(this.operationName,e,r,this.captureOptions(i))}withWindowLowEvents(e,t){let i,r=s=>{s?.subflowStartEventId&&s.subflowStartEventId!==i||t.scheduleDisarm(ti)},o=e;return{...e,start:(s,a)=>{i=a?.subflowStartEventId??this.startReference;let p=s?.explicitSpecType??this.captureSpecType,d=a?.initiator??rt(this.operationName,p);t.arm(d,p==="passkey-cui"),o.start(s,d?{...a,initiator:d}:a)},finished:(s,a)=>{o.finished(s,a),r(a)},error:(s,a)=>{o.error(s,a),r(a)},errorTyped:(s,a)=>{o.errorTyped?.(s,a),r(a)}}}defineStep(e,t){let i,r,o,s=p=>this.captureOptions(p,i,r,o);return{start:(p,d)=>{i=this.startReference,r=this.captureSessionId,o=d?.initiator,this.subflowStepStarted(e,p,s(d),t)},finished:(p,d)=>{this.subflowStepFinished(e,p,s(d))},error:(p,d)=>{this.subflowStepError(e,{error:D(p)},s(d))},errorTyped:(p,d)=>{this.subflowStepError(e,p,s(d))}}}};function dt(n,e){if(e.explicitSpecType!==void 0)try{n.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var te=class extends m{prepare;sign;constructor(e,t={}){super(e,"key-signing"),this.prepare=this.defineStep("prepare"),this.sign=this.defineStep("sign"),this.subflowStart({actor:"system",explicitSpecType:dt(e,t)})}},ie=class extends m{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:dt(e,t)})}};function ii(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch{return n}}function ri(n,e){let t=n.toLowerCase();return e.some(i=>{let r=i.toLowerCase();return r.endsWith("*")?t.startsWith(r.slice(0,-1)):t===r})}function ut(n,e,t){return e!=="allowlist"||n===""||n==="?"?n:`?${(n.startsWith("?")?n.slice(1):n).split("&").map(o=>{let s=o.indexOf("=");if(s===-1)return o;let a=o.slice(0,s);return o.slice(s+1)===""||ri(ii(a),t)?o:`${a}=*`}).join("&")}`}var Ne=(n,e,t)=>{let i=!1,r,o=null,s=null,a=()=>{s!==null&&(window.clearTimeout(s),s=null);let d=o;i=!1,o=null,d!==null&&n({...r===void 0?{}:{captureSeq:r},lowType:e,ts:d,durationMs:Date.now()-d})};return{extend:()=>{if(!i){let d=t?.();i=!0,o=Date.now(),r=d}s!==null&&window.clearTimeout(s),s=window.setTimeout(a,150)},flush:a}};var ni,ne=()=>ni??=y(),re=class{constructor(e,t,i){this.logger=e;this.enqueue=t;this.flushKeepalive=i;typeof window>"u"||typeof document>"u"||(this.listen(window,"blur",()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)}),this.listen(window,"focus",()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0}),this.listen(document,"visibilitychange",()=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${document.visibilityState==="hidden"?"hidden":"visible"}`,ts:Date.now()})}),this.listen(document,"focusout",r=>{let o=this.findInput(r.target);this.lastBlur=o&&!r.relatedTarget&&Date.now()-this.unrelatedPointerAt>250?{registration:o,ts:Date.now()}:void 0}),this.listen(document,"focusin",()=>{this.lastBlur=void 0}),this.listen(document,"pointerdown",r=>{this.findInput(r.target)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())}),window.visualViewport&&(this.listen(window.visualViewport,"resize",()=>this.extendViewport("resize")),this.listen(window.visualViewport,"scroll",()=>this.extendViewport("scroll"))),this.listen(window,"pagehide",()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()}),this.observeNavigation())}inputs=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=Ne(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",k);scroll=Ne(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",k);registerInputs(e,t,i){if(this.destroyed)return()=>{};let r={fields:e,context:t,flush:i};return this.inputs.add(r),()=>{this.inputs.delete(r),this.lastBlur?.registration===r&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let i=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:r=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(i,r)},destroy:i}}context(){let e=[...this.ceremonies].filter(r=>!r.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=this.findInput(document.activeElement);if(t)return t.context();let i=this.lastBlur;if(i&&Date.now()-i.ts<=250&&(document.activeElement===document.body||!document.activeElement))return i.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(i=>i===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:i,...r}=t??{};this.enqueue({...e,...r,captureSeq:e.captureSeq??k(),sourceKind:"window",captureVersion:1,pageId:ne()},i)}listen(e,t,i){let r=o=>{try{i(o)}catch(s){this.logger.error(`Failed to observe window ${t}`,s)}};e.addEventListener(t,r),this.removers.push(()=>e.removeEventListener(t,r))}extendViewport(e){let t=this.context(),i=this.viewportContext[e];(i?.subflowStartEventId!==t?.subflowStartEventId||i?.fieldRole!==t?.fieldRole||i?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}observeNavigation(){let e=window.navigation;e&&this.listen(e,"currententrychange",t=>{let i=t,r=i.from?.index,o=e.currentEntry?.index;i.navigationType==="traverse"&&typeof r=="number"&&typeof o=="number"&&r>=0&&o>=0&&o<r&&(this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()}))})}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()}}};var ft="cbo_sdk_config",ht="X-Corbado-Observe-Config";var 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}},oi=1800*1e3,S={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:oi,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function P(n,e,t){return Math.min(Math.max(n,e),t)}function R(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function N(n,e){return typeof n=="boolean"?n:e}function ct(n,e){return typeof n=="string"?n:e}function si(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0&&e.length<=b.flushOnFlowTypeFinished.maxNameLength).slice(0,b.flushOnFlowTypeFinished.maxEntries):[]}function ai(n){return typeof n=="string"&&n.trim().toLowerCase()==="all"?"all":"allowlist"}function li(n){return Array.isArray(n)?n.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 Y(n){if(!n||typeof n!="object")return null;let e=n;return typeof e.version!="string"||e.version===""?null:gt(e)}function gt(n){let e=n.retry&&typeof n.retry=="object"?n.retry:{},t=P(R(e.baseDelayMs,S.retry.baseDelayMs),b.retryDelayMs.min,b.retryDelayMs.max);return{version:ct(n.version,""),flushIntervalMs:P(R(n.flushIntervalMs,S.flushIntervalMs),b.flushIntervalMs.min,b.flushIntervalMs.max),durableOutbox:n.durableOutbox===!0,durableLowOutbox:n.durableLowOutbox===!0,beaconKeepalive:n.beaconKeepalive===!0,sessionContinuity:n.sessionContinuity===!0,sessionInactivityMs:P(R(n.sessionInactivityMs,S.sessionInactivityMs),b.sessionInactivityMs.min,b.sessionInactivityMs.max),seqLockTimeoutMs:P(R(n.seqLockTimeoutMs,S.seqLockTimeoutMs),b.seqLockTimeoutMs.min,b.seqLockTimeoutMs.max),tvc:N(n.tvc,S.tvc),tph:N(n.tph,S.tph),td:N(n.td,S.td),tlf:N(n.tlf,S.tlf),telemetry:N(n.telemetry,S.telemetry),flushOnTelemetry:n.flushOnTelemetry===!0,flushOnFlowTypeFinished:si(n.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:P(R(n.deviceInfoCollectorTimeoutMs,S.deviceInfoCollectorTimeoutMs),b.deviceInfoCollectorTimeoutMs.min,b.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:n.deviceInfoTiming===!0,rawErrors:N(n.rawErrors,S.rawErrors),aap:ct(n.aap,""),sourcePathQuery:ai(n.sourcePathQuery),sourcePathQueryAllow:li(n.sourcePathQueryAllow),retry:{maxAttempts:P(R(e.maxAttempts,S.retry.maxAttempts),b.retryMaxAttempts.min,b.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:P(R(e.maxDelayMs,S.retry.maxDelayMs),t,b.retryDelayMs.max)}}}function Be(n,e={}){let t=n??S,i=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),r=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=gt({...t,...i,retry:{...t.retry,...r}});return o.retry={...t.retry,...Object.fromEntries(Object.keys(r).map(s=>[s,o.retry[s]]))},o.retry.maxDelayMs=Math.max(o.retry.baseDelayMs,o.retry.maxDelayMs),o}function mt(n){return Y(n.getItem(ft))}function yt(n,e){n.setItem(ft,e)}var pi=6e4,di=6e4,oe=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let i=JSON.stringify(e),r=typeof AbortController<"u"?new AbortController:void 0,o=r?setTimeout(()=>r.abort(),di):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:i,keepalive:new Blob([i]).size<=pi,...r?{signal:r.signal}:{}},a=await fetch(this.options.url,s),p={statusCode:a.status,headers:{"retry-after":a.headers.get("Retry-After")}};if(a.headers.get("X-Corbado-Observe-Accepted")==="1"&&(p.deliveryAccepted=!0),a.status===200)try{let d=Y(await a.json());d&&(p.config=d)}catch(d){this.options.logger.error("Failed to parse SDK config response",d),this.options.logger.reportTelemetry?.("error","failed to parse SDK config response")}return p}finally{o&&clearTimeout(o)}}catch(i){return this.options.logger.error("Failed to send event",i),{}}}sendBeacon(e){try{if(this.options.logger.debug(`Sending ${e.events.length} events via beacon`),typeof navigator?.sendBeacon!="function")return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let t=new Blob([JSON.stringify(e)],{type:"text/plain"});return navigator.sendBeacon(this.options.url,t)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};function se(n,e,t={}){let i=typeof navigator<"u"?navigator.locks:void 0;if(i?.request){let r=t.timeoutMs,o=r!==void 0&&typeof AbortController<"u"?new AbortController:null;if(r!==void 0&&!o)return Promise.resolve().then(e);try{let s=!1,a,p=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},d=()=>(s=!0,p(),e()),l=o?i.request(n,{signal:o.signal},d):i.request(n,d);return o&&r!==void 0&&!s&&(a=setTimeout(()=>{a=void 0,o.abort();try{t.onTimeout?.()}catch{}},r)),l.catch(u=>{if(s)throw u;return e()}).finally(p)}catch{}}try{return Promise.resolve(e())}catch(r){return Promise.reject(r)}}var ui="cbo_outbox",Ue="cbo_outbox",ci=500,fi=512*1024;function hi(n){if(!n||typeof n!="object")return!1;let e=n;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 B=class{constructor(e,t,i=ci,r=fi,o=Ue,s=ui){this.storage=e;this.logger=t;this.maxEntries=i;this.maxSerializedLength=r;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(hi);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 se(this.lockName,()=>{try{let t=e(this.read());if(t.length>this.maxEntries){let i=t.length-this.maxEntries;t=t.slice(t.length-this.maxEntries),this.logger.error(`EventStore evicted ${i} 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),i=t.reduce((o,s)=>o+s,e.length+1),r=0;for(;i>this.maxSerializedLength&&r<e.length;)i-=t[r]+1,r++;return r===0?e:(this.logger.error(`EventStore evicted ${r} oldest entries (size budget ${this.maxSerializedLength})`),this.logger.reportTelemetry?.("error","event store evicted entries (size budget)"),e.slice(r))}add(e){return this.mutate(t=>t.some(i=>i.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(i=>i.filter(r=>!t.has(r.id)))}update(e){if(e.length===0)return Promise.resolve();let t=new Map(e.map(i=>[i.id,i]));return this.mutate(i=>i.map(r=>t.get(r.id)??r))}size(){return this.all().length}};var ae=class{constructor(e,t,i,r,o={},s){this.logger=e;this.transport=t;this.sessionId=i;this.sdk=r;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.config=o.config??S,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new B(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new B(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(p=>this.validPendingLow(p)),this.lowStore.remove(a.filter(p=>!this.validPendingLow(p)).map(p=>p.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;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 i={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(i),this.store?.add(i),this.scheduleAfterEnqueue(e)}catch(i){this.logger.error("Failed to enqueue event",i)}}enqueueLow(e,t=this.sessionId){try{let i={...e,id:e.id??y()};if(this.config.durableLowOutbox){let r={id:i.id,sessionId:t,event:i,attempts:0,flushAfter:0};this.lowPending.push(r),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(r)}else this.lowsQueue.push({sessionId:t,event:i});this.scheduleAfterEnqueue()}catch(i){this.logger.error("Failed to enqueue low event",i)}}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)}}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){e==="destroy"&&await this.flushingDone;return}this.isFlushing=!0;let t;this.flushingDone=new Promise(i=>{t=i});try{for(this.clearTimer();;){let i=Date.now(),r=this.getDuePending(i),o=this.lowPending.filter(g=>g.flushAfter<=i);if(r.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0)return;let s=r[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??this.sessionId,a=r.filter(g=>g.sessionId===s).slice(0,this.batchSize),p=o.filter(g=>g.sessionId===s).slice(0,100),d=[...p.map(g=>g.event),...this.takeLows(s,100-p.length)],l=s===this.sessionId?this.takeTelemetry():[],u={sessionId:s,events:a.map(g=>g.event),sdk:this.sdk};d.length>0&&(u.lows=d),l.length>0&&(u.telemetry=l),this.attachBatchMeta(u,[...a,...p],e),p.length&&(u.deliveryAck=!0);let c=this.shouldRequestConfig()?{[ht]:this.config.version||"1"}:void 0,f=await this.transport.send(u,c).catch(g=>(this.logger.error("Unexpected error in queue flush",g),{}));if(u.deliveryAck&&f.statusCode&&f.statusCode>=200&&f.statusCode<300&&!f.deliveryAccepted&&(f={...f,statusCode:503}),this.requestConfig&&this.handleConfigResponse(f),this.handleLowSendResult(f,p,i),!this.handleSendResult(f,a,i))return}}catch(i){this.logger.error("Unexpected error in queue flush",i)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,i){e.meta={...e.meta,flushReason:i};let r=this.readDataPolicy();r!==void 0&&(e.meta={...e.meta,dataPolicy:r}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}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 i=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),r=new Set(i);return this.lowsQueue=this.lowsQueue.filter(o=>!r.has(o)),i.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(i=>!t.has(i.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,i){let r=e.statusCode;if(r!==void 0&&r>=200&&r<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,i);return}if(!this.isRetryable(r)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,i,this.parseRetryAfter(e))}deferLowEntries(e,t,i=null){let r=[];for(let o of e){if(!this.validPendingLow(o)){r.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,i))}this.removeLowEntries(r),this.lowStore?.update(e.filter(o=>!r.includes(o.id)))}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 r=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of r)this.enqueueLow(o,s)}let i=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new B(this.storage,this.logger,void 0,void 0,this.outboxLockName);let r=new Set(this.pending.map(s=>s.id)),o=this.store.all().filter(s=>!r.has(s.id));for(let s of this.pending)this.store.add(s);this.pending=[...o,...this.pending],i=o.length>0}i?(this.dirtySinceSyncFlush=!0,this.clearTimer(),this.scheduleFlush(0,"recovery")):t&&(this.clearTimer(),this.rescheduleIfPending())}handleSendResult(e,t,i){let r=e.statusCode,o=typeof r=="number"&&r>=200&&r<300;if(t.length===0)return o;if(o)return this.removeEntries(t.map(l=>l.id)),!0;if(!this.isRetryable(r))return this.removeEntries(t.map(l=>l.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),a=this.parseRetryAfter(e),p=[],d=[];for(let l of t)l.attempts+=1,l.attempts>=s?p.push(l.id):(l.flushAfter=i+this.backoffForAttempt(l.attempts,a),d.push(l));return this.removeEntries(p),this.store?.update(d),!1}isRetryable(e){return e===void 0||e===408||e===429?!0:e>=500}backoffForAttempt(e,t){let i=this.config.retry,r=i.baseDelayMs*Math.pow(2,Math.max(0,e-1));i.maxDelayMs>0&&(r=Math.min(r,i.maxDelayMs));let o=Math.round(r/2+Math.random()*(r/2));return t!==null&&(o=Math.max(o,t)),o}parseRetryAfter(e){let t=e.headers?.["retry-after"];if(!t)return null;let i=Number(t);if(!Number.isNaN(i))return i*1e3;let r=Date.parse(t);return Number.isNaN(r)?null:Math.max(0,r-Date.now())}removeEntries(e){if(e.length===0)return;let t=new Set(e);this.pending=this.pending.filter(i=>!t.has(i.id)),this.store?.remove(e)}rescheduleIfPending(){try{if(this.destroyed||this.timer||this.pending.length===0&&this.lowPending.length===0&&this.lowsQueue.length===0)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(i=>i.flushAfter<=e)||this.lowsQueue.length>0){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending].map(i=>i.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"),document.visibilityState==="hidden"&&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)}},window.addEventListener("visibilitychange",this.onVisibilityChange),window.addEventListener("pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:window.location.href};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){if(!this.dirtySinceSyncFlush)return;let t=this.sessionId,i=this.pending.filter(d=>d.sessionId===t),r=i.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)],a=this.takeTelemetry();if(r.length===0&&s.length===0&&a.length===0){this.dirtySinceSyncFlush=!1;return}let p={sessionId:t,events:r.map(d=>d.event),sdk:this.sdk};s.length>0&&(p.lows=s),a.length>0&&(p.telemetry=a),this.attachBatchMeta(p,[...r,...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(r.map(d=>d.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&i.length>r.length}destroy(){try{this.destroyed=!0,this.clearTimer(),typeof window<"u"&&(this.onVisibilityChange&&window.removeEventListener("visibilitychange",this.onVisibilityChange),this.onPageHide&&window.removeEventListener("pagehide",this.onPageHide))}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var qe={d:(n,e)=>{for(var t in e)qe.o(e,t)&&!qe.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o:(n,e)=>Object.prototype.hasOwnProperty.call(n,e)},Ke={};qe.d(Ke,{A:()=>mi,k:()=>Ve});var U=function(n,e,t,i){return new(t||(t=Promise))(function(r,o){function s(d){try{p(i.next(d))}catch(l){o(l)}}function a(d){try{p(i.throw(d))}catch(l){o(l)}}function p(d){var l;d.done?r(d.value):(l=d.value,l instanceof t?l:new t(function(u){u(l)})).then(s,a)}p((i=i.apply(n,e||[])).next())})},q=function(n,e){var t,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(p){return function(d){return(function(l){if(t)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(s=0)),s;)try{if(t=1,i&&(r=2&l[0]?i.return:l[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,l[1])).done)return r;switch(i=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return s.label++,{value:l[1],done:!1};case 5:s.label++,i=l[1],l=[0];continue;case 7:l=s.ops.pop(),s.trys.pop();continue;default:if(r=s.trys,!((r=r.length>0&&r[r.length-1])||l[0]!==6&&l[0]!==2)){s=0;continue}if(l[0]===3&&(!r||l[1]>r[0]&&l[1]<r[3])){s.label=l[1];break}if(l[0]===6&&s.label<r[1]){s.label=r[1],r=l;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(l);break}r[2]&&s.ops.pop(),s.trys.pop();continue}l=e.call(n,s)}catch(u){l=[6,u],i=0}finally{t=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}})([p,d])}}};function Ve(){return U(this,void 0,Promise,function(){return q(this,function(n){switch(n.label){case 0:return[4,new Promise(function(e,t){var i="Unknown",r=!1;function o(l){r||(r=!0,e({isPrivate:l,browserName:i}))}function s(){var l=0,u=parseInt("-1");try{u.toFixed(u)}catch(c){l=c.message.length}return l}function a(){return U(this,void 0,void 0,function(){var l,u;return q(this,function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,navigator.storage.getDirectory()];case 1:return c.sent(),o(!1),[3,3];case 2:return l=c.sent(),u=l instanceof Error&&typeof l.message=="string"?l.message:String(l),o(u.includes("unknown transient reason")),[3,3];case 3:return[2]}})})}function p(){var l;return U(this,void 0,Promise,function(){return q(this,function(u){switch(u.label){case 0:return typeof((l=navigator.storage)===null||l===void 0?void 0:l.getDirectory)!="function"?[3,2]:[4,a()];case 1:return u.sent(),[3,3];case 2:navigator.maxTouchPoints!==void 0?(function(){var c=String(Math.random());try{var f=indexedDB.open(c,1);f.onupgradeneeded=function(g){var h=g.target.result,v=function(I){o(I)};try{h.createObjectStore("t",{autoIncrement:!0}).put(new Blob),v(!1)}catch(I){(I instanceof Error&&typeof I.message=="string"?I.message:String(I)).includes("are not yet supported")?v(!0):v(!1)}finally{h.close(),indexedDB.deleteDatabase(c)}},f.onerror=function(){return o(!1)}}catch{o(!1)}})():(function(){var c=window.openDatabase,f=window.localStorage;try{c(null,null,null,null)}catch{return void o(!0)}try{f.setItem("test","1"),f.removeItem("test")}catch{return void o(!0)}o(!1)})(),u.label=3;case 3:return[2]}})})}function d(){var l;return U(this,void 0,Promise,function(){var u,c,f;return q(this,function(g){switch(g.label){case 0:if(typeof((l=navigator.storage)===null||l===void 0?void 0:l.getDirectory)!="function")return[3,5];g.label=1;case 1:return g.trys.push([1,3,,4]),[4,navigator.storage.getDirectory()];case 2:return g.sent(),o(!1),[3,4];case 3:return u=g.sent(),c=u instanceof Error&&typeof u.message=="string"?u.message:String(u),o(c.includes("Security error")),[2];case 4:return[3,6];case 5:(f=indexedDB.open("inPrivate")).onerror=function(h){f.error&&f.error.name==="InvalidStateError"&&h.preventDefault(),o(!0)},f.onsuccess=function(){indexedDB.deleteDatabase("inPrivate"),o(!1)},g.label=6;case 6:return[2]}})})}(function(){return U(this,void 0,Promise,function(){return q(this,function(l){switch(l.label){case 0:return s()!==44&&s()!==43?[3,2]:(i="Safari",[4,p()]);case 1:return l.sent(),[3,6];case 2:return s()!==51?[3,3]:(u=navigator.userAgent,i=u.match(/Chrome/)?navigator.brave!==void 0?"Brave":u.match(/Edg/)?"Edge":u.match(/OPR/)?"Opera":"Chrome":"Chromium",(function(){var c=this,f="__di_"+Math.random().toString(36).slice(2),g=new Uint8Array(16384),h=indexedDB.open(f,1);h.onupgradeneeded=function(){h.result.createObjectStore("s")},h.onerror=function(){indexedDB.deleteDatabase(f),o(!1)},h.onsuccess=function(){var v=h.result,I=!1;try{var tt=v.transaction("s","readwrite",{durability:"strict"});I=tt.durability==="strict",tt.abort()}catch{}if(!I)return v.close(),indexedDB.deleteDatabase(f),void o(!1);var J=function(G){return new Promise(function(C,W){var z=performance.now(),A=0,E=function(){if(A!==15){var O=v.transaction("s","readwrite",{durability:G});O.objectStore("s").put(g,A),A++,O.oncomplete=E,O.onerror=O.onabort=function(){return W(O.error)}}else C(performance.now()-z)};E()})};U(c,void 0,void 0,function(){var G,C,W,z,A;return q(this,function(E){switch(E.label){case 0:return G=performance.now(),[4,J("relaxed")];case 1:return E.sent(),[4,J("strict")];case 2:E.sent(),C=[],W=0,E.label=3;case 3:return W<15?[4,J("relaxed")]:[3,7];case 4:return z=E.sent(),[4,J("strict")];case 5:if(A=E.sent(),C.push(z>0?A/z:1/0),C.length>=7&&performance.now()-G>=1e3)return[3,7];E.label=6;case 6:return W++,[3,3];case 7:return C.sort(function(O,Kt){return O-Kt}),v.close(),indexedDB.deleteDatabase(f),o(C[C.length>>1]<1.3),[2]}})}).catch(function(){v.close(),indexedDB.deleteDatabase(f),o(!1)})}})(),[3,6]);case 3:return s()!==25?[3,5]:(i="Firefox",[4,d()]);case 4:return l.sent(),[3,6];case 5:navigator.msSaveBlob!==void 0?(i="Internet Explorer",o(window.indexedDB===void 0)):t(new Error("detectIncognito cannot determine the browser")),l.label=6;case 6:return[2]}var u})})})().catch(t)})];case 1:return[2,n.sent()]}})})}typeof window<"u"&&(window.detectIncognito=Ve);var mi=Ve,vt=Ke.A,Or=Ke.k;var $e={collectorTimeoutMs:1e3,timing:!1},Qe="cbo_tab_id",vi={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function X(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var le=class{constructor(e,t,i="localstorage",r,o=()=>$e,s){this.logger=e;this.storage=t;this.storageSource=i;this.sessionStorage=r;this.settings=o;this.emitTelemetry=s}async getInfo(){try{let e=this.resolveSettings(),t=X(),i=this.getClientEnvHandle(),r=await Promise.all([this.collectField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>this.isBluetoothAvailable(),e.collectorTimeoutMs),this.collectField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>this.getClientCapabilities(),e.collectorTimeoutMs),this.collectField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>this.getUserVerifyingPlatformAuthenticatorAvailable(),e.collectorTimeoutMs),this.collectField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>this.isConditionalMediationAvailable(),e.collectorTimeoutMs),this.collectField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>this.getJavaScriptHighEntropy(),e.collectorTimeoutMs),this.collectField("privateMode","detectIncognito",()=>this.isPrivateMode(),e.collectorTimeoutMs),this.collectField("webdriver","navigator.webdriver",()=>this.getWebdriver(),e.collectorTimeoutMs),this.collectField("maxTouchPoints","navigator.maxTouchPoints",()=>this.getMaxTouchPoints(),e.collectorTimeoutMs)]),o=X()-t;e.timing&&this.reportTiming(o,r);let[s,a,p,d,l,u,c,f]=r,g=r.flatMap(v=>v.error?[v.error]:[]),h={type:"web",clientEnvHandle:i.value,clientEnvHandleMeta:{timestamp:i.timestamp,source:i.source},tabId:this.getTabId(),data:{bluetoothAvailable:s.value,javaScriptHighEntropy:l.value,privateMode:u.value,webdriver:c.value,conditionalMediationAvailable:d.value,userVerifyingPlatformAuthenticatorAvailable:p.value,clientCapabilities:a.value,maxTouchPoints:f.value}};return g.length>0&&(h.collectionErrors=g),h}catch(e){return this.logger.error("Failed to collect device info",e),{}}}async collectField(e,t,i,r){let o,s=X();try{let a=await Promise.race([Promise.resolve().then(i),new Promise((p,d)=>{o=setTimeout(()=>{let l=new Error(`Device info collection timed out after ${r}ms`);l.name="TimeoutError",d(l)},r)})]);return{field:e,value:a,durationMs:X()-s}}catch(a){return this.logger.error(`Failed to collect device info field "${e}"`,a),{field:e,durationMs:X()-s,error:{field:e,source:t,error:D(a)??{message:"Unknown error"}}}}finally{o&&clearTimeout(o)}}resolveSettings(){try{let e=this.settings(),t=e?.collectorTimeoutMs;return{collectorTimeoutMs:typeof t=="number"&&Number.isFinite(t)&&t>0?t:$e.collectorTimeoutMs,timing:e?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),$e}}reportTiming(e,t){if(this.emitTelemetry)try{let i=t.map(r=>`${vi[r.field]??r.field}=${Math.round(r.durationMs)}`).join(",");this.emitTelemetry("info",`device info collected in ${Math.round(e)}ms (${i})`)}catch(i){this.logger.error("Failed to report device info timing",i)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return typeof navigator>"u"?"":navigator.userAgent??""}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"}async isBluetoothAvailable(){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async getUserVerifyingPlatformAuthenticatorAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async isConditionalMediationAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async getClientCapabilities(){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i.toString()]))}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=y(),i={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",i),i}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(Qe);if(e)return e;let t=y();if(this.sessionStorage.setItem(Qe,t),this.sessionStorage.getItem(Qe)===t)return t}async getJavaScriptHighEntropy(){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,i=e.mobile,r=e.platformVersion,o=e.model||void 0;if(!(!t||i===void 0||!r))return{platform:t,mobile:i,platformVersion:r,model:o}}async isPrivateMode(){return(await vt()).isPrivate}getWebdriver(){if(!(typeof navigator>"u"))return navigator.webdriver}getMaxTouchPoints(){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}};var pe=class{constructor(e,t,i,r){this.logger=e;this.source=t;this.refreshInterval=i;this.attachInterval=r}snapshot;refreshedAt=0;lastAttachedAt=null;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot&&!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}refresh(){return this.refreshPromise?this.refreshPromise:(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.refreshPromise=Promise.resolve().then(()=>this.source.getInfo()).then(e=>{this.snapshot=e,this.refreshedAt=Date.now()}).catch(e=>this.logger.error("Failed to refresh device info",e)).finally(()=>{this.refreshPromise=void 0,this.destroyed||(this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval))}),this.refreshPromise)}};function x(n,e){return`${n}_${e}`}var de=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(x(e,this.namespace))}setItem(e,t){this.engine.setItem(x(e,this.namespace),t)}removeItem(e){this.engine.removeItem(x(e,this.namespace))}},ue=class{constructor(e){this.logger=e}getItem(e){try{if(typeof localStorage>"u")return null;let t=localStorage.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;localStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;localStorage.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}getItem(e){try{if(typeof document>"u")return null;let t=e+"=",i=document.cookie.split(";");for(let r=0;r<i.length;r++){let o=i[r].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 i=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(i+=`; domain=${this.domain}`),document.cookie=i}catch(i){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,i),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}`),document.cookie=t}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},fe=class{constructor(e){this.logger=e}getItem(e){try{if(typeof sessionStorage>"u")return null;let t=sessionStorage.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;sessionStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;sessionStorage.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var he=1,ge="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"],wi=["cbo_session_id","cbo_tab_id"],bi=["cbo_client_env_handle"];function me(n,e,t){return n.setItem(e,t),JSON.stringify(n.getItem(e))===JSON.stringify(t)}function Ge(n,e,t){let i=n.getItem(ge);if(i!==null){if(i.version!==he||i.projectId!==e)return!1;if(i.complete===!0)return!0;if(i.complete!==!1)return!1}else{if(t.some(r=>n.getItem(x(r,e))!==null))return me(n,ge,{version:he,projectId:e,complete:!0});if(!me(n,ge,{version:he,projectId:e,complete:!1}))return!1}for(let r of t){let o=x(r,e);if(n.getItem(o)!==null)continue;let s=n.getItem(r);if(s!==null&&!me(n,o,s))return!1}return me(n,ge,{version:he,projectId:e,complete:!0})}function St(n,e,t,i,r){try{if(!Ge(e,n,Si))return;Ge(t,n,wi),i&&Ge(i,n,bi)}catch(o){r.error("Failed to migrate legacy Observe storage",o)}}var Ti=10*1e3,Ei=600*1e3,Ii=[1e3,3e3],ye=class{constructor(e,t,i){this.url=e;this.storage=t;this.logger=i;this.initialConfig=mt(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()},Ei)),this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),Ti):void 0;let i=!0;try{let r=await fetch(this.url,{method:"GET",cache:"no-store",...t?{signal:t.signal}:{}});if(!r.ok)throw i=(r.status===408||r.status===429||r.status>=500)&&!r.headers.has("Retry-After"),new Error(`SDK config request failed (${r.status})`);let o=await r.json();i=!1;let s=Y(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;yt(this.storage,s),this.onConfig?.(s)}catch(r){if(!this.stopped){this.logger.error("Failed to fetch SDK config",r);let o=Ii[e];(i&&!(r 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}};var K=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(i){this.logger.error("Failed to register ceremony low-event context",i)}}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 m{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new K(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 V=class{constructor(e,t,i,r){this.previousLength=e;this.pushLow=t;this.logger=i;this.reserveCaptureSeq=r}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,i){let r=this.inputBatch;if(!r){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:i};return}r.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,i=-1/0;for(let r=1;r<e.length;r++){let o=e[r].ts-e[r-1].ts;if(o>80)return!1;o<t&&(t=o),o>i&&(i=o)}return i-t<=25}record(e,t=Date.now(),i=!1,r=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({...r===void 0?{}:{captureSeq:r},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(i){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},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,r);return}let p=this.autofillTimestamps;if(p.length===0&&(this.ringEffect=this.currentEffect),p.push({ts:t,captureSeq:r}),p.length>5){let u=p.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let d=p[0],l=p[p.length-1];p.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:d.ts,captureSeq:d.captureSeq,lastTimestamp:l.ts,effect:this.ringEffect}}};var $=class{constructor(e,t,i,r){this.inputs=e;this.logger=t;this.changed=i;this.reserveCaptureSeq=r;for(let o of e)o.addEventListener("paste",this.onPaste,!0),o.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,i=this.captureSeq;this.clear();try{let r=0,o=!1;this.inputs.forEach((s,a)=>{let p=e[a],d=s.value;if(p===d)return;o=!0;let l=0;for(;l<p.length&&l<d.length&&p[l]===d[l];)l++;let u=0;for(;u<p.length-l&&u<d.length-l&&p[p.length-u-1]===d[d.length-u-1];)u++;r+=d.length-l-u}),o&&this.changed(t,r,i)}catch(r){this.logger.error("Failed to finish paste observation",r)}}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 ki=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],xi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",wt="pa-4",Ci='[popover="manual"]',Oi=400,Li=20,We="pa-5",ze="pa-6",je=(n,e)=>{try{return Array.from(n.querySelectorAll(e))}catch{return[]}},bt=n=>{if(n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(e.length<Oi||!/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)<Li)},Pi=n=>{if(bt(n)||n.getAttribute("popover")!=="manual")return!1;let e=n.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))},Ri=n=>{n(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&n(t)}},Tt=()=>{let n=new Set;return typeof document>"u"||Ri(e=>{for(let t of ki)n.has(t.eventType)||je(e,t.query).length>0&&n.add(t.eventType);if(!n.has(wt)&&je(e,xi).length>0&&n.add(wt),!n.has(We)||!n.has(ze))for(let t of je(e,Ci)){if(!n.has(We)&&bt(t)){n.add(We);continue}!n.has(ze)&&Pi(t)&&n.add(ze)}}),n};var Fi=500,Ai=250,T=class{constructor(e,t,i){this.logger=e;this.inputField=t;this.sink=i;this.changes=new V(t.value.length,this.pushLow,e,i.reserveCaptureSeq),this.pasteObserver=new $([t],e,(r,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=t.value.length,this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:t.value.length===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.boundHandlers={focus:this.wrapHandler("focus",()=>this.handleFocus()),blur:this.wrapHandler("blur",()=>this.handleBlur()),pointerdown:this.wrapHandler("pointerdown",()=>this.enqueueNonInputEvent("pointerdown")),pointerup:this.wrapHandler("pointerup",()=>this.enqueueNonInputEvent("pointerup")),click:this.wrapHandler("click",()=>this.enqueueNonInputEvent("click")),input:r=>{try{this.handleInput(r)}catch(o){this.logger.error("Failed to observe input",o)}},keyup:this.wrapKeyboardHandler("keyup",r=>this.handleKeyUp(r)),pageHide:this.wrapHandler("pagehide",()=>this.flushForTeardown())},this.unregisterInputs=i.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;boundHandlers;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;e.addEventListener("focus",this.boundHandlers.focus),e.addEventListener("blur",this.boundHandlers.blur),e.addEventListener("pointerdown",this.boundHandlers.pointerdown),e.addEventListener("pointerup",this.boundHandlers.pointerup),e.addEventListener("click",this.boundHandlers.click),e.addEventListener("input",this.boundHandlers.input),e.addEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.addEventListener("pagehide",this.boundHandlers.pageHide),typeof document<"u"&&document.activeElement===e&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),Fi))}detach(){let e=this.inputField;e.removeEventListener("focus",this.boundHandlers.focus),e.removeEventListener("blur",this.boundHandlers.blur),e.removeEventListener("pointerdown",this.boundHandlers.pointerdown),e.removeEventListener("pointerup",this.boundHandlers.pointerup),e.removeEventListener("click",this.boundHandlers.click),e.removeEventListener("input",this.boundHandlers.input),e.removeEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.removeEventListener("pagehide",this.boundHandlers.pageHide)}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{let e=Tt(),t=Date.now();for(let i of e)this.emittedSignals.has(i)||(this.emittedSignals.add(i),this.pushLow({lowType:i,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(),Ai))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.inputField.value.length,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){this.pasteObserver.handlesInput(e)||this.changes.record(this.inputField.value.length,Date.now(),e.isComposing||e.inputType==="insertCompositionText")}handleKeyUp(e){e.key==="Escape"&&this.enqueueNonInputEvent("keyup-escape")}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(i){this.logger.error(`Failed to handle low event "${e}"`,i)}}}wrapKeyboardHandler(e,t){return i=>{try{t(i)}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var Se=class{constructor(e,t,i){this.logger=e;this.sink=i;this.inputs=[...new Set(t)],this.changes=new V(this.length(),r=>i.enqueueLowEvent(r),e,i.reserveCaptureSeq),this.paste=new $(this.inputs,e,(r,o,s)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=this.length(),i.enqueueLowEvent({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:this.length()===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();for(let r of this.inputs){this.listen(r,"input",o=>{this.paste.handlesInput(o)||(this.composing||=o.isComposing||o.inputType==="insertCompositionText",this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=i.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))}),this.listen(r,"focus",o=>{this.contains(o.relatedTarget)||this.emit("focus")}),this.listen(r,"blur",o=>{this.contains(o.relatedTarget)||(this.flushPending(),this.emit("blur"))});for(let o of["click","pointerdown","pointerup"])this.listen(r,o,()=>this.emit(o));this.listen(r,"keyup",o=>{o.key==="Escape"&&this.emit("keyup-escape")})}typeof window<"u"&&this.listen(window,"pagehide",()=>{this.flushPending(),i.flushKeepalive()}),typeof document<"u"&&this.contains(document.activeElement)&&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 this.inputs.reduce((e,t)=>e+t.value.length,0)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}listen(e,t,i){let r=o=>this.safe(()=>i(o));e.addEventListener(t,r),this.listeners.push(()=>e.removeEventListener(t,r))}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 Q=class{constructor(e,t,i){this.logger=e;this.inputSink=t;this.groupSink=i}collector;fields=[];grouped=!1;destroyed=!1;prefillClaimed=!1;setFields(e,t=!0){try{if(this.destroyed)return;let i=[...new Set(e)];if(t===this.grouped&&i.length===this.fields.length&&i.every((s,a)=>s===this.fields[a])||(this.collector?.destroy(),this.collector=void 0,this.fields=[],this.grouped=t,i.length===0))return;let r=t?this.groupSink:this.inputSink,o={...r,enqueueLowEvent:s=>this.enqueue(r,s)};this.collector=t?new Se(this.logger,i,o):new T(this.logger,i[0],o),this.fields=i}catch(i){this.logger.error("Failed to bind OTP inputs",i)}}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 m{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 Q(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 be=class extends m{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 Q(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 Di=["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 Et(n){if(!n)return!1;let e=n.toLowerCase();return Di.some(t=>e.includes(t))}var It="@corbado/observe",kt="1.1.2";var Ye="cbo_email_link_starts";function Xe(n,e){let t=n.getItem(Ye);return Array.isArray(t)?t.filter(i=>!!i&&typeof i=="object"&&typeof i.transactionId=="string"&&typeof i.anchor=="string"&&typeof i.sessionId=="string"&&typeof i.startedAt=="number"&&e-i.startedAt<864e5):[]}function xt(n,e){if(n)try{let t=Xe(n,e.startedAt).filter(i=>i.transactionId!==e.transactionId);t.push(e),n.setItem(Ye,t.slice(-10))}catch{}}function Ct(n,e,t=Date.now()){if(n)try{let i=Xe(n,t);if(e.transactionId)return i.find(o=>o.transactionId===e.transactionId);let r=i.filter(o=>!o.continued&&(!e.specType||!o.specType||o.specType===e.specType));return r[r.length-1]}catch{return}}function Ot(n,e){if(n)try{let t=Xe(n,Date.now()).map(i=>i.transactionId===e?{...i,continued:!0}:i);n.setItem(Ye,t)}catch{}}var Te=class extends m{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||y(),this.subflowStart({explicitSpecType:t.explicitSpecType},{userReference:{crossEnvironmentTransactionIDStart:this.transactionId}});let i=this.captureReference,r=this.captureSession;i&&r&&xt(e.getPersistentStorage(),{transactionId:this.transactionId,anchor:i,sessionId:r,specType:t.explicitSpecType,startedAt:Date.now()})}},Ee=class extends m{postResponse;resend;mode;continuationTracker;specType;createdAt=Date.now();transaction;started=!1;deferred=[];onPageHide=()=>this.flush();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 i=e.getPersistentStorage(),r=Ct(i,{transactionId:t.transactionId,specType:t.explicitSpecType});if(r&&r.sessionId===e.getSessionId()){this.mode="attached",this.transaction=t.transactionId??r.transactionId,this.adoptCapture(r.anchor,r.sessionId,r.specType??t.explicitSpecType),this.started=!0;return}this.mode="detached",this.transaction?this.startDetached(this.createdAt):typeof window<"u"&&window.addEventListener("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 i of t)i.run(i.at);try{this.continuationTracker.flushKeepalive()}catch{}}removePageHideListener(){typeof window<"u"&&window.removeEventListener("pagehide",this.onPageHide)}deferrable(e,t=!1){let i=(r,o)=>{if(this.started){r(o?.explicitTimestamp??Date.now());return}this.deferred.push({at:o?.explicitTimestamp??Date.now(),run:r})};return{start:(r,o)=>i(s=>e.start(r,{...o,explicitTimestamp:s}),o),finished:(r,o)=>{i(s=>e.finished(r,{...o,explicitTimestamp:s}),o),t&&this.transaction&&Ot(this.continuationTracker.getPersistentStorage(),this.transaction)},error:(r,o)=>i(s=>e.error(r,{...o,explicitTimestamp:s}),o)}}};var Ie=class extends m{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new K(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 Lt(n){let e=n.debug,t,i=(r,o)=>`[Corbado Observe SDK ${r}] ${o}`;return{reportTelemetry(r,o){if(t)try{t(r,o)}catch{}},setTelemetrySink(r){t=r},debug(r,...o){e&&console.log(i("DEBUG",r),...o)},info(r,...o){e&&console.log(i("INFO",r),...o)},warn(r,...o){e&&console.warn(i("WARN",r),...o)},error(r,...o){e&&console.error(i("ERROR",r),...o)},critical(r,...o){console.error(i("CRITICAL",r),...o)}}}var ke=class extends m{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 T(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new T(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 xe=class extends m{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 T(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Ce=class extends m{lowEventTracker;cui;provideIdentifier;constructor(e,t){super(e,"provide-identifier"),this.cui={trigger:(i,r)=>{this.trigger(i,r)},getOptions:this.defineStep("cui-get-options",!0),ceremony:this.defineStep("cui-ceremony"),postResponse:this.defineStep("cui-post-response")},this.provideIdentifier={trigger:(i,r)=>{this.trigger(i,r)},clientValidation:this.defineStep("pi-client-validation"),postResponse:this.defineStep("pi-post-response")},this.subflowStart({explicitSpecType:t?.explicitSpecType}),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new T(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var Oe=class extends m{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})}};var Le=class extends m{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 Pe=class extends m{ceremony;postResponse;constructor(e,t={}){super(e,"captcha"),this.ceremony=this.defineStep("ceremony"),this.postResponse=this.defineStep("post-response"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Je(n,e,t){if(n===null||typeof n!="object")return n;try{let i={...n};i.purpose===void 0&&e.purpose!==void 0&&(i.purpose=e.purpose),i.storage===void 0&&e.storage!==void 0&&(i.storage=e.storage),i.trustName===void 0&&e.trustName!==void 0&&(i.trustName=e.trustName);for(let[r,o]of[["bindingReference",255],["trustName",128]])if(typeof i[r]=="string"&&[...i[r]].length>o){delete i[r];try{t.getLogger().debug(`Trusted device: omitted ${r} exceeding ${o} characters`)}catch{}}return i}catch{return n}}function Re(n,e,t){return{...n,start:(i,r)=>n.start(Je(i,e,t),r),finished:(i,r)=>n.finished(Je(i,e,t),r)}}var Fe=class extends m{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=Pt(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=this.checkStep("get-options",i,e),this.ceremony=this.checkStep("ceremony",i,e),this.postResponse=this.checkStep("post-response",i,e),this.subflowStart({explicitSpecType:t.explicitSpecType,actor:"system",ignoreAsInteraction:!0})}checkStep(e,t,i){let r=this.defineStep(e,!0);return{...Re(r,t,i),errorTyped:(o,s)=>{r.errorTyped(Je({code:o?.code,error:D(o?.error)},t,i),s)}}}},Ae=class extends m{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=Pt(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Re(this.defineStep("get-options"),i,e),this.ceremony=Re(this.defineStep("ceremony"),i,e),this.postResponse=Re(this.defineStep("post-response"),i,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function Pt(n,e){let t={...n},i=r=>{try{e.getLogger().warn(`Trusted device: missing or unsupported ${r}; omitted from telemetry`)}catch{}};return t.purpose!=="additional-verification"&&t.purpose!=="mfa-exemption"&&(delete t.purpose,i("purpose")),["cookie","indexeddb","localstore","sessionstore"].includes(t.storage)||(delete t.storage,i("storage")),t}var De=class extends m{clientValidation;postResponse;lowEventTracker;constructor(e,t={}){super(e,"provide-data"),this.clientValidation=this.defineStep("client-validation"),this.postResponse=this.defineStep("post-response");let{inputHtmlField:i,...r}=t;this.subflowStart(r),i&&(this.lowEventTracker=this.createLowCollector(()=>new T(e.getLogger(),i,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var _i={name:It,version:kt},Rt="cbo_session_id",Ze="cbo_session",F="cbo_seq",Ft="cbo_experiments",At="cbo_data_policy",Mi=255,Hi=/^[A-Za-z0-9_-]+$/,Ni=128,Bi=256,Dt=1e3,Ui=50,qi="cbo_seq",_t=1e3,Mt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,_e=class n{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??Lt({debug:this.options.debug});let t=new ue(this.logger),i=new fe(this.logger),r=e.storage==="cookie",o=r?new ce(this.logger,e.cookieDomain):void 0;St(e.projectId,t,i,o,this.logger);let s=e.projectId,a=h=>new de(h,s);this.seqLockName=x(qi,s),this.sessionStorage=a(i),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]}};let p=Object.keys(S).every(h=>this.configOverrides[h]!==void 0)&&Object.keys(S.retry).every(h=>this.configOverrides.retry?.[h]!==void 0);p||(this.configManager=new ye(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let d=this.configManager?.initialConfig;this.config=Be(d,this.configOverrides),!p&&!d&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!p&&!d&&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 l=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${l}`);let u=new oe({logger:this.logger,url:l});this.sessionId=this.resolveSessionId(),this.queue=new ae(this.logger,u,this.sessionId,_i,{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:x(Ue,s),getDataPolicy:()=>this.dataPolicy},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((h,v)=>this.reportTelemetry(h,v));try{this.getWindowObserver()}catch(h){this.logger.error("Failed to attach page low-event observer",h)}let c=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let h of c)this.telemetry(h.level,h.message);let f=new le(this.logger,this.storage,r?"cookie":"localstorage",this.sessionStorage,()=>({collectorTimeoutMs:this.config.deviceInfoCollectorTimeoutMs,timing:this.config.deviceInfoTiming}),(h,v)=>this.telemetry(h,v));this.deviceCollector=f;let g=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new pe(this.logger,f,Math.max(1,g),g),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(h=>this.handleConfig(h))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];windowObserver;getWindowObserver(){return this.windowObserver??=new re(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=Be(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[i,r]of Object.entries(e)){if(!n.isValidExperimentKey(i)||!n.isValidExperimentVariant(r)){this.logger.debug(`Ignoring invalid experiment assignment "${String(i)}"`);continue}this.experiments[i]!==r&&(this.experiments[i]=r,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(!n.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<=Mi}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(At);return n.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(At,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<=Ni&&Hi.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=Bi}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(Ft);if(!e||typeof e!="object")return{};let t={};for(let[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return t}catch(e){return this.logger.debug("Failed to load persisted experiments",e),{}}}persistExperiments(){try{this.persistentStorage.setItem(Ft,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[i,r]of Object.entries(e))n.isValidExperimentKey(i)&&n.isValidExperimentVariant(r)&&(t[i]=r);return Object.keys(t).length>0?t:void 0}isTrackingBlocked(){return typeof navigator>"u"?!1:Et(navigator.userAgent)}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 i=y();return this.persistPerTabSession(i,e),this.seq=0,this.logger.debug("Created session id",i),i}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(Ze);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(F)??0,t.id;if(!t?.id){let r=this.readPerTabSession();if(r&&e-r.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(r.id,e),this.persistentStorage.setItem(F,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",r.id),r.id}let i=y();return this.persistContinuitySession(i,e),this.persistentStorage.setItem(F,0),this.seq=0,this.logger.debug("Created continuity session id",i),i}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(Ze,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(Rt);if(e){if(typeof e=="string")return Mt.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return Mt.test(e.id)?e:void 0}}persistPerTabSession(e,t){this.lastActivityWriteAt=t;let i=this.configOverrides.sessionInactivityMs!==void 0||this.config.version?this.config.sessionInactivityMs:this.readPerTabSession()?.inactivityMs;this.sessionStorage.setItem(Rt,{id:e,lastActiveAt:t,...i===void 0?{}:{inactivityMs:i}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let i=Date.now();return this.sessionId&&i-this.lastActivityWriteAt>=_t&&this.persistPerTabSession(this.sessionId,i),this.seq++}let e=()=>{let i=Date.now(),r=this.persistentStorage.getItem(Ze),o=!1;if(!r?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,i);else if(r?.id)i-this.lastActivityWriteAt>=_t&&this.persistContinuitySession(r.id,i),r.id!==this.sessionId&&(this.sessionId=r.id,this.queue.setSessionId(r.id),o=!0);else{let p=y();this.persistContinuitySession(p,i),this.persistentStorage.setItem(F,0),this.sessionId=p,this.queue.setSessionId(p),this.seq=0,o=!0}let s=this.persistentStorage.getItem(F);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(F,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||typeof navigator>"u"||!navigator.locks?.request?e():se(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;let e=ut(window.location.search,this.config.sourcePathQuery,this.config.sourcePathQueryAllow);return`${window.location.pathname}${e}`}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,i,r){let o={subflowType:e,...t};this.track("subflow_started",o,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{id:r,subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowTrigger(e,t,i){let r={subflowType:e,...t};this.track("subflow_trigger",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowStepStarted(e,t,i,r,o){let s={subflowType:e,stepName:t,stepData:i,ignoreAsInteraction:o};this.track("subflow_step_started",s,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepFinished(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_finished",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepError(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_error",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowError(e,t,i){let r={subflowType:e,stepData:t};this.track("subflow_error",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}async track(e,t,i,r,o,s,a,p){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 d=s??Date.now(),l=p?.id??y(),u=p?.sessionId??this.sessionId,c=this.nextSeq(),f=typeof c=="number"?c:await c,g=this.resolveTrackingSourcePath(),h={type:"predefined",name:e,id:l,timestamp:d,seq:f,data:t,user:i,contexts:o,tags:r,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:ne(),initiator:p?.initiator,trackingSourcePath:g??"",subflowStartEventId:p?.subflowStartEventId,tabId:this.resolveEventTabId()}},v=this.deviceInfoManager.getForEvent();v&&(h.deviceInfo=v),this.logger.debug(`Track: ${e}`,JSON.stringify(h,null,2)),this.queue.enqueue(h,u)}catch(d){this.logger.error(`Failed to process event "${e}" before enqueue`,d),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,i,r){try{let o=y(),s=this.sessionId,a={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,a,r,void 0,i,{id:o,sessionId:s}),this.flowHandle(o,s)}catch(o){return this.logger.warn("Failed to start flow",o),{enrich:async()=>{}}}}flowDecided(e,t,i){this.track("flow_decided",e,void 0,t,void 0,void 0,i)}conversion(e,t,i){let{userId:r,identifier:o,crossEnvironmentTransactionID:s,...a}=e,p={userId:r,identifier:o,crossEnvironmentTransactionID:s},d={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",a,p,d,void 0,void 0,i)}flowFinished(e,t,i){try{let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o},p=y(),d=this.sessionId;return this.track("flow_finished",s,a,t,void 0,void 0,i,{id:p,sessionId:d}),this.flowHandle(p,d)}catch(r){return this.logger.warn("Failed to finish flow",r),{enrich:async()=>{}}}}flowHandle(e,t){return{enrich:async i=>{try{await this.track("flow_enriched",{targetEventId:e},{...i},void 0,void 0,void 0,void 0,{sessionId:t})}catch(r){this.logger.warn("Failed to enrich flow",r)}}}}flowReset(e,t,i){this.track("flow_reset",e,void 0,t,void 0,void 0,i)}flowAutoFinished(e,t,i){let{userId:r,identifier:o,...s}=e,a={userId:r,identifier:o};this.track("flow_auto_finished",s,a,t,void 0,void 0,i)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}authMethodsDecisionStarted(e,t,i,r){this.track("auth_method_decision_started",e,void 0,t,void 0,r?.explicitTimestamp,i)}authMethodsDecisionFinished(e,t,i){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,i)}authDecisionStarted(e,t,i){this.track("auth_decision_started",e,void 0,t,void 0,void 0,i)}authDecisionFinished(e,t,i){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,i)}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??ne()},t)}catch(i){this.logger.error(`Failed to process low event "${e.lowType}" before enqueue`,i)}}telemetry(e,t){try{if(this.isTrackingBlocked()){this.logger.debug("Skipping telemetry for blocked user agent.");return}let i=typeof t=="string"?t:String(t);if(i.length===0)return;let r={id:y(),level:e,message:i.length>Dt?i.slice(0,Dt):i,ts:Date.now()};this.queue.enqueueTelemetry(r)}catch(i){this.logger.error("Failed to process telemetry before enqueue",i)}}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=Ui)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)}}lowEventFlushKeepalive(){this.config.tlf&&this.flushKeepalive("low-event-teardown")}passkeyLoginFullOperation(e){return new ve(this,e)}passkeyEnrollmentFullOperation(e){return new Ie(this,e)}passwordLoginFullOperation(e){return new ke(this,e)}passwordEnrollmentFullOperation(e){return new xe(this,e)}emailLinkOperationFull(e){return new Te(this,e)}continueEmailLinkOperation(e){return new Ee(this,e)}emailOtpOperationFull(e){return new we(this,e)}smsOtpOperationFull(e){return new be(this,e)}provideIdentifierOperationFull(e){return new Ce(this,e)}provideDataOperationFull(e){return new De(this,e)}socialLoginOperationFull(e){return new Oe(this,e)}appConfirmationOperationFull(e){return new Le(this,e)}keySigningOperationFull(e){return new te(this,e)}keyRegistrationOperationFull(e){return new ie(this,e)}captchaOperationFull(e){return new Pe(this,e)}trustedDeviceCheckOperationFull(e){return new Fe(this,e)}trustedDeviceEnrollmentOperationFull(e){return new Ae(this,e)}async destroy(){if(this.configManager?.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=y();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(F,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}};var et={};function Ht(n,e="default"){et[e]=new _e(n)}function Nt(n="default"){if(!et[n])throw new Error(`Tracker ${n} not initialized (call Corbado.init() first)`);return et[n]}function Ki(n){for(let e of n)Ht(e[0],e[1])}var Bt={};function Ut(n,e,t=[],i){let r=Nt(n),o=r[e];if(typeof o!="function")return;let s=o.apply(r,t);i&&s&&typeof s=="object"&&(Bt[i]=s)}function qt(n,e,t=[]){let i=Bt[n];if(!i)return;let r=e.split("."),o=i;for(let a=0;a<r.length-1;a++)if(o=o?.[r[a]],!o)return;let s=o[r[r.length-1]];typeof s=="function"&&s.apply(o,t)}function Vi(n){for(let e of n)Ut(e[0],e[1],Array.isArray(e[2])?e[2]:[],e[3])}function $i(n){for(let e of n)qt(e[0],e[1],Array.isArray(e[2])?e[2]:[])}typeof window<"u"&&(window.Corbado?.IQ&&(Ki(window.Corbado.IQ),delete window.Corbado.IQ),window.Corbado?.MQ&&(Vi(window.Corbado.MQ),delete window.Corbado.MQ),window.Corbado?.OQ&&($i(window.Corbado.OQ),delete window.Corbado.OQ),window.Corbado={init:Ht,get:Nt,__dispatchMethod:Ut,__dispatchOp:qt});})();
|
|
5
5
|
/*! Bundled license information:
|
|
6
6
|
|
|
7
7
|
detectincognitojs/dist/detectIncognito.esm.js:
|
package/dist/index.d.mts
CHANGED
|
@@ -8,7 +8,7 @@ type AuthMethodType = "identifier-email"
|
|
|
8
8
|
| "identifier" | "passkey-login-known-identifier" | "passkey-login-no-identifier" | "passkey-login-cui" | "passkey-login-immediate" | "passkey-enrollment" | "password-login" | "password-login-known-identifier" | "password-login-with-identifier" | "password-enrollment" | "email-otp" | "email-otp-login" | "email-otp-enrollment" | "email-link" | "email-link-login" | "email-link-enrollment" | "sms-otp" | "sms-otp-login" | "sms-otp-enrollment" | "social-google" | "social-apple" | "social-facebook" | "social-other" | "reset-flow" | "provide-data";
|
|
9
9
|
type SubflowType = "key-signing" | "key-registration" | "trusted-device-check" | "trusted-device-enrollment" | "passkey-enrollment" | "passkey-login" | "email-otp" | "email-link" | "social-login" | "sms-otp" | "provide-identifier" | "provide-data" | "password-login" | "password-enrollment" | "totp" | "app-confirmation" | "captcha";
|
|
10
10
|
type FlowType = "login" | "signup" | "recovery" | "enrollment" | (string & {});
|
|
11
|
-
type SocialLoginProviderType = "google" | "apple" | "facebook" | "github" | "microsoft" | "other";
|
|
11
|
+
type SocialLoginProviderType = "google" | "apple" | "facebook" | "github" | "microsoft" | "line" | "kakao" | "singpass" | "other";
|
|
12
12
|
declare enum AuthEventName {
|
|
13
13
|
FlowStarted = "flow_started",
|
|
14
14
|
FlowDecided = "flow_decided",
|
|
@@ -1002,6 +1002,7 @@ type SmsOTPOperationConfig = {
|
|
|
1002
1002
|
};
|
|
1003
1003
|
declare class SmsOtpOperationFull extends OperationFull {
|
|
1004
1004
|
private lowEventTracker?;
|
|
1005
|
+
readonly send: StepHelper;
|
|
1005
1006
|
readonly postResponse: StepHelper<SmsOTPOperationPostResponseStart>;
|
|
1006
1007
|
readonly resend: StepHelper;
|
|
1007
1008
|
constructor(tracker: CorbadoTracker, config?: SmsOTPOperationConfig);
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ type AuthMethodType = "identifier-email"
|
|
|
8
8
|
| "identifier" | "passkey-login-known-identifier" | "passkey-login-no-identifier" | "passkey-login-cui" | "passkey-login-immediate" | "passkey-enrollment" | "password-login" | "password-login-known-identifier" | "password-login-with-identifier" | "password-enrollment" | "email-otp" | "email-otp-login" | "email-otp-enrollment" | "email-link" | "email-link-login" | "email-link-enrollment" | "sms-otp" | "sms-otp-login" | "sms-otp-enrollment" | "social-google" | "social-apple" | "social-facebook" | "social-other" | "reset-flow" | "provide-data";
|
|
9
9
|
type SubflowType = "key-signing" | "key-registration" | "trusted-device-check" | "trusted-device-enrollment" | "passkey-enrollment" | "passkey-login" | "email-otp" | "email-link" | "social-login" | "sms-otp" | "provide-identifier" | "provide-data" | "password-login" | "password-enrollment" | "totp" | "app-confirmation" | "captcha";
|
|
10
10
|
type FlowType = "login" | "signup" | "recovery" | "enrollment" | (string & {});
|
|
11
|
-
type SocialLoginProviderType = "google" | "apple" | "facebook" | "github" | "microsoft" | "other";
|
|
11
|
+
type SocialLoginProviderType = "google" | "apple" | "facebook" | "github" | "microsoft" | "line" | "kakao" | "singpass" | "other";
|
|
12
12
|
declare enum AuthEventName {
|
|
13
13
|
FlowStarted = "flow_started",
|
|
14
14
|
FlowDecided = "flow_decided",
|
|
@@ -1002,6 +1002,7 @@ type SmsOTPOperationConfig = {
|
|
|
1002
1002
|
};
|
|
1003
1003
|
declare class SmsOtpOperationFull extends OperationFull {
|
|
1004
1004
|
private lowEventTracker?;
|
|
1005
|
+
readonly send: StepHelper;
|
|
1005
1006
|
readonly postResponse: StepHelper<SmsOTPOperationPostResponseStart>;
|
|
1006
1007
|
readonly resend: StepHelper;
|
|
1007
1008
|
constructor(tracker: CorbadoTracker, config?: SmsOTPOperationConfig);
|