@corbado/observe 0.14.0 → 0.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.ts CHANGED
@@ -148,6 +148,12 @@ type AuthDecisionFinished = {
148
148
  explicitDecisionValue?: string;
149
149
  };
150
150
  type StepOptions = {
151
+ /** Semantic control that explicitly initiated this step; omitted when unknown. */
152
+ initiator?: LowEventInitiator;
153
+ /** @internal Session captured with the operation start; never sent as event metadata. */
154
+ captureSessionId?: string;
155
+ /** @internal Capture anchor supplied by operation helpers. */
156
+ subflowStartEventId?: string;
151
157
  /** @deprecated Use tracker.setUser() within the active flow instead. */
152
158
  userReference?: UserReference;
153
159
  explicitTimestamp?: number;
@@ -178,7 +184,22 @@ interface CustomEvent extends BaseEvent {
178
184
  data?: Record<string, unknown>;
179
185
  }
180
186
  type Event = PredefinedEvent | CustomEvent;
187
+ type LowEventSourceKind = "input" | "input-group" | "ceremony" | "window";
188
+ type LowEventFieldRole = "password" | "identifier" | "otp" | "data";
189
+ type LowEventInitiator = `input-${LowEventFieldRole}` | "passkey-button" | "automatic" | "unknown";
190
+ type LowEventInputEffect = "fill" | "modify" | "clear";
181
191
  interface LowEvent {
192
+ /** Per-page uint32 observation order; reserved before batching and retained on retry. */
193
+ captureSeq?: number;
194
+ captureVersion?: number;
195
+ pageId?: string;
196
+ initiator?: LowEventInitiator;
197
+ inputEffect?: LowEventInputEffect;
198
+ /** Immutable delivery identity; absent on legacy records. */
199
+ id?: string;
200
+ subflowStartEventId?: string;
201
+ sourceKind?: LowEventSourceKind;
202
+ fieldRole?: LowEventFieldRole;
182
203
  lowType: string;
183
204
  ts: number;
184
205
  durationMs?: number;
@@ -233,6 +254,10 @@ interface EventBatchMeta {
233
254
  configVersion?: string;
234
255
  }
235
256
  interface EventMeta {
257
+ initiator?: LowEventInitiator;
258
+ captureVersion?: number;
259
+ pageId?: string;
260
+ subflowStartEventId?: string;
236
261
  trackingSourcePath: string;
237
262
  /**
238
263
  * Per-tab id (uuidv7, `sessionStorage`-scoped) of the tab that CREATED this event, stamped at
@@ -242,6 +267,8 @@ interface EventMeta {
242
267
  tabId?: string;
243
268
  }
244
269
  interface EventBatch {
270
+ /** Request durable acceptance for replayable lows. */
271
+ deliveryAck?: boolean;
245
272
  sessionId: string;
246
273
  events: Event[];
247
274
  sdk: SdkInfo;
@@ -337,6 +364,8 @@ interface SdkReliabilityConfig {
337
364
  flushIntervalMs: number;
338
365
  /** Persist queued events to a durable outbox so they survive reloads, redirects and context switches. */
339
366
  durableOutbox: boolean;
367
+ /** Persist lows in a separate bounded outbox; defaults to disabled for older configs. */
368
+ durableLowOutbox?: boolean;
340
369
  /** Use keepalive/sendBeacon transport for flushes triggered during page unload. */
341
370
  beaconKeepalive: boolean;
342
371
  /** Maintain session continuity across reloads/tabs by persisting the session id in localStorage. */
@@ -440,6 +469,41 @@ interface CreateLoggerOptions {
440
469
  }
441
470
  declare function createLogger(options: CreateLoggerOptions): Logger;
442
471
 
472
+ type WindowCaptureContext = Pick<LowEvent, "subflowStartEventId" | "fieldRole" | "initiator"> & {
473
+ sessionId?: string;
474
+ };
475
+ /** One passive observer per tracker. Field/ceremony collectors register context, not DOM listeners. */
476
+ declare class SharedWindowObserver {
477
+ private logger;
478
+ private enqueue;
479
+ private flushKeepalive;
480
+ private inputs;
481
+ private ceremonies;
482
+ private removers;
483
+ private lastBlur?;
484
+ private bracket?;
485
+ private unrelatedPointerAt;
486
+ private destroyed;
487
+ private viewportContext;
488
+ private resize;
489
+ private scroll;
490
+ constructor(logger: Logger, enqueue: (low: LowEvent, sessionId?: string) => void, flushKeepalive: () => void);
491
+ registerInputs(fields: readonly HTMLInputElement[], context: () => WindowCaptureContext, flush: () => void): () => void;
492
+ beginCeremony(context: WindowCaptureContext): {
493
+ settle: (tailMs: number) => void;
494
+ destroy: () => void;
495
+ };
496
+ private context;
497
+ private findInput;
498
+ /** Flush all registered input batches before a high-level lifecycle boundary. */
499
+ flushInputs(): void;
500
+ private emit;
501
+ private listen;
502
+ private extendViewport;
503
+ private observeNavigation;
504
+ destroy(): void;
505
+ }
506
+
443
507
  /**
444
508
  * Where low events go. `flushKeepalive` is requested on `pagehide` teardown so lows batched after
445
509
  * the queue's own lifecycle flush still get out; operations wire it to the client's
@@ -447,49 +511,27 @@ declare function createLogger(options: CreateLoggerOptions): Logger;
447
511
  * (default true = historical behavior, can be disabled remotely).
448
512
  */
449
513
  interface LowEventSink {
514
+ reserveCaptureSeq?(): number;
450
515
  enqueueLowEvent(low: LowEvent): void;
451
516
  flushKeepalive(): void;
517
+ registerInputs?(fields: readonly HTMLInputElement[], flush: () => void): () => void;
518
+ beginCeremony?(initiator?: LowEventInitiator): {
519
+ settle(tailMs: number): void;
520
+ destroy(): void;
521
+ };
452
522
  }
453
523
 
454
- /**
455
- * Collects window-scoped "low" events around a WebAuthn ceremony: window focus/blur, document
456
- * visibility changes and visualviewport resize/scroll (batched). The listener set mirrors
457
- * connect-react's `installLowEventWindowListeners`; the event names match
458
- * {@link LowEventInputTracker}'s vocabulary.
459
- *
460
- * Unlike {@link LowEventInputTracker} (anchored to an input field, active for the owning
461
- * operation's lifetime), this tracker is armed only for the ceremony window: the owning operation
462
- * arms it on `ceremony.start()` and schedules disarming shortly after the ceremony settles, so
463
- * signals from the picker closing (focus return, dismiss animations) are still captured.
464
- *
465
- * Never triggers a flush — low events ride along on the queue's existing flush triggers.
466
- */
524
+ /** Ceremony context lease on the shared observer. Never installs its own window listeners. */
467
525
  declare class LowEventWindowTracker {
468
526
  private logger;
469
527
  private sink;
470
- private armed;
528
+ private lease?;
471
529
  private destroyed;
472
- private disarmTimer;
473
- private resizeBatcher;
474
- private scrollBatcher;
475
- private boundHandlers;
476
530
  constructor(logger: Logger, sink: LowEventSink);
477
- /** Start listening. Idempotent; cancels a pending scheduled disarm (ceremony retry). */
478
- arm(): void;
479
- /**
480
- * Disarm after `delayMs`. The tail keeps the listeners alive briefly after the ceremony settles:
481
- * focus return and picker dismiss animations land after the WebAuthn promise resolves/rejects.
482
- */
531
+ arm(initiator?: LowEventInitiator, conditional?: boolean): void;
483
532
  scheduleDisarm(delayMs: number): void;
484
- /** Stop listening and flush the viewport batchers into the queue. Idempotent. */
485
533
  disarm(): void;
486
- /** Disarm and refuse any further arming; for the owning operation's destroy(). */
487
534
  destroy(): void;
488
- private cancelScheduledDisarm;
489
- private pushLow;
490
- private handleVisibilityChange;
491
- private flushBatchers;
492
- private wrapHandler;
493
535
  }
494
536
 
495
537
  /**
@@ -507,6 +549,17 @@ type StepHelper<TStart = {}, TFinished = {}, TTypedError = never> = {
507
549
  declare abstract class OperationFull {
508
550
  private tracker;
509
551
  private operationName;
552
+ private startReference?;
553
+ private captureSpecType?;
554
+ private captureSessionId?;
555
+ private readonly lowFlushers;
556
+ private readonly lowPrefillCapturers;
557
+ protected lowEventSink(sourceKind: LowEventSourceKind, fieldRole?: LowEventFieldRole): LowEventSink;
558
+ protected createLowCollector<T extends {
559
+ capturePrefill(newCapture?: boolean): void;
560
+ }>(create: () => T): T | undefined;
561
+ protected registerLowFlusher(flush: () => void): void;
562
+ private captureOptions;
510
563
  constructor(tracker: CorbadoTracker, operationName: SubflowType);
511
564
  /**
512
565
  * Emits an additional subflow_started; construction already emits the initial start.
@@ -514,6 +567,13 @@ declare abstract class OperationFull {
514
567
  * plus free-form extras; see SubflowTrigger for programmatic interaction suppression.
515
568
  */
516
569
  subflowStart(data: any, options?: StepOptions): void;
570
+ /**
571
+ * Capture values initialized by the application after constructing this operation, without
572
+ * dispatching DOM input events. Call immediately after initialization, before user editing.
573
+ * Each field/group emits at most one prefill per subflow start; values are never recorded.
574
+ */
575
+ capturePrefill(): void;
576
+ private captureInputPrefills;
517
577
  /**
518
578
  * @deprecated `subflow_trigger` will be removed in the next major version.
519
579
  */
@@ -596,13 +656,22 @@ type EmailOTPOperationPostResponseStart = {
596
656
  explicitSpecType?: EmailOTPOperationSpecType;
597
657
  };
598
658
  type EmailOTPOperationConfig = {
659
+ /** Email domain only, no full address. */
660
+ emailDomain?: string;
661
+ /** One real input, or an ordered group representing one OTP. */
662
+ inputHtmlField?: HTMLInputElement;
663
+ inputHtmlFields?: HTMLInputElement[];
599
664
  explicitSpecType?: EmailOTPOperationSpecType;
600
665
  };
601
666
  declare class EmailOtpOperationFull extends OperationFull {
667
+ private lowEventTracker?;
602
668
  readonly send: StepHelper<EmailOTPOperationSendOTPStart>;
603
669
  readonly postResponse: StepHelper<EmailOTPOperationPostResponseStart>;
604
670
  readonly resend: StepHelper;
605
671
  constructor(tracker: CorbadoTracker, config?: EmailOTPOperationConfig);
672
+ /** Rebind the ordered OTP group without starting a new subflow. An empty list detaches it. */
673
+ setInputFields(fields: readonly HTMLInputElement[]): void;
674
+ destroy(): void;
606
675
  }
607
676
 
608
677
  type SmsOTPOperationSpecType = "sms-otp-login" | "sms-otp-enrollment";
@@ -610,12 +679,19 @@ type SmsOTPOperationPostResponseStart = {
610
679
  explicitSpecType?: SmsOTPOperationSpecType;
611
680
  };
612
681
  type SmsOTPOperationConfig = {
682
+ /** One real input, or an ordered group representing one OTP. */
683
+ inputHtmlField?: HTMLInputElement;
684
+ inputHtmlFields?: HTMLInputElement[];
613
685
  explicitSpecType?: SmsOTPOperationSpecType;
614
686
  };
615
687
  declare class SmsOtpOperationFull extends OperationFull {
688
+ private lowEventTracker?;
616
689
  readonly postResponse: StepHelper<SmsOTPOperationPostResponseStart>;
617
690
  readonly resend: StepHelper;
618
691
  constructor(tracker: CorbadoTracker, config?: SmsOTPOperationConfig);
692
+ /** Rebind the ordered OTP group without starting a new subflow. An empty list detaches it. */
693
+ setInputFields(fields: readonly HTMLInputElement[]): void;
694
+ destroy(): void;
619
695
  }
620
696
 
621
697
  type EmailLinkOperationSpecType = "email-link-login" | "email-link-enrollment";
@@ -725,8 +801,7 @@ type PasswordLoginConfig = {
725
801
  /** The password input field. When set, low-event input tracking is attached to it. */
726
802
  inputHtmlField?: HTMLInputElement;
727
803
  /**
728
- * The identifier (e.g. email) input field. Accepted but not tracked yet — low-event
729
- * tracking for a second field lands together with per-field attribution.
804
+ * The identifier (e.g. email) input field. Tracked separately from the password field.
730
805
  */
731
806
  identifierInputHtmlField?: HTMLInputElement;
732
807
  };
@@ -744,6 +819,7 @@ declare class PasswordLoginOperationFull extends OperationFull {
744
819
  postResponse: StepHelper;
745
820
  };
746
821
  private lowEventTracker?;
822
+ private identifierLowEventTracker?;
747
823
  constructor(tracker: CorbadoTracker, config?: PasswordLoginConfig);
748
824
  /**
749
825
  * @deprecated `subflow_trigger` is not supported for password-login and will be removed in the
@@ -969,6 +1045,9 @@ declare class CorbadoTracker {
969
1045
  private telemetryReady;
970
1046
  private readonly reportedTelemetryKeys;
971
1047
  private pendingSelfTelemetry;
1048
+ private windowObserver?;
1049
+ /** @internal Shared passive page observation and per-operation context registration. */
1050
+ getWindowObserver(): SharedWindowObserver;
972
1051
  constructor(options: TrackerOptions);
973
1052
  /**
974
1053
  * Cache fresh server config as last-known so the next page load boots with it. When this load
@@ -1088,7 +1167,7 @@ declare class CorbadoTracker {
1088
1167
  * sessionStorage-backed and stable for the whole page lifetime.
1089
1168
  */
1090
1169
  private resolveEventTabId;
1091
- trackSubflowStarted(subflowType: SubflowType, data: Record<string, any>, options?: StepOptions): void;
1170
+ trackSubflowStarted(subflowType: SubflowType, data: Record<string, any>, options?: StepOptions, eventId?: string): void;
1092
1171
  trackSubflowTrigger(subflowType: SubflowType, data: Record<string, any>, options?: StepOptions): void;
1093
1172
  trackSubflowStepStarted(subflowType: SubflowType, stepName: string, data: Record<string, any>, options?: StepOptions, ignoreAsInteraction?: boolean): void;
1094
1173
  trackSubflowStepFinished(subflowType: SubflowType, stepName: string, data: Record<string, any>, options?: StepOptions): void;
@@ -1106,7 +1185,12 @@ declare class CorbadoTracker {
1106
1185
  *
1107
1186
  * @internal
1108
1187
  */
1109
- track(name: AuthEventName, data: Record<string, any>, userReference?: UserReference, tags?: Record<string, string>, contexts?: Record<string, any>, explicitTimestamp?: number, experiments?: Record<string, string>): Promise<void>;
1188
+ track(name: AuthEventName, data: Record<string, any>, userReference?: UserReference, tags?: Record<string, string>, contexts?: Record<string, any>, explicitTimestamp?: number, experiments?: Record<string, string>, capture?: {
1189
+ id?: string;
1190
+ subflowStartEventId?: string;
1191
+ sessionId?: string;
1192
+ initiator?: StepOptions["initiator"];
1193
+ }): Promise<void>;
1110
1194
  /**
1111
1195
  * Track when an authentication flow (or flow selection screen) becomes visible.
1112
1196
  *
@@ -1296,7 +1380,7 @@ declare class CorbadoTracker {
1296
1380
  *
1297
1381
  * @internal
1298
1382
  */
1299
- enqueueLowEvent(low: LowEvent): void;
1383
+ enqueueLowEvent(low: LowEvent, capturedSessionId?: string): void;
1300
1384
  /**
1301
1385
  * Record a diagnostic telemetry entry (a `level` + free-form `message`) for the current session.
1302
1386
  *
@@ -1407,6 +1491,7 @@ declare const SDK_NAME = "@corbado/observe";
1407
1491
  declare const SDK_VERSION: string;
1408
1492
 
1409
1493
  interface TransportMakeRequestResponse {
1494
+ deliveryAccepted?: boolean;
1410
1495
  statusCode?: number;
1411
1496
  headers?: Record<string, string | null>;
1412
1497
  /** Parsed SDK reliability config, present only when the server returns it (HTTP 200). */
@@ -1567,7 +1652,7 @@ interface QueueOptions {
1567
1652
  * Pending events are held as {@link OutboxEntry} records. When `config.durableOutbox` is enabled they are
1568
1653
  * additionally persisted to a localStorage-backed {@link EventStore} and recovered on the next load.
1569
1654
  * Delivery removes an entry only on a 2xx response; retryable failures back off (honoring `Retry-After`)
1570
- * up to `config.retry.maxAttempts`. Low events are best-effort and never persisted.
1655
+ * up to `config.retry.maxAttempts`. Low events have a separately bounded outbox when durableLowOutbox is enabled.
1571
1656
  *
1572
1657
  * Flushing is timer-driven only (the flush interval); `batchSize` caps the events per request, and a
1573
1658
  * flush drains all due work in sequential capped batches, stopping at the first failed send.
@@ -1583,14 +1668,16 @@ declare class RequestQueue {
1583
1668
  private readonly storage?;
1584
1669
  private pending;
1585
1670
  private lowsQueue;
1671
+ private lowPending;
1672
+ private lowStore?;
1586
1673
  /**
1587
- * Diagnostic telemetry buffered for the current session. Best-effort and never persisted (like
1588
- * lows). Attached to the next outgoing batch for this session; a telemetry entry alone never arms
1674
+ * Diagnostic telemetry buffered for the current session. Best-effort and never persisted. Attached to the next outgoing batch for this session; a telemetry entry alone never arms
1589
1675
  * the flush timer (it piggybacks), unless `config.flushOnTelemetry` escalates to an immediate flush.
1590
1676
  */
1591
1677
  private telemetryQueue;
1592
1678
  private timer;
1593
1679
  private isFlushing;
1680
+ private flushingDone?;
1594
1681
  private destroyed;
1595
1682
  /**
1596
1683
  * True when something was enqueued (or recovered) since the last sync flush. visibilitychange,
@@ -1632,12 +1719,12 @@ declare class RequestQueue {
1632
1719
  * Error situations:
1633
1720
  * - Any error while enqueueing or scheduling the flush timer: log "Failed to enqueue event"
1634
1721
  */
1635
- enqueue(event: Event): void;
1722
+ enqueue(event: Event, capturedSessionId?: string): void;
1636
1723
  /**
1637
1724
  * Error situations:
1638
1725
  * - Any error while enqueueing or scheduling the flush timer: log "Failed to enqueue low event"
1639
1726
  */
1640
- enqueueLow(low: LowEvent): void;
1727
+ enqueueLow(low: LowEvent, capturedSessionId?: string): void;
1641
1728
  /**
1642
1729
  * Buffer a diagnostic telemetry entry for delivery with the next event batch.
1643
1730
  *
@@ -1685,6 +1772,10 @@ declare class RequestQueue {
1685
1772
  private attachBatchMeta;
1686
1773
  private getDuePending;
1687
1774
  private takeLows;
1775
+ private validPendingLow;
1776
+ private removeLowEntries;
1777
+ private handleLowSendResult;
1778
+ private deferLowEntries;
1688
1779
  private takeTelemetry;
1689
1780
  private shouldRequestConfig;
1690
1781
  /**
@@ -1820,7 +1911,7 @@ declare function loadCachedConfig(storage: StorageEngine): SdkReliabilityConfig
1820
1911
  declare function cacheConfig(storage: StorageEngine, config: SdkReliabilityConfig): void;
1821
1912
 
1822
1913
  /** A persisted, not-yet-acknowledged event awaiting delivery. */
1823
- interface OutboxEntry {
1914
+ interface OutboxEntry<T = Event> {
1824
1915
  /** Event idempotency id; primary key of the entry. */
1825
1916
  id: string;
1826
1917
  /** Session id snapshot taken at enqueue time (so session rotation never relabels old entries). */
@@ -1830,7 +1921,7 @@ interface OutboxEntry {
1830
1921
  /** Number of completed send attempts so far. */
1831
1922
  attempts: number;
1832
1923
  /** The event payload. */
1833
- event: Event;
1924
+ event: T;
1834
1925
  }
1835
1926
  /** localStorage key under which the durable outbox is persisted. */
1836
1927
  declare const OUTBOX_STORAGE_KEY = "cbo_outbox";
@@ -1856,7 +1947,7 @@ declare const DEFAULT_MAX_SERIALIZED_LENGTH: number;
1856
1947
  * behavior. Mutations never reject; failures are logged.
1857
1948
  * The store is size-capped; overflow evicts the oldest entries and logs the count.
1858
1949
  */
1859
- declare class EventStore {
1950
+ declare class EventStore<T = Event> {
1860
1951
  private readonly storage;
1861
1952
  private readonly logger;
1862
1953
  private readonly maxEntries;
@@ -1867,6 +1958,7 @@ declare class EventStore {
1867
1958
  * and a shared key guarded by scoped locks would lose the cross-tab atomicity guarantee.
1868
1959
  */
1869
1960
  private readonly lockName;
1961
+ private readonly storageKey;
1870
1962
  private entries;
1871
1963
  /** Malformed entries are dropped on every read; report only once per instance to avoid log spam. */
1872
1964
  private reportedMalformed;
@@ -1876,21 +1968,21 @@ declare class EventStore {
1876
1968
  * to: a project-scoped outbox key guarded by the shared lock would serialize unrelated trackers,
1877
1969
  * and a shared key guarded by scoped locks would lose the cross-tab atomicity guarantee.
1878
1970
  */
1879
- lockName?: string);
1971
+ lockName?: string, storageKey?: string);
1880
1972
  private read;
1881
1973
  private mutate;
1882
1974
  /** Evict oldest entries until the serialized outbox fits {@link maxSerializedLength}. */
1883
1975
  private enforceSizeBudget;
1884
1976
  /** Append an entry. No-op if an entry with the same id already exists. */
1885
- add(entry: OutboxEntry): Promise<void>;
1977
+ add(entry: OutboxEntry<T>): Promise<void>;
1886
1978
  /** Re-read from storage and return all entries (memory mirror refreshed). */
1887
- all(): OutboxEntry[];
1979
+ all(): OutboxEntry<T>[];
1888
1980
  /** Entries whose `flushAfter` has elapsed, in insertion order. */
1889
- getDue(now: number): OutboxEntry[];
1981
+ getDue(now: number): OutboxEntry<T>[];
1890
1982
  /** Remove entries by id (acknowledged or permanently dropped). */
1891
1983
  remove(ids: string[]): Promise<void>;
1892
1984
  /** Replace existing entries (matched by id) with updated copies, e.g. after bumping backoff. */
1893
- update(updated: OutboxEntry[]): Promise<void>;
1985
+ update(updated: OutboxEntry<T>[]): Promise<void>;
1894
1986
  size(): number;
1895
1987
  }
1896
1988
 
@@ -1924,4 +2016,4 @@ declare function logInfo(message: string): void;
1924
2016
  declare function logError(message: string): void;
1925
2017
  declare function destroy(): Promise<void>;
1926
2018
 
1927
- 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 Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type JavaScriptHighEntropy, LocalStorage, type Logger, type LowEvent, 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, RequestQueue, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkRetryConfig, 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 UserReference, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, setExperiment, setExperiments, setUser, telemetry };
2019
+ 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 Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type JavaScriptHighEntropy, 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, RequestQueue, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkRetryConfig, 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 UserReference, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, setExperiment, setExperiments, setUser, telemetry };