@corbado/observe 0.16.6 → 1.0.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/index.d.ts CHANGED
@@ -460,9 +460,24 @@ interface SdkReliabilityConfig {
460
460
  * instruments.
461
461
  */
462
462
  aap: string;
463
+ /**
464
+ * Which query values `meta.trackingSourcePath` carries. `"allowlist"` (default) keeps every query
465
+ * key and its position but replaces each value with `*` unless its key matches
466
+ * {@link SdkReliabilityConfig.sourcePathQueryAllow} (empty by default); empty values and keys
467
+ * without a value stay as they are. `"all"` reports the page URL's query unchanged. The path itself
468
+ * is never changed. Applies to events tracked after the config takes effect.
469
+ */
470
+ sourcePathQuery: SourcePathQueryMode;
471
+ /**
472
+ * Query keys whose values are kept in `"allowlist"` mode. Matched case-insensitively and exactly;
473
+ * a trailing `*` matches a key prefix (`utm_*`). Capped at 50 entries of up to 64 characters.
474
+ */
475
+ sourcePathQueryAllow: string[];
463
476
  /** Retry configuration for failed event flushes. */
464
477
  retry: SdkRetryConfig;
465
478
  }
479
+ /** Query handling for `meta.trackingSourcePath`; see {@link SdkReliabilityConfig.sourcePathQuery}. */
480
+ type SourcePathQueryMode = "all" | "allowlist";
466
481
  /** Optional init overrides; omitted fields (including nested retry fields) inherit server policy or defaults. */
467
482
  type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry">> & {
468
483
  retry?: Partial<SdkRetryConfig>;
@@ -2242,6 +2257,10 @@ declare const CONFIG_BOUNDS: {
2242
2257
  readonly maxEntries: 20;
2243
2258
  readonly maxNameLength: 100;
2244
2259
  };
2260
+ readonly sourcePathQueryAllow: {
2261
+ readonly maxEntries: 50;
2262
+ readonly maxKeyLength: 64;
2263
+ };
2245
2264
  };
2246
2265
  /** Built-in continuity-session inactivity threshold (30 minutes); matches the historical default. */
2247
2266
  declare const DEFAULT_SESSION_INACTIVITY_MS: number;
@@ -2416,4 +2435,4 @@ declare function logInfo(message: string): void;
2416
2435
  declare function logError(message: string): void;
2417
2436
  declare function destroy(): Promise<void>;
2418
2437
 
2419
- export { type AppConfirmationOperationCeremonyTypedError, type AppConfirmationOperationConfig, AppConfirmationOperationFull, type AppConfirmationOperationRetryReason, type AppConfirmationOperationSpecType, type AppConfirmationOperationStart, type AuthDecisionFinished, type AuthDecisionStarted, AuthEventName, type AuthMethodDecisionFinished, type AuthMethodDecisionStarted, type AuthMethodType, type BaseEvent, CEREMONY_LOW_EVENT_TAIL_MS, CONFIG_BOUNDS, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type Conversion, CookieStorage, CorbadoTracker, type CreateLoggerOptions, type CustomEvent, DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_SERIALIZED_LENGTH, DEFAULT_RELIABILITY_CONFIG, DEFAULT_SEQ_LOCK_TIMEOUT_MS, DEFAULT_SESSION_INACTIVITY_MS, type DeviceInfo, type DeviceInfoCollectionError, type DeviceInfoDataWeb, type DeviceType, type EmailLinkOperationConfig, EmailLinkOperationFull, type EmailLinkOperationPostResponseStart, type EmailLinkOperationSendStart, type EmailLinkOperationSpecType, type EmailOTPOperationConfig, type EmailOTPOperationPostResponseStart, type EmailOTPOperationSendOTPStart, type EmailOTPOperationSpecType, EmailOtpOperationFull, type ErrorStepOptions, type Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type JavaScriptHighEntropy, type KeyOperationConfig, KeyRegistrationOperationFull, KeySigningOperationFull, LocalStorage, type Logger, type LowEvent, type LowEventFieldRole, type LowEventInitiator, type LowEventInputEffect, type LowEventSourceKind, type MultiFlowReset, type MultiFlowStarted, NamespacedStorage, type NormalizedError, OUTBOX_LOCK_NAME, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, type PasskeyEnrollmentCeremonyFinished, type PasskeyEnrollmentCeremonyStart, type PasskeyEnrollmentGetOptionsFinished, type PasskeyEnrollmentGetOptionsStart, type PasskeyEnrollmentOperationConfig, PasskeyEnrollmentOperationFull, type PasskeyEnrollmentPostResponseStart, type PasskeyLoginCUIGetOptionsFinished, type PasskeyLoginCUIGetOptionsStart, type PasskeyLoginCUISpecType, type PasskeyLoginCeremonyFinished, type PasskeyLoginCeremonyStart, type PasskeyLoginClientError, type PasskeyLoginFinish, type PasskeyLoginGetOptionsFinished, type PasskeyLoginGetOptionsStart, type PasskeyLoginOperationConfig, PasskeyLoginOperationFull, type PasskeyLoginPostResponseStart, type PasskeyLoginStartable, type PasskeyLoginSubmitted, type PasskeyOperationEnrollmentExplicitSpecType, type PasskeyOperationLoginExplicitSpecType, type PasswordEnrollmentConfig, PasswordEnrollmentOperationFull, type PasswordEnrollmentTypedError, type PasswordLoginCUICeremonyStart, type PasswordLoginCUIGetOptionsFinished, type PasswordLoginCUIGetOptionsStart, type PasswordLoginCUISpecType, type PasswordLoginCUITypedError, type PasswordLoginConfig, type PasswordLoginExplicitSpecType, PasswordLoginOperationFull, type PasswordLoginTypedError, type PredefinedEvent, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, type RawErrorEnvelope, RequestQueue, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SerializeRawErrorOptions, SessionStorage, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type StepHelper, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TrackerOptions, type Transport, type TransportMakeRequestResponse, type TransportOptions, type TrustedDeviceBindingMetadata, type TrustedDeviceCheckConfig, TrustedDeviceCheckOperationFull, type TrustedDeviceCheckResult, type TrustedDeviceCheckStepResult, type TrustedDeviceCheckTypedError, TrustedDeviceEnrollmentOperationFull, type TrustedDeviceEnrollmentResult, type TrustedDeviceOperationConfig, type TrustedDevicePurpose, type TrustedDeviceStorage, type UserReference, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setUser, telemetry };
2438
+ export { type AppConfirmationOperationCeremonyTypedError, type AppConfirmationOperationConfig, AppConfirmationOperationFull, type AppConfirmationOperationRetryReason, type AppConfirmationOperationSpecType, type AppConfirmationOperationStart, type AuthDecisionFinished, type AuthDecisionStarted, AuthEventName, type AuthMethodDecisionFinished, type AuthMethodDecisionStarted, type AuthMethodType, type BaseEvent, CEREMONY_LOW_EVENT_TAIL_MS, CONFIG_BOUNDS, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type Conversion, CookieStorage, CorbadoTracker, type CreateLoggerOptions, type CustomEvent, DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_SERIALIZED_LENGTH, DEFAULT_RELIABILITY_CONFIG, DEFAULT_SEQ_LOCK_TIMEOUT_MS, DEFAULT_SESSION_INACTIVITY_MS, type DeviceInfo, type DeviceInfoCollectionError, type DeviceInfoDataWeb, type DeviceType, type EmailLinkOperationConfig, EmailLinkOperationFull, type EmailLinkOperationPostResponseStart, type EmailLinkOperationSendStart, type EmailLinkOperationSpecType, type EmailOTPOperationConfig, type EmailOTPOperationPostResponseStart, type EmailOTPOperationSendOTPStart, type EmailOTPOperationSpecType, EmailOtpOperationFull, type ErrorStepOptions, type Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type JavaScriptHighEntropy, type KeyOperationConfig, KeyRegistrationOperationFull, KeySigningOperationFull, LocalStorage, type Logger, type LowEvent, type LowEventFieldRole, type LowEventInitiator, type LowEventInputEffect, type LowEventSourceKind, type MultiFlowReset, type MultiFlowStarted, NamespacedStorage, type NormalizedError, OUTBOX_LOCK_NAME, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, type PasskeyEnrollmentCeremonyFinished, type PasskeyEnrollmentCeremonyStart, type PasskeyEnrollmentGetOptionsFinished, type PasskeyEnrollmentGetOptionsStart, type PasskeyEnrollmentOperationConfig, PasskeyEnrollmentOperationFull, type PasskeyEnrollmentPostResponseStart, type PasskeyLoginCUIGetOptionsFinished, type PasskeyLoginCUIGetOptionsStart, type PasskeyLoginCUISpecType, type PasskeyLoginCeremonyFinished, type PasskeyLoginCeremonyStart, type PasskeyLoginClientError, type PasskeyLoginFinish, type PasskeyLoginGetOptionsFinished, type PasskeyLoginGetOptionsStart, type PasskeyLoginOperationConfig, PasskeyLoginOperationFull, type PasskeyLoginPostResponseStart, type PasskeyLoginStartable, type PasskeyLoginSubmitted, type PasskeyOperationEnrollmentExplicitSpecType, type PasskeyOperationLoginExplicitSpecType, type PasswordEnrollmentConfig, PasswordEnrollmentOperationFull, type PasswordEnrollmentTypedError, type PasswordLoginCUICeremonyStart, type PasswordLoginCUIGetOptionsFinished, type PasswordLoginCUIGetOptionsStart, type PasswordLoginCUISpecType, type PasswordLoginCUITypedError, type PasswordLoginConfig, type PasswordLoginExplicitSpecType, PasswordLoginOperationFull, type PasswordLoginTypedError, type PredefinedEvent, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, type RawErrorEnvelope, RequestQueue, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SerializeRawErrorOptions, SessionStorage, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathQueryMode, type StepHelper, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TrackerOptions, type Transport, type TransportMakeRequestResponse, type TransportOptions, type TrustedDeviceBindingMetadata, type TrustedDeviceCheckConfig, TrustedDeviceCheckOperationFull, type TrustedDeviceCheckResult, type TrustedDeviceCheckStepResult, type TrustedDeviceCheckTypedError, TrustedDeviceEnrollmentOperationFull, type TrustedDeviceEnrollmentResult, type TrustedDeviceOperationConfig, type TrustedDevicePurpose, type TrustedDeviceStorage, type UserReference, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setUser, telemetry };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Lt=Object.create;var ue=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var Dt=(n,e)=>{for(var t in e)ue(n,t,{get:e[t],enumerable:!0})},je=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Rt(e))!At.call(n,r)&&r!==t&&ue(n,r,{get:()=>e[r],enumerable:!(i=Pt(e,r))||i.enumerable});return n};var _t=(n,e,t)=>(t=n!=null?Lt(Ft(n)):{},je(e||!n||!n.__esModule?ue(t,"default",{value:n,enumerable:!0}):t,n)),Mt=n=>je(ue({},"__esModule",{value:!0}),n);var Hi={};Dt(Hi,{AppConfirmationOperationFull:()=>oe,AuthEventName:()=>ge,CEREMONY_LOW_EVENT_TAIL_MS:()=>tt,CONFIG_BOUNDS:()=>S,CONFIG_REQUEST_HEADER:()=>_e,CONFIG_STORAGE_KEY:()=>De,CaptchaOperationFull:()=>se,CookieStorage:()=>j,CorbadoTracker:()=>de,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS:()=>ot,DEFAULT_FLUSH_INTERVAL_MS:()=>tr,DEFAULT_MAX_ENTRIES:()=>pt,DEFAULT_MAX_SERIALIZED_LENGTH:()=>dt,DEFAULT_RELIABILITY_CONFIG:()=>y,DEFAULT_SEQ_LOCK_TIMEOUT_MS:()=>ir,DEFAULT_SESSION_INACTIVITY_MS:()=>st,EmailLinkOperationFull:()=>Z,EmailOtpOperationFull:()=>J,EventStore:()=>L,KeyRegistrationOperationFull:()=>V,KeySigningOperationFull:()=>K,LocalStorage:()=>W,NamespacedStorage:()=>z,OUTBOX_LOCK_NAME:()=>Se,OUTBOX_STORAGE_KEY:()=>lt,OperationFull:()=>h,OperationFullProvideIdentifierWithCUI:()=>re,PasskeyEnrollmentOperationFull:()=>ee,PasskeyLoginOperationFull:()=>Q,PasswordEnrollmentOperationFull:()=>ie,PasswordLoginOperationFull:()=>te,ProvideDataOperationFull:()=>pe,RAW_ERROR_BOUNDS:()=>Xe,RequestQueue:()=>$,SDK_NAME:()=>Ce,SDK_VERSION:()=>Oe,SessionStorage:()=>Y,SmsOtpOperationFull:()=>X,SocialLoginOperationFull:()=>ne,TrustedDeviceCheckOperationFull:()=>ae,TrustedDeviceEnrollmentOperationFull:()=>le,cacheConfig:()=>He,clearExperiment:()=>Pi,clearExperiments:()=>Ri,createLogger:()=>Ge,destroy:()=>Mi,getExperiments:()=>Fi,getSessionId:()=>ki,getTracker:()=>xi,init:()=>Ei,loadCachedConfig:()=>Me,logError:()=>_i,logInfo:()=>Di,namespacedKey:()=>T,parseReliabilityConfig:()=>M,resetSession:()=>Ii,resolveRawErrorLimits:()=>Re,resolveReliabilityConfig:()=>me,sanitizeAssertionResponse:()=>Ot,sanitizeCreationOptions:()=>It,sanitizeCreationResponse:()=>kt,sanitizeRequestOptions:()=>Ct,serializeRawError:()=>Fe,setExperiment:()=>Oi,setExperiments:()=>Li,setUser:()=>Ci,telemetry:()=>Ai});module.exports=Mt(Hi);var Ye=0;function x(){if(Ye===4294967295)throw new Error("Low-event capture sequence exhausted");return++Ye}function Qe(n,e){if(n==="passkey-login")switch(e){case"passkey-known-identifier":case"passkey-no-identifier":return"passkey-button";case"passkey-known-identifier-auto":case"passkey-no-identifier-auto":case"passkey-immediate":return"automatic"}else if(n==="passkey-enrollment")switch(e){case"manual":return"passkey-button";case"auto":case"conditional":return"automatic"}}var et=require("uuid");function R(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 Xe={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}},Ht=1024,A=class extends Error{},Nt=["name","message","code","errors","stack"],qt=/[^\x20-\x7E]/,D=n=>Object.prototype.toString.call(n).slice(8,-1),Bt=n=>n===null?"null":typeof n=="object"?D(n):typeof n,Ut=n=>n instanceof Error||D(n)==="Error"||D(n)==="DOMException";function Ze(n){return qt.test(n)?new TextEncoder().encode(n).byteLength:n.length}function F(n,e){let t=Xe[n];return typeof e!="number"||!Number.isFinite(e)?t.default:Math.min(t.max,Math.max(t.min,Math.floor(e)))}function Re(n={}){return{stack:n.stack===!0,maxStackFrames:F("maxStackFrames",n.maxStackFrames),depth:F("depth",n.depth),maxBreadth:F("maxBreadth",n.maxBreadth),maxValueLength:F("maxValueLength",n.maxValueLength),maxCauseDepth:F("maxCauseDepth",n.maxCauseDepth),maxBytes:F("maxBytes",n.maxBytes)}}function Fe(n,e={}){if(n===void 0)return;let t=Re(),i=r=>{let o=JSON.stringify(r);return o===void 0||Ze(o)<=t.maxBytes};try{if(t=Re(e),t.maxBytes===0)return;let r=k(Bt(n),1024);for(let s=t.depth;s>=0;s--){let l={limits:t,causeBudget:t.maxCauseDepth,seen:new Set,nodes:0,textBytes:0};try{let a={type:r,value:ce(n,s,l)};if(i(a))return a}catch(a){if(!(a instanceof A))throw a}}let o={type:r,truncated:!0};return i(o)?o:void 0}catch{let r={type:"unserializable"};return i(r)?r:void 0}}function U(n,e){if(n.length>e.limits.maxBytes)throw new A;if(e.textBytes+=Ze(JSON.stringify(n)),e.textBytes>e.limits.maxBytes)throw new A;return n}function ce(n,e,t){if(++t.nodes>Ht)throw new A;let i=Kt(n,e,t);return typeof i=="string"?U(i,t):i}function Kt(n,e,t){switch(typeof n){case"string":return k(n,t.limits.maxValueLength);case"number":return Number.isFinite(n)?n:String(n);case"boolean":case"undefined":return n;case"bigint":case"symbol":return k(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`[${D(i)}]`;t.seen.add(i);try{return Vt(i,e,t)}finally{t.seen.delete(i)}}function k(n,e){return n.length>e?n.slice(0,e)+"\u2026":n}function Je(n,e,t){let i=n.length>t;n=k(n,t);let r=n.split(`
1
+ "use strict";var Pt=Object.create;var de=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var At=Object.getPrototypeOf,Dt=Object.prototype.hasOwnProperty;var _t=(n,e)=>{for(var t in e)de(n,t,{get:e[t],enumerable:!0})},Qe=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ft(e))!Dt.call(n,r)&&r!==t&&de(n,r,{get:()=>e[r],enumerable:!(i=Rt(e,r))||i.enumerable});return n};var Mt=(n,e,t)=>(t=n!=null?Pt(At(n)):{},Qe(e||!n||!n.__esModule?de(t,"default",{value:n,enumerable:!0}):t,n)),Ht=n=>Qe(de({},"__esModule",{value:!0}),n);var Ki={};_t(Ki,{AppConfirmationOperationFull:()=>oe,AuthEventName:()=>ge,CEREMONY_LOW_EVENT_TAIL_MS:()=>tt,CONFIG_BOUNDS:()=>S,CONFIG_REQUEST_HEADER:()=>_e,CONFIG_STORAGE_KEY:()=>De,CaptchaOperationFull:()=>se,CookieStorage:()=>Q,CorbadoTracker:()=>ue,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS:()=>st,DEFAULT_FLUSH_INTERVAL_MS:()=>ar,DEFAULT_MAX_ENTRIES:()=>ut,DEFAULT_MAX_SERIALIZED_LENGTH:()=>dt,DEFAULT_RELIABILITY_CONFIG:()=>y,DEFAULT_SEQ_LOCK_TIMEOUT_MS:()=>lr,DEFAULT_SESSION_INACTIVITY_MS:()=>at,EmailLinkOperationFull:()=>Z,EmailOtpOperationFull:()=>J,EventStore:()=>L,KeyRegistrationOperationFull:()=>V,KeySigningOperationFull:()=>K,LocalStorage:()=>z,NamespacedStorage:()=>W,OUTBOX_LOCK_NAME:()=>Se,OUTBOX_STORAGE_KEY:()=>pt,OperationFull:()=>h,OperationFullProvideIdentifierWithCUI:()=>re,PasskeyEnrollmentOperationFull:()=>ee,PasskeyLoginOperationFull:()=>Y,PasswordEnrollmentOperationFull:()=>ie,PasswordLoginOperationFull:()=>te,ProvideDataOperationFull:()=>pe,RAW_ERROR_BOUNDS:()=>Xe,RequestQueue:()=>$,SDK_NAME:()=>Ce,SDK_VERSION:()=>Oe,SessionStorage:()=>j,SmsOtpOperationFull:()=>X,SocialLoginOperationFull:()=>ne,TrustedDeviceCheckOperationFull:()=>ae,TrustedDeviceEnrollmentOperationFull:()=>le,cacheConfig:()=>He,clearExperiment:()=>_i,clearExperiments:()=>Mi,createLogger:()=>Ge,destroy:()=>Ui,getExperiments:()=>Hi,getSessionId:()=>Ri,getTracker:()=>Li,init:()=>Oi,loadCachedConfig:()=>Me,logError:()=>Bi,logInfo:()=>qi,namespacedKey:()=>T,parseReliabilityConfig:()=>M,resetSession:()=>Pi,resolveRawErrorLimits:()=>Re,resolveReliabilityConfig:()=>me,sanitizeAssertionResponse:()=>Lt,sanitizeCreationOptions:()=>kt,sanitizeCreationResponse:()=>Ct,sanitizeRequestOptions:()=>Ot,serializeRawError:()=>Fe,setExperiment:()=>Ai,setExperiments:()=>Di,setUser:()=>Fi,telemetry:()=>Ni});module.exports=Ht(Ki);var je=0;function x(){if(je===4294967295)throw new Error("Low-event capture sequence exhausted");return++je}function Ye(n,e){if(n==="passkey-login")switch(e){case"passkey-known-identifier":case"passkey-no-identifier":return"passkey-button";case"passkey-known-identifier-auto":case"passkey-no-identifier-auto":case"passkey-immediate":return"automatic"}else if(n==="passkey-enrollment")switch(e){case"manual":return"passkey-button";case"auto":case"conditional":return"automatic"}}var et=require("uuid");function R(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 Xe={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}},Nt=1024,A=class extends Error{},qt=["name","message","code","errors","stack"],Bt=/[^\x20-\x7E]/,D=n=>Object.prototype.toString.call(n).slice(8,-1),Ut=n=>n===null?"null":typeof n=="object"?D(n):typeof n,Kt=n=>n instanceof Error||D(n)==="Error"||D(n)==="DOMException";function Ze(n){return Bt.test(n)?new TextEncoder().encode(n).byteLength:n.length}function F(n,e){let t=Xe[n];return typeof e!="number"||!Number.isFinite(e)?t.default:Math.min(t.max,Math.max(t.min,Math.floor(e)))}function Re(n={}){return{stack:n.stack===!0,maxStackFrames:F("maxStackFrames",n.maxStackFrames),depth:F("depth",n.depth),maxBreadth:F("maxBreadth",n.maxBreadth),maxValueLength:F("maxValueLength",n.maxValueLength),maxCauseDepth:F("maxCauseDepth",n.maxCauseDepth),maxBytes:F("maxBytes",n.maxBytes)}}function Fe(n,e={}){if(n===void 0)return;let t=Re(),i=r=>{let o=JSON.stringify(r);return o===void 0||Ze(o)<=t.maxBytes};try{if(t=Re(e),t.maxBytes===0)return;let r=k(Ut(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:ce(n,s,a)};if(i(l))return l}catch(l){if(!(l instanceof A))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 U(n,e){if(n.length>e.limits.maxBytes)throw new A;if(e.textBytes+=Ze(JSON.stringify(n)),e.textBytes>e.limits.maxBytes)throw new A;return n}function ce(n,e,t){if(++t.nodes>Nt)throw new A;let i=Vt(n,e,t);return typeof i=="string"?U(i,t):i}function Vt(n,e,t){switch(typeof n){case"string":return k(n,t.limits.maxValueLength);case"number":return Number.isFinite(n)?n:String(n);case"boolean":case"undefined":return n;case"bigint":case"symbol":return k(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`[${D(i)}]`;t.seen.add(i);try{return $t(i,e,t)}finally{t.seen.delete(i)}}function k(n,e){return n.length>e?n.slice(0,e)+"\u2026":n}function Je(n,e,t){let i=n.length>t;n=k(n,t);let r=n.split(`
2
2
  `);if(r.length<=e+1)return k(n,t);let o=r.slice(0,e+1).join(`
3
3
  `),s=i?"[truncated]":`[+${r.length-e-1} frames]`;return k(`${o}
4
- ${s}`,t)}function Vt(n,e,t){let{limits:i}=t,r=D(n),o=d=>ce(d,e-1,t);if(r==="Date")return Number.isNaN(n.getTime())?"[Invalid Date]":n.toISOString();if(r==="RegExp")return k(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 d=n,c=[];for(let f of d){if(c.length===i.maxBreadth)break;c.push(o(f))}return d.size>c.length&&c.push(`[+${d.size-c.length} more]`),c}if(r==="Promise"||r==="WeakMap"||r==="WeakSet"||r==="Window")return`[${r}]`;if(typeof Node<"u"&&n instanceof Node)return`[${r}]`;if(Array.isArray(n)){let d=n.slice(0,i.maxBreadth).map(o);return n.length>i.maxBreadth&&d.push(`[+${n.length-i.maxBreadth} more]`),d}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 d=n,c={type:o(d.type)};for(let f of["message","filename","lineno","colno"])f in d&&(c[f]=o(d[f]));return"error"in d&&d.error!=null&&(c.error=o(d.error)),c}let s=Object.create(null),l=n,a=Ut(n);if(a){for(let c of Nt){if(c==="stack"&&!i.stack)continue;let f=l[c];if(!(f==null||typeof f=="function")){if(c==="stack"){i.stack&&typeof f=="string"&&(s.stack=U(Je(f,i.maxStackFrames,i.maxValueLength),t));continue}s[c]=o(f)}}let d=l.cause;d!=null&&typeof d!="function"&&(s.cause=$t(d,e-1,t))}let p=0,u=Object.keys(l);for(let d of u){if(d in s||d==="stack"&&!i.stack||a&&d==="cause")continue;if(++p>i.maxBreadth){s["\u2026"]=`[+${u.length-i.maxBreadth} keys]`;break}let c=l[d];typeof c!="function"&&(s[U(d,t)]=d==="stack"&&typeof c=="string"?U(Je(c,i.maxStackFrames,i.maxValueLength),t):o(c))}return!a&&r!=="Object"&&p===0?`[${r}]`:s}function $t(n,e,t){if(typeof n!="object"||n===null)return ce(n,e,t);if(t.causeBudget<=0)return U(`[${D(n)}]`,t);t.causeBudget--;try{return ce(n,e,t)}finally{t.causeBudget++}}var tt=1500,h=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:x,enqueueLowEvent:i=>this.tracker.enqueueLowEvent({...i,captureSeq:i.captureSeq??x(),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)})}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=(0,et.v7)(),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:Fe(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(tt)},o=e;return{...e,start:(s,l)=>{i=l?.subflowStartEventId??this.startReference;let a=s?.explicitSpecType??this.captureSpecType,p=l?.initiator??Qe(this.operationName,a);t.arm(p,a==="passkey-cui"),o.start(s,p?{...l,initiator:p}:l)},finished:(s,l)=>{o.finished(s,l),r(l)},error:(s,l)=>{o.error(s,l),r(l)},errorTyped:(s,l)=>{o.errorTyped?.(s,l),r(l)}}}defineStep(e,t){let i,r,o,s=a=>this.captureOptions(a,i,r,o);return{start:(a,p)=>{i=this.startReference,r=this.captureSessionId,o=p?.initiator,this.subflowStepStarted(e,a,s(p),t)},finished:(a,p)=>{this.subflowStepFinished(e,a,s(p))},error:(a,p)=>{this.subflowStepError(e,{error:R(a)},s(p))},errorTyped:(a,p)=>{this.subflowStepError(e,a,s(p))}}}};function it(n,e){if(e.explicitSpecType!==void 0)try{n.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var K=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:it(e,t)})}},V=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:it(e,t)})}};var rt=require("uuid");var Ae=(n,e,t)=>{let i=!1,r,o=null,s=null,l=()=>{s!==null&&(window.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&&window.clearTimeout(s),s=window.setTimeout(l,150)},flush:l}};var Gt,he=()=>Gt??=(0,rt.v7)(),fe=class{constructor(e,t,i){this.logger=e;this.enqueue=t;this.flushKeepalive=i;typeof window>"u"||typeof document>"u"||(this.listen(window,"blur",()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)}),this.listen(window,"focus",()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0}),this.listen(document,"visibilitychange",()=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${document.visibilityState==="hidden"?"hidden":"visible"}`,ts:Date.now()})}),this.listen(document,"focusout",r=>{let o=this.findInput(r.target);this.lastBlur=o&&!r.relatedTarget&&Date.now()-this.unrelatedPointerAt>250?{registration:o,ts:Date.now()}:void 0}),this.listen(document,"focusin",()=>{this.lastBlur=void 0}),this.listen(document,"pointerdown",r=>{this.findInput(r.target)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())}),window.visualViewport&&(this.listen(window.visualViewport,"resize",()=>this.extendViewport("resize")),this.listen(window.visualViewport,"scroll",()=>this.extendViewport("scroll"))),this.listen(window,"pagehide",()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()}),this.observeNavigation())}inputs=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=Ae(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",x);scroll=Ae(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",x);registerInputs(e,t,i){if(this.destroyed)return()=>{};let r={fields:e,context:t,flush:i};return this.inputs.add(r),()=>{this.inputs.delete(r),this.lastBlur?.registration===r&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let i=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:r=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(i,r)},destroy:i}}context(){let e=[...this.ceremonies].filter(r=>!r.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=this.findInput(document.activeElement);if(t)return t.context();let i=this.lastBlur;if(i&&Date.now()-i.ts<=250&&(document.activeElement===document.body||!document.activeElement))return i.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(i=>i===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:i,...r}=t??{};this.enqueue({...e,...r,captureSeq:e.captureSeq??x(),sourceKind:"window",captureVersion:1,pageId:he()},i)}listen(e,t,i){let r=o=>{try{i(o)}catch(s){this.logger.error(`Failed to observe window ${t}`,s)}};e.addEventListener(t,r),this.removers.push(()=>e.removeEventListener(t,r))}extendViewport(e){let t=this.context(),i=this.viewportContext[e];(i?.subflowStartEventId!==t?.subflowStartEventId||i?.fieldRole!==t?.fieldRole||i?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}observeNavigation(){let e=window.navigation;e&&this.listen(e,"currententrychange",t=>{let i=t,r=i.from?.index,o=e.currentEntry?.index;i.navigationType==="traverse"&&typeof r=="number"&&typeof o=="number"&&r>=0&&o>=0&&o<r&&(this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()}))})}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear()}}};var ge=(v=>(v.FlowStarted="flow_started",v.FlowDecided="flow_decided",v.FlowFinished="flow_finished",v.FlowReset="flow_reset",v.AuthMethodDecisionStarted="auth_method_decision_started",v.AuthMethodDecisionFinished="auth_method_decision_finished",v.FlowAutoFinished="flow_auto_finished",v.AuthDecisionStarted="auth_decision_started",v.AuthDecisionFinished="auth_decision_finished",v.SubflowStepStarted="subflow_step_started",v.SubflowStepFinished="subflow_step_finished",v.SubflowStepError="subflow_step_error",v.SubflowTrigger="subflow_trigger",v.SubflowError="subflow_error",v.SubflowStarted="subflow_started",v.SubflowFinished="subflow_finished",v.FlowEnriched="flow_enriched",v.Conversion="conversion",v))(ge||{});var De="cbo_sdk_config",_e="X-Corbado-Observe-Config",tr=500,ir=50,ot=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}},st=1800*1e3,y={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:st,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:""};function C(n,e,t){return Math.min(Math.max(n,e),t)}function O(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function _(n,e){return typeof n=="boolean"?n:e}function nt(n,e){return typeof n=="string"?n:e}function zt(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 M(n){if(!n||typeof n!="object")return null;let e=n;return typeof e.version!="string"||e.version===""?null:at(e)}function at(n){let e=n.retry&&typeof n.retry=="object"?n.retry:{},t=C(O(e.baseDelayMs,y.retry.baseDelayMs),S.retryDelayMs.min,S.retryDelayMs.max);return{version:nt(n.version,""),flushIntervalMs:C(O(n.flushIntervalMs,y.flushIntervalMs),S.flushIntervalMs.min,S.flushIntervalMs.max),durableOutbox:n.durableOutbox===!0,durableLowOutbox:n.durableLowOutbox===!0,beaconKeepalive:n.beaconKeepalive===!0,sessionContinuity:n.sessionContinuity===!0,sessionInactivityMs:C(O(n.sessionInactivityMs,y.sessionInactivityMs),S.sessionInactivityMs.min,S.sessionInactivityMs.max),seqLockTimeoutMs:C(O(n.seqLockTimeoutMs,y.seqLockTimeoutMs),S.seqLockTimeoutMs.min,S.seqLockTimeoutMs.max),tvc:_(n.tvc,y.tvc),tph:_(n.tph,y.tph),td:_(n.td,y.td),tlf:_(n.tlf,y.tlf),telemetry:_(n.telemetry,y.telemetry),flushOnTelemetry:n.flushOnTelemetry===!0,flushOnFlowTypeFinished:zt(n.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:C(O(n.deviceInfoCollectorTimeoutMs,y.deviceInfoCollectorTimeoutMs),S.deviceInfoCollectorTimeoutMs.min,S.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:n.deviceInfoTiming===!0,rawErrors:_(n.rawErrors,y.rawErrors),aap:nt(n.aap,""),retry:{maxAttempts:C(O(e.maxAttempts,y.retry.maxAttempts),S.retryMaxAttempts.min,S.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:C(O(e.maxDelayMs,y.retry.maxDelayMs),t,S.retryDelayMs.max)}}}function me(n,e={}){let t=n??y,i=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),r=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=at({...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 Me(n){return M(n.getItem(De))}function He(n,e){n.setItem(De,e)}var Wt=6e4,jt=6e4,ye=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let i=JSON.stringify(e),r=typeof AbortController<"u"?new AbortController:void 0,o=r?setTimeout(()=>r.abort(),jt):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:i,keepalive:new Blob([i]).size<=Wt,...r?{signal:r.signal}:{}},l=await fetch(this.options.url,s),a={statusCode:l.status,headers:{"retry-after":l.headers.get("Retry-After")}};if(l.headers.get("X-Corbado-Observe-Accepted")==="1"&&(a.deliveryAccepted=!0),l.status===200)try{let p=M(await l.json());p&&(a.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 a}finally{o&&clearTimeout(o)}}catch(i){return this.options.logger.error("Failed to send event",i),{}}}sendBeacon(e){try{if(this.options.logger.debug(`Sending ${e.events.length} events via beacon`),typeof navigator?.sendBeacon!="function")return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let t=new Blob([JSON.stringify(e)],{type:"text/plain"});return navigator.sendBeacon(this.options.url,t)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};var ut=require("uuid");function ve(n,e,t={}){let i=typeof navigator<"u"?navigator.locks:void 0;if(i?.request){let r=t.timeoutMs,o=r!==void 0&&typeof AbortController<"u"?new AbortController:null;if(r!==void 0&&!o)return Promise.resolve().then(e);try{let s=!1,l,a=()=>{l!==void 0&&(clearTimeout(l),l=void 0)},p=()=>(s=!0,a(),e()),u=o?i.request(n,{signal:o.signal},p):i.request(n,p);return o&&r!==void 0&&!s&&(l=setTimeout(()=>{l=void 0,o.abort();try{t.onTimeout?.()}catch{}},r)),u.catch(d=>{if(s)throw d;return e()}).finally(a)}catch{}}try{return Promise.resolve(e())}catch(r){return Promise.reject(r)}}var lt="cbo_outbox",Se="cbo_outbox",pt=500,dt=512*1024;function Yt(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 L=class{constructor(e,t,i=pt,r=dt,o=Se,s=lt){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(Yt);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 ve(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 $=class{constructor(e,t,i,r,o={},s){this.logger=e;this.transport=t;this.sessionId=i;this.sdk=r;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.config=o.config??y,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new L(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new L(this.storage,this.logger,1e3,256*1024,`${this.outboxLockName??"cbo_outbox"}:lows`,"cbo_low_outbox_v1");let l=this.lowStore.all();this.lowPending=l.filter(a=>this.validPendingLow(a)),this.lowStore.remove(l.filter(a=>!this.validPendingLow(a)).map(a=>a.id))}this.setupLifecycleHooks(),(this.pending.length>0||this.lowPending.length>0)&&(this.dirtySinceSyncFlush=!0,this.scheduleFlush(0,"recovery"))}pending=[];lowsQueue=[];lowPending=[];lowStore;telemetryQueue=[];timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let i={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(i),this.store?.add(i),this.scheduleAfterEnqueue(e)}catch(i){this.logger.error("Failed to enqueue event",i)}}enqueueLow(e,t=this.sessionId){try{let i={...e,id:e.id??(0,ut.v7)()};if(this.config.durableLowOutbox){let r={id:i.id,sessionId:t,event:i,attempts:0,flushAfter:0};this.lowPending.push(r),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(r)}else this.lowsQueue.push({sessionId:t,event:i});this.scheduleAfterEnqueue()}catch(i){this.logger.error("Failed to enqueue low event",i)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){e==="destroy"&&await this.flushingDone;return}this.isFlushing=!0;let t;this.flushingDone=new Promise(i=>{t=i});try{for(this.clearTimer();;){let i=Date.now(),r=this.getDuePending(i),o=this.lowPending.filter(m=>m.flushAfter<=i);if(r.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0)return;let s=r[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??this.sessionId,l=r.filter(m=>m.sessionId===s).slice(0,this.batchSize),a=o.filter(m=>m.sessionId===s).slice(0,100),p=[...a.map(m=>m.event),...this.takeLows(s,100-a.length)],u=s===this.sessionId?this.takeTelemetry():[],d={sessionId:s,events:l.map(m=>m.event),sdk:this.sdk};p.length>0&&(d.lows=p),u.length>0&&(d.telemetry=u),this.attachBatchMeta(d,[...l,...a],e),a.length&&(d.deliveryAck=!0);let c=this.shouldRequestConfig()?{[_e]:this.config.version||"1"}:void 0,f=await this.transport.send(d,c).catch(m=>(this.logger.error("Unexpected error in queue flush",m),{}));if(d.deliveryAck&&f.statusCode&&f.statusCode>=200&&f.statusCode<300&&!f.deliveryAccepted&&(f={...f,statusCode:503}),this.requestConfig&&this.handleConfigResponse(f),this.handleLowSendResult(f,a,i),!this.handleSendResult(f,l,i))return}}catch(i){this.logger.error("Unexpected error in queue flush",i)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,i){e.meta={...e.meta,flushReason:i};let r=this.readDataPolicy();r!==void 0&&(e.meta={...e.meta,dataPolicy:r}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version});let o=t.reduce((s,l)=>Math.max(s,l.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let i=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),r=new Set(i);return this.lowsQueue=this.lowsQueue.filter(o=>!r.has(o)),i.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(i=>!t.has(i.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,i){let r=e.statusCode;if(r!==void 0&&r>=200&&r<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,i);return}if(!this.isRetryable(r)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,i,this.parseRetryAfter(e))}deferLowEntries(e,t,i=null){let r=[];for(let o of e){if(!this.validPendingLow(o)){r.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,i))}this.removeLowEntries(r),this.lowStore?.update(e.filter(o=>!r.includes(o.id)))}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let r=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of r)this.enqueueLow(o,s)}let i=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new L(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(u=>u.id)),!0;if(!this.isRetryable(r))return this.removeEntries(t.map(u=>u.id)),!1;let s=Math.max(1,this.config.retry.maxAttempts),l=this.parseRetryAfter(e),a=[],p=[];for(let u of t)u.attempts+=1,u.attempts>=s?a.push(u.id):(u.flushAfter=i+this.backoffForAttempt(u.attempts,l),p.push(u));return this.removeEntries(a),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)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(i=>i.flushAfter<=e)||this.lowsQueue.length>0){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending].map(i=>i.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),document.visibilityState==="hidden"&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},window.addEventListener("visibilitychange",this.onVisibilityChange),window.addEventListener("pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:window.location.href};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){if(!this.dirtySinceSyncFlush)return;let t=this.sessionId,i=this.pending.filter(p=>p.sessionId===t),r=i.slice(0,this.batchSize),o=this.lowPending.filter(p=>p.sessionId===t).slice(0,100),s=[...o.map(p=>p.event),...this.takeLows(t,100-o.length)],l=this.takeTelemetry();if(r.length===0&&s.length===0&&l.length===0){this.dirtySinceSyncFlush=!1;return}let a={sessionId:t,events:r.map(p=>p.event),sdk:this.sdk};s.length>0&&(a.lows=s),l.length>0&&(a.telemetry=l),this.attachBatchMeta(a,[...r,...o],e),o.length&&(a.deliveryAck=!0),this.config.beaconKeepalive&&this.transport.sendBeacon?this.transport.sendBeacon(a)||this.transport.send(a):this.transport.send(a),this.config.durableOutbox||this.removeEntries(r.map(p=>p.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&i.length>r.length}destroy(){try{this.destroyed=!0,this.clearTimer(),typeof window<"u"&&(this.onVisibilityChange&&window.removeEventListener("visibilitychange",this.onVisibilityChange),this.onPageHide&&window.removeEventListener("pagehide",this.onPageHide))}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var Be=require("uuid"),ct=_t(require("detectincognitojs")),Ne={collectorTimeoutMs:1e3,timing:!1},qe="cbo_tab_id",Qt={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function G(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var be=class{constructor(e,t,i="localstorage",r,o=()=>Ne,s){this.logger=e;this.storage=t;this.storageSource=i;this.sessionStorage=r;this.settings=o;this.emitTelemetry=s}async getInfo(){try{let e=this.resolveSettings(),t=G(),i=this.getClientEnvHandle(),r=await Promise.all([this.collectField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>this.isBluetoothAvailable(),e.collectorTimeoutMs),this.collectField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>this.getClientCapabilities(),e.collectorTimeoutMs),this.collectField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>this.getUserVerifyingPlatformAuthenticatorAvailable(),e.collectorTimeoutMs),this.collectField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>this.isConditionalMediationAvailable(),e.collectorTimeoutMs),this.collectField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>this.getJavaScriptHighEntropy(),e.collectorTimeoutMs),this.collectField("privateMode","detectIncognito",()=>this.isPrivateMode(),e.collectorTimeoutMs),this.collectField("webdriver","navigator.webdriver",()=>this.getWebdriver(),e.collectorTimeoutMs),this.collectField("maxTouchPoints","navigator.maxTouchPoints",()=>this.getMaxTouchPoints(),e.collectorTimeoutMs)]),o=G()-t;e.timing&&this.reportTiming(o,r);let[s,l,a,p,u,d,c,f]=r,m=r.flatMap(E=>E.error?[E.error]:[]),g={type:"web",clientEnvHandle:i.value,clientEnvHandleMeta:{timestamp:i.timestamp,source:i.source},tabId:this.getTabId(),data:{bluetoothAvailable:s.value,javaScriptHighEntropy:u.value,privateMode:d.value,webdriver:c.value,conditionalMediationAvailable:p.value,userVerifyingPlatformAuthenticatorAvailable:a.value,clientCapabilities:l.value,maxTouchPoints:f.value}};return m.length>0&&(g.collectionErrors=m),g}catch(e){return this.logger.error("Failed to collect device info",e),{}}}async collectField(e,t,i,r){let o,s=G();try{let l=await Promise.race([Promise.resolve().then(i),new Promise((a,p)=>{o=setTimeout(()=>{let u=new Error(`Device info collection timed out after ${r}ms`);u.name="TimeoutError",p(u)},r)})]);return{field:e,value:l,durationMs:G()-s}}catch(l){return this.logger.error(`Failed to collect device info field "${e}"`,l),{field:e,durationMs:G()-s,error:{field:e,source:t,error:R(l)??{message:"Unknown error"}}}}finally{o&&clearTimeout(o)}}resolveSettings(){try{let e=this.settings(),t=e?.collectorTimeoutMs;return{collectorTimeoutMs:typeof t=="number"&&Number.isFinite(t)&&t>0?t:Ne.collectorTimeoutMs,timing:e?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),Ne}}reportTiming(e,t){if(this.emitTelemetry)try{let i=t.map(r=>`${Qt[r.field]??r.field}=${Math.round(r.durationMs)}`).join(",");this.emitTelemetry("info",`device info collected in ${Math.round(e)}ms (${i})`)}catch(i){this.logger.error("Failed to report device info timing",i)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return typeof navigator>"u"?"":navigator.userAgent??""}static getOsName(){let e=this.getUserAgent();return e.includes("iOS")?"iOS":e.includes("Android")?"Android":e.includes("Windows")?"Windows":e.includes("Macintosh")?"macOS":e.includes("Linux")?"Linux":e.includes("ChromeOS")?"ChromeOS":"other"}static getBrowserName(){let e=this.getUserAgent();return e.includes("Chrome")?"Chrome":e.includes("Firefox")?"Firefox":e.includes("Safari")?"Safari":e.includes("Edge")?"Edge":e.includes("Opera")?"Opera":e.includes("IE")?"IE":"other"}async isBluetoothAvailable(){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async getUserVerifyingPlatformAuthenticatorAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async isConditionalMediationAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async getClientCapabilities(){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i.toString()]))}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=(0,Be.v7)(),i={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",i),i}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(qe);if(e)return e;let t=(0,Be.v7)();if(this.sessionStorage.setItem(qe,t),this.sessionStorage.getItem(qe)===t)return t}async getJavaScriptHighEntropy(){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,i=e.mobile,r=e.platformVersion,o=e.model||void 0;if(!(!t||i===void 0||!r))return{platform:t,mobile:i,platformVersion:r,model:o}}async isPrivateMode(){return(await(0,ct.default)()).isPrivate}getWebdriver(){if(!(typeof navigator>"u"))return navigator.webdriver}getMaxTouchPoints(){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}};var we=class{constructor(e,t,i,r){this.logger=e;this.source=t;this.refreshInterval=i;this.attachInterval=r}snapshot;refreshedAt=0;lastAttachedAt=null;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot&&!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}refresh(){return this.refreshPromise?this.refreshPromise:(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.refreshPromise=Promise.resolve().then(()=>this.source.getInfo()).then(e=>{this.snapshot=e,this.refreshedAt=Date.now()}).catch(e=>this.logger.error("Failed to refresh device info",e)).finally(()=>{this.refreshPromise=void 0,this.destroyed||(this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval))}),this.refreshPromise)}};function T(n,e){return`${n}_${e}`}var z=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(T(e,this.namespace))}setItem(e,t){this.engine.setItem(T(e,this.namespace),t)}removeItem(e){this.engine.removeItem(T(e,this.namespace))}},W=class{constructor(e){this.logger=e}getItem(e){try{if(typeof localStorage>"u")return null;let t=localStorage.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;localStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;localStorage.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},j=class{constructor(e,t){this.logger=e;this.domain=t}getItem(e){try{if(typeof document>"u")return null;let t=e+"=",i=document.cookie.split(";");for(let r=0;r<i.length;r++){let o=i[r].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let i=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(i+=`; domain=${this.domain}`),document.cookie=i}catch(i){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),document.cookie=t}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},Y=class{constructor(e){this.logger=e}getItem(e){try{if(typeof sessionStorage>"u")return null;let t=sessionStorage.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;sessionStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;sessionStorage.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var Te=1,Ee="cbo_storage_schema",Jt=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],Xt=["cbo_session_id","cbo_tab_id"],Zt=["cbo_client_env_handle"];function xe(n,e,t){return n.setItem(e,t),JSON.stringify(n.getItem(e))===JSON.stringify(t)}function Ue(n,e,t){let i=n.getItem(Ee);if(i!==null){if(i.version!==Te||i.projectId!==e)return!1;if(i.complete===!0)return!0;if(i.complete!==!1)return!1}else{if(t.some(r=>n.getItem(T(r,e))!==null))return xe(n,Ee,{version:Te,projectId:e,complete:!0});if(!xe(n,Ee,{version:Te,projectId:e,complete:!1}))return!1}for(let r of t){let o=T(r,e);if(n.getItem(o)!==null)continue;let s=n.getItem(r);if(s!==null&&!xe(n,o,s))return!1}return xe(n,Ee,{version:Te,projectId:e,complete:!0})}function ft(n,e,t,i,r){try{if(!Ue(e,n,Jt))return;Ue(t,n,Xt),i&&Ue(i,n,Zt)}catch(o){r.error("Failed to migrate legacy Observe storage",o)}}var ei=10*1e3,ti=600*1e3,ii=[1e3,3e3],Ie=class{constructor(e,t,i){this.url=e;this.storage=t;this.logger=i;this.initialConfig=Me(t)??void 0}initialConfig;refreshTimer;requestTimer;retryTimer;controller;fetching=!1;stopped=!1;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.fetchConfig())}async fetchConfig(e=0){if(this.stopped||this.fetching)return;e===0&&(clearTimeout(this.refreshTimer),clearTimeout(this.retryTimer),this.refreshTimer=setTimeout(()=>{this.fetchConfig()},ti)),this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),ei):void 0;let i=!0;try{let r=await fetch(this.url,{method:"GET",cache:"no-store",...t?{signal:t.signal}:{}});if(!r.ok)throw i=(r.status===408||r.status===429||r.status>=500)&&!r.headers.has("Retry-After"),new Error(`SDK config request failed (${r.status})`);let o=await r.json();i=!1;let s=M(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;He(this.storage,s),this.onConfig?.(s)}catch(r){if(!this.stopped){this.logger.error("Failed to fetch SDK config",r);let o=ii[e];(i&&!(r instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,clearTimeout(this.refreshTimer),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};var I=require("uuid");var H=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 Q=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new H(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 N=class{constructor(e,t,i,r){this.previousLength=e;this.pushLow=t;this.logger=i;this.reserveCaptureSeq=r}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;markInputObserved(){this.prefillSettled=!0}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect,i){let r=this.inputBatch;if(!r){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:i};return}r.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e.ts,this.ringEffect,e.captureSeq);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,i=-1/0;for(let r=1;r<e.length;r++){let o=e[r].ts-e[r-1].ts;if(o>80)return!1;o<t&&(t=o),o>i&&(i=o)}return i-t<=25}record(e,t=Date.now(),i=!1,r=this.reserveCaptureSeq?.()){this.markInputObserved(),this.scheduleIdle();let o=this.previousLength;this.currentEffect=e===0?"clear":o===0?"fill":"modify";let s=e-o;if(this.previousLength=e,e===0&&o>0){this.flush(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(i){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let l=this.autofillStreak;if(l){if(s===1&&t-l.lastTimestamp<=80){l.lastTimestamp=t;return}this.flushAutofillStreak()}if(s!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}let a=this.autofillTimestamps;if(a.length===0&&(this.ringEffect=this.currentEffect),a.push({ts:t,captureSeq:r}),a.length>5){let d=a.shift();this.extendInputBatch(d.ts,this.ringEffect,d.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let p=a[0],u=a[a.length-1];a.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:p.ts,captureSeq:p.captureSeq,lastTimestamp:u.ts,effect:this.ringEffect}}};var q=class{constructor(e,t,i,r){this.inputs=e;this.logger=t;this.changed=i;this.reserveCaptureSeq=r;for(let o of e)o.addEventListener("paste",this.onPaste,!0),o.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,i=this.captureSeq;this.clear();try{let r=0,o=!1;this.inputs.forEach((s,l)=>{let a=e[l],p=s.value;if(a===p)return;o=!0;let u=0;for(;u<a.length&&u<p.length&&a[u]===p[u];)u++;let d=0;for(;d<a.length-u&&d<p.length-u&&a[a.length-d-1]===p[p.length-d-1];)d++;r+=p.length-u-d}),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 ri=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],ni="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",ht="pa-4",oi='[popover="manual"]',si=400,ai=20,Ke="pa-5",Ve="pa-6",$e=(n,e)=>{try{return Array.from(n.querySelectorAll(e))}catch{return[]}},gt=n=>{if(n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(e.length<si||!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/display:\s*block\b/i.test(e)||(e.match(/initial\s*!important/gi)?.length??0)<ai)},li=n=>{if(gt(n)||n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/backdrop-filter:\s*[^;]*blur\(\s*20px\s*\)/i.test(e)||!/background-color:\s*rgba\(\s*35\s*,\s*35\s*,\s*35\s*,/i.test(e))},pi=n=>{n(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&n(t)}},mt=()=>{let n=new Set;return typeof document>"u"||pi(e=>{for(let t of ri)n.has(t.eventType)||$e(e,t.query).length>0&&n.add(t.eventType);if(!n.has(ht)&&$e(e,ni).length>0&&n.add(ht),!n.has(Ke)||!n.has(Ve))for(let t of $e(e,oi)){if(!n.has(Ke)&&gt(t)){n.add(Ke);continue}!n.has(Ve)&&li(t)&&n.add(Ve)}}),n};var di=500,ui=250,w=class{constructor(e,t,i){this.logger=e;this.inputField=t;this.sink=i;this.changes=new N(t.value.length,this.pushLow,e,i.reserveCaptureSeq),this.pasteObserver=new q([t],e,(r,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=t.value.length,this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:t.value.length===0?"clear":l===0?"fill":"modify"})},i.reserveCaptureSeq),this.boundHandlers={focus:this.wrapHandler("focus",()=>this.handleFocus()),blur:this.wrapHandler("blur",()=>this.handleBlur()),pointerdown:this.wrapHandler("pointerdown",()=>this.enqueueNonInputEvent("pointerdown")),pointerup:this.wrapHandler("pointerup",()=>this.enqueueNonInputEvent("pointerup")),click:this.wrapHandler("click",()=>this.enqueueNonInputEvent("click")),input:r=>{try{this.handleInput(r)}catch(o){this.logger.error("Failed to observe input",o)}},keyup:this.wrapKeyboardHandler("keyup",r=>this.handleKeyUp(r)),pageHide:this.wrapHandler("pagehide",()=>this.flushForTeardown())},this.unregisterInputs=i.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;boundHandlers;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.mountProbeTimer!==null&&(clearTimeout(this.mountProbeTimer),this.mountProbeTimer=null),this.focusProbeTimer!==null&&(clearTimeout(this.focusProbeTimer),this.focusProbeTimer=null),this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;e.addEventListener("focus",this.boundHandlers.focus),e.addEventListener("blur",this.boundHandlers.blur),e.addEventListener("pointerdown",this.boundHandlers.pointerdown),e.addEventListener("pointerup",this.boundHandlers.pointerup),e.addEventListener("click",this.boundHandlers.click),e.addEventListener("input",this.boundHandlers.input),e.addEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.addEventListener("pagehide",this.boundHandlers.pageHide),typeof document<"u"&&document.activeElement===e&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),di))}detach(){let e=this.inputField;e.removeEventListener("focus",this.boundHandlers.focus),e.removeEventListener("blur",this.boundHandlers.blur),e.removeEventListener("pointerdown",this.boundHandlers.pointerdown),e.removeEventListener("pointerup",this.boundHandlers.pointerup),e.removeEventListener("click",this.boundHandlers.click),e.removeEventListener("input",this.boundHandlers.input),e.removeEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.removeEventListener("pagehide",this.boundHandlers.pageHide)}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{let e=mt(),t=Date.now();for(let i of e)this.emittedSignals.has(i)||(this.emittedSignals.add(i),this.pushLow({lowType:i,ts:t}))}catch(e){this.logger.error("Failed to run input env probe",e)}}scheduleFocusProbe(){this.firstFocusHandled||(this.firstFocusHandled=!0,this.focusProbeTimer=setTimeout(()=>this.runEnvProbe(),ui))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.inputField.value.length,e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.scheduleFocusProbe(),this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e){this.pasteObserver.handlesInput(e)||this.changes.record(this.inputField.value.length,Date.now(),e.isComposing||e.inputType==="insertCompositionText")}handleKeyUp(e){e.key==="Escape"&&this.enqueueNonInputEvent("keyup-escape")}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(i){this.logger.error(`Failed to handle low event "${e}"`,i)}}}wrapKeyboardHandler(e,t){return i=>{try{t(i)}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var ke=class{constructor(e,t,i){this.logger=e;this.sink=i;this.inputs=[...new Set(t)],this.changes=new N(this.length(),r=>i.enqueueLowEvent(r),e,i.reserveCaptureSeq),this.paste=new q(this.inputs,e,(r,o,s)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let l=this.changes.previousLength;this.changes.previousLength=this.length(),i.enqueueLowEvent({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:this.length()===0?"clear":l===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();for(let r of this.inputs){this.listen(r,"input",o=>{this.paste.handlesInput(o)||(this.composing||=o.isComposing||o.inputType==="insertCompositionText",this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=i.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))}),this.listen(r,"focus",o=>{this.contains(o.relatedTarget)||this.emit("focus")}),this.listen(r,"blur",o=>{this.contains(o.relatedTarget)||(this.flushPending(),this.emit("blur"))});for(let o of["click","pointerdown","pointerup"])this.listen(r,o,()=>this.emit(o));this.listen(r,"keyup",o=>{o.key==="Escape"&&this.emit("keyup-escape")})}typeof window<"u"&&this.listen(window,"pagehide",()=>{this.flushPending(),i.flushKeepalive()}),typeof document<"u"&&this.contains(document.activeElement)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;changeSeq;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return this.inputs.reduce((e,t)=>e+t.value.length,0)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}listen(e,t,i){let r=o=>this.safe(()=>i(o));e.addEventListener(t,r),this.listeners.push(()=>e.removeEventListener(t,r))}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing,this.changeSeq),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var B=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,l)=>s===this.fields[l])||(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 ke(this.logger,i,o):new w(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 J=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 B(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 X=class extends h{lowEventTracker;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new B(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 ci=["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 yt(n){if(!n)return!1;let e=n.toLowerCase();return ci.some(t=>e.includes(t))}var Ce="@corbado/observe",Oe="0.16.6";var Z=class extends h{send;postResponse;resend;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var ee=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new H(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 Ge(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 te=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 w(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new w(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 ie=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 w(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var re=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 w(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var ne=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})}};var oe=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 se=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})}};function ze(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 Le(n,e,t){return{...n,start:(i,r)=>n.start(ze(i,e,t),r),finished:(i,r)=>n.finished(ze(i,e,t),r)}}var ae=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=vt(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{...Le(r,t,i),errorTyped:(o,s)=>{r.errorTyped(ze({code:o?.code,error:R(o?.error)},t,i),s)}}}},le=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=vt(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Le(this.defineStep("get-options"),i,e),this.ceremony=Le(this.defineStep("ceremony"),i,e),this.postResponse=Le(this.defineStep("post-response"),i,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function vt(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 pe=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 w(e.getLogger(),i,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var fi={name:Ce,version:Oe},St="cbo_session_id",We="cbo_session",P="cbo_seq",bt="cbo_experiments",wt="cbo_data_policy",hi=255,gi=/^[A-Za-z0-9_-]+$/,mi=128,yi=256,Tt=1e3,vi=50,Si="cbo_seq",Et=1e3,xt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,de=class n{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??Ge({debug:this.options.debug});let t=new W(this.logger),i=new Y(this.logger),r=e.storage==="cookie",o=r?new j(this.logger,e.cookieDomain):void 0;ft(e.projectId,t,i,o,this.logger);let s=e.projectId,l=g=>new z(g,s);this.seqLockName=T(Si,s),this.sessionStorage=l(i),this.persistentStorage=l(t),this.storage=l(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]}};let a=Object.keys(y).every(g=>this.configOverrides[g]!==void 0)&&Object.keys(y.retry).every(g=>this.configOverrides.retry?.[g]!==void 0);a||(this.configManager=new Ie(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=me(p,this.configOverrides),!a&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!a&&!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 u=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${u}`);let d=new ye({logger:this.logger,url:u});this.sessionId=this.resolveSessionId(),this.queue=new $(this.logger,d,this.sessionId,fi,{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:T(Se,s),getDataPolicy:()=>this.dataPolicy},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((g,E)=>this.reportTelemetry(g,E));try{this.getWindowObserver()}catch(g){this.logger.error("Failed to attach page low-event observer",g)}let c=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let g of c)this.telemetry(g.level,g.message);let f=new be(this.logger,this.storage,r?"cookie":"localstorage",this.sessionStorage,()=>({collectorTimeoutMs:this.config.deviceInfoCollectorTimeoutMs,timing:this.config.deviceInfoTiming}),(g,E)=>this.telemetry(g,E));this.deviceCollector=f;let m=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new we(this.logger,f,Math.max(1,m),m),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(g=>this.handleConfig(g))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];windowObserver;getWindowObserver(){return this.windowObserver??=new fe(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=me(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}}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<=hi}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(wt);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(wt,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<=mi&&gi.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=yi}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(bt);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(bt,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:yt(navigator.userAgent)}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let i=(0,I.v7)();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(P)??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(P,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",r.id),r.id}let i=(0,I.v7)();return this.persistContinuitySession(i,e),this.persistentStorage.setItem(P,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(St);if(e){if(typeof e=="string")return xt.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return xt.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(St,{id:e,lastActiveAt:t,...i===void 0?{}:{inactivityMs:i}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let i=Date.now();return this.sessionId&&i-this.lastActivityWriteAt>=Et&&this.persistPerTabSession(this.sessionId,i),this.seq++}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>=Et&&this.persistContinuitySession(r.id,i),r.id!==this.sessionId&&(this.sessionId=r.id,this.queue.setSessionId(r.id),o=!0);else{let a=(0,I.v7)();this.persistContinuitySession(a,i),this.persistentStorage.setItem(P,0),this.sessionId=a,this.queue.setSessionId(a),this.seq=0,o=!0}let s=this.persistentStorage.getItem(P);o&&(this.seq=typeof s=="number"?s:0);let l=typeof s=="number"&&s>this.seq?s:this.seq;return this.seq=l+1,this.persistentStorage.setItem(P,this.seq),l},t=this.config.seqLockTimeoutMs;return t===0||typeof navigator>"u"||!navigator.locks?.request?e():ve(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`${window.location.pathname}${window.location.search}`}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,i,r){let o={subflowType:e,...t};this.track("subflow_started",o,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{id:r,subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowTrigger(e,t,i){let r={subflowType:e,...t};this.track("subflow_trigger",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowStepStarted(e,t,i,r,o){let s={subflowType:e,stepName:t,stepData:i,ignoreAsInteraction:o};this.track("subflow_step_started",s,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepFinished(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_finished",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepError(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_error",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowError(e,t,i){let r={subflowType:e,stepData:t};this.track("subflow_error",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}async track(e,t,i,r,o,s,l,a){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(),u=a?.id??(0,I.v7)(),d=a?.sessionId??this.sessionId,c=this.nextSeq(),f=typeof c=="number"?c:await c,m=this.resolveTrackingSourcePath(),g={type:"predefined",name:e,id:u,timestamp:p,seq:f,data:t,user:i,contexts:o,tags:r,experiments:this.resolveExperiments(l),meta:{captureVersion:1,pageId:he(),initiator:a?.initiator,trackingSourcePath:m??"",subflowStartEventId:a?.subflowStartEventId,tabId:this.resolveEventTabId()}},E=this.deviceInfoManager.getForEvent();E&&(g.deviceInfo=E),this.logger.debug(`Track: ${e}`,JSON.stringify(g,null,2)),this.queue.enqueue(g,d)}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){try{let o=(0,I.v7)(),s=this.sessionId,l={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,l,r,void 0,i,{id:o,sessionId:s}),this.flowHandle(o,s)}catch(o){return this.logger.warn("Failed to start flow",o),{enrich:async()=>{}}}}flowDecided(e,t,i){this.track("flow_decided",e,void 0,t,void 0,void 0,i)}conversion(e,t,i){let{userId:r,identifier:o,crossEnvironmentTransactionID:s,...l}=e,a={userId:r,identifier:o,crossEnvironmentTransactionID:s},p={...this.options.defaultTags,...this.applicationTag(),...t};this.track("conversion",l,a,p,void 0,void 0,i)}flowFinished(e,t,i){try{let{userId:r,identifier:o,...s}=e,l={userId:r,identifier:o},a=(0,I.v7)(),p=this.sessionId;return this.track("flow_finished",s,l,t,void 0,void 0,i,{id:a,sessionId:p}),this.flowHandle(a,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,l={userId:r,identifier:o};this.track("flow_auto_finished",s,l,t,void 0,void 0,i)}setUser(e){this.track("flow_enriched",{match:{flowType:"*",at:"during"},expFol:!0},{...e})}authMethodsDecisionStarted(e,t,i,r){this.track("auth_method_decision_started",e,void 0,t,void 0,r?.explicitTimestamp,i)}authMethodsDecisionFinished(e,t,i){this.track("auth_method_decision_finished",e,void 0,t,void 0,void 0,i)}authDecisionStarted(e,t,i){this.track("auth_decision_started",e,void 0,t,void 0,void 0,i)}authDecisionFinished(e,t,i){this.track("auth_decision_finished",e,void 0,t,void 0,void 0,i)}enqueueLowEvent(e,t){try{if(this.isTrackingBlocked()){this.logger.debug(`Skipping low event "${e.lowType}" for blocked user agent.`);return}this.queue.enqueueLow({...e,captureSeq:e.captureSeq??x(),captureVersion:1,pageId:e.pageId??he()},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:(0,I.v7)(),level:e,message:i.length>Tt?i.slice(0,Tt):i,ts:Date.now()};this.queue.enqueueTelemetry(r)}catch(i){this.logger.error("Failed to process telemetry before enqueue",i)}}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=vi)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 Q(this,e)}passkeyEnrollmentFullOperation(e){return new ee(this,e)}passwordLoginFullOperation(e){return new te(this,e)}passwordEnrollmentFullOperation(e){return new ie(this,e)}emailLinkOperationFull(e){return new Z(this,e)}emailOtpOperationFull(e){return new J(this,e)}smsOtpOperationFull(e){return new X(this,e)}provideIdentifierOperationFull(e){return new re(this,e)}provideDataOperationFull(e){return new pe(this,e)}socialLoginOperationFull(e){return new ne(this,e)}appConfirmationOperationFull(e){return new oe(this,e)}keySigningOperationFull(e){return new K(this,e)}keyRegistrationOperationFull(e){return new V(this,e)}captchaOperationFull(e){return new se(this,e)}trustedDeviceCheckOperationFull(e){return new ae(this,e)}trustedDeviceEnrollmentOperationFull(e){return new le(this,e)}async destroy(){if(this.configManager?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSessionId();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}resetSession(){let e=(0,I.v7)();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(P,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}};var bi={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function It(n){return Pe(n,"creationOptions")}function kt(n){return Pe(n,"creationResponse")}function Ct(n){return Pe(n,"requestOptions")}function Ot(n){return Pe(n,"assertionResponse")}function Pe(n,e){try{let t=typeof n=="string"?JSON.parse(n):n;if(!wi(t))return;let i=new Set(bi[e]),r=new Set,o=(s,l,a=0)=>{if(!i.has(l)){if(s===null||typeof s=="string"||typeof s=="boolean")return s;if(typeof s=="number")return Number.isFinite(s)?s:null;if(typeof s=="object"){if(s instanceof ArrayBuffer||ArrayBuffer.isView(s))return Ti(s);if(a>64||r.has(s))throw new TypeError("Invalid telemetry payload");r.add(s);try{if(Array.isArray(s))return s.map((c,f)=>o(c,`${l}/${f}`,a+1));let p=Object.create(null);for(let c in s){let f=`${l}/${c.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(i.has(f)||c==="toJSON")continue;let m=o(s[c],f,a+1);m!==void 0&&(p[c]=m)}let u=s,d=(c,f)=>{if(p[f]!==void 0||typeof u[c]!="function")return;let m=`${l}/${f}`,g=o(Reflect.apply(u[c],s,[]),m,a+1);g!==void 0&&(p[f]=g)};return l===""&&(e==="creationResponse"||e==="assertionResponse")&&d("getClientExtensionResults","clientExtensionResults"),l==="/response"&&e==="creationResponse"&&(d("getTransports","transports"),d("getAuthenticatorData","authenticatorData"),d("getPublicKey","publicKey"),d("getPublicKeyAlgorithm","publicKeyAlgorithm")),p}finally{r.delete(s)}}}};return JSON.stringify(o(t,""))}catch{return}}function wi(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)}function Ti(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 Ei(n){let e=new de(n);return b=e,e}function xi(){return b}function Ii(){return b?.resetSession()}function ki(){return b?.getSessionId()}function Ci(n){b?.setUser(n)}function Oi(n,e){b?.setExperiment(n,e)}function Li(n){b?.setExperiments(n)}function Pi(n){b?.clearExperiment(n)}function Ri(){b?.clearExperiments()}function Fi(){return b?.getExperiments()??{}}function Ai(n,e){b?.telemetry(n,e)}function Di(n){b?.logInfo(n)}function _i(n){b?.logError(n)}async function Mi(){b&&(await b.destroy(),b=void 0)}0&&(module.exports={AppConfirmationOperationFull,AuthEventName,CEREMONY_LOW_EVENT_TAIL_MS,CONFIG_BOUNDS,CONFIG_REQUEST_HEADER,CONFIG_STORAGE_KEY,CaptchaOperationFull,CookieStorage,CorbadoTracker,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,DEFAULT_FLUSH_INTERVAL_MS,DEFAULT_MAX_ENTRIES,DEFAULT_MAX_SERIALIZED_LENGTH,DEFAULT_RELIABILITY_CONFIG,DEFAULT_SEQ_LOCK_TIMEOUT_MS,DEFAULT_SESSION_INACTIVITY_MS,EmailLinkOperationFull,EmailOtpOperationFull,EventStore,KeyRegistrationOperationFull,KeySigningOperationFull,LocalStorage,NamespacedStorage,OUTBOX_LOCK_NAME,OUTBOX_STORAGE_KEY,OperationFull,OperationFullProvideIdentifierWithCUI,PasskeyEnrollmentOperationFull,PasskeyLoginOperationFull,PasswordEnrollmentOperationFull,PasswordLoginOperationFull,ProvideDataOperationFull,RAW_ERROR_BOUNDS,RequestQueue,SDK_NAME,SDK_VERSION,SessionStorage,SmsOtpOperationFull,SocialLoginOperationFull,TrustedDeviceCheckOperationFull,TrustedDeviceEnrollmentOperationFull,cacheConfig,clearExperiment,clearExperiments,createLogger,destroy,getExperiments,getSessionId,getTracker,init,loadCachedConfig,logError,logInfo,namespacedKey,parseReliabilityConfig,resetSession,resolveRawErrorLimits,resolveReliabilityConfig,sanitizeAssertionResponse,sanitizeCreationOptions,sanitizeCreationResponse,sanitizeRequestOptions,serializeRawError,setExperiment,setExperiments,setUser,telemetry});
4
+ ${s}`,t)}function $t(n,e,t){let{limits:i}=t,r=D(n),o=u=>ce(u,e-1,t);if(r==="Date")return Number.isNaN(n.getTime())?"[Invalid Date]":n.toISOString();if(r==="RegExp")return k(String(n),i.maxValueLength);if(r==="ArrayBuffer")return`[ArrayBuffer(${n.byteLength})]`;if(ArrayBuffer.isView(n))return`[${r}(${n.byteLength})]`;if(r==="Map"||r==="Set"){let u=n,c=[];for(let f of u){if(c.length===i.maxBreadth)break;c.push(o(f))}return u.size>c.length&&c.push(`[+${u.size-c.length} more]`),c}if(r==="Promise"||r==="WeakMap"||r==="WeakSet"||r==="Window")return`[${r}]`;if(typeof Node<"u"&&n instanceof Node)return`[${r}]`;if(Array.isArray(n)){let u=n.slice(0,i.maxBreadth).map(o);return n.length>i.maxBreadth&&u.push(`[+${n.length-i.maxBreadth} more]`),u}if(typeof Response<"u"&&n instanceof Response)return{status:o(n.status),statusText:o(n.statusText),url:o(n.url),redirected:o(n.redirected)};if(typeof Event<"u"&&n instanceof Event){let u=n,c={type:o(u.type)};for(let f of["message","filename","lineno","colno"])f in u&&(c[f]=o(u[f]));return"error"in u&&u.error!=null&&(c.error=o(u.error)),c}let s=Object.create(null),a=n,l=Kt(n);if(l){for(let c of qt){if(c==="stack"&&!i.stack)continue;let f=a[c];if(!(f==null||typeof f=="function")){if(c==="stack"){i.stack&&typeof f=="string"&&(s.stack=U(Je(f,i.maxStackFrames,i.maxValueLength),t));continue}s[c]=o(f)}}let u=a.cause;u!=null&&typeof u!="function"&&(s.cause=Gt(u,e-1,t))}let p=0,d=Object.keys(a);for(let u of d){if(u in s||u==="stack"&&!i.stack||l&&u==="cause")continue;if(++p>i.maxBreadth){s["\u2026"]=`[+${d.length-i.maxBreadth} keys]`;break}let c=a[u];typeof c!="function"&&(s[U(u,t)]=u==="stack"&&typeof c=="string"?U(Je(c,i.maxStackFrames,i.maxValueLength),t):o(c))}return!l&&r!=="Object"&&p===0?`[${r}]`:s}function Gt(n,e,t){if(typeof n!="object"||n===null)return ce(n,e,t);if(t.causeBudget<=0)return U(`[${D(n)}]`,t);t.causeBudget--;try{return ce(n,e,t)}finally{t.causeBudget++}}var tt=1500,h=class{constructor(e,t){this.tracker=e;this.operationName=t}startReference;captureSpecType;captureSessionId;lowFlushers=[];lowPrefillCapturers=[];lowEventSink(e,t){return{reserveCaptureSeq:x,enqueueLowEvent:i=>this.tracker.enqueueLowEvent({...i,captureSeq:i.captureSeq??x(),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)})}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=(0,et.v7)(),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:Fe(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(tt)},o=e;return{...e,start:(s,a)=>{i=a?.subflowStartEventId??this.startReference;let l=s?.explicitSpecType??this.captureSpecType,p=a?.initiator??Ye(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:R(l)},s(p))},errorTyped:(l,p)=>{this.subflowStepError(e,l,s(p))}}}};function it(n,e){if(e.explicitSpecType!==void 0)try{n.getLogger().warn("Unsupported key operation spec type; omitting it")}catch{}}var K=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:it(e,t)})}},V=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:it(e,t)})}};function Wt(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch{return n}}function zt(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 rt(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)===""||zt(Wt(a),t)?o:`${a}=*`}).join("&")}`}var nt=require("uuid");var Ae=(n,e,t)=>{let i=!1,r,o=null,s=null,a=()=>{s!==null&&(window.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&&window.clearTimeout(s),s=window.setTimeout(a,150)},flush:a}};var Qt,he=()=>Qt??=(0,nt.v7)(),fe=class{constructor(e,t,i){this.logger=e;this.enqueue=t;this.flushKeepalive=i;typeof window>"u"||typeof document>"u"||(this.listen(window,"blur",()=>{this.flushInputs(),this.bracket=this.context(),this.emit({lowType:"window-blur",ts:Date.now()},this.bracket)}),this.listen(window,"focus",()=>{this.flushInputs(),this.emit({lowType:"window-focus",ts:Date.now()},this.bracket??this.context()),this.bracket=void 0}),this.listen(document,"visibilitychange",()=>{this.flushInputs(),this.emit({lowType:`document-visibilitychange-${document.visibilityState==="hidden"?"hidden":"visible"}`,ts:Date.now()})}),this.listen(document,"focusout",r=>{let o=this.findInput(r.target);this.lastBlur=o&&!r.relatedTarget&&Date.now()-this.unrelatedPointerAt>250?{registration:o,ts:Date.now()}:void 0}),this.listen(document,"focusin",()=>{this.lastBlur=void 0}),this.listen(document,"pointerdown",r=>{this.findInput(r.target)?this.unrelatedPointerAt=-1/0:(this.lastBlur=void 0,this.unrelatedPointerAt=Date.now())}),window.visualViewport&&(this.listen(window.visualViewport,"resize",()=>this.extendViewport("resize")),this.listen(window.visualViewport,"scroll",()=>this.extendViewport("scroll"))),this.listen(window,"pagehide",()=>{this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.flushKeepalive()}),this.observeNavigation())}inputs=new Set;ceremonies=new Set;removers=[];lastBlur;bracket;unrelatedPointerAt=-1/0;destroyed=!1;viewportContext={};resize=Ae(e=>this.emit(e,this.viewportContext.resize),"visualviewport-resize",x);scroll=Ae(e=>this.emit(e,this.viewportContext.scroll),"visualviewport-scroll",x);registerInputs(e,t,i){if(this.destroyed)return()=>{};let r={fields:e,context:t,flush:i};return this.inputs.add(r),()=>{this.inputs.delete(r),this.lastBlur?.registration===r&&(this.lastBlur=void 0)}}beginCeremony(e){let t={context:e,settled:!1};this.destroyed||(this.flushInputs(),this.ceremonies.add(t));let i=()=>{t.timer&&clearTimeout(t.timer),this.ceremonies.delete(t),this.bracket===t.context&&(this.bracket=void 0)};return{settle:r=>{t.settled=!0,t.timer&&clearTimeout(t.timer),t.timer=setTimeout(i,r)},destroy:i}}context(){let e=[...this.ceremonies].filter(r=>!r.settled);if(e.length===1)return e[0].context;if(e.length>1)return;let t=this.findInput(document.activeElement);if(t)return t.context();let i=this.lastBlur;if(i&&Date.now()-i.ts<=250&&(document.activeElement===document.body||!document.activeElement))return i.registration.context()}findInput(e){return[...this.inputs].find(t=>t.fields.some(i=>i===e))}flushInputs(){for(let e of this.inputs)try{e.flush()}catch(t){this.logger.error("Failed to flush window input context",t)}}emit(e,t){if(this.destroyed)return;let{sessionId:i,...r}=t??{};this.enqueue({...e,...r,captureSeq:e.captureSeq??x(),sourceKind:"window",captureVersion:1,pageId:he()},i)}listen(e,t,i){let r=o=>{try{i(o)}catch(s){this.logger.error(`Failed to observe window ${t}`,s)}};e.addEventListener(t,r),this.removers.push(()=>e.removeEventListener(t,r))}extendViewport(e){let t=this.context(),i=this.viewportContext[e];(i?.subflowStartEventId!==t?.subflowStartEventId||i?.fieldRole!==t?.fieldRole||i?.sessionId!==t?.sessionId)&&this[e].flush(),this.viewportContext[e]=t,this[e].extend()}observeNavigation(){let e=window.navigation;e&&this.listen(e,"currententrychange",t=>{let i=t,r=i.from?.index,o=e.currentEntry?.index;i.navigationType==="traverse"&&typeof r=="number"&&typeof o=="number"&&r>=0&&o>=0&&o<r&&(this.flushInputs(),this.emit({lowType:"window-navigate-back",ts:Date.now()}))})}destroy(){if(!this.destroyed){this.flushInputs(),this.resize.flush(),this.scroll.flush(),this.destroyed=!0;for(let e of this.removers)e();for(let e of this.ceremonies)e.timer&&clearTimeout(e.timer);this.ceremonies.clear(),this.inputs.clear()}}};var ge=(v=>(v.FlowStarted="flow_started",v.FlowDecided="flow_decided",v.FlowFinished="flow_finished",v.FlowReset="flow_reset",v.AuthMethodDecisionStarted="auth_method_decision_started",v.AuthMethodDecisionFinished="auth_method_decision_finished",v.FlowAutoFinished="flow_auto_finished",v.AuthDecisionStarted="auth_decision_started",v.AuthDecisionFinished="auth_decision_finished",v.SubflowStepStarted="subflow_step_started",v.SubflowStepFinished="subflow_step_finished",v.SubflowStepError="subflow_step_error",v.SubflowTrigger="subflow_trigger",v.SubflowError="subflow_error",v.SubflowStarted="subflow_started",v.SubflowFinished="subflow_finished",v.FlowEnriched="flow_enriched",v.Conversion="conversion",v))(ge||{});var De="cbo_sdk_config",_e="X-Corbado-Observe-Config",ar=500,lr=50,st=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}},at=1800*1e3,y={version:"",flushIntervalMs:500,durableOutbox:!1,durableLowOutbox:!1,beaconKeepalive:!1,sessionContinuity:!1,sessionInactivityMs:at,seqLockTimeoutMs:50,tvc:!0,tph:!0,td:!0,tlf:!0,telemetry:!0,flushOnTelemetry:!1,flushOnFlowTypeFinished:[],deviceInfoCollectorTimeoutMs:1e3,deviceInfoTiming:!1,rawErrors:!0,retry:{maxAttempts:1,baseDelayMs:0,maxDelayMs:0},aap:"",sourcePathQuery:"allowlist",sourcePathQueryAllow:[]};function C(n,e,t){return Math.min(Math.max(n,e),t)}function O(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function _(n,e){return typeof n=="boolean"?n:e}function ot(n,e){return typeof n=="string"?n:e}function jt(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 Yt(n){return typeof n=="string"&&n.trim().toLowerCase()==="all"?"all":"allowlist"}function Jt(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 M(n){if(!n||typeof n!="object")return null;let e=n;return typeof e.version!="string"||e.version===""?null:lt(e)}function lt(n){let e=n.retry&&typeof n.retry=="object"?n.retry:{},t=C(O(e.baseDelayMs,y.retry.baseDelayMs),S.retryDelayMs.min,S.retryDelayMs.max);return{version:ot(n.version,""),flushIntervalMs:C(O(n.flushIntervalMs,y.flushIntervalMs),S.flushIntervalMs.min,S.flushIntervalMs.max),durableOutbox:n.durableOutbox===!0,durableLowOutbox:n.durableLowOutbox===!0,beaconKeepalive:n.beaconKeepalive===!0,sessionContinuity:n.sessionContinuity===!0,sessionInactivityMs:C(O(n.sessionInactivityMs,y.sessionInactivityMs),S.sessionInactivityMs.min,S.sessionInactivityMs.max),seqLockTimeoutMs:C(O(n.seqLockTimeoutMs,y.seqLockTimeoutMs),S.seqLockTimeoutMs.min,S.seqLockTimeoutMs.max),tvc:_(n.tvc,y.tvc),tph:_(n.tph,y.tph),td:_(n.td,y.td),tlf:_(n.tlf,y.tlf),telemetry:_(n.telemetry,y.telemetry),flushOnTelemetry:n.flushOnTelemetry===!0,flushOnFlowTypeFinished:jt(n.flushOnFlowTypeFinished),deviceInfoCollectorTimeoutMs:C(O(n.deviceInfoCollectorTimeoutMs,y.deviceInfoCollectorTimeoutMs),S.deviceInfoCollectorTimeoutMs.min,S.deviceInfoCollectorTimeoutMs.max),deviceInfoTiming:n.deviceInfoTiming===!0,rawErrors:_(n.rawErrors,y.rawErrors),aap:ot(n.aap,""),sourcePathQuery:Yt(n.sourcePathQuery),sourcePathQueryAllow:Jt(n.sourcePathQueryAllow),retry:{maxAttempts:C(O(e.maxAttempts,y.retry.maxAttempts),S.retryMaxAttempts.min,S.retryMaxAttempts.max),baseDelayMs:t,maxDelayMs:C(O(e.maxDelayMs,y.retry.maxDelayMs),t,S.retryDelayMs.max)}}}function me(n,e={}){let t=n??y,i=Object.fromEntries(Object.entries(e).filter(([,s])=>s!==void 0)),r=Object.fromEntries(Object.entries(e.retry??{}).filter(([,s])=>s!==void 0)),o=lt({...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 Me(n){return M(n.getItem(De))}function He(n,e){n.setItem(De,e)}var Xt=6e4,Zt=6e4,ye=class{constructor(e){this.options=e}async send(e,t){try{e.meta={...e.meta,sent:Date.now(),transport:"fetch"};let i=JSON.stringify(e),r=typeof AbortController<"u"?new AbortController:void 0,o=r?setTimeout(()=>r.abort(),Zt):void 0;try{let s={method:"POST",headers:{"Content-Type":"application/json",...this.options.headers,...t},body:i,keepalive:new Blob([i]).size<=Xt,...r?{signal:r.signal}:{}},a=await fetch(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=M(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{if(this.options.logger.debug(`Sending ${e.events.length} events via beacon`),typeof navigator?.sendBeacon!="function")return!1;e.meta={...e.meta,sent:Date.now(),transport:"beacon"};let t=new Blob([JSON.stringify(e)],{type:"text/plain"});return navigator.sendBeacon(this.options.url,t)}catch(t){return this.options.logger.error("Failed to send event via beacon",t),!1}}flush(e){return Promise.resolve(!0)}};var ct=require("uuid");function ve(n,e,t={}){let i=typeof navigator<"u"?navigator.locks:void 0;if(i?.request){let r=t.timeoutMs,o=r!==void 0&&typeof AbortController<"u"?new AbortController:null;if(r!==void 0&&!o)return Promise.resolve().then(e);try{let s=!1,a,l=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},p=()=>(s=!0,l(),e()),d=o?i.request(n,{signal:o.signal},p):i.request(n,p);return o&&r!==void 0&&!s&&(a=setTimeout(()=>{a=void 0,o.abort();try{t.onTimeout?.()}catch{}},r)),d.catch(u=>{if(s)throw u;return e()}).finally(l)}catch{}}try{return Promise.resolve(e())}catch(r){return Promise.reject(r)}}var pt="cbo_outbox",Se="cbo_outbox",ut=500,dt=512*1024;function ei(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 L=class{constructor(e,t,i=ut,r=dt,o=Se,s=pt){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(ei);return t.length<e.length&&!this.reportedMalformed&&(this.reportedMalformed=!0,this.logger.error(`EventStore dropped ${e.length-t.length} malformed outbox entries`),this.logger.reportTelemetry?.("error","event store dropped malformed outbox entries")),t}mutate(e){return ve(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 $=class{constructor(e,t,i,r,o={},s){this.logger=e;this.transport=t;this.sessionId=i;this.sdk=r;this.storage=s;if(this.batchSize=o.batchSize||50,this.flushIntervalOverride=o.flushInterval,this.debug=o.debug??!1,this.requestConfig=o.requestConfig??!0,this.onConfigReceived=o.onConfigReceived,this.getDataPolicy=o.getDataPolicy,this.config=o.config??y,this.priorityFlowTypes=new Set(this.config.flushOnFlowTypeFinished),this.outboxLockName=o.outboxLockName,this.config.durableOutbox&&this.storage&&(this.store=new L(this.storage,this.logger,void 0,void 0,this.outboxLockName),this.pending=this.store.all()),this.storage){this.lowStore=new L(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=[];timer=null;isFlushing=!1;flushingDone;destroyed=!1;dirtySinceSyncFlush=!1;onVisibilityChange=null;onPageHide=null;batchSize;flushIntervalOverride;debug;requestConfig;onConfigReceived;getDataPolicy;config;priorityFlowTypes;outboxLockName;store;configResolved=!1;setSessionId(e){this.sessionId=e}flushInterval(){return this.flushIntervalOverride??this.config.flushIntervalMs}enqueue(e,t=this.sessionId){try{let i={id:e.id,sessionId:t,flushAfter:0,attempts:0,event:e};this.pending.push(i),this.store?.add(i),this.scheduleAfterEnqueue(e)}catch(i){this.logger.error("Failed to enqueue event",i)}}enqueueLow(e,t=this.sessionId){try{let i={...e,id:e.id??(0,ct.v7)()};if(this.config.durableLowOutbox){let r={id:i.id,sessionId:t,event:i,attempts:0,flushAfter:0};this.lowPending.push(r),this.lowPending=this.lowPending.slice(-1e3),this.lowStore?.add(r)}else this.lowsQueue.push({sessionId:t,event:i});this.scheduleAfterEnqueue()}catch(i){this.logger.error("Failed to enqueue low event",i)}}enqueueTelemetry(e){try{if(!this.config.telemetry)return;this.telemetryQueue.push(e),this.dirtySinceSyncFlush=!0,this.config.flushOnTelemetry&&this.flush("telemetry")}catch(t){this.logger.error("Failed to enqueue telemetry",t)}}scheduleAfterEnqueue(e){if(this.dirtySinceSyncFlush=!0,e!==void 0&&this.isPriorityEvent(e)){this.flush("flow-finished");return}this.scheduleFlush(this.flushInterval(),"timer")}isPriorityEvent(e){if(e.type!=="predefined"||e.name!=="flow_finished"&&e.name!=="flow_auto_finished")return!1;let t=e.data?.flowName;return typeof t=="string"&&this.priorityFlowTypes.has(t)}scheduleFlush(e,t){this.destroyed||this.timer||(this.timer=setTimeout(()=>{this.timer=null,this.flush(t)},e))}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}async flush(e="timer"){if(this.destroyed)return;if(this.isFlushing){e==="destroy"&&await this.flushingDone;return}this.isFlushing=!0;let t;this.flushingDone=new Promise(i=>{t=i});try{for(this.clearTimer();;){let i=Date.now(),r=this.getDuePending(i),o=this.lowPending.filter(m=>m.flushAfter<=i);if(r.length===0&&o.length===0&&this.lowsQueue.length===0&&this.telemetryQueue.length===0)return;let s=r[0]?.sessionId??o[0]?.sessionId??this.lowsQueue[0]?.sessionId??this.sessionId,a=r.filter(m=>m.sessionId===s).slice(0,this.batchSize),l=o.filter(m=>m.sessionId===s).slice(0,100),p=[...l.map(m=>m.event),...this.takeLows(s,100-l.length)],d=s===this.sessionId?this.takeTelemetry():[],u={sessionId:s,events:a.map(m=>m.event),sdk:this.sdk};p.length>0&&(u.lows=p),d.length>0&&(u.telemetry=d),this.attachBatchMeta(u,[...a,...l],e),l.length&&(u.deliveryAck=!0);let c=this.shouldRequestConfig()?{[_e]:this.config.version||"1"}:void 0,f=await this.transport.send(u,c).catch(m=>(this.logger.error("Unexpected error in queue flush",m),{}));if(u.deliveryAck&&f.statusCode&&f.statusCode>=200&&f.statusCode<300&&!f.deliveryAccepted&&(f={...f,statusCode:503}),this.requestConfig&&this.handleConfigResponse(f),this.handleLowSendResult(f,l,i),!this.handleSendResult(f,a,i))return}}catch(i){this.logger.error("Unexpected error in queue flush",i)}finally{this.isFlushing=!1,t(),this.flushingDone=void 0,this.rescheduleIfPending()}}attachBatchMeta(e,t,i){e.meta={...e.meta,flushReason:i};let r=this.readDataPolicy();r!==void 0&&(e.meta={...e.meta,dataPolicy:r}),this.config.version&&(e.meta={...e.meta,configVersion:this.config.version});let o=t.reduce((s,a)=>Math.max(s,a.attempts),0);o>0&&(e.meta={...e.meta,retryCount:o})}readDataPolicy(){try{return this.getDataPolicy?.()}catch(e){this.logger.debug("Failed to read data policy for batch meta",e);return}}getDuePending(e){return this.pending.filter(t=>t.flushAfter<=e)}takeLows(e=this.sessionId,t=100){let i=this.lowsQueue.filter(o=>o.sessionId===e).slice(0,t),r=new Set(i);return this.lowsQueue=this.lowsQueue.filter(o=>!r.has(o)),i.map(o=>o.event)}validPendingLow(e){return typeof e.event?.lowType=="string"&&e.event.id===e.id&&Number.isFinite(e.event.ts)&&e.event.ts>Date.now()-7*864e5}removeLowEntries(e){let t=new Set(e);this.lowPending=this.lowPending.filter(i=>!t.has(i.id)),this.lowStore?.remove(e)}handleLowSendResult(e,t,i){let r=e.statusCode;if(r!==void 0&&r>=200&&r<300){e.deliveryAccepted?this.removeLowEntries(t.map(o=>o.id)):this.deferLowEntries(t,i);return}if(!this.isRetryable(r)){this.removeLowEntries(t.map(o=>o.id)),this.logger.reportTelemetry?.("error","low events rejected by ingestion");return}this.deferLowEntries(t,i,this.parseRetryAfter(e))}deferLowEntries(e,t,i=null){let r=[];for(let o of e){if(!this.validPendingLow(o)){r.push(o.id);continue}o.attempts=Math.min(o.attempts+1,16),o.flushAfter=t+Math.max(Math.min(6e4,1e3*2**Math.min(o.attempts,6)),this.backoffForAttempt(o.attempts,i))}this.removeLowEntries(r),this.lowStore?.update(e.filter(o=>!r.includes(o.id)))}takeTelemetry(){let e=this.telemetryQueue;return this.telemetryQueue=[],e}shouldRequestConfig(){return this.requestConfig&&!this.configResolved}handleConfigResponse(e){let t=e.statusCode;typeof t=="number"&&t>=200&&t<300&&(this.configResolved=!0),e.config&&(this.config.version||this.updateConfig(e.config),this.onConfigReceived?.(e.config))}updateConfig(e){if(this.destroyed)return;let t=this.config.flushIntervalMs!==e.flushIntervalMs;if(this.config={...e,durableOutbox:this.config.durableOutbox||e.durableOutbox},this.priorityFlowTypes=new Set(e.flushOnFlowTypeFinished),e.durableLowOutbox&&this.lowsQueue.length){let r=this.lowsQueue;this.lowsQueue=[];for(let{event:o,sessionId:s}of r)this.enqueueLow(o,s)}let i=!1;if(this.config.durableOutbox&&this.storage&&!this.store){this.store=new L(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)return;let e=Date.now();if(this.getDuePending(e).length>0||this.lowPending.some(i=>i.flushAfter<=e)||this.lowsQueue.length>0){this.scheduleFlush(this.flushInterval(),"timer");return}let t=Math.min(...[...this.pending,...this.lowPending].map(i=>i.flushAfter));this.scheduleFlush(Math.max(0,t-e),"backoff")}catch(e){this.logger.error("Failed to reschedule queue flush",e)}}setupLifecycleHooks(){typeof window>"u"||(this.onVisibilityChange=()=>{try{this.writeLifecycleDebugOutput("cbo_visibility_change_debug"),document.visibilityState==="hidden"&&this.config.tvc&&this.flushSync("visibility-change")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},this.onPageHide=()=>{try{this.writeLifecycleDebugOutput("cbo_pagehide_debug"),this.config.tph&&this.flushSync("pagehide")}catch(e){this.logger.error("Unexpected error in queue flushSync",e)}},window.addEventListener("visibilitychange",this.onVisibilityChange),window.addEventListener("pagehide",this.onPageHide))}writeLifecycleDebugOutput(e){if(!this.debug||!this.storage)return;let t={last_executed:Date.now(),url:window.location.href};this.storage.setItem(e,t)}flushKeepalive(e="manual"){this.flushSync(e)}flushSync(e){if(!this.dirtySinceSyncFlush)return;let t=this.sessionId,i=this.pending.filter(p=>p.sessionId===t),r=i.slice(0,this.batchSize),o=this.lowPending.filter(p=>p.sessionId===t).slice(0,100),s=[...o.map(p=>p.event),...this.takeLows(t,100-o.length)],a=this.takeTelemetry();if(r.length===0&&s.length===0&&a.length===0){this.dirtySinceSyncFlush=!1;return}let l={sessionId:t,events:r.map(p=>p.event),sdk:this.sdk};s.length>0&&(l.lows=s),a.length>0&&(l.telemetry=a),this.attachBatchMeta(l,[...r,...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(r.map(p=>p.id)),this.dirtySinceSyncFlush=!this.config.durableOutbox&&i.length>r.length}destroy(){try{this.destroyed=!0,this.clearTimer(),typeof window<"u"&&(this.onVisibilityChange&&window.removeEventListener("visibilitychange",this.onVisibilityChange),this.onPageHide&&window.removeEventListener("pagehide",this.onPageHide))}catch(e){this.logger.error("Failed to destroy queue lifecycle hooks",e)}}};var Be=require("uuid"),ft=Mt(require("detectincognitojs")),Ne={collectorTimeoutMs:1e3,timing:!1},qe="cbo_tab_id",ti={bluetoothAvailable:"bt",clientCapabilities:"cc",userVerifyingPlatformAuthenticatorAvailable:"uvpaa",conditionalMediationAvailable:"cm",javaScriptHighEntropy:"he",privateMode:"pm",webdriver:"wd",maxTouchPoints:"mtp"};function G(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var be=class{constructor(e,t,i="localstorage",r,o=()=>Ne,s){this.logger=e;this.storage=t;this.storageSource=i;this.sessionStorage=r;this.settings=o;this.emitTelemetry=s}async getInfo(){try{let e=this.resolveSettings(),t=G(),i=this.getClientEnvHandle(),r=await Promise.all([this.collectField("bluetoothAvailable","navigator.bluetooth.getAvailability",()=>this.isBluetoothAvailable(),e.collectorTimeoutMs),this.collectField("clientCapabilities","PublicKeyCredential.getClientCapabilities",()=>this.getClientCapabilities(),e.collectorTimeoutMs),this.collectField("userVerifyingPlatformAuthenticatorAvailable","PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable",()=>this.getUserVerifyingPlatformAuthenticatorAvailable(),e.collectorTimeoutMs),this.collectField("conditionalMediationAvailable","PublicKeyCredential.isConditionalMediationAvailable",()=>this.isConditionalMediationAvailable(),e.collectorTimeoutMs),this.collectField("javaScriptHighEntropy","navigator.userAgentData.getHighEntropyValues",()=>this.getJavaScriptHighEntropy(),e.collectorTimeoutMs),this.collectField("privateMode","detectIncognito",()=>this.isPrivateMode(),e.collectorTimeoutMs),this.collectField("webdriver","navigator.webdriver",()=>this.getWebdriver(),e.collectorTimeoutMs),this.collectField("maxTouchPoints","navigator.maxTouchPoints",()=>this.getMaxTouchPoints(),e.collectorTimeoutMs)]),o=G()-t;e.timing&&this.reportTiming(o,r);let[s,a,l,p,d,u,c,f]=r,m=r.flatMap(E=>E.error?[E.error]:[]),g={type:"web",clientEnvHandle:i.value,clientEnvHandleMeta:{timestamp:i.timestamp,source:i.source},tabId:this.getTabId(),data:{bluetoothAvailable:s.value,javaScriptHighEntropy:d.value,privateMode:u.value,webdriver:c.value,conditionalMediationAvailable:p.value,userVerifyingPlatformAuthenticatorAvailable:l.value,clientCapabilities:a.value,maxTouchPoints:f.value}};return m.length>0&&(g.collectionErrors=m),g}catch(e){return this.logger.error("Failed to collect device info",e),{}}}async collectField(e,t,i,r){let o,s=G();try{let a=await Promise.race([Promise.resolve().then(i),new Promise((l,p)=>{o=setTimeout(()=>{let d=new Error(`Device info collection timed out after ${r}ms`);d.name="TimeoutError",p(d)},r)})]);return{field:e,value:a,durationMs:G()-s}}catch(a){return this.logger.error(`Failed to collect device info field "${e}"`,a),{field:e,durationMs:G()-s,error:{field:e,source:t,error:R(a)??{message:"Unknown error"}}}}finally{o&&clearTimeout(o)}}resolveSettings(){try{let e=this.settings(),t=e?.collectorTimeoutMs;return{collectorTimeoutMs:typeof t=="number"&&Number.isFinite(t)&&t>0?t:Ne.collectorTimeoutMs,timing:e?.timing===!0}}catch(e){return this.logger.error("Failed to resolve device info collector settings",e),Ne}}reportTiming(e,t){if(this.emitTelemetry)try{let i=t.map(r=>`${ti[r.field]??r.field}=${Math.round(r.durationMs)}`).join(",");this.emitTelemetry("info",`device info collected in ${Math.round(e)}ms (${i})`)}catch(i){this.logger.error("Failed to report device info timing",i)}}static getOsAndBrowserInfo(){return{osName:this.getOsName(),browserName:this.getBrowserName()}}static getUserAgent(){return typeof navigator>"u"?"":navigator.userAgent??""}static getOsName(){let e=this.getUserAgent();return e.includes("iOS")?"iOS":e.includes("Android")?"Android":e.includes("Windows")?"Windows":e.includes("Macintosh")?"macOS":e.includes("Linux")?"Linux":e.includes("ChromeOS")?"ChromeOS":"other"}static getBrowserName(){let e=this.getUserAgent();return e.includes("Chrome")?"Chrome":e.includes("Firefox")?"Firefox":e.includes("Safari")?"Safari":e.includes("Edge")?"Edge":e.includes("Opera")?"Opera":e.includes("IE")?"IE":"other"}async isBluetoothAvailable(){if(!(typeof navigator>"u"||!navigator.bluetooth))return await navigator.bluetooth.getAvailability()}async getUserVerifyingPlatformAuthenticatorAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable))return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async isConditionalMediationAvailable(){if(!(typeof PublicKeyCredential>"u"||!PublicKeyCredential.isConditionalMediationAvailable))return await PublicKeyCredential.isConditionalMediationAvailable()}async getClientCapabilities(){if(typeof PublicKeyCredential>"u"||!PublicKeyCredential.getClientCapabilities)return;let e=await PublicKeyCredential.getClientCapabilities();return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i.toString()]))}getClientEnvHandle(){let e=this.storage.getItem("cbo_client_env_handle");if(e)return e;let t=(0,Be.v7)(),i={timestamp:Date.now(),source:this.storageSource,value:t};return this.storage.setItem("cbo_client_env_handle",i),i}getTabId(){if(!this.sessionStorage)return;let e=this.sessionStorage.getItem(qe);if(e)return e;let t=(0,Be.v7)();if(this.sessionStorage.setItem(qe,t),this.sessionStorage.getItem(qe)===t)return t}async getJavaScriptHighEntropy(){if(typeof navigator>"u"||!navigator.userAgentData)return;let e=await navigator.userAgentData.getHighEntropyValues(["platformVersion","model"]),t=e.platform,i=e.mobile,r=e.platformVersion,o=e.model||void 0;if(!(!t||i===void 0||!r))return{platform:t,mobile:i,platformVersion:r,model:o}}async isPrivateMode(){return(await(0,ft.default)()).isPrivate}getWebdriver(){if(!(typeof navigator>"u"))return navigator.webdriver}getMaxTouchPoints(){if(!(typeof navigator>"u"||typeof navigator.maxTouchPoints!="number"))return navigator.maxTouchPoints}};var we=class{constructor(e,t,i,r){this.logger=e;this.source=t;this.refreshInterval=i;this.attachInterval=r}snapshot;refreshedAt=0;lastAttachedAt=null;refreshPromise;timer;destroyed=!1;start(){this.refresh()}getForEvent(){if(Date.now()-this.refreshedAt>=this.refreshInterval&&this.refresh(),!!this.snapshot&&!(this.lastAttachedAt!==null&&Date.now()-this.lastAttachedAt<this.attachInterval))return this.lastAttachedAt=Date.now(),this.snapshot}destroy(){this.destroyed=!0,this.timer&&(clearTimeout(this.timer),this.timer=void 0)}refresh(){return this.refreshPromise?this.refreshPromise:(this.timer&&(clearTimeout(this.timer),this.timer=void 0),this.refreshPromise=Promise.resolve().then(()=>this.source.getInfo()).then(e=>{this.snapshot=e,this.refreshedAt=Date.now()}).catch(e=>this.logger.error("Failed to refresh device info",e)).finally(()=>{this.refreshPromise=void 0,this.destroyed||(this.timer=setTimeout(()=>{this.refresh()},this.refreshInterval))}),this.refreshPromise)}};function T(n,e){return`${n}_${e}`}var W=class{constructor(e,t){this.engine=e;this.namespace=t}getItem(e){return this.engine.getItem(T(e,this.namespace))}setItem(e,t){this.engine.setItem(T(e,this.namespace),t)}removeItem(e){this.engine.removeItem(T(e,this.namespace))}},z=class{constructor(e){this.logger=e}getItem(e){try{if(typeof localStorage>"u")return null;let t=localStorage.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`LocalStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof localStorage>"u")return;localStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`LocalStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`localStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof localStorage>"u")return;localStorage.removeItem(e)}catch(t){this.logger.error(`LocalStorage.removeItem failed for key "${e}"`,t)}}},Q=class{constructor(e,t){this.logger=e;this.domain=t}getItem(e){try{if(typeof document>"u")return null;let t=e+"=",i=document.cookie.split(";");for(let r=0;r<i.length;r++){let o=i[r].trim();if(o.indexOf(t)===0){let s=o.substring(t.length);return JSON.parse(decodeURIComponent(s))}}return null}catch(t){return this.logger.error(`CookieStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof document>"u")return;let i=`${e}=${encodeURIComponent(JSON.stringify(t))}; path=/; SameSite=Lax`;this.domain&&(i+=`; domain=${this.domain}`),document.cookie=i}catch(i){this.logger.error(`CookieStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`cookie.setItem failed: ${e}`)}}removeItem(e){try{if(typeof document>"u")return;let t=`${e}=; Max-Age=-99999999; path=/`;this.domain&&(t+=`; domain=${this.domain}`),document.cookie=t}catch(t){this.logger.error(`CookieStorage.removeItem failed for key "${e}"`,t)}}},j=class{constructor(e){this.logger=e}getItem(e){try{if(typeof sessionStorage>"u")return null;let t=sessionStorage.getItem(e);return t?JSON.parse(t):null}catch(t){return this.logger.error(`SessionStorage.getItem failed for key "${e}"`,t),null}}setItem(e,t){try{if(typeof sessionStorage>"u")return;sessionStorage.setItem(e,JSON.stringify(t))}catch(i){this.logger.error(`SessionStorage.setItem failed for key "${e}"`,i),this.logger.reportTelemetry?.("error",`sessionStorage.setItem failed: ${e}`)}}removeItem(e){try{if(typeof sessionStorage>"u")return;sessionStorage.removeItem(e)}catch(t){this.logger.error(`SessionStorage.removeItem failed for key "${e}"`,t)}}};var Te=1,Ee="cbo_storage_schema",ii=["cbo_seq","cbo_sdk_config","cbo_experiments","cbo_client_env_handle","cbo_outbox","cbo_visibility_change_debug","cbo_pagehide_debug","cbo_session"],ri=["cbo_session_id","cbo_tab_id"],ni=["cbo_client_env_handle"];function xe(n,e,t){return n.setItem(e,t),JSON.stringify(n.getItem(e))===JSON.stringify(t)}function Ue(n,e,t){let i=n.getItem(Ee);if(i!==null){if(i.version!==Te||i.projectId!==e)return!1;if(i.complete===!0)return!0;if(i.complete!==!1)return!1}else{if(t.some(r=>n.getItem(T(r,e))!==null))return xe(n,Ee,{version:Te,projectId:e,complete:!0});if(!xe(n,Ee,{version:Te,projectId:e,complete:!1}))return!1}for(let r of t){let o=T(r,e);if(n.getItem(o)!==null)continue;let s=n.getItem(r);if(s!==null&&!xe(n,o,s))return!1}return xe(n,Ee,{version:Te,projectId:e,complete:!0})}function ht(n,e,t,i,r){try{if(!Ue(e,n,ii))return;Ue(t,n,ri),i&&Ue(i,n,ni)}catch(o){r.error("Failed to migrate legacy Observe storage",o)}}var oi=10*1e3,si=600*1e3,ai=[1e3,3e3],Ie=class{constructor(e,t,i){this.url=e;this.storage=t;this.logger=i;this.initialConfig=Me(t)??void 0}initialConfig;refreshTimer;requestTimer;retryTimer;controller;fetching=!1;stopped=!1;onConfig;start(e){this.stopped||this.onConfig||(this.onConfig=e,this.fetchConfig())}async fetchConfig(e=0){if(this.stopped||this.fetching)return;e===0&&(clearTimeout(this.refreshTimer),clearTimeout(this.retryTimer),this.refreshTimer=setTimeout(()=>{this.fetchConfig()},si)),this.fetching=!0;let t=typeof AbortController<"u"?new AbortController:void 0;this.controller=t,this.requestTimer=t?setTimeout(()=>t.abort(),oi):void 0;let i=!0;try{let r=await fetch(this.url,{method:"GET",cache:"no-store",...t?{signal:t.signal}:{}});if(!r.ok)throw i=(r.status===408||r.status===429||r.status>=500)&&!r.headers.has("Retry-After"),new Error(`SDK config request failed (${r.status})`);let o=await r.json();i=!1;let s=M(o);if(!s)throw new Error("Invalid SDK config response");if(this.stopped||t?.signal.aborted)return;He(this.storage,s),this.onConfig?.(s)}catch(r){if(!this.stopped){this.logger.error("Failed to fetch SDK config",r);let o=ai[e];(i&&!(r instanceof SyntaxError)||t?.signal.aborted)&&o!==void 0&&(this.retryTimer=setTimeout(()=>{this.fetchConfig(e+1)},o))}}finally{clearTimeout(this.requestTimer),this.requestTimer=void 0,this.controller=void 0,this.fetching=!1}}destroy(){this.stopped=!0,clearTimeout(this.refreshTimer),clearTimeout(this.requestTimer),clearTimeout(this.retryTimer),this.controller?.abort(),this.onConfig=void 0}};var I=require("uuid");var H=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 Y=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-login"),this.lowEventTracker=new H(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 N=class{constructor(e,t,i,r){this.previousLength=e;this.pushLow=t;this.logger=i;this.reserveCaptureSeq=r}prefillSettled=!1;inputBatch=null;currentEffect="modify";ringEffect="modify";autofillTimestamps=[];autofillStreak=null;idleTimer=null;markInputObserved(){this.prefillSettled=!0}capturePrefill(e,t=!1){t&&(this.prefillSettled=!1),!this.prefillSettled&&(this.previousLength=e,e!==0&&(this.prefillSettled=!0,this.pushLow({lowType:"input-prefill",ts:Date.now(),initiator:"unknown"})))}flush(){this.cancelIdle(),this.flushInputBatch(),this.flushAutofillStreak()}cancelIdle(){this.idleTimer!==null&&clearTimeout(this.idleTimer),this.idleTimer=null}scheduleIdle(){this.cancelIdle(),this.idleTimer=setTimeout(()=>{this.idleTimer=null;try{this.flushInputBatch(!0),this.flushAutofillStreak()}catch(e){this.logger.error("Failed to flush idle input",e)}},3e3)}extendInputBatch(e,t=this.currentEffect,i){let r=this.inputBatch;if(!r){this.inputBatch={firstTimestamp:e,lastTimestamp:e,effect:t,captureSeq:i};return}r.lastTimestamp=e}drainAutofillRingToBatch(){for(let e of this.autofillTimestamps)this.extendInputBatch(e.ts,this.ringEffect,e.captureSeq);this.autofillTimestamps.length=0}flushInputBatch(e=!1){this.drainAutofillRingToBatch();let t=this.inputBatch;t&&(this.pushLow({...t.captureSeq===void 0?{}:{captureSeq:t.captureSeq},lowType:e?"input-idle":"input",ts:t.firstTimestamp,durationMs:t.lastTimestamp-t.firstTimestamp,inputEffect:t.effect}),this.inputBatch=null)}flushAutofillStreak(){let e=this.autofillStreak;e&&(this.pushLow({...e.captureSeq===void 0?{}:{captureSeq:e.captureSeq},lowType:"big-input-add",ts:e.firstTimestamp,durationMs:e.lastTimestamp-e.firstTimestamp,inputEffect:e.effect}),this.autofillStreak=null)}detectAutofillStreak(){let e=this.autofillTimestamps;if(e.length<5)return!1;let t=1/0,i=-1/0;for(let r=1;r<e.length;r++){let o=e[r].ts-e[r-1].ts;if(o>80)return!1;o<t&&(t=o),o>i&&(i=o)}return i-t<=25}record(e,t=Date.now(),i=!1,r=this.reserveCaptureSeq?.()){this.markInputObserved(),this.scheduleIdle();let o=this.previousLength;this.currentEffect=e===0?"clear":o===0?"fill":"modify";let s=e-o;if(this.previousLength=e,e===0&&o>0){this.flush(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"input-clear",ts:t,inputEffect:"clear"});return}if(i){this.flushAutofillStreak(),this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}if(s>=3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-add",ts:t,inputEffect:this.currentEffect});return}if(s<=-3){this.flushInputBatch(),this.flushAutofillStreak(),this.pushLow({...r===void 0?{}:{captureSeq:r},lowType:"big-input-rem",ts:t,inputEffect:this.currentEffect});return}let a=this.autofillStreak;if(a){if(s===1&&t-a.lastTimestamp<=80){a.lastTimestamp=t;return}this.flushAutofillStreak()}if(s!==1){this.drainAutofillRingToBatch(),this.extendInputBatch(t,this.currentEffect,r);return}let l=this.autofillTimestamps;if(l.length===0&&(this.ringEffect=this.currentEffect),l.push({ts:t,captureSeq:r}),l.length>5){let u=l.shift();this.extendInputBatch(u.ts,this.ringEffect,u.captureSeq),this.ringEffect="modify"}if(!this.detectAutofillStreak())return;let p=l[0],d=l[l.length-1];l.length=0,this.flushInputBatch(),this.autofillStreak={firstTimestamp:p.ts,captureSeq:p.captureSeq,lastTimestamp:d.ts,effect:this.ringEffect}}};var q=class{constructor(e,t,i,r){this.inputs=e;this.logger=t;this.changed=i;this.reserveCaptureSeq=r;for(let o of e)o.addEventListener("paste",this.onPaste,!0),o.addEventListener("beforeinput",this.onBeforeInput,!0)}before=null;timestamp=0;captureSeq;pasteEvent;timer=null;onPaste=e=>this.begin(e);onBeforeInput=e=>{e.inputType==="insertFromPaste"?this.begin(e):this.flush()};handlesInput(e){if(!this.before)return!1;let t=this.pasteEvent?.type==="paste"&&(this.pasteEvent.eventPhase??0)>0;return e.inputType==="insertFromPaste"||t?!0:(this.clear(),!1)}get pending(){return this.before!==null}begin(e){if(!(!e.isTrusted||this.before))try{this.before=this.inputs.map(t=>t.value),this.pasteEvent=e,this.timestamp=Date.now(),this.captureSeq=this.reserveCaptureSeq?.(),this.timer=setTimeout(()=>this.flush(),0)}catch(t){this.logger.error("Failed to observe paste",t),this.clear()}}flush(){let e=this.before;if(!e)return;let t=this.timestamp,i=this.captureSeq;this.clear();try{let r=0,o=!1;this.inputs.forEach((s,a)=>{let l=e[a],p=s.value;if(l===p)return;o=!0;let d=0;for(;d<l.length&&d<p.length&&l[d]===p[d];)d++;let u=0;for(;u<l.length-d&&u<p.length-d&&l[l.length-u-1]===p[p.length-u-1];)u++;r+=p.length-d-u}),o&&this.changed(t,r,i)}catch(r){this.logger.error("Failed to finish paste observation",r)}}clear(){this.timer!==null&&clearTimeout(this.timer),this.timer=null,this.before=null,this.pasteEvent=void 0}destroy(){this.flush();for(let e of this.inputs)e.removeEventListener("paste",this.onPaste,!0),e.removeEventListener("beforeinput",this.onBeforeInput,!0)}};var li=[{query:"com-1password-button",eventType:"pa-1"},{query:"com-1password-menu",eventType:"pa-2"},{query:"com-1password-notification",eventType:"pa-3"}],pi="[data-lastpass-root], [data-lp], [data-lpignore], [data-lpfieldtype]",gt="pa-4",ui='[popover="manual"]',di=400,ci=20,Ke="pa-5",Ve="pa-6",$e=(n,e)=>{try{return Array.from(n.querySelectorAll(e))}catch{return[]}},mt=n=>{if(n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(e.length<di||!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/display:\s*block\b/i.test(e)||(e.match(/initial\s*!important/gi)?.length??0)<ci)},fi=n=>{if(mt(n)||n.getAttribute("popover")!=="manual")return!1;let e=n.getAttribute("style")??"";return!(!/z-index:\s*2147483647\b/i.test(e)||!/position:\s*fixed\b/i.test(e)||!/backdrop-filter:\s*[^;]*blur\(\s*20px\s*\)/i.test(e)||!/background-color:\s*rgba\(\s*35\s*,\s*35\s*,\s*35\s*,/i.test(e))},hi=n=>{n(document);for(let e of Array.from(document.querySelectorAll("*"))){let t=e.shadowRoot;t&&n(t)}},yt=()=>{let n=new Set;return typeof document>"u"||hi(e=>{for(let t of li)n.has(t.eventType)||$e(e,t.query).length>0&&n.add(t.eventType);if(!n.has(gt)&&$e(e,pi).length>0&&n.add(gt),!n.has(Ke)||!n.has(Ve))for(let t of $e(e,ui)){if(!n.has(Ke)&&mt(t)){n.add(Ke);continue}!n.has(Ve)&&fi(t)&&n.add(Ve)}}),n};var gi=500,mi=250,w=class{constructor(e,t,i){this.logger=e;this.inputField=t;this.sink=i;this.changes=new N(t.value.length,this.pushLow,e,i.reserveCaptureSeq),this.pasteObserver=new q([t],e,(r,o,s)=>{this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=t.value.length,this.pushLow({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:t.value.length===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.boundHandlers={focus:this.wrapHandler("focus",()=>this.handleFocus()),blur:this.wrapHandler("blur",()=>this.handleBlur()),pointerdown:this.wrapHandler("pointerdown",()=>this.enqueueNonInputEvent("pointerdown")),pointerup:this.wrapHandler("pointerup",()=>this.enqueueNonInputEvent("pointerup")),click:this.wrapHandler("click",()=>this.enqueueNonInputEvent("click")),input:r=>{try{this.handleInput(r)}catch(o){this.logger.error("Failed to observe input",o)}},keyup:this.wrapKeyboardHandler("keyup",r=>this.handleKeyUp(r)),pageHide:this.wrapHandler("pagehide",()=>this.flushForTeardown())},this.unregisterInputs=i.registerInputs?.([t],()=>this.flushPending()),this.capturePrefill(),this.attach()}unregisterInputs;changes;pasteObserver;emittedSignals=new Set;firstFocusHandled=!1;mountProbeTimer=null;focusProbeTimer=null;destroyed=!1;boundHandlers;destroy(){if(!this.destroyed){this.destroyed=!0;try{this.mountProbeTimer!==null&&(clearTimeout(this.mountProbeTimer),this.mountProbeTimer=null),this.focusProbeTimer!==null&&(clearTimeout(this.focusProbeTimer),this.focusProbeTimer=null),this.changes.flush(),this.unregisterInputs?.(),this.pasteObserver.destroy(),this.detach()}catch(e){this.logger.error("Failed to destroy LowEventInputTracker",e)}}}attach(){let e=this.inputField;e.addEventListener("focus",this.boundHandlers.focus),e.addEventListener("blur",this.boundHandlers.blur),e.addEventListener("pointerdown",this.boundHandlers.pointerdown),e.addEventListener("pointerup",this.boundHandlers.pointerup),e.addEventListener("click",this.boundHandlers.click),e.addEventListener("input",this.boundHandlers.input),e.addEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.addEventListener("pagehide",this.boundHandlers.pageHide),typeof document<"u"&&document.activeElement===e&&this.handleFocus(),typeof window<"u"&&(this.mountProbeTimer=setTimeout(()=>this.runEnvProbe(),gi))}detach(){let e=this.inputField;e.removeEventListener("focus",this.boundHandlers.focus),e.removeEventListener("blur",this.boundHandlers.blur),e.removeEventListener("pointerdown",this.boundHandlers.pointerdown),e.removeEventListener("pointerup",this.boundHandlers.pointerup),e.removeEventListener("click",this.boundHandlers.click),e.removeEventListener("input",this.boundHandlers.input),e.removeEventListener("keyup",this.boundHandlers.keyup),typeof window<"u"&&window.removeEventListener("pagehide",this.boundHandlers.pageHide)}pushLow=e=>{this.sink.enqueueLowEvent(e)};runEnvProbe(){try{let e=yt(),t=Date.now();for(let i of e)this.emittedSignals.has(i)||(this.emittedSignals.add(i),this.pushLow({lowType:i,ts:t}))}catch(e){this.logger.error("Failed to run input env probe",e)}}scheduleFocusProbe(){this.firstFocusHandled||(this.firstFocusHandled=!0,this.focusProbeTimer=setTimeout(()=>this.runEnvProbe(),mi))}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.inputField.value.length,e))}flushPending(){this.pasteObserver.flush(),this.changes.flush()}enqueueNonInputEvent(e){this.changes.flush(),this.pushLow({lowType:e,ts:Date.now()})}handleFocus(){this.scheduleFocusProbe(),this.enqueueNonInputEvent("focus")}handleBlur(){this.pasteObserver.flush(),this.enqueueNonInputEvent("blur")}handleInput(e){this.pasteObserver.handlesInput(e)||this.changes.record(this.inputField.value.length,Date.now(),e.isComposing||e.inputType==="insertCompositionText")}handleKeyUp(e){e.key==="Escape"&&this.enqueueNonInputEvent("keyup-escape")}flushForTeardown(){this.pasteObserver.flush(),this.changes.flush(),this.sink.flushKeepalive()}wrapHandler(e,t){return()=>{try{t()}catch(i){this.logger.error(`Failed to handle low event "${e}"`,i)}}}wrapKeyboardHandler(e,t){return i=>{try{t(i)}catch(r){this.logger.error(`Failed to handle low event "${e}"`,r)}}}};var ke=class{constructor(e,t,i){this.logger=e;this.sink=i;this.inputs=[...new Set(t)],this.changes=new N(this.length(),r=>i.enqueueLowEvent(r),e,i.reserveCaptureSeq),this.paste=new q(this.inputs,e,(r,o,s)=>{this.cancelChange(),this.changes.flush(),this.changes.markInputObserved();let a=this.changes.previousLength;this.changes.previousLength=this.length(),i.enqueueLowEvent({...s===void 0?{}:{captureSeq:s},lowType:"input-paste",ts:r,inputEffect:this.length()===0?"clear":a===0?"fill":"modify"})},i.reserveCaptureSeq),this.unregisterInputs=i.registerInputs?.(this.inputs,()=>this.flushPending()),this.capturePrefill();for(let r of this.inputs){this.listen(r,"input",o=>{this.paste.handlesInput(o)||(this.composing||=o.isComposing||o.inputType==="insertCompositionText",this.changeTimer===null&&(this.changeTime=Date.now(),this.changeSeq=i.reserveCaptureSeq?.(),this.changeTimer=setTimeout(()=>this.safe(()=>this.flushChanges()),0)))}),this.listen(r,"focus",o=>{this.contains(o.relatedTarget)||this.emit("focus")}),this.listen(r,"blur",o=>{this.contains(o.relatedTarget)||(this.flushPending(),this.emit("blur"))});for(let o of["click","pointerdown","pointerup"])this.listen(r,o,()=>this.emit(o));this.listen(r,"keyup",o=>{o.key==="Escape"&&this.emit("keyup-escape")})}typeof window<"u"&&this.listen(window,"pagehide",()=>{this.flushPending(),i.flushKeepalive()}),typeof document<"u"&&this.contains(document.activeElement)&&this.emit("focus")}inputs;changes;paste;unregisterInputs;listeners=[];changeTimer=null;changeTime=0;changeSeq;composing=!1;destroyed=!1;contains(e){return this.inputs.some(t=>t===e)}length(){return this.inputs.reduce((e,t)=>e+t.value.length,0)}safe(e){try{e()}catch(t){this.logger.error("Failed to observe grouped input",t)}}listen(e,t,i){let r=o=>this.safe(()=>i(o));e.addEventListener(t,r),this.listeners.push(()=>e.removeEventListener(t,r))}cancelChange(){this.changeTimer!==null&&clearTimeout(this.changeTimer),this.changeTimer=null}flushChanges(){this.changeTimer!==null&&(this.cancelChange(),this.paste.pending||this.changes.record(this.length(),this.changeTime,this.composing,this.changeSeq),this.composing=!1)}emit(e){this.flushChanges(),this.changes.flush(),this.sink.enqueueLowEvent({lowType:e,ts:Date.now()})}capturePrefill(e=!1){this.destroyed||(this.flushPending(),this.changes.capturePrefill(this.length(),e))}flushPending(){this.paste.flush(),this.flushChanges(),this.changes.flush()}destroy(){this.destroyed||(this.destroyed=!0,this.safe(()=>{this.flushPending(),this.paste.destroy(),this.unregisterInputs?.();for(let e of this.listeners)e()}))}};var B=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 ke(this.logger,i,o):new w(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 J=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 B(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 X=class extends h{lowEventTracker;postResponse;resend;constructor(e,t={}){super(e,"sms-otp"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType}),this.lowEventTracker=this.createLowCollector(()=>new B(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 yi=["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 vt(n){if(!n)return!1;let e=n.toLowerCase();return yi.some(t=>e.includes(t))}var Ce="@corbado/observe",Oe="1.0.0";var Z=class extends h{send;postResponse;resend;constructor(e,t={}){super(e,"email-link"),this.send=this.defineStep("send"),this.postResponse=this.defineStep("post-response"),this.resend=this.defineStep("resend"),this.subflowStart({explicitSpecType:t.explicitSpecType})}};var ee=class extends h{getOptions;ceremony;postResponse;lowEventTracker;constructor(e,t){super(e,"passkey-enrollment"),this.lowEventTracker=new H(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 Ge(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 te=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 w(e.getLogger(),t.identifierInputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.identifierLowEventTracker?.flushPending())),t?.inputHtmlField&&(this.lowEventTracker=this.createLowCollector(()=>new w(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 ie=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 w(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","password"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var re=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 w(e.getLogger(),t.inputHtmlField,this.lowEventSink("input","identifier"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var ne=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})}};var oe=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 se=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})}};function We(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 Le(n,e,t){return{...n,start:(i,r)=>n.start(We(i,e,t),r),finished:(i,r)=>n.finished(We(i,e,t),r)}}var ae=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-check"),t=St(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{...Le(r,t,i),errorTyped:(o,s)=>{r.errorTyped(We({code:o?.code,error:R(o?.error)},t,i),s)}}}},le=class extends h{getOptions;ceremony;postResponse;constructor(e,t){super(e,"trusted-device-enrollment"),t=St(t,e);let i={purpose:t.purpose,storage:t.storage,trustName:t.trustName};this.getOptions=Le(this.defineStep("get-options"),i,e),this.ceremony=Le(this.defineStep("ceremony"),i,e),this.postResponse=Le(this.defineStep("post-response"),i,e),this.subflowStart({explicitSpecType:t.explicitSpecType})}};function St(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 pe=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 w(e.getLogger(),i,this.lowEventSink("input","data"))),this.registerLowFlusher(()=>this.lowEventTracker?.flushPending()))}destroy(){this.lowEventTracker?.destroy()}};var vi={name:Ce,version:Oe},bt="cbo_session_id",ze="cbo_session",P="cbo_seq",wt="cbo_experiments",Tt="cbo_data_policy",Si=255,bi=/^[A-Za-z0-9_-]+$/,wi=128,Ti=256,Et=1e3,Ei=50,xi="cbo_seq",xt=1e3,It=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ue=class n{constructor(e){this.options=e;this.options.debug=e.debug??!1,this.logger=e.logger??Ge({debug:this.options.debug});let t=new z(this.logger),i=new j(this.logger),r=e.storage==="cookie",o=r?new Q(this.logger,e.cookieDomain):void 0;ht(e.projectId,t,i,o,this.logger);let s=e.projectId,a=g=>new W(g,s);this.seqLockName=T(xi,s),this.sessionStorage=a(i),this.persistentStorage=a(t),this.storage=a(o??t),this.configOverrides={...e.sdkConfig,...e.sdkConfig?.retry&&{retry:{...e.sdkConfig.retry}},...e.sdkConfig?.flushOnFlowTypeFinished&&{flushOnFlowTypeFinished:[...e.sdkConfig.flushOnFlowTypeFinished]},...e.sdkConfig?.sourcePathQueryAllow&&{sourcePathQueryAllow:[...e.sdkConfig.sourcePathQueryAllow]}};let l=Object.keys(y).every(g=>this.configOverrides[g]!==void 0)&&Object.keys(y.retry).every(g=>this.configOverrides.retry?.[g]!==void 0);l||(this.configManager=new Ie(e.apiBaseUrl+(e.apiConfigPath??"/v1/observe/config")+"/"+e.projectId,this.persistentStorage,this.logger));let p=this.configManager?.initialConfig;this.config=me(p,this.configOverrides),!l&&!p&&e.flushInterval!=null&&this.configOverrides.flushIntervalMs===void 0&&(this.config={...this.config,flushIntervalMs:e.flushInterval}),!l&&!p&&e.deviceInfoCollectorTimeout!=null&&this.configOverrides.deviceInfoCollectorTimeoutMs===void 0&&(this.config={...this.config,deviceInfoCollectorTimeoutMs:e.deviceInfoCollectorTimeout}),e.apiBaseUrl!==""&&(/^https?:\/\//.test(e.apiBaseUrl)||(this.logger.critical(`Invalid apiBaseUrl: URL must start with http:// or https:// (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: missing http(s) scheme")),e.apiBaseUrl.endsWith("/")&&(this.logger.critical(`Invalid apiBaseUrl: URL must not have a trailing slash (got: "${e.apiBaseUrl}")`),this.reportTelemetry("error","invalid apiBaseUrl: trailing slash")));let d=e.apiBaseUrl+(e.apiEventPath??"/v1/observe/events")+"/"+e.projectId;this.logger.debug(`Using API endpoint: ${d}`);let u=new ye({logger:this.logger,url:d});this.sessionId=this.resolveSessionId(),this.queue=new $(this.logger,u,this.sessionId,vi,{debug:this.options.debug,config:this.config,requestConfig:!1,outboxLockName:T(Se,s),getDataPolicy:()=>this.dataPolicy},this.persistentStorage),this.telemetryReady=!0,this.logger.setTelemetrySink?.((g,E)=>this.reportTelemetry(g,E));try{this.getWindowObserver()}catch(g){this.logger.error("Failed to attach page low-event observer",g)}let c=this.pendingSelfTelemetry;this.pendingSelfTelemetry=[];for(let g of c)this.telemetry(g.level,g.message);let f=new be(this.logger,this.storage,r?"cookie":"localstorage",this.sessionStorage,()=>({collectorTimeoutMs:this.config.deviceInfoCollectorTimeoutMs,timing:this.config.deviceInfoTiming}),(g,E)=>this.telemetry(g,E));this.deviceCollector=f;let m=e.deviceInfoDebounceTime??3e4;this.deviceInfoManager=new we(this.logger,f,Math.max(1,m),m),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(g=>this.handleConfig(g))}logger;queue;sessionId;storage;sessionStorage;persistentStorage;seqLockName;config;configManager;configOverrides;deviceInfoManager;deviceCollector;eventTabId;seq=0;lastActivityWriteAt=0;experiments={};dataPolicy;telemetryReporting=!1;telemetryReady=!1;reportedTelemetryKeys=new Set;pendingSelfTelemetry=[];windowObserver;getWindowObserver(){return this.windowObserver??=new fe(this.logger,(e,t)=>this.enqueueLowEvent(e,t),()=>this.lowEventFlushKeepalive())}handleConfig(e){let t=me(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}}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<=Si}loadPersistedDataPolicy(){try{let e=this.persistentStorage.getItem(Tt);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(Tt,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<=wi&&bi.test(e)}static isValidExperimentVariant(e){return typeof e=="string"&&e.length>0&&e.length<=Ti}loadPersistedExperiments(){try{let e=this.persistentStorage.getItem(wt);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(wt,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:vt(navigator.userAgent)}resolveSessionId(){try{if(this.config.sessionContinuity)return this.getContinuitySessionId();let e=Date.now(),t=this.readPerTabSession();if(t&&e-t.lastActiveAt<this.perTabInactivityMs(t))return this.persistPerTabSession(t.id,e),this.seq=0,t.id;let i=(0,I.v7)();return this.persistPerTabSession(i,e),this.seq=0,this.logger.debug("Created session id",i),i}catch(e){return this.logger.error("Failed to get session id",e),this.reportTelemetry("error","failed to get session id"),""}}getContinuitySessionId(){let e=Date.now(),t=this.persistentStorage.getItem(ze);if(t?.id&&e-t.lastActiveAt<this.config.sessionInactivityMs)return this.persistContinuitySession(t.id,e),this.seq=this.persistentStorage.getItem(P)??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(P,0),this.seq=0,this.logger.debug("Adopted per-tab session id as continuity session",r.id),r.id}let i=(0,I.v7)();return this.persistContinuitySession(i,e),this.persistentStorage.setItem(P,0),this.seq=0,this.logger.debug("Created continuity session id",i),i}persistContinuitySession(e,t){this.lastActivityWriteAt=t,this.persistentStorage.setItem(ze,{id:e,lastActiveAt:t})}readPerTabSession(){let e=this.sessionStorage.getItem(bt);if(e){if(typeof e=="string")return It.test(e)?{id:e,lastActiveAt:Date.now()}:void 0;if(typeof e.lastActiveAt=="number")return It.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(bt,{id:e,lastActiveAt:t,...i===void 0?{}:{inactivityMs:i}})}perTabInactivityMs(e){return this.configOverrides.sessionInactivityMs!==void 0?this.config.sessionInactivityMs:e.inactivityMs??this.config.sessionInactivityMs}nextSeq(){if(!this.config.sessionContinuity){let i=Date.now();return this.sessionId&&i-this.lastActivityWriteAt>=xt&&this.persistPerTabSession(this.sessionId,i),this.seq++}let e=()=>{let i=Date.now(),r=this.persistentStorage.getItem(ze),o=!1;if(!r?.id&&this.sessionId)this.persistContinuitySession(this.sessionId,i);else if(r?.id)i-this.lastActivityWriteAt>=xt&&this.persistContinuitySession(r.id,i),r.id!==this.sessionId&&(this.sessionId=r.id,this.queue.setSessionId(r.id),o=!0);else{let l=(0,I.v7)();this.persistContinuitySession(l,i),this.persistentStorage.setItem(P,0),this.sessionId=l,this.queue.setSessionId(l),this.seq=0,o=!0}let s=this.persistentStorage.getItem(P);o&&(this.seq=typeof s=="number"?s:0);let a=typeof s=="number"&&s>this.seq?s:this.seq;return this.seq=a+1,this.persistentStorage.setItem(P,this.seq),a},t=this.config.seqLockTimeoutMs;return t===0||typeof navigator>"u"||!navigator.locks?.request?e():ve(this.seqLockName,e,{timeoutMs:t,onTimeout:()=>{this.logger.warn(`Sequence Web Lock acquisition timed out after ${t}ms; using fallback`),this.reportTelemetry("info",`seq web lock timeout; using fallback, ${t}ms`)}})}resolveTrackingSourcePath(){if(typeof window>"u")return;let e=rt(window.location.search,this.config.sourcePathQuery,this.config.sourcePathQueryAllow);return`${window.location.pathname}${e}`}resolveEventTabId(){return this.eventTabId===void 0&&(this.eventTabId=this.deviceCollector.getTabId()),this.eventTabId}trackSubflowStarted(e,t,i,r){let o={subflowType:e,...t};this.track("subflow_started",o,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{id:r,subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowTrigger(e,t,i){let r={subflowType:e,...t};this.track("subflow_trigger",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}trackSubflowStepStarted(e,t,i,r,o){let s={subflowType:e,stepName:t,stepData:i,ignoreAsInteraction:o};this.track("subflow_step_started",s,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepFinished(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_finished",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowStepError(e,t,i,r){let o={subflowType:e,stepName:t,stepData:i};this.track("subflow_step_error",o,r?.userReference,void 0,void 0,r?.explicitTimestamp,r?.experiments,{subflowStartEventId:r?.subflowStartEventId,sessionId:r?.captureSessionId,initiator:r?.initiator})}trackSubflowError(e,t,i){let r={subflowType:e,stepData:t};this.track("subflow_error",r,i?.userReference,void 0,void 0,i?.explicitTimestamp,i?.experiments,{subflowStartEventId:i?.subflowStartEventId,sessionId:i?.captureSessionId,initiator:i?.initiator})}async track(e,t,i,r,o,s,a,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??(0,I.v7)(),u=l?.sessionId??this.sessionId,c=this.nextSeq(),f=typeof c=="number"?c:await c,m=this.resolveTrackingSourcePath(),g={type:"predefined",name:e,id:d,timestamp:p,seq:f,data:t,user:i,contexts:o,tags:r,experiments:this.resolveExperiments(a),meta:{captureVersion:1,pageId:he(),initiator:l?.initiator,trackingSourcePath:m??"",subflowStartEventId:l?.subflowStartEventId,tabId:this.resolveEventTabId()}},E=this.deviceInfoManager.getForEvent();E&&(g.deviceInfo=E),this.logger.debug(`Track: ${e}`,JSON.stringify(g,null,2)),this.queue.enqueue(g,u)}catch(p){this.logger.error(`Failed to process event "${e}" before enqueue`,p),this.reportTelemetry("error",`failed to process event "${e}" before enqueue`)}}flowStarted(e,t,i,r){try{let o=(0,I.v7)(),s=this.sessionId,a={...this.options.defaultTags,...this.applicationTag(),...t};return this.track("flow_started",e,void 0,a,r,void 0,i,{id:o,sessionId:s}),this.flowHandle(o,s)}catch(o){return this.logger.warn("Failed to start flow",o),{enrich:async()=>{}}}}flowDecided(e,t,i){this.track("flow_decided",e,void 0,t,void 0,void 0,i)}conversion(e,t,i){let{userId:r,identifier:o,crossEnvironmentTransactionID:s,...a}=e,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=(0,I.v7)(),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})}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??x(),captureVersion:1,pageId:e.pageId??he()},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:(0,I.v7)(),level:e,message:i.length>Et?i.slice(0,Et):i,ts:Date.now()};this.queue.enqueueTelemetry(r)}catch(i){this.logger.error("Failed to process telemetry before enqueue",i)}}logInfo(e){this.telemetry("info",e)}logError(e){this.telemetry("error",e)}reportTelemetry(e,t){if(!this.telemetryReporting){this.telemetryReporting=!0;try{if(this.reportedTelemetryKeys.has(t)||this.reportedTelemetryKeys.size>=Ei)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 Y(this,e)}passkeyEnrollmentFullOperation(e){return new ee(this,e)}passwordLoginFullOperation(e){return new te(this,e)}passwordEnrollmentFullOperation(e){return new ie(this,e)}emailLinkOperationFull(e){return new Z(this,e)}emailOtpOperationFull(e){return new J(this,e)}smsOtpOperationFull(e){return new X(this,e)}provideIdentifierOperationFull(e){return new re(this,e)}provideDataOperationFull(e){return new pe(this,e)}socialLoginOperationFull(e){return new ne(this,e)}appConfirmationOperationFull(e){return new oe(this,e)}keySigningOperationFull(e){return new K(this,e)}keyRegistrationOperationFull(e){return new V(this,e)}captchaOperationFull(e){return new se(this,e)}trustedDeviceCheckOperationFull(e){return new ae(this,e)}trustedDeviceEnrollmentOperationFull(e){return new le(this,e)}async destroy(){if(this.configManager?.destroy(),this.windowObserver?.destroy(),this.deviceInfoManager.destroy(),this.config.td)try{await this.queue.flush("destroy")}catch(e){this.logger.error("Failed to flush queue during destroy",e)}this.queue.destroy()}getSessionId(){if(!this.sessionId){let e=this.resolveSessionId();e&&(this.sessionId=e,this.queue.setSessionId(e))}return this.sessionId||void 0}resetSession(){let e=(0,I.v7)();return this.config.sessionContinuity?(this.persistContinuitySession(e,Date.now()),this.persistentStorage.setItem(P,0)):this.persistPerTabSession(e,Date.now()),this.sessionId=e,this.seq=0,this.queue.setSessionId(e),this.logger.debug(`Session reset: ${e}`),e}};var Ii={creationOptions:["/user/name","/user/displayName"],creationResponse:["/clientExtensionResults/prf/results"],requestOptions:[],assertionResponse:["/response/signature","/clientExtensionResults/prf/results"]};function kt(n){return Pe(n,"creationOptions")}function Ct(n){return Pe(n,"creationResponse")}function Ot(n){return Pe(n,"requestOptions")}function Lt(n){return Pe(n,"assertionResponse")}function Pe(n,e){try{let t=typeof n=="string"?JSON.parse(n):n;if(!ki(t))return;let i=new Set(Ii[e]),r=new Set,o=(s,a,l=0)=>{if(!i.has(a)){if(s===null||typeof s=="string"||typeof s=="boolean")return s;if(typeof s=="number")return Number.isFinite(s)?s:null;if(typeof s=="object"){if(s instanceof ArrayBuffer||ArrayBuffer.isView(s))return Ci(s);if(l>64||r.has(s))throw new TypeError("Invalid telemetry payload");r.add(s);try{if(Array.isArray(s))return s.map((c,f)=>o(c,`${a}/${f}`,l+1));let p=Object.create(null);for(let c in s){let f=`${a}/${c.replace(/~/g,"~0").replace(/\//g,"~1")}`;if(i.has(f)||c==="toJSON")continue;let m=o(s[c],f,l+1);m!==void 0&&(p[c]=m)}let d=s,u=(c,f)=>{if(p[f]!==void 0||typeof d[c]!="function")return;let m=`${a}/${f}`,g=o(Reflect.apply(d[c],s,[]),m,l+1);g!==void 0&&(p[f]=g)};return a===""&&(e==="creationResponse"||e==="assertionResponse")&&u("getClientExtensionResults","clientExtensionResults"),a==="/response"&&e==="creationResponse"&&(u("getTransports","transports"),u("getAuthenticatorData","authenticatorData"),u("getPublicKey","publicKey"),u("getPublicKeyAlgorithm","publicKeyAlgorithm")),p}finally{r.delete(s)}}}};return JSON.stringify(o(t,""))}catch{return}}function ki(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)}function Ci(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 Oi(n){let e=new ue(n);return b=e,e}function Li(){return b}function Pi(){return b?.resetSession()}function Ri(){return b?.getSessionId()}function Fi(n){b?.setUser(n)}function Ai(n,e){b?.setExperiment(n,e)}function Di(n){b?.setExperiments(n)}function _i(n){b?.clearExperiment(n)}function Mi(){b?.clearExperiments()}function Hi(){return b?.getExperiments()??{}}function Ni(n,e){b?.telemetry(n,e)}function qi(n){b?.logInfo(n)}function Bi(n){b?.logError(n)}async function Ui(){b&&(await b.destroy(),b=void 0)}0&&(module.exports={AppConfirmationOperationFull,AuthEventName,CEREMONY_LOW_EVENT_TAIL_MS,CONFIG_BOUNDS,CONFIG_REQUEST_HEADER,CONFIG_STORAGE_KEY,CaptchaOperationFull,CookieStorage,CorbadoTracker,DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS,DEFAULT_FLUSH_INTERVAL_MS,DEFAULT_MAX_ENTRIES,DEFAULT_MAX_SERIALIZED_LENGTH,DEFAULT_RELIABILITY_CONFIG,DEFAULT_SEQ_LOCK_TIMEOUT_MS,DEFAULT_SESSION_INACTIVITY_MS,EmailLinkOperationFull,EmailOtpOperationFull,EventStore,KeyRegistrationOperationFull,KeySigningOperationFull,LocalStorage,NamespacedStorage,OUTBOX_LOCK_NAME,OUTBOX_STORAGE_KEY,OperationFull,OperationFullProvideIdentifierWithCUI,PasskeyEnrollmentOperationFull,PasskeyLoginOperationFull,PasswordEnrollmentOperationFull,PasswordLoginOperationFull,ProvideDataOperationFull,RAW_ERROR_BOUNDS,RequestQueue,SDK_NAME,SDK_VERSION,SessionStorage,SmsOtpOperationFull,SocialLoginOperationFull,TrustedDeviceCheckOperationFull,TrustedDeviceEnrollmentOperationFull,cacheConfig,clearExperiment,clearExperiments,createLogger,destroy,getExperiments,getSessionId,getTracker,init,loadCachedConfig,logError,logInfo,namespacedKey,parseReliabilityConfig,resetSession,resolveRawErrorLimits,resolveReliabilityConfig,sanitizeAssertionResponse,sanitizeCreationOptions,sanitizeCreationResponse,sanitizeRequestOptions,serializeRawError,setExperiment,setExperiments,setUser,telemetry});