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