@corbado/observe 1.7.1 → 1.8.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.
Files changed (65) hide show
  1. package/dist/analysis/client.mjs +1851 -0
  2. package/dist/analysis/config-manager.mjs +83 -0
  3. package/dist/analysis/config.mjs +216 -0
  4. package/dist/analysis/device-info-manager.mjs +153 -0
  5. package/dist/analysis/device.mjs +562 -0
  6. package/dist/analysis/index.mjs +118 -0
  7. package/dist/analysis/logger.mjs +50 -0
  8. package/dist/analysis/low-events/capture-sequence.mjs +11 -0
  9. package/dist/analysis/low-events/ceremony-initiator.mjs +26 -0
  10. package/dist/analysis/low-events/form-input-binding.mjs +46 -0
  11. package/dist/analysis/low-events/grouped-input-tracker.mjs +133 -0
  12. package/dist/analysis/low-events/input-change-recorder.mjs +200 -0
  13. package/dist/analysis/low-events/input-paste-observer.mjs +91 -0
  14. package/dist/analysis/low-events/input-tracker.mjs +223 -0
  15. package/dist/analysis/low-events/otp-input-binding.mjs +67 -0
  16. package/dist/analysis/low-events/shared-window-observer.mjs +225 -0
  17. package/dist/analysis/low-events/sink.mjs +0 -0
  18. package/dist/analysis/low-events/viewport-batcher.mjs +42 -0
  19. package/dist/analysis/low-events/window-tracker.mjs +40 -0
  20. package/dist/analysis/queue.mjs +887 -0
  21. package/dist/analysis/readers/device.mjs +73 -0
  22. package/dist/analysis/readers/meta.mjs +18 -0
  23. package/dist/analysis/readers/password-manager-dom.mjs +112 -0
  24. package/dist/analysis/readers/password-manager-extensions.mjs +247 -0
  25. package/dist/analysis/readers/private-mode.mjs +9 -0
  26. package/dist/analysis/storage/index.mjs +197 -0
  27. package/dist/analysis/storage/migration.mjs +56 -0
  28. package/dist/analysis/store/event-store.mjs +114 -0
  29. package/dist/analysis/transport.mjs +0 -0
  30. package/dist/analysis/transports/fetch.mjs +108 -0
  31. package/dist/analysis/types.mjs +25 -0
  32. package/dist/analysis/utils/appconfirmation-operation-full.mjs +19 -0
  33. package/dist/analysis/utils/blocked-user-agents.mjs +37 -0
  34. package/dist/analysis/utils/captcha-operation-full.mjs +17 -0
  35. package/dist/analysis/utils/email-link-continuity.mjs +50 -0
  36. package/dist/analysis/utils/email-link-operation-full.mjs +142 -0
  37. package/dist/analysis/utils/email-otp-operation-full.mjs +39 -0
  38. package/dist/analysis/utils/form-operation-full.mjs +81 -0
  39. package/dist/analysis/utils/key-operation-full.mjs +38 -0
  40. package/dist/analysis/utils/normalize-error.mjs +29 -0
  41. package/dist/analysis/utils/operation-full-provide-identifier-with-cui.mjs +46 -0
  42. package/dist/analysis/utils/operation-full.mjs +235 -0
  43. package/dist/analysis/utils/passkey-deletion-operation-full.mjs +17 -0
  44. package/dist/analysis/utils/passkey-enrollment-operation-full.mjs +32 -0
  45. package/dist/analysis/utils/passkey-login-operation-full.mjs +34 -0
  46. package/dist/analysis/utils/password-enrollment-operation-full.mjs +27 -0
  47. package/dist/analysis/utils/password-login-operation-full.mjs +61 -0
  48. package/dist/analysis/utils/password-manager-sampler.mjs +130 -0
  49. package/dist/analysis/utils/provide-data-operation-full.mjs +28 -0
  50. package/dist/analysis/utils/serialize-raw-error.mjs +205 -0
  51. package/dist/analysis/utils/sms-otp-operation-full.mjs +39 -0
  52. package/dist/analysis/utils/social-operation-login.mjs +17 -0
  53. package/dist/analysis/utils/source-path.mjs +39 -0
  54. package/dist/analysis/utils/sso-operation-login.mjs +37 -0
  55. package/dist/analysis/utils/totp-operation-full.mjs +35 -0
  56. package/dist/analysis/utils/trusted-device-operation-full.mjs +100 -0
  57. package/dist/analysis/utils/web-lock.mjs +52 -0
  58. package/dist/analysis/utils/webauthn-payloads.mjs +101 -0
  59. package/dist/analysis/version.mjs +7 -0
  60. package/dist/cdn/script.global.js +4 -4
  61. package/dist/index.d.mts +164 -11
  62. package/dist/index.d.ts +164 -11
  63. package/dist/index.js +4 -4
  64. package/dist/index.mjs +4 -4
  65. package/package.json +7 -2
package/dist/index.d.mts CHANGED
@@ -1,3 +1,65 @@
1
+ /**
2
+ * Reader metadata: the declaration every browser read in `src/readers/**` carries.
3
+ *
4
+ * Readers are the only SDK modules meant to touch browser globals (navigator, document, window,
5
+ * storage, ...). Each reader call takes a literal {@link ReaderMeta} object naming the collection
6
+ * item it produces, the fields it collects and their exposure. The metadata has no runtime effect;
7
+ * a static analysis of an (unminified) bundle reads the literals at the reachable call sites to
8
+ * derive the collection manifest of a build, so a call removed by dead-code elimination also
9
+ * removes its item from the manifest.
10
+ *
11
+ * Vocabulary follows the collection manifest data model v1 (`corbado.collection/v1`).
12
+ *
13
+ * @internal
14
+ */
15
+ /**
16
+ * How much of a value is collected, ordered from least to most exposed.
17
+ * See {@link READER_EXPOSURES} for the order.
18
+ */
19
+ type ReaderExposure = "none" | "presence" | "size" | "class" | "format" | "partial" | "enum" | "computed" | "token" | "pseudonym" | "redacted" | "raw";
20
+ /** All exposures, least to most exposed. */
21
+ declare const READER_EXPOSURES: readonly ReaderExposure[];
22
+ /** Parameters of an exposure (which ones apply depends on the exposure). */
23
+ type ReaderTransform = {
24
+ /** `presence`, `enum`: the possible values. */
25
+ values?: readonly (string | number | boolean | null)[];
26
+ /** `size`: bucket boundaries, when bucketed. */
27
+ buckets?: readonly number[];
28
+ /** `class`: the possible classes. */
29
+ classes?: readonly string[];
30
+ /** `format`: the kept structure. */
31
+ format?: string;
32
+ /** `partial`: which part is kept. */
33
+ keep?: string;
34
+ /** `token`: the restrictive pattern a kept value must match, and its maximum length. */
35
+ pattern?: string;
36
+ max?: number;
37
+ /** `pseudonym`: how the value is derived. */
38
+ scheme?: string;
39
+ /** `redacted`: the removed parts. */
40
+ removed?: readonly string[];
41
+ /** Free text, e.g. for `computed`. */
42
+ note?: string;
43
+ };
44
+ /** One collected field of a reader item. */
45
+ type ReaderField = {
46
+ /** Identity within the item, e.g. `result.isPrivate` or `signals[]`. */
47
+ path: string;
48
+ exposure: ReaderExposure;
49
+ transform?: ReaderTransform;
50
+ };
51
+ /** Build-time data switch a reader item depends on (see `FixedDataConfig`). */
52
+ type ReaderDataConfigKey = "pmd" | "privateMode";
53
+ /** Literal metadata passed to every reader call. */
54
+ type ReaderMeta = {
55
+ /** Stable item key `<kind>:<namespace>.<name>`, e.g. `browser-api:device.webdriver`. */
56
+ key: string;
57
+ /** Fields the reader makes reachable; everything else read stays inside the reader. */
58
+ fields: readonly ReaderField[];
59
+ /** The data switch that removes this item from builds that turn it off. */
60
+ dataConfig?: ReaderDataConfigKey;
61
+ };
62
+
1
63
  type PasswordManagerExtensionName = "1password" | "bitwarden" | "dashlane" | "kaspersky" | "keeper" | "lastpass" | "nordpass" | "protonpass";
2
64
  type PasswordManagerExtension = {
3
65
  name: PasswordManagerExtensionName;
@@ -394,6 +456,12 @@ interface EventBatchMeta {
394
456
  * receives per session (last write wins), so the SDK always sends the current value.
395
457
  */
396
458
  dataPolicy?: number;
459
+ /**
460
+ * True when the tracker runs with data-collection switches fixed by the integration
461
+ * (`init({ fixedDataConfig })`) or by the build (`__CBO_DATA_*__` defines), so the data-relevant
462
+ * fields of the server config (`pmd`) are ignored. Omitted otherwise.
463
+ */
464
+ fixedData?: boolean;
397
465
  }
398
466
  interface EventMeta {
399
467
  initiator?: LowEventInitiator;
@@ -580,7 +648,7 @@ interface SdkReliabilityConfig {
580
648
  deviceInfoTiming: boolean;
581
649
  /** Serialize explicitly supplied raw error diagnostics. Defaults to true; refreshes apply to subsequent errors. Already queued events are unchanged. */
582
650
  rawErrors: boolean;
583
- /** Internal: password manager detection switch. Defaults to false. */
651
+ /** Internal: password manager detection switch. Defaults to true. */
584
652
  pmd: boolean;
585
653
  /**
586
654
  * How far autocapture may attach when another integration already holds the surface it
@@ -603,11 +671,47 @@ interface SdkReliabilityConfig {
603
671
  /** Retry configuration for failed event flushes. */
604
672
  retry: SdkRetryConfig;
605
673
  }
674
+ /**
675
+ * Data-collection switches fixed by the integration instead of the server config (opt-in, see
676
+ * `TrackerOptions.fixedDataConfig`). Once given, these fields are no longer taken from the server's
677
+ * config or the cached `cbo_sdk_config`; a field left out resolves as documented on the field (`pmd`:
678
+ * off, `privateMode`: on), not from the server config.
679
+ *
680
+ * Builds can fix the same switches at build time with the esbuild/tsup defines `__CBO_DATA_PMD__` and
681
+ * `__CBO_DATA_PRIVATE_MODE__` (booleans), which also remove the disabled code from the bundle. A define
682
+ * wins over this option.
683
+ */
684
+ interface FixedDataConfig {
685
+ /**
686
+ * Password-manager detection.
687
+ *
688
+ * - `true`: the extension probes (reported as {@link Event.passwordManagers}) and the DOM
689
+ * password-manager scan (`pa-1`..`pa-6` lows) run.
690
+ * - `false`: neither runs.
691
+ * - omitted (with `fixedDataConfig` given): the extension probes are off (`pmd` resolves to `false`,
692
+ * regardless of the built-in default, `sdkConfig.pmd` and the server config); the DOM scan keeps
693
+ * today's behaviour and runs.
694
+ *
695
+ * Without `fixedDataConfig` the probes follow the server's `pmd` and the DOM scan always runs.
696
+ */
697
+ pmd?: boolean;
698
+ /**
699
+ * Private-mode detection (`deviceInfo.data.privateMode`, cached in `cbo_pm`). Defaults to true (as
700
+ * without `fixedDataConfig`). When false, nothing is detected, read or written for it.
701
+ */
702
+ privateMode?: boolean;
703
+ }
606
704
  /** Query handling for `meta.trackingSourcePath`; see {@link SdkReliabilityConfig.sourcePathQuery}. */
607
705
  type SourcePathQueryMode = "all" | "allowlist";
608
706
  /** Optional init overrides; omitted fields (including nested retry fields) inherit server policy or defaults. */
609
- type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry">> & {
707
+ type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry" | "pmd">> & {
610
708
  retry?: Partial<SdkRetryConfig>;
709
+ /**
710
+ * @deprecated use `fixedDataConfig.pmd`. Data-collection switches set by an integration belong in
711
+ * {@link FixedDataConfig}. Still works as before when `fixedDataConfig` is not given; when it is
712
+ * given, `fixedDataConfig` decides and this field is ignored.
713
+ */
714
+ pmd?: boolean;
611
715
  };
612
716
 
613
717
  /**
@@ -625,6 +729,12 @@ interface LowEventSink {
625
729
  settle(tailMs: number): void;
626
730
  destroy(): void;
627
731
  };
732
+ /**
733
+ * Whether the DOM password-manager scan (`pa-1`..`pa-6` lows) may run. Absent or true keeps the
734
+ * historical behaviour (always scan); false only under `fixedDataConfig` with `pmd` explicitly
735
+ * `false` (an omitted `pmd` keeps the scan on).
736
+ */
737
+ passwordManagerDomScan?(): boolean;
628
738
  }
629
739
 
630
740
  /**
@@ -1647,8 +1757,17 @@ interface TrackerOptions {
1647
1757
  projectId: string;
1648
1758
  apiBaseUrl: string;
1649
1759
  apiEventPath?: string;
1650
- /** Per-field overrides over server config and defaults. A complete policy disables remote fetching. */
1760
+ /**
1761
+ * Per-field overrides over server config and defaults. A complete policy disables remote fetching.
1762
+ * Data-collection switches (`pmd`) are deprecated here: use {@link TrackerOptions.fixedDataConfig}.
1763
+ */
1651
1764
  sdkConfig?: SdkReliabilityConfigOverrides;
1765
+ /**
1766
+ * Opt-in: fix the data-collection switches (password-manager and private-mode detection) instead of
1767
+ * taking them from the server config or the cached `cbo_sdk_config`. Batches then carry
1768
+ * `meta.fixedData: true`. Omitted (default): unchanged, server-driven behaviour. See {@link FixedDataConfig}.
1769
+ */
1770
+ fixedDataConfig?: FixedDataConfig;
1652
1771
  /** Config endpoint override for integrations that proxy Observe under a different path. */
1653
1772
  apiConfigPath?: string;
1654
1773
  storage?: "cookie" | "local";
@@ -1705,6 +1824,8 @@ declare class CorbadoTracker {
1705
1824
  private config;
1706
1825
  private readonly configManager?;
1707
1826
  private readonly configOverrides;
1827
+ /** Resolved `fixedDataConfig`; undefined when not given (server-driven data switches). */
1828
+ private readonly fixedData?;
1708
1829
  private deviceInfoManager;
1709
1830
  private deviceCollector;
1710
1831
  /**
@@ -2197,6 +2318,14 @@ declare class CorbadoTracker {
2197
2318
  * @internal
2198
2319
  */
2199
2320
  flushKeepalive(reason?: FlushReason): void;
2321
+ /**
2322
+ * Whether input trackers run the DOM password-manager scan (`pa-1`..`pa-6` lows): only an explicitly
2323
+ * set `fixedDataConfig.pmd` decides; without `fixedDataConfig` or with `pmd` omitted it always runs
2324
+ * (historical behaviour).
2325
+ *
2326
+ * @internal
2327
+ */
2328
+ isPasswordManagerDomScanEnabled(): boolean;
2200
2329
  /**
2201
2330
  * Keepalive flush requested by a low-event tracker's `pagehide` teardown. Gated by the
2202
2331
  * server-controlled trigger switch `tlf` (boot-snapshot, default true = historical behavior):
@@ -2547,6 +2676,11 @@ interface QueueOptions {
2547
2676
  * none has ever been set. Read at send time so a change applies to the next batch without a flush.
2548
2677
  */
2549
2678
  getDataPolicy?: () => number | undefined;
2679
+ /**
2680
+ * Stamp `meta.fixedData: true` on every batch: the tracker's data switches are fixed by the
2681
+ * integration or the build, so the server's data flags are ignored. Omitted (no meta field) when false.
2682
+ */
2683
+ fixedData?: boolean;
2550
2684
  /**
2551
2685
  * Called with the events of every event batch right before it is sent (async and unload flushes),
2552
2686
  * before the batch's telemetry is taken. The tracker uses it to attach a device info snapshot that
@@ -2630,6 +2764,7 @@ declare class RequestQueue {
2630
2764
  private readonly requestConfig;
2631
2765
  private readonly onConfigReceived?;
2632
2766
  private readonly getDataPolicy?;
2767
+ private readonly fixedData;
2633
2768
  private readonly beforeEventBatchSend?;
2634
2769
  private readonly standaloneDeviceInfo?;
2635
2770
  /** Current delivery policy, including live updates. */
@@ -2884,6 +3019,23 @@ declare const DEFAULT_RELIABILITY_CONFIG: SdkReliabilityConfig;
2884
3019
  declare function parseReliabilityConfig(raw: unknown): SdkReliabilityConfig | null;
2885
3020
  /** Resolve init overrides over validated server policy, then defaults, including individual retry fields. */
2886
3021
  declare function resolveReliabilityConfig(serverConfig: SdkReliabilityConfig | undefined, overrides?: SdkReliabilityConfigOverrides): SdkReliabilityConfig;
3022
+ /** Effective fixed data switches; every field resolved. */
3023
+ type ResolvedFixedDataConfig = Required<FixedDataConfig> & {
3024
+ /**
3025
+ * Whether `pmd` was set explicitly (a boolean). Only an explicit `pmd` gates the DOM password-manager
3026
+ * scan (`pa-1`..`pa-6`); an omitted `pmd` turns the extension probes off but leaves the scan on.
3027
+ */
3028
+ pmdExplicit: boolean;
3029
+ };
3030
+ /**
3031
+ * Resolve `init({ fixedDataConfig })`. Returns `undefined` (not fixed: server-driven, today's behaviour)
3032
+ * unless the option is an object. A missing or non-boolean `pmd` resolves to `false` (not the built-in
3033
+ * default and not `sdkConfig.pmd`: a fixed config collects only what it names) with `pmdExplicit: false`;
3034
+ * a missing or non-boolean `privateMode` resolves to on. Never throws.
3035
+ *
3036
+ * @internal
3037
+ */
3038
+ declare function resolveFixedDataConfig(raw: unknown): ResolvedFixedDataConfig | undefined;
2887
3039
  /** Read the cached config from storage, or `null` if absent/invalid. */
2888
3040
  declare function loadCachedConfig(storage: StorageEngine): SdkReliabilityConfig | null;
2889
3041
  /** Persist the config as last-known so the next page load starts with these features enabled. */
@@ -2974,7 +3126,7 @@ declare class EventStore<T = Event> {
2974
3126
  type WebAuthnIdentifierProjector = (value: string) => string | null | undefined;
2975
3127
  /**
2976
3128
  * Optional user identifier projection shared by native WebAuthn capture and network serializers.
2977
- * A missing callback preserves user identifiers. Callbacks should be deterministic across payloads.
3129
+ * A missing callback omits user identifiers. Callbacks should be deterministic across payloads.
2978
3130
  * Credential IDs and encoded attestation/authenticator data are retained unchanged.
2979
3131
  */
2980
3132
  type WebAuthnIdentifierProjectors = {
@@ -2983,10 +3135,10 @@ type WebAuthnIdentifierProjectors = {
2983
3135
  };
2984
3136
  /**
2985
3137
  * Serializes WebAuthn creation options, removing `user.name` and `user.displayName`.
2986
- * Binary values become base64url strings. User IDs are retained unless a projector is supplied.
3138
+ * Binary values become base64url strings. `user.id` is omitted unless a projector is supplied.
2987
3139
  *
2988
3140
  * @param value - Native publicKey options, a JSON object, or JSON text; not an application envelope.
2989
- * @param projectors - Optional synchronous user identifier projection; default identity.
3141
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
2990
3142
  * @returns JSON text, or undefined for malformed or unserializable input.
2991
3143
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. No tracker initialization is required.
2992
3144
  * @example
@@ -2998,10 +3150,10 @@ type WebAuthnIdentifierProjectors = {
2998
3150
  declare function sanitizeCreationOptions(value: unknown, projectors?: WebAuthnIdentifierProjectors): string | undefined;
2999
3151
  /**
3000
3152
  * Serializes a registration credential, removing `clientExtensionResults.prf.results`.
3001
- * By default other fields remain, including attestation material and credential IDs. Binary values become base64url strings.
3153
+ * `response.userHandle` is omitted unless a projector is supplied. By default other fields remain, including attestation material and credential IDs. Binary values become base64url strings.
3002
3154
  *
3003
3155
  * @param value - A native registration credential, JSON object, or JSON text; not an application envelope.
3004
- * @param projectors - Optional synchronous user identifier projection; default identity.
3156
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
3005
3157
  * @returns JSON text, or undefined for malformed or unserializable input.
3006
3158
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. Encoded attestation and client-data blobs are not decoded or redacted.
3007
3159
  */
@@ -3017,10 +3169,11 @@ declare function sanitizeCreationResponse(value: unknown, projectors?: WebAuthnI
3017
3169
  declare function sanitizeRequestOptions(value: unknown): string | undefined;
3018
3170
  /**
3019
3171
  * Serializes an authentication credential, removing `response.signature` and `clientExtensionResults.prf.results`.
3020
- * By default other fields remain, including credential IDs and user handles. Binary values become base64url strings.
3172
+ * `response.userHandle` is omitted unless a projector is supplied. Other fields remain, including credential IDs.
3173
+ * Binary values become base64url strings.
3021
3174
  *
3022
3175
  * @param value - A native authentication credential, JSON object, or JSON text; not an application envelope.
3023
- * @param projectors - Optional synchronous user identifier projection; default identity.
3176
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
3024
3177
  * @returns JSON text, or undefined for malformed or unserializable input.
3025
3178
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. This is a path blacklist, not general-purpose secret detection; encoded client-data blobs are not decoded or redacted.
3026
3179
  */
@@ -3061,4 +3214,4 @@ declare function logInfo(message: string): void;
3061
3214
  declare function logError(message: string): void;
3062
3215
  declare function destroy(): Promise<void>;
3063
3216
 
3064
- 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 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 EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, 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, 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 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 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 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };
3217
+ 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 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 EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, 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, 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_EXPOSURES, type RawErrorEnvelope, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SerializeRawErrorOptions, 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 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 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,65 @@
1
+ /**
2
+ * Reader metadata: the declaration every browser read in `src/readers/**` carries.
3
+ *
4
+ * Readers are the only SDK modules meant to touch browser globals (navigator, document, window,
5
+ * storage, ...). Each reader call takes a literal {@link ReaderMeta} object naming the collection
6
+ * item it produces, the fields it collects and their exposure. The metadata has no runtime effect;
7
+ * a static analysis of an (unminified) bundle reads the literals at the reachable call sites to
8
+ * derive the collection manifest of a build, so a call removed by dead-code elimination also
9
+ * removes its item from the manifest.
10
+ *
11
+ * Vocabulary follows the collection manifest data model v1 (`corbado.collection/v1`).
12
+ *
13
+ * @internal
14
+ */
15
+ /**
16
+ * How much of a value is collected, ordered from least to most exposed.
17
+ * See {@link READER_EXPOSURES} for the order.
18
+ */
19
+ type ReaderExposure = "none" | "presence" | "size" | "class" | "format" | "partial" | "enum" | "computed" | "token" | "pseudonym" | "redacted" | "raw";
20
+ /** All exposures, least to most exposed. */
21
+ declare const READER_EXPOSURES: readonly ReaderExposure[];
22
+ /** Parameters of an exposure (which ones apply depends on the exposure). */
23
+ type ReaderTransform = {
24
+ /** `presence`, `enum`: the possible values. */
25
+ values?: readonly (string | number | boolean | null)[];
26
+ /** `size`: bucket boundaries, when bucketed. */
27
+ buckets?: readonly number[];
28
+ /** `class`: the possible classes. */
29
+ classes?: readonly string[];
30
+ /** `format`: the kept structure. */
31
+ format?: string;
32
+ /** `partial`: which part is kept. */
33
+ keep?: string;
34
+ /** `token`: the restrictive pattern a kept value must match, and its maximum length. */
35
+ pattern?: string;
36
+ max?: number;
37
+ /** `pseudonym`: how the value is derived. */
38
+ scheme?: string;
39
+ /** `redacted`: the removed parts. */
40
+ removed?: readonly string[];
41
+ /** Free text, e.g. for `computed`. */
42
+ note?: string;
43
+ };
44
+ /** One collected field of a reader item. */
45
+ type ReaderField = {
46
+ /** Identity within the item, e.g. `result.isPrivate` or `signals[]`. */
47
+ path: string;
48
+ exposure: ReaderExposure;
49
+ transform?: ReaderTransform;
50
+ };
51
+ /** Build-time data switch a reader item depends on (see `FixedDataConfig`). */
52
+ type ReaderDataConfigKey = "pmd" | "privateMode";
53
+ /** Literal metadata passed to every reader call. */
54
+ type ReaderMeta = {
55
+ /** Stable item key `<kind>:<namespace>.<name>`, e.g. `browser-api:device.webdriver`. */
56
+ key: string;
57
+ /** Fields the reader makes reachable; everything else read stays inside the reader. */
58
+ fields: readonly ReaderField[];
59
+ /** The data switch that removes this item from builds that turn it off. */
60
+ dataConfig?: ReaderDataConfigKey;
61
+ };
62
+
1
63
  type PasswordManagerExtensionName = "1password" | "bitwarden" | "dashlane" | "kaspersky" | "keeper" | "lastpass" | "nordpass" | "protonpass";
2
64
  type PasswordManagerExtension = {
3
65
  name: PasswordManagerExtensionName;
@@ -394,6 +456,12 @@ interface EventBatchMeta {
394
456
  * receives per session (last write wins), so the SDK always sends the current value.
395
457
  */
396
458
  dataPolicy?: number;
459
+ /**
460
+ * True when the tracker runs with data-collection switches fixed by the integration
461
+ * (`init({ fixedDataConfig })`) or by the build (`__CBO_DATA_*__` defines), so the data-relevant
462
+ * fields of the server config (`pmd`) are ignored. Omitted otherwise.
463
+ */
464
+ fixedData?: boolean;
397
465
  }
398
466
  interface EventMeta {
399
467
  initiator?: LowEventInitiator;
@@ -580,7 +648,7 @@ interface SdkReliabilityConfig {
580
648
  deviceInfoTiming: boolean;
581
649
  /** Serialize explicitly supplied raw error diagnostics. Defaults to true; refreshes apply to subsequent errors. Already queued events are unchanged. */
582
650
  rawErrors: boolean;
583
- /** Internal: password manager detection switch. Defaults to false. */
651
+ /** Internal: password manager detection switch. Defaults to true. */
584
652
  pmd: boolean;
585
653
  /**
586
654
  * How far autocapture may attach when another integration already holds the surface it
@@ -603,11 +671,47 @@ interface SdkReliabilityConfig {
603
671
  /** Retry configuration for failed event flushes. */
604
672
  retry: SdkRetryConfig;
605
673
  }
674
+ /**
675
+ * Data-collection switches fixed by the integration instead of the server config (opt-in, see
676
+ * `TrackerOptions.fixedDataConfig`). Once given, these fields are no longer taken from the server's
677
+ * config or the cached `cbo_sdk_config`; a field left out resolves as documented on the field (`pmd`:
678
+ * off, `privateMode`: on), not from the server config.
679
+ *
680
+ * Builds can fix the same switches at build time with the esbuild/tsup defines `__CBO_DATA_PMD__` and
681
+ * `__CBO_DATA_PRIVATE_MODE__` (booleans), which also remove the disabled code from the bundle. A define
682
+ * wins over this option.
683
+ */
684
+ interface FixedDataConfig {
685
+ /**
686
+ * Password-manager detection.
687
+ *
688
+ * - `true`: the extension probes (reported as {@link Event.passwordManagers}) and the DOM
689
+ * password-manager scan (`pa-1`..`pa-6` lows) run.
690
+ * - `false`: neither runs.
691
+ * - omitted (with `fixedDataConfig` given): the extension probes are off (`pmd` resolves to `false`,
692
+ * regardless of the built-in default, `sdkConfig.pmd` and the server config); the DOM scan keeps
693
+ * today's behaviour and runs.
694
+ *
695
+ * Without `fixedDataConfig` the probes follow the server's `pmd` and the DOM scan always runs.
696
+ */
697
+ pmd?: boolean;
698
+ /**
699
+ * Private-mode detection (`deviceInfo.data.privateMode`, cached in `cbo_pm`). Defaults to true (as
700
+ * without `fixedDataConfig`). When false, nothing is detected, read or written for it.
701
+ */
702
+ privateMode?: boolean;
703
+ }
606
704
  /** Query handling for `meta.trackingSourcePath`; see {@link SdkReliabilityConfig.sourcePathQuery}. */
607
705
  type SourcePathQueryMode = "all" | "allowlist";
608
706
  /** Optional init overrides; omitted fields (including nested retry fields) inherit server policy or defaults. */
609
- type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry">> & {
707
+ type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry" | "pmd">> & {
610
708
  retry?: Partial<SdkRetryConfig>;
709
+ /**
710
+ * @deprecated use `fixedDataConfig.pmd`. Data-collection switches set by an integration belong in
711
+ * {@link FixedDataConfig}. Still works as before when `fixedDataConfig` is not given; when it is
712
+ * given, `fixedDataConfig` decides and this field is ignored.
713
+ */
714
+ pmd?: boolean;
611
715
  };
612
716
 
613
717
  /**
@@ -625,6 +729,12 @@ interface LowEventSink {
625
729
  settle(tailMs: number): void;
626
730
  destroy(): void;
627
731
  };
732
+ /**
733
+ * Whether the DOM password-manager scan (`pa-1`..`pa-6` lows) may run. Absent or true keeps the
734
+ * historical behaviour (always scan); false only under `fixedDataConfig` with `pmd` explicitly
735
+ * `false` (an omitted `pmd` keeps the scan on).
736
+ */
737
+ passwordManagerDomScan?(): boolean;
628
738
  }
629
739
 
630
740
  /**
@@ -1647,8 +1757,17 @@ interface TrackerOptions {
1647
1757
  projectId: string;
1648
1758
  apiBaseUrl: string;
1649
1759
  apiEventPath?: string;
1650
- /** Per-field overrides over server config and defaults. A complete policy disables remote fetching. */
1760
+ /**
1761
+ * Per-field overrides over server config and defaults. A complete policy disables remote fetching.
1762
+ * Data-collection switches (`pmd`) are deprecated here: use {@link TrackerOptions.fixedDataConfig}.
1763
+ */
1651
1764
  sdkConfig?: SdkReliabilityConfigOverrides;
1765
+ /**
1766
+ * Opt-in: fix the data-collection switches (password-manager and private-mode detection) instead of
1767
+ * taking them from the server config or the cached `cbo_sdk_config`. Batches then carry
1768
+ * `meta.fixedData: true`. Omitted (default): unchanged, server-driven behaviour. See {@link FixedDataConfig}.
1769
+ */
1770
+ fixedDataConfig?: FixedDataConfig;
1652
1771
  /** Config endpoint override for integrations that proxy Observe under a different path. */
1653
1772
  apiConfigPath?: string;
1654
1773
  storage?: "cookie" | "local";
@@ -1705,6 +1824,8 @@ declare class CorbadoTracker {
1705
1824
  private config;
1706
1825
  private readonly configManager?;
1707
1826
  private readonly configOverrides;
1827
+ /** Resolved `fixedDataConfig`; undefined when not given (server-driven data switches). */
1828
+ private readonly fixedData?;
1708
1829
  private deviceInfoManager;
1709
1830
  private deviceCollector;
1710
1831
  /**
@@ -2197,6 +2318,14 @@ declare class CorbadoTracker {
2197
2318
  * @internal
2198
2319
  */
2199
2320
  flushKeepalive(reason?: FlushReason): void;
2321
+ /**
2322
+ * Whether input trackers run the DOM password-manager scan (`pa-1`..`pa-6` lows): only an explicitly
2323
+ * set `fixedDataConfig.pmd` decides; without `fixedDataConfig` or with `pmd` omitted it always runs
2324
+ * (historical behaviour).
2325
+ *
2326
+ * @internal
2327
+ */
2328
+ isPasswordManagerDomScanEnabled(): boolean;
2200
2329
  /**
2201
2330
  * Keepalive flush requested by a low-event tracker's `pagehide` teardown. Gated by the
2202
2331
  * server-controlled trigger switch `tlf` (boot-snapshot, default true = historical behavior):
@@ -2547,6 +2676,11 @@ interface QueueOptions {
2547
2676
  * none has ever been set. Read at send time so a change applies to the next batch without a flush.
2548
2677
  */
2549
2678
  getDataPolicy?: () => number | undefined;
2679
+ /**
2680
+ * Stamp `meta.fixedData: true` on every batch: the tracker's data switches are fixed by the
2681
+ * integration or the build, so the server's data flags are ignored. Omitted (no meta field) when false.
2682
+ */
2683
+ fixedData?: boolean;
2550
2684
  /**
2551
2685
  * Called with the events of every event batch right before it is sent (async and unload flushes),
2552
2686
  * before the batch's telemetry is taken. The tracker uses it to attach a device info snapshot that
@@ -2630,6 +2764,7 @@ declare class RequestQueue {
2630
2764
  private readonly requestConfig;
2631
2765
  private readonly onConfigReceived?;
2632
2766
  private readonly getDataPolicy?;
2767
+ private readonly fixedData;
2633
2768
  private readonly beforeEventBatchSend?;
2634
2769
  private readonly standaloneDeviceInfo?;
2635
2770
  /** Current delivery policy, including live updates. */
@@ -2884,6 +3019,23 @@ declare const DEFAULT_RELIABILITY_CONFIG: SdkReliabilityConfig;
2884
3019
  declare function parseReliabilityConfig(raw: unknown): SdkReliabilityConfig | null;
2885
3020
  /** Resolve init overrides over validated server policy, then defaults, including individual retry fields. */
2886
3021
  declare function resolveReliabilityConfig(serverConfig: SdkReliabilityConfig | undefined, overrides?: SdkReliabilityConfigOverrides): SdkReliabilityConfig;
3022
+ /** Effective fixed data switches; every field resolved. */
3023
+ type ResolvedFixedDataConfig = Required<FixedDataConfig> & {
3024
+ /**
3025
+ * Whether `pmd` was set explicitly (a boolean). Only an explicit `pmd` gates the DOM password-manager
3026
+ * scan (`pa-1`..`pa-6`); an omitted `pmd` turns the extension probes off but leaves the scan on.
3027
+ */
3028
+ pmdExplicit: boolean;
3029
+ };
3030
+ /**
3031
+ * Resolve `init({ fixedDataConfig })`. Returns `undefined` (not fixed: server-driven, today's behaviour)
3032
+ * unless the option is an object. A missing or non-boolean `pmd` resolves to `false` (not the built-in
3033
+ * default and not `sdkConfig.pmd`: a fixed config collects only what it names) with `pmdExplicit: false`;
3034
+ * a missing or non-boolean `privateMode` resolves to on. Never throws.
3035
+ *
3036
+ * @internal
3037
+ */
3038
+ declare function resolveFixedDataConfig(raw: unknown): ResolvedFixedDataConfig | undefined;
2887
3039
  /** Read the cached config from storage, or `null` if absent/invalid. */
2888
3040
  declare function loadCachedConfig(storage: StorageEngine): SdkReliabilityConfig | null;
2889
3041
  /** Persist the config as last-known so the next page load starts with these features enabled. */
@@ -2974,7 +3126,7 @@ declare class EventStore<T = Event> {
2974
3126
  type WebAuthnIdentifierProjector = (value: string) => string | null | undefined;
2975
3127
  /**
2976
3128
  * Optional user identifier projection shared by native WebAuthn capture and network serializers.
2977
- * A missing callback preserves user identifiers. Callbacks should be deterministic across payloads.
3129
+ * A missing callback omits user identifiers. Callbacks should be deterministic across payloads.
2978
3130
  * Credential IDs and encoded attestation/authenticator data are retained unchanged.
2979
3131
  */
2980
3132
  type WebAuthnIdentifierProjectors = {
@@ -2983,10 +3135,10 @@ type WebAuthnIdentifierProjectors = {
2983
3135
  };
2984
3136
  /**
2985
3137
  * Serializes WebAuthn creation options, removing `user.name` and `user.displayName`.
2986
- * Binary values become base64url strings. User IDs are retained unless a projector is supplied.
3138
+ * Binary values become base64url strings. `user.id` is omitted unless a projector is supplied.
2987
3139
  *
2988
3140
  * @param value - Native publicKey options, a JSON object, or JSON text; not an application envelope.
2989
- * @param projectors - Optional synchronous user identifier projection; default identity.
3141
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
2990
3142
  * @returns JSON text, or undefined for malformed or unserializable input.
2991
3143
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. No tracker initialization is required.
2992
3144
  * @example
@@ -2998,10 +3150,10 @@ type WebAuthnIdentifierProjectors = {
2998
3150
  declare function sanitizeCreationOptions(value: unknown, projectors?: WebAuthnIdentifierProjectors): string | undefined;
2999
3151
  /**
3000
3152
  * Serializes a registration credential, removing `clientExtensionResults.prf.results`.
3001
- * By default other fields remain, including attestation material and credential IDs. Binary values become base64url strings.
3153
+ * `response.userHandle` is omitted unless a projector is supplied. By default other fields remain, including attestation material and credential IDs. Binary values become base64url strings.
3002
3154
  *
3003
3155
  * @param value - A native registration credential, JSON object, or JSON text; not an application envelope.
3004
- * @param projectors - Optional synchronous user identifier projection; default identity.
3156
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
3005
3157
  * @returns JSON text, or undefined for malformed or unserializable input.
3006
3158
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. Encoded attestation and client-data blobs are not decoded or redacted.
3007
3159
  */
@@ -3017,10 +3169,11 @@ declare function sanitizeCreationResponse(value: unknown, projectors?: WebAuthnI
3017
3169
  declare function sanitizeRequestOptions(value: unknown): string | undefined;
3018
3170
  /**
3019
3171
  * Serializes an authentication credential, removing `response.signature` and `clientExtensionResults.prf.results`.
3020
- * By default other fields remain, including credential IDs and user handles. Binary values become base64url strings.
3172
+ * `response.userHandle` is omitted unless a projector is supplied. Other fields remain, including credential IDs.
3173
+ * Binary values become base64url strings.
3021
3174
  *
3022
3175
  * @param value - A native authentication credential, JSON object, or JSON text; not an application envelope.
3023
- * @param projectors - Optional synchronous user identifier projection; default identity.
3176
+ * @param projectors - Optional synchronous user identifier projection; default omits user identifiers.
3024
3177
  * @returns JSON text, or undefined for malformed or unserializable input.
3025
3178
  * @remarks Does not mutate input, read blacklisted getters, or call toJSON. This is a path blacklist, not general-purpose secret detection; encoded client-data blobs are not decoded or redacted.
3026
3179
  */
@@ -3061,4 +3214,4 @@ declare function logInfo(message: string): void;
3061
3214
  declare function logError(message: string): void;
3062
3215
  declare function destroy(): Promise<void>;
3063
3216
 
3064
- 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 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 EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, 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, 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 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 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 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };
3217
+ 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 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 EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, 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, 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_EXPOSURES, type RawErrorEnvelope, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SerializeRawErrorOptions, 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 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 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, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };