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