@corbado/observe 1.14.1 → 1.15.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.mts CHANGED
@@ -1225,6 +1225,8 @@ interface TrackerPlugin {
1225
1225
  * `explicitTimestamp ?? Date.now()`), see `eventTime()`.
1226
1226
  */
1227
1227
  readonly eventTime?: (explicitTimestamp: number | undefined) => number | undefined;
1228
+ /** @internal Maximum age of the device handle in ms, see `deviceHandleMaxAge()`. */
1229
+ readonly deviceHandleMaxAgeMs?: number;
1228
1230
  }
1229
1231
  /** @internal Serializer of the `rawError` option of operation step errors. */
1230
1232
  type RawErrorSerializer = (value: unknown, options?: SerializeRawErrorOptions) => RawErrorEnvelope | undefined;
@@ -1300,6 +1302,8 @@ declare class CorbadoTrackerCore {
1300
1302
  private fixedSourcePath?;
1301
1303
  /** Event clock of a plugin (never throws); undefined or an undefined result = `explicitTimestamp ?? Date.now()`. */
1302
1304
  private eventClock?;
1305
+ /** Device-handle maximum of a plugin; undefined = no maximum. */
1306
+ private deviceHandleMaxAgeMs?;
1303
1307
  /** @internal Shared passive page observation and per-operation context registration. */
1304
1308
  getWindowObserver(): SharedWindowObserver;
1305
1309
  /**
@@ -3348,6 +3352,20 @@ type EventTimeStamp = (explicitTimestamp: number | undefined) => number;
3348
3352
  */
3349
3353
  declare function eventTime(stamp: EventTimeStamp): TrackerPlugin;
3350
3354
 
3355
+ /**
3356
+ * Tracker plugin: the device handle (`cbo_client_env_handle`, the browser's random id) is replaced by a new one once
3357
+ * it is older than `maxAgeMs`. Without it the handle has no maximum (declared "persistent, no expiry" in the
3358
+ * collection manifest). The autocapture runtime passes the value from the build's static config, so the manifest
3359
+ * records it from `build.config`. A non-positive or non-finite value is ignored. When several plugins pass a
3360
+ * maximum, the last one wins.
3361
+ *
3362
+ * @example
3363
+ * ```ts
3364
+ * const tracker = initCore({ projectId, apiBaseUrl, plugins: [deviceHandleMaxAge(365 * 24 * 60 * 60 * 1000)] });
3365
+ * ```
3366
+ */
3367
+ declare function deviceHandleMaxAge(maxAgeMs: number): TrackerPlugin;
3368
+
3351
3369
  interface TransportMakeRequestResponse {
3352
3370
  deliveryAccepted?: boolean;
3353
3371
  statusCode?: number;
@@ -3432,26 +3450,6 @@ type StandaloneDeviceInfoSource = {
3432
3450
  /** The snapshot, marked as delivered; undefined when there is none. */
3433
3451
  take(): DeviceInfo | undefined;
3434
3452
  };
3435
- /**
3436
- * @remarks When `window` is defined, `visibilitychange` (when the document becomes hidden) and `pagehide`
3437
- * trigger a synchronous unload flush (`flushSync`). Any thrown error in that path is logged as
3438
- * "Unexpected error in queue flushSync". Sync flushes are deduplicated: once everything pending has
3439
- * been handed to a sync transport, further lifecycle signals are no-ops until something new is
3440
- * enqueued — otherwise a single navigation would resend the same batch several times
3441
- * (visibilitychange + pagehide + per-input flushKeepalive), since entries are intentionally kept
3442
- * under `durableOutbox`.
3443
- *
3444
- * Pending events are held as {@link OutboxEntry} records. When `config.durableOutbox` is enabled they are
3445
- * additionally persisted to a localStorage-backed {@link EventStore} and recovered on the next load.
3446
- * Delivery removes an entry only on a 2xx response; retryable failures back off (honoring `Retry-After`)
3447
- * up to `config.retry.maxAttempts`. Low events have a separately bounded outbox when durableLowOutbox is enabled.
3448
- *
3449
- * Flushing is timer-driven only (the flush interval); `batchSize` caps the events per request, and a
3450
- * flush drains all due work in sequential capped batches, stopping at the first failed send.
3451
- *
3452
- * Every flush carries a {@link FlushReason} that names its trigger; it is stamped onto the batch as
3453
- * `meta.flushReason` so the server can see which triggers actually deliver.
3454
- */
3455
3453
  declare class RequestQueue {
3456
3454
  private readonly logger;
3457
3455
  private transport;
@@ -3632,7 +3630,6 @@ declare class RequestQueue {
3632
3630
  private removeEntries;
3633
3631
  private rescheduleIfPending;
3634
3632
  private setupLifecycleHooks;
3635
- private writeLifecycleDebugOutput;
3636
3633
  /**
3637
3634
  * Synchronously flush pending events (and best-effort lows) during page unload.
3638
3635
  *
@@ -3825,6 +3822,20 @@ declare const DEFAULT_RELIABILITY_CONFIG: SdkReliabilityConfig;
3825
3822
  declare function parseReliabilityConfig(raw: unknown): SdkReliabilityConfig | null;
3826
3823
  /** Resolve init overrides over validated server policy, then defaults, including individual retry fields. */
3827
3824
  declare function resolveReliabilityConfig(serverConfig: SdkReliabilityConfig | undefined, overrides?: SdkReliabilityConfigOverrides): SdkReliabilityConfig;
3825
+ /** Version reported for a static config without its own `version` (see {@link staticReliabilityConfig}). */
3826
+ declare const STATIC_CONFIG_VERSION = "static";
3827
+ /**
3828
+ * The build's static config (`__CBO_SDK_CONFIG__`, JSON text): its fields over the built-in defaults, normalized and
3829
+ * clamped like a server config, with `version` defaulting to {@link STATIC_CONFIG_VERSION}. `pmd` (from
3830
+ * `fixedDataConfig`) wins over the config's `pmd` like on the server-driven path. Malformed text yields the built-in
3831
+ * defaults (logged by the caller through the returned flag). Never throws.
3832
+ *
3833
+ * @internal
3834
+ */
3835
+ declare function staticReliabilityConfig(json: string, pmd?: boolean): {
3836
+ config: SdkReliabilityConfig;
3837
+ valid: boolean;
3838
+ };
3828
3839
  /** Effective fixed data switches; every field resolved. */
3829
3840
  type ResolvedFixedDataConfig = Required<Omit<FixedDataConfig, "crossOriginSession">> & {
3830
3841
  /** Cross-origin session option as given (domain not yet checked against the page); absent when not set. */
@@ -3874,6 +3885,13 @@ declare const DEFAULT_MAX_ENTRIES = 500;
3874
3885
  * the HOST app: an unbounded outbox could make the host's own writes throw QuotaExceededError.
3875
3886
  */
3876
3887
  declare const DEFAULT_MAX_SERIALIZED_LENGTH: number;
3888
+ /** Retention of queued entries in builds with enforced retention (`__CBO_DATA_RETENTION__`): 7 days. */
3889
+ declare const OUTBOX_MAX_AGE_MS: number;
3890
+ /**
3891
+ * Capture time of a queued entry: the event's `timestamp` or the low event's `ts`, else the time inside its uuidv7
3892
+ * id. Undefined when none is known (such an entry is kept).
3893
+ */
3894
+ declare function outboxEntryTime(entry: OutboxEntry<unknown>): number | undefined;
3877
3895
  /**
3878
3896
  * Durable, localStorage-backed outbox of pending events, mirrored in memory.
3879
3897
  *
@@ -3907,6 +3925,8 @@ declare class EventStore<T = Event> {
3907
3925
  * and a shared key guarded by scoped locks would lose the cross-tab atomicity guarantee.
3908
3926
  */
3909
3927
  lockName?: string, storageKey?: string);
3928
+ /** Deletes entries older than {@link OUTBOX_MAX_AGE_MS} (they are never sent). Never throws. */
3929
+ private purgeExpired;
3910
3930
  private read;
3911
3931
  private mutate;
3912
3932
  /** Evict oldest entries until the serialized outbox fits {@link maxSerializedLength}. */
@@ -3939,6 +3959,12 @@ type WebAuthnIdentifierProjector = (value: string) => string | null | undefined;
3939
3959
  type WebAuthnIdentifierProjectors = {
3940
3960
  /** Projects creation user.id and credential response.userHandle. Missing/null inputs are not passed to the callback. */
3941
3961
  userId?: WebAuthnIdentifierProjector;
3962
+ /**
3963
+ * Only in allowlist builds (`__CBO_DATA_CEREMONY__`): keep credential ids raw (the `ac:ceremony@1` option
3964
+ * `passkeyReference`, passed by the autocapture runtime from the static config). The blocklist ignores it (it keeps
3965
+ * credential ids anyway).
3966
+ */
3967
+ passkeyReference?: boolean;
3942
3968
  };
3943
3969
  /**
3944
3970
  * Serializes WebAuthn creation options, removing `user.name` and `user.displayName`.
@@ -3970,10 +3996,11 @@ declare function sanitizeCreationResponse(value: unknown, projectors?: WebAuthnI
3970
3996
  * challenges, credential IDs, and extension inputs remain. Binary values become base64url strings.
3971
3997
  *
3972
3998
  * @param value - Native publicKey options, a JSON object, or JSON text; not an application envelope.
3999
+ * @param options - Only in allowlist builds: `passkeyReference` keeps the allowed credential ids raw. Ignored otherwise.
3973
4000
  * @returns JSON text, or undefined for malformed or unserializable input.
3974
4001
  * @remarks Does not mutate input or call toJSON. No tracker initialization is required.
3975
4002
  */
3976
- declare function sanitizeRequestOptions(value: unknown): string | undefined;
4003
+ declare function sanitizeRequestOptions(value: unknown, options?: WebAuthnIdentifierProjectors): string | undefined;
3977
4004
  /**
3978
4005
  * Serializes an authentication credential, removing `response.signature` and `clientExtensionResults.prf.results`.
3979
4006
  * `response.userHandle` is omitted unless a projector is supplied. Other fields remain, including credential IDs.
@@ -3986,6 +4013,41 @@ declare function sanitizeRequestOptions(value: unknown): string | undefined;
3986
4013
  */
3987
4014
  declare function sanitizeAssertionResponse(value: unknown, projectors?: WebAuthnIdentifierProjectors): string | undefined;
3988
4015
 
4016
+ /**
4017
+ * `ac:ceremony@1` (collection manifest v2, gap G1): the WebAuthn telemetry ALLOWLIST. Only the fields listed in the
4018
+ * rules below leave; everything else (unknown keys, future fields, the signature, PRF and large-blob contents, the
4019
+ * user's name, the duplicate public key of `getPublicKey()`) is never read. The output keeps the format of the
4020
+ * blocklist sanitizer (`webauthn-payloads.ts`), so the backend parses it unchanged:
4021
+ * - the challenge is replaced by zeros of the same length, in the options and inside `clientDataJSON`;
4022
+ * - a present user handle is replaced by a fixed placeholder (only that it exists remains), unless a projector
4023
+ * supplies a value;
4024
+ * - credential ids (allow / exclude lists, `id` / `rawId`, inside the attestation's authenticator data) are replaced
4025
+ * by random stand-ins of the same byte length that are equal for equal ids within this page load only, unless the
4026
+ * project opts into `passkeyReference` (then they stay raw);
4027
+ * - the attestation object and authenticator data stay as they are (no CBOR rewriting; only same-length credential id
4028
+ * bytes are swapped without `passkeyReference`).
4029
+ *
4030
+ * Pure, synchronous, never throws, never mutates its input, never calls `toJSON`. Binary values become base64url.
4031
+ */
4032
+
4033
+ /** Options of the allowlist projection. */
4034
+ type WebAuthnCeremonyOptions = WebAuthnIdentifierProjectors & {
4035
+ /**
4036
+ * Keep credential ids raw (the project's declaration `passkeyReference: true`): recognizes the same passkey across
4037
+ * sign-ins. Default false: page-scoped stand-ins. The autocapture runtime passes it from the project's declaration
4038
+ * (static config), so the manifest records it from `build.config`.
4039
+ */
4040
+ passkeyReference?: boolean;
4041
+ };
4042
+ /** Allowlist projection of WebAuthn creation options (see the module comment). JSON text or undefined. */
4043
+ declare function ceremonyCreationOptions(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4044
+ /** Allowlist projection of WebAuthn request (authentication) options. JSON text or undefined. */
4045
+ declare function ceremonyRequestOptions(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4046
+ /** Allowlist projection of a registration credential. JSON text or undefined. */
4047
+ declare function ceremonyCreationResponse(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4048
+ /** Allowlist projection of an authentication credential. JSON text or undefined. */
4049
+ declare function ceremonyAssertionResponse(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4050
+
3989
4051
  /**
3990
4052
  * Create a tracker and make it the default for all package-level helpers.
3991
4053
  * Each call replaces the default. For multiple projects, retain the returned instances and call
@@ -4032,4 +4094,4 @@ declare function telemetry(level: TelemetryLevel, message: string): void;
4032
4094
  /** Destroy the default tracker (see {@link CorbadoTrackerCore.destroy}) and clear the default. */
4033
4095
  declare function destroy(): Promise<void>;
4034
4096
 
4035
- 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_CACHE_STORAGE_KEY, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type ConfigCacheRecord, type Conversion, CookieStorage, type CookieStorageOptions, CorbadoTracker, CorbadoTrackerCore, type CreateLoggerOptions, type CrossOriginSessionConfig, 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 EmailLinkContinuationConfig, EmailLinkContinuationOperation, 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 EventTimeStamp, type EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type HandoffStepHelper, 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, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, 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 PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, ProbeLane, type ProbePending, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, READER_CATEGORIES, READER_EXPOSURES, type RawErrorEnvelope, type RawErrorSerializer, type ReaderCategory, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderOrigin, type ReaderStorage, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkInputHandoff, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SdkWebAuthnError, type SdkWebAuthnPayload, type SerializeRawErrorOptions, type SessionBridge, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathPolicy, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerCoreOptions, type TrackerOptions, type TrackerPlugin, type TrackerStorageEngine, 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, type WithHandoffs, appConfirmationOperationFull, authDecisionFinished, authDecisionStarted, cacheConfigRecord, captchaOperationFull, clearExperiment, clearExperiments, continueEmailLinkOperation, conversion, cookieStorage, createLogger, crossOriginSession, destroy, detectPasswordManagerExtensions, emailLinkOperationFull, emailOtpOperationFull, eventTime, fixedSourcePath, formOperationFull, getCrossOriginContext, getExperiments, getSessionId, getTracker, getTrackerCore, init, initCore, installProbeLane, keyRegistrationOperationFull, keySigningOperationFull, loadCachedConfig, loadConfigRecord, logError, logInfo, maskedSourcePath, namespacedKey, parseReliabilityConfig, passkeyDeletionOperationFull, passkeyEnrollmentFullOperation, passkeyLoginFullOperation, passwordEnrollmentFullOperation, passwordLoginFullOperation, probe, probes, provideDataOperationFull, provideIdentifierOperationFull, rawErrors, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setCrossOriginContext, setExperiment, setExperiments, setFlowTags, setUser, smsOtpOperationFull, socialLoginOperationFull, ssoLoginOperationFull, telemetry, totpOperationFull, trackSubflowError, trustedDeviceCheckOperationFull, trustedDeviceEnrollmentOperationFull, utf8Length };
4097
+ 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_CACHE_STORAGE_KEY, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type ConfigCacheRecord, type Conversion, CookieStorage, type CookieStorageOptions, CorbadoTracker, CorbadoTrackerCore, type CreateLoggerOptions, type CrossOriginSessionConfig, 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 EmailLinkContinuationConfig, EmailLinkContinuationOperation, 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 EventTimeStamp, type EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type HandoffStepHelper, 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_MAX_AGE_MS, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, 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 PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, ProbeLane, type ProbePending, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, READER_CATEGORIES, READER_EXPOSURES, type RawErrorEnvelope, type RawErrorSerializer, type ReaderCategory, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderOrigin, type ReaderStorage, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, STATIC_CONFIG_VERSION, type SdkInfo, type SdkInputHandoff, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SdkWebAuthnError, type SdkWebAuthnPayload, type SerializeRawErrorOptions, type SessionBridge, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathPolicy, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerCoreOptions, type TrackerOptions, type TrackerPlugin, type TrackerStorageEngine, 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnCeremonyOptions, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, type WithHandoffs, appConfirmationOperationFull, authDecisionFinished, authDecisionStarted, cacheConfigRecord, captchaOperationFull, ceremonyAssertionResponse, ceremonyCreationOptions, ceremonyCreationResponse, ceremonyRequestOptions, clearExperiment, clearExperiments, continueEmailLinkOperation, conversion, cookieStorage, createLogger, crossOriginSession, destroy, detectPasswordManagerExtensions, deviceHandleMaxAge, emailLinkOperationFull, emailOtpOperationFull, eventTime, fixedSourcePath, formOperationFull, getCrossOriginContext, getExperiments, getSessionId, getTracker, getTrackerCore, init, initCore, installProbeLane, keyRegistrationOperationFull, keySigningOperationFull, loadCachedConfig, loadConfigRecord, logError, logInfo, maskedSourcePath, namespacedKey, outboxEntryTime, parseReliabilityConfig, passkeyDeletionOperationFull, passkeyEnrollmentFullOperation, passkeyLoginFullOperation, passwordEnrollmentFullOperation, passwordLoginFullOperation, probe, probes, provideDataOperationFull, provideIdentifierOperationFull, rawErrors, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setCrossOriginContext, setExperiment, setExperiments, setFlowTags, setUser, smsOtpOperationFull, socialLoginOperationFull, ssoLoginOperationFull, staticReliabilityConfig, telemetry, totpOperationFull, trackSubflowError, trustedDeviceCheckOperationFull, trustedDeviceEnrollmentOperationFull, utf8Length };
package/dist/index.d.ts CHANGED
@@ -1225,6 +1225,8 @@ interface TrackerPlugin {
1225
1225
  * `explicitTimestamp ?? Date.now()`), see `eventTime()`.
1226
1226
  */
1227
1227
  readonly eventTime?: (explicitTimestamp: number | undefined) => number | undefined;
1228
+ /** @internal Maximum age of the device handle in ms, see `deviceHandleMaxAge()`. */
1229
+ readonly deviceHandleMaxAgeMs?: number;
1228
1230
  }
1229
1231
  /** @internal Serializer of the `rawError` option of operation step errors. */
1230
1232
  type RawErrorSerializer = (value: unknown, options?: SerializeRawErrorOptions) => RawErrorEnvelope | undefined;
@@ -1300,6 +1302,8 @@ declare class CorbadoTrackerCore {
1300
1302
  private fixedSourcePath?;
1301
1303
  /** Event clock of a plugin (never throws); undefined or an undefined result = `explicitTimestamp ?? Date.now()`. */
1302
1304
  private eventClock?;
1305
+ /** Device-handle maximum of a plugin; undefined = no maximum. */
1306
+ private deviceHandleMaxAgeMs?;
1303
1307
  /** @internal Shared passive page observation and per-operation context registration. */
1304
1308
  getWindowObserver(): SharedWindowObserver;
1305
1309
  /**
@@ -3348,6 +3352,20 @@ type EventTimeStamp = (explicitTimestamp: number | undefined) => number;
3348
3352
  */
3349
3353
  declare function eventTime(stamp: EventTimeStamp): TrackerPlugin;
3350
3354
 
3355
+ /**
3356
+ * Tracker plugin: the device handle (`cbo_client_env_handle`, the browser's random id) is replaced by a new one once
3357
+ * it is older than `maxAgeMs`. Without it the handle has no maximum (declared "persistent, no expiry" in the
3358
+ * collection manifest). The autocapture runtime passes the value from the build's static config, so the manifest
3359
+ * records it from `build.config`. A non-positive or non-finite value is ignored. When several plugins pass a
3360
+ * maximum, the last one wins.
3361
+ *
3362
+ * @example
3363
+ * ```ts
3364
+ * const tracker = initCore({ projectId, apiBaseUrl, plugins: [deviceHandleMaxAge(365 * 24 * 60 * 60 * 1000)] });
3365
+ * ```
3366
+ */
3367
+ declare function deviceHandleMaxAge(maxAgeMs: number): TrackerPlugin;
3368
+
3351
3369
  interface TransportMakeRequestResponse {
3352
3370
  deliveryAccepted?: boolean;
3353
3371
  statusCode?: number;
@@ -3432,26 +3450,6 @@ type StandaloneDeviceInfoSource = {
3432
3450
  /** The snapshot, marked as delivered; undefined when there is none. */
3433
3451
  take(): DeviceInfo | undefined;
3434
3452
  };
3435
- /**
3436
- * @remarks When `window` is defined, `visibilitychange` (when the document becomes hidden) and `pagehide`
3437
- * trigger a synchronous unload flush (`flushSync`). Any thrown error in that path is logged as
3438
- * "Unexpected error in queue flushSync". Sync flushes are deduplicated: once everything pending has
3439
- * been handed to a sync transport, further lifecycle signals are no-ops until something new is
3440
- * enqueued — otherwise a single navigation would resend the same batch several times
3441
- * (visibilitychange + pagehide + per-input flushKeepalive), since entries are intentionally kept
3442
- * under `durableOutbox`.
3443
- *
3444
- * Pending events are held as {@link OutboxEntry} records. When `config.durableOutbox` is enabled they are
3445
- * additionally persisted to a localStorage-backed {@link EventStore} and recovered on the next load.
3446
- * Delivery removes an entry only on a 2xx response; retryable failures back off (honoring `Retry-After`)
3447
- * up to `config.retry.maxAttempts`. Low events have a separately bounded outbox when durableLowOutbox is enabled.
3448
- *
3449
- * Flushing is timer-driven only (the flush interval); `batchSize` caps the events per request, and a
3450
- * flush drains all due work in sequential capped batches, stopping at the first failed send.
3451
- *
3452
- * Every flush carries a {@link FlushReason} that names its trigger; it is stamped onto the batch as
3453
- * `meta.flushReason` so the server can see which triggers actually deliver.
3454
- */
3455
3453
  declare class RequestQueue {
3456
3454
  private readonly logger;
3457
3455
  private transport;
@@ -3632,7 +3630,6 @@ declare class RequestQueue {
3632
3630
  private removeEntries;
3633
3631
  private rescheduleIfPending;
3634
3632
  private setupLifecycleHooks;
3635
- private writeLifecycleDebugOutput;
3636
3633
  /**
3637
3634
  * Synchronously flush pending events (and best-effort lows) during page unload.
3638
3635
  *
@@ -3825,6 +3822,20 @@ declare const DEFAULT_RELIABILITY_CONFIG: SdkReliabilityConfig;
3825
3822
  declare function parseReliabilityConfig(raw: unknown): SdkReliabilityConfig | null;
3826
3823
  /** Resolve init overrides over validated server policy, then defaults, including individual retry fields. */
3827
3824
  declare function resolveReliabilityConfig(serverConfig: SdkReliabilityConfig | undefined, overrides?: SdkReliabilityConfigOverrides): SdkReliabilityConfig;
3825
+ /** Version reported for a static config without its own `version` (see {@link staticReliabilityConfig}). */
3826
+ declare const STATIC_CONFIG_VERSION = "static";
3827
+ /**
3828
+ * The build's static config (`__CBO_SDK_CONFIG__`, JSON text): its fields over the built-in defaults, normalized and
3829
+ * clamped like a server config, with `version` defaulting to {@link STATIC_CONFIG_VERSION}. `pmd` (from
3830
+ * `fixedDataConfig`) wins over the config's `pmd` like on the server-driven path. Malformed text yields the built-in
3831
+ * defaults (logged by the caller through the returned flag). Never throws.
3832
+ *
3833
+ * @internal
3834
+ */
3835
+ declare function staticReliabilityConfig(json: string, pmd?: boolean): {
3836
+ config: SdkReliabilityConfig;
3837
+ valid: boolean;
3838
+ };
3828
3839
  /** Effective fixed data switches; every field resolved. */
3829
3840
  type ResolvedFixedDataConfig = Required<Omit<FixedDataConfig, "crossOriginSession">> & {
3830
3841
  /** Cross-origin session option as given (domain not yet checked against the page); absent when not set. */
@@ -3874,6 +3885,13 @@ declare const DEFAULT_MAX_ENTRIES = 500;
3874
3885
  * the HOST app: an unbounded outbox could make the host's own writes throw QuotaExceededError.
3875
3886
  */
3876
3887
  declare const DEFAULT_MAX_SERIALIZED_LENGTH: number;
3888
+ /** Retention of queued entries in builds with enforced retention (`__CBO_DATA_RETENTION__`): 7 days. */
3889
+ declare const OUTBOX_MAX_AGE_MS: number;
3890
+ /**
3891
+ * Capture time of a queued entry: the event's `timestamp` or the low event's `ts`, else the time inside its uuidv7
3892
+ * id. Undefined when none is known (such an entry is kept).
3893
+ */
3894
+ declare function outboxEntryTime(entry: OutboxEntry<unknown>): number | undefined;
3877
3895
  /**
3878
3896
  * Durable, localStorage-backed outbox of pending events, mirrored in memory.
3879
3897
  *
@@ -3907,6 +3925,8 @@ declare class EventStore<T = Event> {
3907
3925
  * and a shared key guarded by scoped locks would lose the cross-tab atomicity guarantee.
3908
3926
  */
3909
3927
  lockName?: string, storageKey?: string);
3928
+ /** Deletes entries older than {@link OUTBOX_MAX_AGE_MS} (they are never sent). Never throws. */
3929
+ private purgeExpired;
3910
3930
  private read;
3911
3931
  private mutate;
3912
3932
  /** Evict oldest entries until the serialized outbox fits {@link maxSerializedLength}. */
@@ -3939,6 +3959,12 @@ type WebAuthnIdentifierProjector = (value: string) => string | null | undefined;
3939
3959
  type WebAuthnIdentifierProjectors = {
3940
3960
  /** Projects creation user.id and credential response.userHandle. Missing/null inputs are not passed to the callback. */
3941
3961
  userId?: WebAuthnIdentifierProjector;
3962
+ /**
3963
+ * Only in allowlist builds (`__CBO_DATA_CEREMONY__`): keep credential ids raw (the `ac:ceremony@1` option
3964
+ * `passkeyReference`, passed by the autocapture runtime from the static config). The blocklist ignores it (it keeps
3965
+ * credential ids anyway).
3966
+ */
3967
+ passkeyReference?: boolean;
3942
3968
  };
3943
3969
  /**
3944
3970
  * Serializes WebAuthn creation options, removing `user.name` and `user.displayName`.
@@ -3970,10 +3996,11 @@ declare function sanitizeCreationResponse(value: unknown, projectors?: WebAuthnI
3970
3996
  * challenges, credential IDs, and extension inputs remain. Binary values become base64url strings.
3971
3997
  *
3972
3998
  * @param value - Native publicKey options, a JSON object, or JSON text; not an application envelope.
3999
+ * @param options - Only in allowlist builds: `passkeyReference` keeps the allowed credential ids raw. Ignored otherwise.
3973
4000
  * @returns JSON text, or undefined for malformed or unserializable input.
3974
4001
  * @remarks Does not mutate input or call toJSON. No tracker initialization is required.
3975
4002
  */
3976
- declare function sanitizeRequestOptions(value: unknown): string | undefined;
4003
+ declare function sanitizeRequestOptions(value: unknown, options?: WebAuthnIdentifierProjectors): string | undefined;
3977
4004
  /**
3978
4005
  * Serializes an authentication credential, removing `response.signature` and `clientExtensionResults.prf.results`.
3979
4006
  * `response.userHandle` is omitted unless a projector is supplied. Other fields remain, including credential IDs.
@@ -3986,6 +4013,41 @@ declare function sanitizeRequestOptions(value: unknown): string | undefined;
3986
4013
  */
3987
4014
  declare function sanitizeAssertionResponse(value: unknown, projectors?: WebAuthnIdentifierProjectors): string | undefined;
3988
4015
 
4016
+ /**
4017
+ * `ac:ceremony@1` (collection manifest v2, gap G1): the WebAuthn telemetry ALLOWLIST. Only the fields listed in the
4018
+ * rules below leave; everything else (unknown keys, future fields, the signature, PRF and large-blob contents, the
4019
+ * user's name, the duplicate public key of `getPublicKey()`) is never read. The output keeps the format of the
4020
+ * blocklist sanitizer (`webauthn-payloads.ts`), so the backend parses it unchanged:
4021
+ * - the challenge is replaced by zeros of the same length, in the options and inside `clientDataJSON`;
4022
+ * - a present user handle is replaced by a fixed placeholder (only that it exists remains), unless a projector
4023
+ * supplies a value;
4024
+ * - credential ids (allow / exclude lists, `id` / `rawId`, inside the attestation's authenticator data) are replaced
4025
+ * by random stand-ins of the same byte length that are equal for equal ids within this page load only, unless the
4026
+ * project opts into `passkeyReference` (then they stay raw);
4027
+ * - the attestation object and authenticator data stay as they are (no CBOR rewriting; only same-length credential id
4028
+ * bytes are swapped without `passkeyReference`).
4029
+ *
4030
+ * Pure, synchronous, never throws, never mutates its input, never calls `toJSON`. Binary values become base64url.
4031
+ */
4032
+
4033
+ /** Options of the allowlist projection. */
4034
+ type WebAuthnCeremonyOptions = WebAuthnIdentifierProjectors & {
4035
+ /**
4036
+ * Keep credential ids raw (the project's declaration `passkeyReference: true`): recognizes the same passkey across
4037
+ * sign-ins. Default false: page-scoped stand-ins. The autocapture runtime passes it from the project's declaration
4038
+ * (static config), so the manifest records it from `build.config`.
4039
+ */
4040
+ passkeyReference?: boolean;
4041
+ };
4042
+ /** Allowlist projection of WebAuthn creation options (see the module comment). JSON text or undefined. */
4043
+ declare function ceremonyCreationOptions(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4044
+ /** Allowlist projection of WebAuthn request (authentication) options. JSON text or undefined. */
4045
+ declare function ceremonyRequestOptions(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4046
+ /** Allowlist projection of a registration credential. JSON text or undefined. */
4047
+ declare function ceremonyCreationResponse(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4048
+ /** Allowlist projection of an authentication credential. JSON text or undefined. */
4049
+ declare function ceremonyAssertionResponse(value: unknown, options?: WebAuthnCeremonyOptions): string | undefined;
4050
+
3989
4051
  /**
3990
4052
  * Create a tracker and make it the default for all package-level helpers.
3991
4053
  * Each call replaces the default. For multiple projects, retain the returned instances and call
@@ -4032,4 +4094,4 @@ declare function telemetry(level: TelemetryLevel, message: string): void;
4032
4094
  /** Destroy the default tracker (see {@link CorbadoTrackerCore.destroy}) and clear the default. */
4033
4095
  declare function destroy(): Promise<void>;
4034
4096
 
4035
- 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_CACHE_STORAGE_KEY, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type ConfigCacheRecord, type Conversion, CookieStorage, type CookieStorageOptions, CorbadoTracker, CorbadoTrackerCore, type CreateLoggerOptions, type CrossOriginSessionConfig, 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 EmailLinkContinuationConfig, EmailLinkContinuationOperation, 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 EventTimeStamp, type EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type HandoffStepHelper, 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, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, 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 PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, ProbeLane, type ProbePending, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, READER_CATEGORIES, READER_EXPOSURES, type RawErrorEnvelope, type RawErrorSerializer, type ReaderCategory, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderOrigin, type ReaderStorage, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkInputHandoff, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SdkWebAuthnError, type SdkWebAuthnPayload, type SerializeRawErrorOptions, type SessionBridge, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathPolicy, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerCoreOptions, type TrackerOptions, type TrackerPlugin, type TrackerStorageEngine, 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, type WithHandoffs, appConfirmationOperationFull, authDecisionFinished, authDecisionStarted, cacheConfigRecord, captchaOperationFull, clearExperiment, clearExperiments, continueEmailLinkOperation, conversion, cookieStorage, createLogger, crossOriginSession, destroy, detectPasswordManagerExtensions, emailLinkOperationFull, emailOtpOperationFull, eventTime, fixedSourcePath, formOperationFull, getCrossOriginContext, getExperiments, getSessionId, getTracker, getTrackerCore, init, initCore, installProbeLane, keyRegistrationOperationFull, keySigningOperationFull, loadCachedConfig, loadConfigRecord, logError, logInfo, maskedSourcePath, namespacedKey, parseReliabilityConfig, passkeyDeletionOperationFull, passkeyEnrollmentFullOperation, passkeyLoginFullOperation, passwordEnrollmentFullOperation, passwordLoginFullOperation, probe, probes, provideDataOperationFull, provideIdentifierOperationFull, rawErrors, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setCrossOriginContext, setExperiment, setExperiments, setFlowTags, setUser, smsOtpOperationFull, socialLoginOperationFull, ssoLoginOperationFull, telemetry, totpOperationFull, trackSubflowError, trustedDeviceCheckOperationFull, trustedDeviceEnrollmentOperationFull, utf8Length };
4097
+ 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_CACHE_STORAGE_KEY, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type ConfigCacheRecord, type Conversion, CookieStorage, type CookieStorageOptions, CorbadoTracker, CorbadoTrackerCore, type CreateLoggerOptions, type CrossOriginSessionConfig, 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 EmailLinkContinuationConfig, EmailLinkContinuationOperation, 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 EventTimeStamp, type EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type HandoffStepHelper, 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_MAX_AGE_MS, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, 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 PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, ProbeLane, type ProbePending, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, READER_CATEGORIES, READER_EXPOSURES, type RawErrorEnvelope, type RawErrorSerializer, type ReaderCategory, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderOrigin, type ReaderStorage, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, STATIC_CONFIG_VERSION, type SdkInfo, type SdkInputHandoff, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SdkWebAuthnError, type SdkWebAuthnPayload, type SerializeRawErrorOptions, type SessionBridge, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathPolicy, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerCoreOptions, type TrackerOptions, type TrackerPlugin, type TrackerStorageEngine, 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnCeremonyOptions, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, type WithHandoffs, appConfirmationOperationFull, authDecisionFinished, authDecisionStarted, cacheConfigRecord, captchaOperationFull, ceremonyAssertionResponse, ceremonyCreationOptions, ceremonyCreationResponse, ceremonyRequestOptions, clearExperiment, clearExperiments, continueEmailLinkOperation, conversion, cookieStorage, createLogger, crossOriginSession, destroy, detectPasswordManagerExtensions, deviceHandleMaxAge, emailLinkOperationFull, emailOtpOperationFull, eventTime, fixedSourcePath, formOperationFull, getCrossOriginContext, getExperiments, getSessionId, getTracker, getTrackerCore, init, initCore, installProbeLane, keyRegistrationOperationFull, keySigningOperationFull, loadCachedConfig, loadConfigRecord, logError, logInfo, maskedSourcePath, namespacedKey, outboxEntryTime, parseReliabilityConfig, passkeyDeletionOperationFull, passkeyEnrollmentFullOperation, passkeyLoginFullOperation, passwordEnrollmentFullOperation, passwordLoginFullOperation, probe, probes, provideDataOperationFull, provideIdentifierOperationFull, rawErrors, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setCrossOriginContext, setExperiment, setExperiments, setFlowTags, setUser, smsOtpOperationFull, socialLoginOperationFull, ssoLoginOperationFull, staticReliabilityConfig, telemetry, totpOperationFull, trackSubflowError, trustedDeviceCheckOperationFull, trustedDeviceEnrollmentOperationFull, utf8Length };