@capgo/capacitor-passkey 8.3.10 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -611,11 +611,12 @@ All binary fields are base64url encoded.
611
611
 
612
612
  Direct authentication request for the plugin transport.
613
613
 
614
- | Prop | Type | Description |
615
- | --------------- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
616
- | **`publicKey`** | <code><a href="#passkeypublickeycredentialrequestoptionsjson">PasskeyPublicKeyCredentialRequestOptionsJSON</a></code> | JSON-safe authentication request. |
617
- | **`mediation`** | <code>string</code> | Optional mediation hint. `conditional` currently falls back to an explicit prompt. |
618
- | **`origin`** | <code>string</code> | Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON. |
614
+ | Prop | Type | Description |
615
+ | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
616
+ | **`publicKey`** | <code><a href="#passkeypublickeycredentialrequestoptionsjson">PasskeyPublicKeyCredentialRequestOptionsJSON</a></code> | JSON-safe authentication request. |
617
+ | **`mediation`** | <code>string</code> | Optional mediation hint. `conditional` currently falls back to an explicit prompt. |
618
+ | **`origin`** | <code>string</code> | Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON. |
619
+ | **`preferImmediatelyAvailableCredentials`** | <code>boolean</code> | Prefer passkeys stored on the local device, skipping the hybrid/nearby-device picker. Fails with `NotAllowedError` when no local credential exists. Ignored on web and iOS 15. |
619
620
 
620
621
 
621
622
  #### PasskeyPublicKeyCredentialRequestOptionsJSON
@@ -127,9 +127,13 @@ public class CapacitorPasskeyPlugin extends Plugin {
127
127
  return;
128
128
  }
129
129
 
130
+ final boolean preferImmediatelyAvailableCredentials = Boolean.TRUE.equals(call.getBoolean("preferImmediatelyAvailableCredentials"));
130
131
  final GetCredentialRequest request;
131
132
  try {
132
- request = new GetCredentialRequest(List.of(new GetPublicKeyCredentialOption(requestJson)));
133
+ request = new GetCredentialRequest.Builder()
134
+ .addCredentialOption(new GetPublicKeyCredentialOption(requestJson))
135
+ .setPreferImmediatelyAvailableCredentials(preferImmediatelyAvailableCredentials)
136
+ .build();
133
137
  } catch (Exception exception) {
134
138
  rejectDom(call, "SyntaxError", "Could not create the native authentication request.", exception);
135
139
  return;
package/dist/docs.json CHANGED
@@ -804,6 +804,13 @@
804
804
  "docs": "Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.",
805
805
  "complexTypes": [],
806
806
  "type": "string | undefined"
807
+ },
808
+ {
809
+ "name": "preferImmediatelyAvailableCredentials",
810
+ "tags": [],
811
+ "docs": "Prefer passkeys stored on the local device, skipping the hybrid/nearby-device picker.\nFails with `NotAllowedError` when no local credential exists. Ignored on web and iOS 15.",
812
+ "complexTypes": [],
813
+ "type": "boolean | undefined"
807
814
  }
808
815
  ]
809
816
  },
@@ -298,6 +298,11 @@ export interface GetCredentialOptions {
298
298
  * Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.
299
299
  */
300
300
  origin?: string;
301
+ /**
302
+ * Prefer passkeys stored on the local device, skipping the hybrid/nearby-device picker.
303
+ * Fails with `NotAllowedError` when no local credential exists. Ignored on web and iOS 15.
304
+ */
305
+ preferImmediatelyAvailableCredentials?: boolean;
301
306
  }
302
307
  /**
303
308
  * JSON-safe attestation response payload.
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Supported authenticator attachment values.\n *\n * @since 1.0.0\n */\nexport type PasskeyAuthenticatorAttachment = 'platform' | 'cross-platform';\n\n/**\n * Supported WebAuthn credential type.\n *\n * @since 1.0.0\n */\nexport type PasskeyCredentialType = 'public-key';\n\n/**\n * Supported user verification preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyUserVerification = 'discouraged' | 'preferred' | 'required';\n\n/**\n * Supported attestation preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyAttestation = 'none' | 'indirect' | 'direct' | 'enterprise';\n\n/**\n * Supported resident key preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyResidentKey = 'discouraged' | 'preferred' | 'required';\n\n/**\n * Options used when installing the browser-style shim.\n *\n * @since 1.0.0\n */\nexport interface ShimWebAuthnOptions {\n /**\n * Optional HTTPS origin to encode into iOS 17.4+ clientDataJSON.\n *\n * Use this when your Capacitor app runs from `capacitor://localhost`\n * but your relying party expects `https://signin.example.com`.\n */\n origin?: string;\n\n /**\n * Force the shim even if the runtime already exposes `navigator.credentials`.\n *\n * Defaults to `false`.\n */\n force?: boolean;\n}\n\n/**\n * Runtime configuration loaded from the host app's Capacitor config.\n *\n * This is the shape returned by `getConfiguration()`.\n *\n * @since 1.1.0\n */\nexport interface PasskeyRuntimeConfiguration {\n /**\n * Whether the native `cap sync/update` hook should wire host projects automatically.\n *\n * Defaults to `true`.\n */\n autoShim: boolean;\n\n /**\n * Optional HTTPS origin used by the config-driven shim install.\n *\n * On iOS 17.4+ this origin is encoded into `clientDataJSON`.\n */\n origin?: string;\n\n /**\n * Domains associated with the app for passkey usage.\n *\n * These come from `domains` in Capacitor config plus the hostname derived\n * from `origin` when available.\n */\n domains: string[];\n\n /**\n * Current runtime platform.\n */\n platform: 'ios' | 'android' | 'web';\n}\n\n/**\n * JSON-safe representation of a public key credential descriptor.\n *\n * Binary identifiers must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyCredentialDescriptor {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Credential type. Only `public-key` is supported.\n */\n type?: PasskeyCredentialType;\n\n /**\n * Optional transport hints copied from WebAuthn.\n */\n transports?: string[];\n}\n\n/**\n * JSON-safe relying party information.\n *\n * @since 1.0.0\n */\nexport interface PasskeyRelyingParty {\n /**\n * Relying party identifier.\n *\n * If omitted, the shim derives it from the configured origin when possible.\n */\n id?: string;\n\n /**\n * Human-readable relying party name.\n */\n name: string;\n}\n\n/**\n * JSON-safe WebAuthn user entity.\n *\n * Binary identifiers must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyUserEntity {\n /**\n * Base64url-encoded user handle.\n */\n id: string;\n\n /**\n * User name shown by the authenticator.\n */\n name: string;\n\n /**\n * Optional display name shown by the authenticator.\n */\n displayName?: string;\n}\n\n/**\n * JSON-safe credential parameter entry.\n *\n * @since 1.0.0\n */\nexport interface PasskeyCredentialParameter {\n /**\n * Credential type. Only `public-key` is supported.\n */\n type: PasskeyCredentialType;\n\n /**\n * COSE algorithm identifier.\n */\n alg: number;\n}\n\n/**\n * JSON-safe authenticator selection options.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorSelection {\n /**\n * Optional authenticator attachment hint.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Optional resident key preference.\n */\n residentKey?: PasskeyResidentKey;\n\n /**\n * Legacy resident key requirement flag.\n */\n requireResidentKey?: boolean;\n\n /**\n * Optional user verification preference.\n */\n userVerification?: PasskeyUserVerification;\n}\n\n/**\n * JSON-safe registration request options.\n *\n * All binary fields must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyPublicKeyCredentialCreationOptionsJSON {\n /**\n * Base64url-encoded challenge.\n */\n challenge: string;\n\n /**\n * Relying party information.\n */\n rp: PasskeyRelyingParty;\n\n /**\n * User information.\n */\n user: PasskeyUserEntity;\n\n /**\n * Supported credential algorithms.\n */\n pubKeyCredParams: PasskeyCredentialParameter[];\n\n /**\n * Optional timeout hint in milliseconds.\n */\n timeout?: number;\n\n /**\n * Optional credentials that must be excluded during registration.\n */\n excludeCredentials?: PasskeyCredentialDescriptor[];\n\n /**\n * Optional authenticator preferences.\n */\n authenticatorSelection?: PasskeyAuthenticatorSelection;\n\n /**\n * Optional attestation preference.\n */\n attestation?: PasskeyAttestation;\n\n /**\n * Optional hints copied from the JSON form used by modern WebAuthn toolkits.\n */\n hints?: string[];\n\n /**\n * Optional extensions copied as-is into the request JSON.\n */\n extensions?: Record<string, unknown>;\n}\n\n/**\n * Direct registration request for the plugin transport.\n *\n * @since 1.0.0\n */\nexport interface CreateCredentialOptions {\n /**\n * JSON-safe registration request.\n */\n publicKey: PasskeyPublicKeyCredentialCreationOptionsJSON;\n\n /**\n * Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.\n */\n origin?: string;\n}\n\n/**\n * JSON-safe authentication request options.\n *\n * All binary fields must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyPublicKeyCredentialRequestOptionsJSON {\n /**\n * Base64url-encoded challenge.\n */\n challenge: string;\n\n /**\n * Optional timeout hint in milliseconds.\n */\n timeout?: number;\n\n /**\n * Optional relying party identifier.\n *\n * If omitted, the shim derives it from the configured origin when possible.\n */\n rpId?: string;\n\n /**\n * Optional allow list copied from WebAuthn.\n */\n allowCredentials?: PasskeyCredentialDescriptor[];\n\n /**\n * Optional user verification preference.\n */\n userVerification?: PasskeyUserVerification;\n\n /**\n * Optional hints copied from the JSON form used by modern WebAuthn toolkits.\n */\n hints?: string[];\n\n /**\n * Optional extensions copied as-is into the request JSON.\n */\n extensions?: Record<string, unknown>;\n}\n\n/**\n * Direct authentication request for the plugin transport.\n *\n * @since 1.0.0\n */\nexport interface GetCredentialOptions {\n /**\n * JSON-safe authentication request.\n */\n publicKey: PasskeyPublicKeyCredentialRequestOptionsJSON;\n\n /**\n * Optional mediation hint. `conditional` currently falls back to an explicit prompt.\n */\n mediation?: string;\n\n /**\n * Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.\n */\n origin?: string;\n}\n\n/**\n * JSON-safe attestation response payload.\n *\n * All binary fields are base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorAttestationResponseJSON {\n /**\n * Base64url-encoded clientDataJSON.\n */\n clientDataJSON: string;\n\n /**\n * Base64url-encoded attestation object.\n */\n attestationObject: string;\n\n /**\n * Optional base64url-encoded public key when provided by the platform.\n */\n publicKey?: string;\n\n /**\n * Optional public key algorithm when provided by the platform.\n */\n publicKeyAlgorithm?: number;\n\n /**\n * Optional transport list when provided by the platform.\n */\n transports?: string[];\n\n /**\n * Optional base64url-encoded authenticator data.\n */\n authenticatorData?: string;\n}\n\n/**\n * JSON-safe assertion response payload.\n *\n * All binary fields are base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorAssertionResponseJSON {\n /**\n * Base64url-encoded clientDataJSON.\n */\n clientDataJSON: string;\n\n /**\n * Base64url-encoded authenticator data.\n */\n authenticatorData: string;\n\n /**\n * Base64url-encoded signature.\n */\n signature: string;\n\n /**\n * Optional base64url-encoded user handle.\n */\n userHandle?: string | null;\n}\n\n/**\n * JSON-safe registration credential returned by the plugin.\n *\n * @since 1.0.0\n */\nexport interface PasskeyRegistrationCredential {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Base64url-encoded raw credential identifier.\n */\n rawId: string;\n\n /**\n * Credential type. Always `public-key`.\n */\n type: PasskeyCredentialType;\n\n /**\n * Optional authenticator attachment reported by the platform.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Client extension results returned by the platform.\n */\n clientExtensionResults: Record<string, unknown>;\n\n /**\n * Registration response payload.\n */\n response: PasskeyAuthenticatorAttestationResponseJSON;\n}\n\n/**\n * JSON-safe authentication credential returned by the plugin.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticationCredential {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Base64url-encoded raw credential identifier.\n */\n rawId: string;\n\n /**\n * Credential type. Always `public-key`.\n */\n type: PasskeyCredentialType;\n\n /**\n * Optional authenticator attachment reported by the platform.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Client extension results returned by the platform.\n */\n clientExtensionResults: Record<string, unknown>;\n\n /**\n * Assertion response payload.\n */\n response: PasskeyAuthenticatorAssertionResponseJSON;\n}\n\n/**\n * Plugin version payload.\n *\n * @since 1.0.0\n */\nexport interface PluginVersionResult {\n /**\n * Version identifier reported by the current platform implementation.\n */\n version: string;\n}\n\n/**\n * Passkey support status for the current runtime.\n *\n * @since 1.0.0\n */\nexport interface PasskeySupportResult {\n /**\n * Whether passkeys are available on the current runtime.\n */\n available: boolean;\n\n /**\n * Whether conditional mediation is available.\n */\n conditionalMediation: boolean;\n\n /**\n * Current platform identifier.\n */\n platform: 'ios' | 'android' | 'web';\n}\n\n/**\n * Capacitor Passkey plugin.\n *\n * Use `autoShimWebAuthn()` to keep existing `navigator.credentials.create/get`\n * code working inside a Capacitor app.\n *\n * @since 1.0.0\n */\nexport interface CapacitorPasskeyPlugin {\n /**\n * Install a browser-style WebAuthn shim on top of the native plugin.\n *\n * The shim patches `navigator.credentials.create/get` for `publicKey`\n * requests and returns browser-like credential objects.\n *\n * Use this when you want to override the auto-loaded config manually.\n *\n * @since 1.0.0\n * @example\n * ```typescript\n * import { CapacitorPasskey } from '@capgo/capacitor-passkey';\n *\n * CapacitorPasskey.shimWebAuthn({\n * origin: 'https://signin.example.com',\n * });\n * ```\n */\n shimWebAuthn(options?: ShimWebAuthnOptions): void;\n\n /**\n * Load plugin configuration from the host Capacitor app.\n *\n * This reads `plugins.CapacitorPasskey` from `capacitor.config.*`.\n *\n * @since 1.1.0\n */\n getConfiguration(): Promise<PasskeyRuntimeConfiguration>;\n\n /**\n * Install the browser-style shim using host app configuration.\n *\n * This is the easiest way to keep existing browser WebAuthn code working:\n * configure the plugin in `capacitor.config.*`, then call this once during\n * app bootstrap.\n *\n * @since 1.1.0\n * @example\n * ```typescript\n * import { CapacitorPasskey } from '@capgo/capacitor-passkey';\n *\n * await CapacitorPasskey.autoShimWebAuthn();\n * ```\n */\n autoShimWebAuthn(options?: ShimWebAuthnOptions): Promise<PasskeyRuntimeConfiguration>;\n\n /**\n * Register a passkey from a JSON-safe WebAuthn request.\n *\n * This method is useful when your backend already returns the\n * `PublicKeyCredentialCreationOptionsJSON` form.\n *\n * @since 1.0.0\n */\n createCredential(options: CreateCredentialOptions): Promise<PasskeyRegistrationCredential>;\n\n /**\n * Authenticate with an existing passkey from a JSON-safe WebAuthn request.\n *\n * This method is useful when your backend already returns the\n * `PublicKeyCredentialRequestOptionsJSON` form.\n *\n * @since 1.0.0\n */\n getCredential(options: GetCredentialOptions): Promise<PasskeyAuthenticationCredential>;\n\n /**\n * Report whether passkeys are available in the current runtime.\n *\n * @since 1.0.0\n */\n isSupported(): Promise<PasskeySupportResult>;\n\n /**\n * Returns the current platform implementation version marker.\n *\n * @since 1.0.0\n */\n getPluginVersion(): Promise<PluginVersionResult>;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Supported authenticator attachment values.\n *\n * @since 1.0.0\n */\nexport type PasskeyAuthenticatorAttachment = 'platform' | 'cross-platform';\n\n/**\n * Supported WebAuthn credential type.\n *\n * @since 1.0.0\n */\nexport type PasskeyCredentialType = 'public-key';\n\n/**\n * Supported user verification preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyUserVerification = 'discouraged' | 'preferred' | 'required';\n\n/**\n * Supported attestation preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyAttestation = 'none' | 'indirect' | 'direct' | 'enterprise';\n\n/**\n * Supported resident key preferences.\n *\n * @since 1.0.0\n */\nexport type PasskeyResidentKey = 'discouraged' | 'preferred' | 'required';\n\n/**\n * Options used when installing the browser-style shim.\n *\n * @since 1.0.0\n */\nexport interface ShimWebAuthnOptions {\n /**\n * Optional HTTPS origin to encode into iOS 17.4+ clientDataJSON.\n *\n * Use this when your Capacitor app runs from `capacitor://localhost`\n * but your relying party expects `https://signin.example.com`.\n */\n origin?: string;\n\n /**\n * Force the shim even if the runtime already exposes `navigator.credentials`.\n *\n * Defaults to `false`.\n */\n force?: boolean;\n}\n\n/**\n * Runtime configuration loaded from the host app's Capacitor config.\n *\n * This is the shape returned by `getConfiguration()`.\n *\n * @since 1.1.0\n */\nexport interface PasskeyRuntimeConfiguration {\n /**\n * Whether the native `cap sync/update` hook should wire host projects automatically.\n *\n * Defaults to `true`.\n */\n autoShim: boolean;\n\n /**\n * Optional HTTPS origin used by the config-driven shim install.\n *\n * On iOS 17.4+ this origin is encoded into `clientDataJSON`.\n */\n origin?: string;\n\n /**\n * Domains associated with the app for passkey usage.\n *\n * These come from `domains` in Capacitor config plus the hostname derived\n * from `origin` when available.\n */\n domains: string[];\n\n /**\n * Current runtime platform.\n */\n platform: 'ios' | 'android' | 'web';\n}\n\n/**\n * JSON-safe representation of a public key credential descriptor.\n *\n * Binary identifiers must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyCredentialDescriptor {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Credential type. Only `public-key` is supported.\n */\n type?: PasskeyCredentialType;\n\n /**\n * Optional transport hints copied from WebAuthn.\n */\n transports?: string[];\n}\n\n/**\n * JSON-safe relying party information.\n *\n * @since 1.0.0\n */\nexport interface PasskeyRelyingParty {\n /**\n * Relying party identifier.\n *\n * If omitted, the shim derives it from the configured origin when possible.\n */\n id?: string;\n\n /**\n * Human-readable relying party name.\n */\n name: string;\n}\n\n/**\n * JSON-safe WebAuthn user entity.\n *\n * Binary identifiers must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyUserEntity {\n /**\n * Base64url-encoded user handle.\n */\n id: string;\n\n /**\n * User name shown by the authenticator.\n */\n name: string;\n\n /**\n * Optional display name shown by the authenticator.\n */\n displayName?: string;\n}\n\n/**\n * JSON-safe credential parameter entry.\n *\n * @since 1.0.0\n */\nexport interface PasskeyCredentialParameter {\n /**\n * Credential type. Only `public-key` is supported.\n */\n type: PasskeyCredentialType;\n\n /**\n * COSE algorithm identifier.\n */\n alg: number;\n}\n\n/**\n * JSON-safe authenticator selection options.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorSelection {\n /**\n * Optional authenticator attachment hint.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Optional resident key preference.\n */\n residentKey?: PasskeyResidentKey;\n\n /**\n * Legacy resident key requirement flag.\n */\n requireResidentKey?: boolean;\n\n /**\n * Optional user verification preference.\n */\n userVerification?: PasskeyUserVerification;\n}\n\n/**\n * JSON-safe registration request options.\n *\n * All binary fields must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyPublicKeyCredentialCreationOptionsJSON {\n /**\n * Base64url-encoded challenge.\n */\n challenge: string;\n\n /**\n * Relying party information.\n */\n rp: PasskeyRelyingParty;\n\n /**\n * User information.\n */\n user: PasskeyUserEntity;\n\n /**\n * Supported credential algorithms.\n */\n pubKeyCredParams: PasskeyCredentialParameter[];\n\n /**\n * Optional timeout hint in milliseconds.\n */\n timeout?: number;\n\n /**\n * Optional credentials that must be excluded during registration.\n */\n excludeCredentials?: PasskeyCredentialDescriptor[];\n\n /**\n * Optional authenticator preferences.\n */\n authenticatorSelection?: PasskeyAuthenticatorSelection;\n\n /**\n * Optional attestation preference.\n */\n attestation?: PasskeyAttestation;\n\n /**\n * Optional hints copied from the JSON form used by modern WebAuthn toolkits.\n */\n hints?: string[];\n\n /**\n * Optional extensions copied as-is into the request JSON.\n */\n extensions?: Record<string, unknown>;\n}\n\n/**\n * Direct registration request for the plugin transport.\n *\n * @since 1.0.0\n */\nexport interface CreateCredentialOptions {\n /**\n * JSON-safe registration request.\n */\n publicKey: PasskeyPublicKeyCredentialCreationOptionsJSON;\n\n /**\n * Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.\n */\n origin?: string;\n}\n\n/**\n * JSON-safe authentication request options.\n *\n * All binary fields must be base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyPublicKeyCredentialRequestOptionsJSON {\n /**\n * Base64url-encoded challenge.\n */\n challenge: string;\n\n /**\n * Optional timeout hint in milliseconds.\n */\n timeout?: number;\n\n /**\n * Optional relying party identifier.\n *\n * If omitted, the shim derives it from the configured origin when possible.\n */\n rpId?: string;\n\n /**\n * Optional allow list copied from WebAuthn.\n */\n allowCredentials?: PasskeyCredentialDescriptor[];\n\n /**\n * Optional user verification preference.\n */\n userVerification?: PasskeyUserVerification;\n\n /**\n * Optional hints copied from the JSON form used by modern WebAuthn toolkits.\n */\n hints?: string[];\n\n /**\n * Optional extensions copied as-is into the request JSON.\n */\n extensions?: Record<string, unknown>;\n}\n\n/**\n * Direct authentication request for the plugin transport.\n *\n * @since 1.0.0\n */\nexport interface GetCredentialOptions {\n /**\n * JSON-safe authentication request.\n */\n publicKey: PasskeyPublicKeyCredentialRequestOptionsJSON;\n\n /**\n * Optional mediation hint. `conditional` currently falls back to an explicit prompt.\n */\n mediation?: string;\n\n /**\n * Optional HTTPS origin to use for iOS 17.4+ browser-style clientDataJSON.\n */\n origin?: string;\n\n /**\n * Prefer passkeys stored on the local device, skipping the hybrid/nearby-device picker.\n * Fails with `NotAllowedError` when no local credential exists. Ignored on web and iOS 15.\n */\n preferImmediatelyAvailableCredentials?: boolean;\n}\n\n/**\n * JSON-safe attestation response payload.\n *\n * All binary fields are base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorAttestationResponseJSON {\n /**\n * Base64url-encoded clientDataJSON.\n */\n clientDataJSON: string;\n\n /**\n * Base64url-encoded attestation object.\n */\n attestationObject: string;\n\n /**\n * Optional base64url-encoded public key when provided by the platform.\n */\n publicKey?: string;\n\n /**\n * Optional public key algorithm when provided by the platform.\n */\n publicKeyAlgorithm?: number;\n\n /**\n * Optional transport list when provided by the platform.\n */\n transports?: string[];\n\n /**\n * Optional base64url-encoded authenticator data.\n */\n authenticatorData?: string;\n}\n\n/**\n * JSON-safe assertion response payload.\n *\n * All binary fields are base64url encoded.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticatorAssertionResponseJSON {\n /**\n * Base64url-encoded clientDataJSON.\n */\n clientDataJSON: string;\n\n /**\n * Base64url-encoded authenticator data.\n */\n authenticatorData: string;\n\n /**\n * Base64url-encoded signature.\n */\n signature: string;\n\n /**\n * Optional base64url-encoded user handle.\n */\n userHandle?: string | null;\n}\n\n/**\n * JSON-safe registration credential returned by the plugin.\n *\n * @since 1.0.0\n */\nexport interface PasskeyRegistrationCredential {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Base64url-encoded raw credential identifier.\n */\n rawId: string;\n\n /**\n * Credential type. Always `public-key`.\n */\n type: PasskeyCredentialType;\n\n /**\n * Optional authenticator attachment reported by the platform.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Client extension results returned by the platform.\n */\n clientExtensionResults: Record<string, unknown>;\n\n /**\n * Registration response payload.\n */\n response: PasskeyAuthenticatorAttestationResponseJSON;\n}\n\n/**\n * JSON-safe authentication credential returned by the plugin.\n *\n * @since 1.0.0\n */\nexport interface PasskeyAuthenticationCredential {\n /**\n * Base64url-encoded credential identifier.\n */\n id: string;\n\n /**\n * Base64url-encoded raw credential identifier.\n */\n rawId: string;\n\n /**\n * Credential type. Always `public-key`.\n */\n type: PasskeyCredentialType;\n\n /**\n * Optional authenticator attachment reported by the platform.\n */\n authenticatorAttachment?: PasskeyAuthenticatorAttachment;\n\n /**\n * Client extension results returned by the platform.\n */\n clientExtensionResults: Record<string, unknown>;\n\n /**\n * Assertion response payload.\n */\n response: PasskeyAuthenticatorAssertionResponseJSON;\n}\n\n/**\n * Plugin version payload.\n *\n * @since 1.0.0\n */\nexport interface PluginVersionResult {\n /**\n * Version identifier reported by the current platform implementation.\n */\n version: string;\n}\n\n/**\n * Passkey support status for the current runtime.\n *\n * @since 1.0.0\n */\nexport interface PasskeySupportResult {\n /**\n * Whether passkeys are available on the current runtime.\n */\n available: boolean;\n\n /**\n * Whether conditional mediation is available.\n */\n conditionalMediation: boolean;\n\n /**\n * Current platform identifier.\n */\n platform: 'ios' | 'android' | 'web';\n}\n\n/**\n * Capacitor Passkey plugin.\n *\n * Use `autoShimWebAuthn()` to keep existing `navigator.credentials.create/get`\n * code working inside a Capacitor app.\n *\n * @since 1.0.0\n */\nexport interface CapacitorPasskeyPlugin {\n /**\n * Install a browser-style WebAuthn shim on top of the native plugin.\n *\n * The shim patches `navigator.credentials.create/get` for `publicKey`\n * requests and returns browser-like credential objects.\n *\n * Use this when you want to override the auto-loaded config manually.\n *\n * @since 1.0.0\n * @example\n * ```typescript\n * import { CapacitorPasskey } from '@capgo/capacitor-passkey';\n *\n * CapacitorPasskey.shimWebAuthn({\n * origin: 'https://signin.example.com',\n * });\n * ```\n */\n shimWebAuthn(options?: ShimWebAuthnOptions): void;\n\n /**\n * Load plugin configuration from the host Capacitor app.\n *\n * This reads `plugins.CapacitorPasskey` from `capacitor.config.*`.\n *\n * @since 1.1.0\n */\n getConfiguration(): Promise<PasskeyRuntimeConfiguration>;\n\n /**\n * Install the browser-style shim using host app configuration.\n *\n * This is the easiest way to keep existing browser WebAuthn code working:\n * configure the plugin in `capacitor.config.*`, then call this once during\n * app bootstrap.\n *\n * @since 1.1.0\n * @example\n * ```typescript\n * import { CapacitorPasskey } from '@capgo/capacitor-passkey';\n *\n * await CapacitorPasskey.autoShimWebAuthn();\n * ```\n */\n autoShimWebAuthn(options?: ShimWebAuthnOptions): Promise<PasskeyRuntimeConfiguration>;\n\n /**\n * Register a passkey from a JSON-safe WebAuthn request.\n *\n * This method is useful when your backend already returns the\n * `PublicKeyCredentialCreationOptionsJSON` form.\n *\n * @since 1.0.0\n */\n createCredential(options: CreateCredentialOptions): Promise<PasskeyRegistrationCredential>;\n\n /**\n * Authenticate with an existing passkey from a JSON-safe WebAuthn request.\n *\n * This method is useful when your backend already returns the\n * `PublicKeyCredentialRequestOptionsJSON` form.\n *\n * @since 1.0.0\n */\n getCredential(options: GetCredentialOptions): Promise<PasskeyAuthenticationCredential>;\n\n /**\n * Report whether passkeys are available in the current runtime.\n *\n * @since 1.0.0\n */\n isSupported(): Promise<PasskeySupportResult>;\n\n /**\n * Returns the current platform implementation version marker.\n *\n * @since 1.0.0\n */\n getPluginVersion(): Promise<PluginVersionResult>;\n}\n"]}
@@ -2,6 +2,7 @@ import type { PasskeyAuthenticationCredential, PasskeyRuntimeConfiguration, Pass
2
2
  export interface NativePasskeyRequest {
3
3
  requestJson: string;
4
4
  origin?: string;
5
+ preferImmediatelyAvailableCredentials?: boolean;
5
6
  }
6
7
  export interface NativeCapacitorPasskeyPlugin {
7
8
  createCredential(options: NativePasskeyRequest): Promise<PasskeyRegistrationCredential>;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n PasskeyAuthenticationCredential,\n PasskeyRuntimeConfiguration,\n PasskeyRegistrationCredential,\n PasskeySupportResult,\n} from './definitions';\n\nexport interface NativePasskeyRequest {\n requestJson: string;\n origin?: string;\n}\n\nexport interface NativeCapacitorPasskeyPlugin {\n createCredential(options: NativePasskeyRequest): Promise<PasskeyRegistrationCredential>;\n getCredential(options: NativePasskeyRequest): Promise<PasskeyAuthenticationCredential>;\n getConfiguration(): Promise<PasskeyRuntimeConfiguration>;\n isSupported(): Promise<PasskeySupportResult>;\n getPluginVersion(): Promise<{ version: string }>;\n}\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n PasskeyAuthenticationCredential,\n PasskeyRuntimeConfiguration,\n PasskeyRegistrationCredential,\n PasskeySupportResult,\n} from './definitions';\n\nexport interface NativePasskeyRequest {\n requestJson: string;\n origin?: string;\n preferImmediatelyAvailableCredentials?: boolean;\n}\n\nexport interface NativeCapacitorPasskeyPlugin {\n createCredential(options: NativePasskeyRequest): Promise<PasskeyRegistrationCredential>;\n getCredential(options: NativePasskeyRequest): Promise<PasskeyAuthenticationCredential>;\n getConfiguration(): Promise<PasskeyRuntimeConfiguration>;\n isSupported(): Promise<PasskeySupportResult>;\n getPluginVersion(): Promise<{ version: string }>;\n}\n"]}
package/dist/esm/shim.js CHANGED
@@ -53,9 +53,11 @@ export function installWebAuthnShim({ root = globalThis, plugin, options }) {
53
53
  if (request.mediation === 'conditional') {
54
54
  throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');
55
55
  }
56
+ const hints = request.publicKey.hints;
56
57
  const response = (await plugin.getCredential({
57
58
  mediation: request.mediation,
58
59
  origin: currentConfig.origin,
60
+ preferImmediatelyAvailableCredentials: (hints === null || hints === void 0 ? void 0 : hints.includes('client-device')) || undefined,
59
61
  publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),
60
62
  }));
61
63
  return credentialFromJSON(response);
@@ -1 +1 @@
1
- {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../src/shim.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CapacitorPasskeyPlugin,\n PasskeyAuthenticationCredential,\n PasskeyRegistrationCredential,\n ShimWebAuthnOptions,\n} from './definitions';\nimport {\n abortIfNeeded,\n createPasskeyDomException,\n credentialFromJSON,\n PasskeyPublicKeyCredential,\n normalizePluginError,\n parseCreationOptionsFromJSON,\n parseRequestOptionsFromJSON,\n webAuthnCreationOptionsToJSON,\n webAuthnRequestOptionsToJSON,\n PasskeyAuthenticatorAssertionResponse,\n PasskeyAuthenticatorAttestationResponse,\n} from './webauthn';\n\ntype CredentialsContainerLike = Pick<CredentialsContainer, 'create' | 'get' | 'preventSilentAccess' | 'store'>;\n\ntype ShimRoot = typeof globalThis & {\n navigator: Navigator & { credentials?: CredentialsContainerLike };\n __capgoPasskeyShimInstalled?: boolean;\n __capgoPasskeyShimConfig?: ShimWebAuthnOptions;\n};\n\ninterface InstallWebAuthnShimOptions {\n root?: typeof globalThis;\n plugin: CapacitorPasskeyPlugin;\n options?: ShimWebAuthnOptions;\n}\n\nexport function installWebAuthnShim({ root = globalThis, plugin, options }: InstallWebAuthnShimOptions): void {\n const shimRoot = root as ShimRoot;\n const config = {\n ...(shimRoot.__capgoPasskeyShimConfig ?? {}),\n ...(options ?? {}),\n };\n\n shimRoot.__capgoPasskeyShimConfig = config;\n\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials: CredentialsContainerLike = {\n create: async (request?: CredentialCreationOptions): Promise<Credential | null> => {\n const currentConfig = shimRoot.__capgoPasskeyShimConfig ?? {};\n\n if (!request?.publicKey) {\n if (originalCredentials?.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n })) as PasskeyRegistrationCredential;\n\n return credentialFromJSON(response) as unknown as Credential;\n },\n get: async (request?: CredentialRequestOptions): Promise<Credential | null> => {\n const currentConfig = shimRoot.__capgoPasskeyShimConfig ?? {};\n\n if (!request?.publicKey) {\n if (originalCredentials?.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException(\n 'NotSupportedError',\n 'Conditional mediation is not available through the Capacitor passkey shim.',\n );\n }\n\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n })) as PasskeyAuthenticationCredential;\n\n return credentialFromJSON(response) as unknown as Credential;\n },\n preventSilentAccess: async (): Promise<void> => {\n if (originalCredentials?.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential?: Credential): Promise<void> => {\n if (originalCredentials?.store && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n } catch {\n (shimRoot.navigator as Navigator & { credentials?: CredentialsContainerLike }).credentials = patchedCredentials;\n }\n\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\n\nfunction installPublicKeyCredentialStatics(root: ShimRoot, plugin: CapacitorPasskeyPlugin): void {\n const nativePublicKeyCredential = root.PublicKeyCredential ?? class {};\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n } catch (error) {\n throw normalizePluginError(error);\n }\n };\n\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n\n root.PublicKeyCredential = nativePublicKeyCredential as typeof PublicKeyCredential;\n}\n\nfunction defineStatic(target: object, key: string, value: unknown): void {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n } catch {\n Reflect.set(target, key, value);\n }\n}\n"]}
1
+ {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../src/shim.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CapacitorPasskeyPlugin,\n PasskeyAuthenticationCredential,\n PasskeyRegistrationCredential,\n ShimWebAuthnOptions,\n} from './definitions';\nimport {\n abortIfNeeded,\n createPasskeyDomException,\n credentialFromJSON,\n PasskeyPublicKeyCredential,\n normalizePluginError,\n parseCreationOptionsFromJSON,\n parseRequestOptionsFromJSON,\n webAuthnCreationOptionsToJSON,\n webAuthnRequestOptionsToJSON,\n PasskeyAuthenticatorAssertionResponse,\n PasskeyAuthenticatorAttestationResponse,\n} from './webauthn';\n\ntype CredentialsContainerLike = Pick<CredentialsContainer, 'create' | 'get' | 'preventSilentAccess' | 'store'>;\n\ntype ShimRoot = typeof globalThis & {\n navigator: Navigator & { credentials?: CredentialsContainerLike };\n __capgoPasskeyShimInstalled?: boolean;\n __capgoPasskeyShimConfig?: ShimWebAuthnOptions;\n};\n\ninterface InstallWebAuthnShimOptions {\n root?: typeof globalThis;\n plugin: CapacitorPasskeyPlugin;\n options?: ShimWebAuthnOptions;\n}\n\nexport function installWebAuthnShim({ root = globalThis, plugin, options }: InstallWebAuthnShimOptions): void {\n const shimRoot = root as ShimRoot;\n const config = {\n ...(shimRoot.__capgoPasskeyShimConfig ?? {}),\n ...(options ?? {}),\n };\n\n shimRoot.__capgoPasskeyShimConfig = config;\n\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials: CredentialsContainerLike = {\n create: async (request?: CredentialCreationOptions): Promise<Credential | null> => {\n const currentConfig = shimRoot.__capgoPasskeyShimConfig ?? {};\n\n if (!request?.publicKey) {\n if (originalCredentials?.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n })) as PasskeyRegistrationCredential;\n\n return credentialFromJSON(response) as unknown as Credential;\n },\n get: async (request?: CredentialRequestOptions): Promise<Credential | null> => {\n const currentConfig = shimRoot.__capgoPasskeyShimConfig ?? {};\n\n if (!request?.publicKey) {\n if (originalCredentials?.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException(\n 'NotSupportedError',\n 'Conditional mediation is not available through the Capacitor passkey shim.',\n );\n }\n\n const hints = (request.publicKey as PublicKeyCredentialRequestOptions & { hints?: string[] }).hints;\n\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n preferImmediatelyAvailableCredentials: hints?.includes('client-device') || undefined,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n })) as PasskeyAuthenticationCredential;\n\n return credentialFromJSON(response) as unknown as Credential;\n },\n preventSilentAccess: async (): Promise<void> => {\n if (originalCredentials?.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential?: Credential): Promise<void> => {\n if (originalCredentials?.store && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n } catch {\n (shimRoot.navigator as Navigator & { credentials?: CredentialsContainerLike }).credentials = patchedCredentials;\n }\n\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\n\nfunction installPublicKeyCredentialStatics(root: ShimRoot, plugin: CapacitorPasskeyPlugin): void {\n const nativePublicKeyCredential = root.PublicKeyCredential ?? class {};\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n } catch (error) {\n throw normalizePluginError(error);\n }\n };\n\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n\n root.PublicKeyCredential = nativePublicKeyCredential as typeof PublicKeyCredential;\n}\n\nfunction defineStatic(target: object, key: string, value: unknown): void {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n } catch {\n Reflect.set(target, key, value);\n }\n}\n"]}
@@ -4,6 +4,7 @@ export function createNativeRequest(options) {
4
4
  const getOptions = options;
5
5
  return {
6
6
  origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),
7
+ preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,
7
8
  requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),
8
9
  };
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webauthn.js","sourceRoot":"","sources":["../../src/webauthn.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CreateCredentialOptions,\n GetCredentialOptions,\n PasskeyAuthenticationCredential,\n PasskeyAuthenticatorAssertionResponseJSON,\n PasskeyAuthenticatorAttestationResponseJSON,\n PasskeyCredentialDescriptor,\n PasskeyPublicKeyCredentialCreationOptionsJSON,\n PasskeyPublicKeyCredentialRequestOptionsJSON,\n PasskeyRegistrationCredential,\n} from './definitions';\nimport type { NativePasskeyRequest } from './internal';\n\ntype BufferLike = BufferSource | ArrayLike<number>;\ntype JsonRecord = Record<string, unknown>;\ntype CredentialJson = PasskeyRegistrationCredential | PasskeyAuthenticationCredential;\n\nconst PASSKEY_TYPE = 'public-key';\n\nexport function createNativeRequest(options: CreateCredentialOptions | GetCredentialOptions): NativePasskeyRequest {\n if ('mediation' in options) {\n const getOptions = options as GetCredentialOptions;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n\n const createOptions = options as CreateCredentialOptions;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\n\nexport function webAuthnCreationOptionsToJSON(\n options: PublicKeyCredentialCreationOptions,\n origin?: string,\n): PasskeyPublicKeyCredentialCreationOptionsJSON {\n return normalizeCreationOptionsJSON(\n {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: options.excludeCredentials?.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n },\n origin,\n );\n}\n\nexport function webAuthnRequestOptionsToJSON(\n options: PublicKeyCredentialRequestOptions,\n origin?: string,\n): PasskeyPublicKeyCredentialRequestOptionsJSON {\n return normalizeRequestOptionsJSON(\n {\n allowCredentials: options.allowCredentials?.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n },\n origin,\n );\n}\n\nexport function normalizeCreationOptionsJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n origin?: string,\n): PasskeyPublicKeyCredentialCreationOptionsJSON {\n const rpId = options.rp.id ?? deriveRpId(resolveOrigin(origin, options.rp.id));\n\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n\n return {\n ...options,\n excludeCredentials: options.excludeCredentials?.map(descriptorToJSON),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type ?? PASSKEY_TYPE,\n })),\n rp: {\n ...options.rp,\n id: rpId,\n },\n };\n}\n\nexport function normalizeRequestOptionsJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n origin?: string,\n): PasskeyPublicKeyCredentialRequestOptionsJSON {\n const rpId = options.rpId ?? deriveRpId(resolveOrigin(origin, options.rpId));\n\n return {\n ...options,\n allowCredentials: options.allowCredentials?.map(descriptorToJSON),\n rpId,\n };\n}\n\nexport function browserCreationOptionsFromJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n): PublicKeyCredentialCreationOptions {\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: options.excludeCredentials?.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type ?? PASSKEY_TYPE,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName ?? options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\n\nexport function browserRequestOptionsFromJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n): PublicKeyCredentialRequestOptions {\n return {\n allowCredentials: options.allowCredentials?.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\n\nexport async function browserRegistrationToJSON(credential: Credential | null): Promise<PasskeyRegistrationCredential> {\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response as AuthenticatorAttestationResponse;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson as PasskeyRegistrationCredential);\n }\n\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord(publicKeyCredential.getClientExtensionResults?.()),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\n\nexport async function browserAuthenticationToJSON(\n credential: Credential | null,\n): Promise<PasskeyAuthenticationCredential> {\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response as AuthenticatorAssertionResponse;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson as PasskeyAuthenticationCredential);\n }\n\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord(publicKeyCredential.getClientExtensionResults?.()),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\n\nexport function credentialFromJSON(credential: CredentialJson): PublicKeyCredential {\n const shimCredential = new PasskeyPublicKeyCredential(credential) as unknown as PublicKeyCredential;\n\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n\n return shimCredential;\n}\n\nexport function parseCreationOptionsFromJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n): PublicKeyCredentialCreationOptions {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\n\nexport function parseRequestOptionsFromJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n): PublicKeyCredentialRequestOptions {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\n\nexport function decodeBase64Url(value: string): ArrayBuffer {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\n\nexport function encodeBase64Url(value: BufferLike | null | undefined): string {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n\n const bytes = toUint8Array(value);\n let binary = '';\n\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\n\nexport function resolveOrigin(explicitOrigin?: string, rpId?: string): string | undefined {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n\n if (rpId) {\n return `https://${rpId}`;\n }\n\n return undefined;\n}\n\nexport function createPasskeyDomException(name: string, message: string): Error {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n\n const error = new Error(message);\n error.name = name;\n return error;\n}\n\nexport function abortIfNeeded(signal?: AbortSignal | null): void {\n if (signal?.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\n\nexport function normalizePluginError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n\n return createPasskeyDomException(name, message);\n}\n\nfunction credentialWithToJSON(credential: PublicKeyCredential): CredentialJson | null {\n const toJSON = (credential as PublicKeyCredential & { toJSON?: () => unknown }).toJSON;\n\n if (typeof toJSON !== 'function') {\n return null;\n }\n\n const json = toJSON.call(credential);\n\n if (!json || typeof json !== 'object') {\n return null;\n }\n\n const response = (json as { response?: JsonRecord }).response;\n if (!response) {\n return null;\n }\n\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json as Partial<PasskeyRegistrationCredential>);\n }\n\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json as Partial<PasskeyAuthenticationCredential>);\n }\n\n return null;\n}\n\nfunction normalizeRegistrationCredential(\n credential: Partial<PasskeyRegistrationCredential>,\n): PasskeyRegistrationCredential {\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: credential.clientExtensionResults ?? {},\n id: String(credential.id ?? ''),\n rawId: String(credential.rawId ?? credential.id ?? ''),\n response: normalizeAttestationResponse(credential.response ?? {}),\n type: PASSKEY_TYPE,\n };\n}\n\nfunction normalizeAuthenticationCredential(\n credential: Partial<PasskeyAuthenticationCredential>,\n): PasskeyAuthenticationCredential {\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: credential.clientExtensionResults ?? {},\n id: String(credential.id ?? ''),\n rawId: String(credential.rawId ?? credential.id ?? ''),\n response: normalizeAssertionResponse(credential.response ?? {}),\n type: PASSKEY_TYPE,\n };\n}\n\nfunction normalizeAttestationResponse(\n response: Partial<PasskeyAuthenticatorAttestationResponseJSON>,\n): PasskeyAuthenticatorAttestationResponseJSON {\n return {\n attestationObject: String(response.attestationObject ?? ''),\n clientDataJSON: String(response.clientDataJSON ?? ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\n\nfunction normalizeAssertionResponse(\n response: Partial<PasskeyAuthenticatorAssertionResponseJSON>,\n): PasskeyAuthenticatorAssertionResponseJSON {\n return {\n authenticatorData: String(response.authenticatorData ?? ''),\n clientDataJSON: String(response.clientDataJSON ?? ''),\n signature: String(response.signature ?? ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\n\nfunction expectPublicKeyCredential(credential: Credential | null, flow: string): PublicKeyCredential {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n\n return credential;\n}\n\nfunction descriptorToJSON(\n descriptor: PublicKeyCredentialDescriptor | PasskeyCredentialDescriptor,\n): PasskeyCredentialDescriptor {\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: descriptor.type ?? PASSKEY_TYPE,\n };\n}\n\nfunction jsonDescriptorToBrowser(descriptor: PasskeyCredentialDescriptor): PublicKeyCredentialDescriptor {\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports as AuthenticatorTransport[] | undefined,\n type: descriptor.type ?? PASSKEY_TYPE,\n };\n}\n\nfunction cloneExtensions(\n extensions: AuthenticationExtensionsClientInputs | JsonRecord | undefined,\n): JsonRecord | undefined {\n if (!extensions) {\n return undefined;\n }\n\n return JSON.parse(JSON.stringify(extensions)) as JsonRecord;\n}\n\nfunction nullableBufferToBase64Url(value: ArrayBuffer | null): string | null;\nfunction nullableBufferToBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | null | undefined;\nfunction nullableBufferToBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | null | undefined {\n if (typeof value === 'undefined') {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n return encodeBase64Url(value);\n}\n\nfunction nullableBufferToOptionalBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | undefined {\n const encoded = nullableBufferToBase64Url(value);\n return encoded ?? undefined;\n}\n\nfunction deriveRpId(origin?: string): string | undefined {\n if (!origin) {\n return undefined;\n }\n\n try {\n return new URL(origin).hostname;\n } catch {\n return undefined;\n }\n}\n\nfunction base64UrlToBytes(value: string): Uint8Array {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n\n return bytes;\n}\n\nfunction toUint8Array(value: BufferLike): Uint8Array {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n\n return new Uint8Array(value);\n}\n\nfunction normalizeAttachment(value: string | null | undefined) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n\n return undefined;\n}\n\nfunction clientExtensionResultsToRecord(\n value: AuthenticationExtensionsClientOutputs | undefined,\n): Record<string, unknown> {\n if (!value) {\n return {};\n }\n\n return JSON.parse(JSON.stringify(value)) as Record<string, unknown>;\n}\n\nexport class PasskeyAuthenticatorAttestationResponse {\n public readonly clientDataJSON: ArrayBuffer;\n public readonly attestationObject: ArrayBuffer;\n public readonly authenticatorData: ArrayBuffer;\n\n constructor(private readonly json: PasskeyAuthenticatorAttestationResponseJSON) {\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n\n getPublicKey(): ArrayBuffer | null {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n\n getPublicKeyAlgorithm(): number {\n return this.json.publicKeyAlgorithm ?? -7;\n }\n\n getTransports(): string[] {\n return this.json.transports ? [...this.json.transports] : [];\n }\n\n getAuthenticatorData(): ArrayBuffer {\n return this.authenticatorData;\n }\n\n toJSON(): PasskeyAuthenticatorAttestationResponseJSON {\n return { ...this.json };\n }\n}\n\nexport class PasskeyAuthenticatorAssertionResponse {\n public readonly clientDataJSON: ArrayBuffer;\n public readonly authenticatorData: ArrayBuffer;\n public readonly signature: ArrayBuffer;\n public readonly userHandle: ArrayBuffer | null;\n\n constructor(private readonly json: PasskeyAuthenticatorAssertionResponseJSON) {\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n\n toJSON(): PasskeyAuthenticatorAssertionResponseJSON {\n return { ...this.json };\n }\n}\n\nexport class PasskeyPublicKeyCredential {\n public readonly id: string;\n public readonly rawId: ArrayBuffer;\n public readonly type: PublicKeyCredentialType = PASSKEY_TYPE;\n public readonly authenticatorAttachment: string | null;\n public readonly response: PasskeyAuthenticatorAttestationResponse | PasskeyAuthenticatorAssertionResponse;\n\n constructor(private readonly json: CredentialJson) {\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = json.authenticatorAttachment ?? null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n\n getClientExtensionResults(): AuthenticationExtensionsClientOutputs {\n return (this.json.clientExtensionResults ?? {}) as AuthenticationExtensionsClientOutputs;\n }\n\n toJSON(): CredentialJson {\n return JSON.parse(JSON.stringify(this.json)) as CredentialJson;\n }\n}\n\nfunction resolveErrorName(error: unknown): string {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n\n return 'UnknownError';\n}\n"]}
1
+ {"version":3,"file":"webauthn.js","sourceRoot":"","sources":["../../src/webauthn.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CreateCredentialOptions,\n GetCredentialOptions,\n PasskeyAuthenticationCredential,\n PasskeyAuthenticatorAssertionResponseJSON,\n PasskeyAuthenticatorAttestationResponseJSON,\n PasskeyCredentialDescriptor,\n PasskeyPublicKeyCredentialCreationOptionsJSON,\n PasskeyPublicKeyCredentialRequestOptionsJSON,\n PasskeyRegistrationCredential,\n} from './definitions';\nimport type { NativePasskeyRequest } from './internal';\n\ntype BufferLike = BufferSource | ArrayLike<number>;\ntype JsonRecord = Record<string, unknown>;\ntype CredentialJson = PasskeyRegistrationCredential | PasskeyAuthenticationCredential;\n\nconst PASSKEY_TYPE = 'public-key';\n\nexport function createNativeRequest(options: CreateCredentialOptions | GetCredentialOptions): NativePasskeyRequest {\n if ('mediation' in options) {\n const getOptions = options as GetCredentialOptions;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n\n const createOptions = options as CreateCredentialOptions;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\n\nexport function webAuthnCreationOptionsToJSON(\n options: PublicKeyCredentialCreationOptions,\n origin?: string,\n): PasskeyPublicKeyCredentialCreationOptionsJSON {\n return normalizeCreationOptionsJSON(\n {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: options.excludeCredentials?.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n },\n origin,\n );\n}\n\nexport function webAuthnRequestOptionsToJSON(\n options: PublicKeyCredentialRequestOptions,\n origin?: string,\n): PasskeyPublicKeyCredentialRequestOptionsJSON {\n return normalizeRequestOptionsJSON(\n {\n allowCredentials: options.allowCredentials?.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n },\n origin,\n );\n}\n\nexport function normalizeCreationOptionsJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n origin?: string,\n): PasskeyPublicKeyCredentialCreationOptionsJSON {\n const rpId = options.rp.id ?? deriveRpId(resolveOrigin(origin, options.rp.id));\n\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n\n return {\n ...options,\n excludeCredentials: options.excludeCredentials?.map(descriptorToJSON),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type ?? PASSKEY_TYPE,\n })),\n rp: {\n ...options.rp,\n id: rpId,\n },\n };\n}\n\nexport function normalizeRequestOptionsJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n origin?: string,\n): PasskeyPublicKeyCredentialRequestOptionsJSON {\n const rpId = options.rpId ?? deriveRpId(resolveOrigin(origin, options.rpId));\n\n return {\n ...options,\n allowCredentials: options.allowCredentials?.map(descriptorToJSON),\n rpId,\n };\n}\n\nexport function browserCreationOptionsFromJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n): PublicKeyCredentialCreationOptions {\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: options.excludeCredentials?.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type ?? PASSKEY_TYPE,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName ?? options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\n\nexport function browserRequestOptionsFromJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n): PublicKeyCredentialRequestOptions {\n return {\n allowCredentials: options.allowCredentials?.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\n\nexport async function browserRegistrationToJSON(credential: Credential | null): Promise<PasskeyRegistrationCredential> {\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response as AuthenticatorAttestationResponse;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson as PasskeyRegistrationCredential);\n }\n\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord(publicKeyCredential.getClientExtensionResults?.()),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\n\nexport async function browserAuthenticationToJSON(\n credential: Credential | null,\n): Promise<PasskeyAuthenticationCredential> {\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response as AuthenticatorAssertionResponse;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson as PasskeyAuthenticationCredential);\n }\n\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord(publicKeyCredential.getClientExtensionResults?.()),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\n\nexport function credentialFromJSON(credential: CredentialJson): PublicKeyCredential {\n const shimCredential = new PasskeyPublicKeyCredential(credential) as unknown as PublicKeyCredential;\n\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n\n return shimCredential;\n}\n\nexport function parseCreationOptionsFromJSON(\n options: PasskeyPublicKeyCredentialCreationOptionsJSON,\n): PublicKeyCredentialCreationOptions {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\n\nexport function parseRequestOptionsFromJSON(\n options: PasskeyPublicKeyCredentialRequestOptionsJSON,\n): PublicKeyCredentialRequestOptions {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\n\nexport function decodeBase64Url(value: string): ArrayBuffer {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\n\nexport function encodeBase64Url(value: BufferLike | null | undefined): string {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n\n const bytes = toUint8Array(value);\n let binary = '';\n\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\n\nexport function resolveOrigin(explicitOrigin?: string, rpId?: string): string | undefined {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n\n if (rpId) {\n return `https://${rpId}`;\n }\n\n return undefined;\n}\n\nexport function createPasskeyDomException(name: string, message: string): Error {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n\n const error = new Error(message);\n error.name = name;\n return error;\n}\n\nexport function abortIfNeeded(signal?: AbortSignal | null): void {\n if (signal?.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\n\nexport function normalizePluginError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n\n return createPasskeyDomException(name, message);\n}\n\nfunction credentialWithToJSON(credential: PublicKeyCredential): CredentialJson | null {\n const toJSON = (credential as PublicKeyCredential & { toJSON?: () => unknown }).toJSON;\n\n if (typeof toJSON !== 'function') {\n return null;\n }\n\n const json = toJSON.call(credential);\n\n if (!json || typeof json !== 'object') {\n return null;\n }\n\n const response = (json as { response?: JsonRecord }).response;\n if (!response) {\n return null;\n }\n\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json as Partial<PasskeyRegistrationCredential>);\n }\n\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json as Partial<PasskeyAuthenticationCredential>);\n }\n\n return null;\n}\n\nfunction normalizeRegistrationCredential(\n credential: Partial<PasskeyRegistrationCredential>,\n): PasskeyRegistrationCredential {\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: credential.clientExtensionResults ?? {},\n id: String(credential.id ?? ''),\n rawId: String(credential.rawId ?? credential.id ?? ''),\n response: normalizeAttestationResponse(credential.response ?? {}),\n type: PASSKEY_TYPE,\n };\n}\n\nfunction normalizeAuthenticationCredential(\n credential: Partial<PasskeyAuthenticationCredential>,\n): PasskeyAuthenticationCredential {\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: credential.clientExtensionResults ?? {},\n id: String(credential.id ?? ''),\n rawId: String(credential.rawId ?? credential.id ?? ''),\n response: normalizeAssertionResponse(credential.response ?? {}),\n type: PASSKEY_TYPE,\n };\n}\n\nfunction normalizeAttestationResponse(\n response: Partial<PasskeyAuthenticatorAttestationResponseJSON>,\n): PasskeyAuthenticatorAttestationResponseJSON {\n return {\n attestationObject: String(response.attestationObject ?? ''),\n clientDataJSON: String(response.clientDataJSON ?? ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\n\nfunction normalizeAssertionResponse(\n response: Partial<PasskeyAuthenticatorAssertionResponseJSON>,\n): PasskeyAuthenticatorAssertionResponseJSON {\n return {\n authenticatorData: String(response.authenticatorData ?? ''),\n clientDataJSON: String(response.clientDataJSON ?? ''),\n signature: String(response.signature ?? ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\n\nfunction expectPublicKeyCredential(credential: Credential | null, flow: string): PublicKeyCredential {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n\n return credential;\n}\n\nfunction descriptorToJSON(\n descriptor: PublicKeyCredentialDescriptor | PasskeyCredentialDescriptor,\n): PasskeyCredentialDescriptor {\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: descriptor.type ?? PASSKEY_TYPE,\n };\n}\n\nfunction jsonDescriptorToBrowser(descriptor: PasskeyCredentialDescriptor): PublicKeyCredentialDescriptor {\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports as AuthenticatorTransport[] | undefined,\n type: descriptor.type ?? PASSKEY_TYPE,\n };\n}\n\nfunction cloneExtensions(\n extensions: AuthenticationExtensionsClientInputs | JsonRecord | undefined,\n): JsonRecord | undefined {\n if (!extensions) {\n return undefined;\n }\n\n return JSON.parse(JSON.stringify(extensions)) as JsonRecord;\n}\n\nfunction nullableBufferToBase64Url(value: ArrayBuffer | null): string | null;\nfunction nullableBufferToBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | null | undefined;\nfunction nullableBufferToBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | null | undefined {\n if (typeof value === 'undefined') {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n return encodeBase64Url(value);\n}\n\nfunction nullableBufferToOptionalBase64Url(value: ArrayBuffer | BufferSource | null | undefined): string | undefined {\n const encoded = nullableBufferToBase64Url(value);\n return encoded ?? undefined;\n}\n\nfunction deriveRpId(origin?: string): string | undefined {\n if (!origin) {\n return undefined;\n }\n\n try {\n return new URL(origin).hostname;\n } catch {\n return undefined;\n }\n}\n\nfunction base64UrlToBytes(value: string): Uint8Array {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n\n return bytes;\n}\n\nfunction toUint8Array(value: BufferLike): Uint8Array {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n\n return new Uint8Array(value);\n}\n\nfunction normalizeAttachment(value: string | null | undefined) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n\n return undefined;\n}\n\nfunction clientExtensionResultsToRecord(\n value: AuthenticationExtensionsClientOutputs | undefined,\n): Record<string, unknown> {\n if (!value) {\n return {};\n }\n\n return JSON.parse(JSON.stringify(value)) as Record<string, unknown>;\n}\n\nexport class PasskeyAuthenticatorAttestationResponse {\n public readonly clientDataJSON: ArrayBuffer;\n public readonly attestationObject: ArrayBuffer;\n public readonly authenticatorData: ArrayBuffer;\n\n constructor(private readonly json: PasskeyAuthenticatorAttestationResponseJSON) {\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n\n getPublicKey(): ArrayBuffer | null {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n\n getPublicKeyAlgorithm(): number {\n return this.json.publicKeyAlgorithm ?? -7;\n }\n\n getTransports(): string[] {\n return this.json.transports ? [...this.json.transports] : [];\n }\n\n getAuthenticatorData(): ArrayBuffer {\n return this.authenticatorData;\n }\n\n toJSON(): PasskeyAuthenticatorAttestationResponseJSON {\n return { ...this.json };\n }\n}\n\nexport class PasskeyAuthenticatorAssertionResponse {\n public readonly clientDataJSON: ArrayBuffer;\n public readonly authenticatorData: ArrayBuffer;\n public readonly signature: ArrayBuffer;\n public readonly userHandle: ArrayBuffer | null;\n\n constructor(private readonly json: PasskeyAuthenticatorAssertionResponseJSON) {\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n\n toJSON(): PasskeyAuthenticatorAssertionResponseJSON {\n return { ...this.json };\n }\n}\n\nexport class PasskeyPublicKeyCredential {\n public readonly id: string;\n public readonly rawId: ArrayBuffer;\n public readonly type: PublicKeyCredentialType = PASSKEY_TYPE;\n public readonly authenticatorAttachment: string | null;\n public readonly response: PasskeyAuthenticatorAttestationResponse | PasskeyAuthenticatorAssertionResponse;\n\n constructor(private readonly json: CredentialJson) {\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = json.authenticatorAttachment ?? null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n\n getClientExtensionResults(): AuthenticationExtensionsClientOutputs {\n return (this.json.clientExtensionResults ?? {}) as AuthenticationExtensionsClientOutputs;\n }\n\n toJSON(): CredentialJson {\n return JSON.parse(JSON.stringify(this.json)) as CredentialJson;\n }\n}\n\nfunction resolveErrorName(error: unknown): string {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n\n return 'UnknownError';\n}\n"]}
@@ -8,6 +8,7 @@ function createNativeRequest(options) {
8
8
  const getOptions = options;
9
9
  return {
10
10
  origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),
11
+ preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,
11
12
  requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),
12
13
  };
13
14
  }
@@ -500,9 +501,11 @@ function installWebAuthnShim({ root = globalThis, plugin, options }) {
500
501
  if (request.mediation === 'conditional') {
501
502
  throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');
502
503
  }
504
+ const hints = request.publicKey.hints;
503
505
  const response = (await plugin.getCredential({
504
506
  mediation: request.mediation,
505
507
  origin: currentConfig.origin,
508
+ preferImmediatelyAvailableCredentials: (hints === null || hints === void 0 ? void 0 : hints.includes('client-device')) || undefined,
506
509
  publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),
507
510
  }));
508
511
  return credentialFromJSON(response);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/webauthn.js","esm/shim.js","esm/index.js","esm/web.js"],"sourcesContent":["const PASSKEY_TYPE = 'public-key';\nexport function createNativeRequest(options) {\n if ('mediation' in options) {\n const getOptions = options;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n const createOptions = options;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\nexport function webAuthnCreationOptionsToJSON(options, origin) {\n var _a;\n return normalizeCreationOptionsJSON({\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n }, origin);\n}\nexport function webAuthnRequestOptionsToJSON(options, origin) {\n var _a;\n return normalizeRequestOptionsJSON({\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n }, origin);\n}\nexport function normalizeCreationOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rp.id) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rp.id));\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n return Object.assign(Object.assign({}, options), { excludeCredentials: (_b = options.excludeCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }), rp: Object.assign(Object.assign({}, options.rp), { id: rpId }) });\n}\nexport function normalizeRequestOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rpId) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rpId));\n return Object.assign(Object.assign({}, options), { allowCredentials: (_b = options.allowCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), rpId });\n}\nexport function browserCreationOptionsFromJSON(options) {\n var _a, _b;\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: (_b = options.user.displayName) !== null && _b !== void 0 ? _b : options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\nexport function browserRequestOptionsFromJSON(options) {\n var _a;\n return {\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\nexport async function browserRegistrationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\nexport async function browserAuthenticationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\nexport function credentialFromJSON(credential) {\n const shimCredential = new PasskeyPublicKeyCredential(credential);\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n return shimCredential;\n}\nexport function parseCreationOptionsFromJSON(options) {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\nexport function parseRequestOptionsFromJSON(options) {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\nexport function decodeBase64Url(value) {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\nexport function encodeBase64Url(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n const bytes = toUint8Array(value);\n let binary = '';\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\nexport function resolveOrigin(explicitOrigin, rpId) {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n if (rpId) {\n return `https://${rpId}`;\n }\n return undefined;\n}\nexport function createPasskeyDomException(name, message) {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n const error = new Error(message);\n error.name = name;\n return error;\n}\nexport function abortIfNeeded(signal) {\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\nexport function normalizePluginError(error) {\n if (error instanceof Error) {\n return error;\n }\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n return createPasskeyDomException(name, message);\n}\nfunction credentialWithToJSON(credential) {\n const toJSON = credential.toJSON;\n if (typeof toJSON !== 'function') {\n return null;\n }\n const json = toJSON.call(credential);\n if (!json || typeof json !== 'object') {\n return null;\n }\n const response = json.response;\n if (!response) {\n return null;\n }\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json);\n }\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json);\n }\n return null;\n}\nfunction normalizeRegistrationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAttestationResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAuthenticationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAssertionResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAttestationResponse(response) {\n var _a, _b;\n return {\n attestationObject: String((_a = response.attestationObject) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\nfunction normalizeAssertionResponse(response) {\n var _a, _b, _c;\n return {\n authenticatorData: String((_a = response.authenticatorData) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n signature: String((_c = response.signature) !== null && _c !== void 0 ? _c : ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\nfunction expectPublicKeyCredential(credential, flow) {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n return credential;\n}\nfunction descriptorToJSON(descriptor) {\n var _a;\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction jsonDescriptorToBrowser(descriptor) {\n var _a;\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction cloneExtensions(extensions) {\n if (!extensions) {\n return undefined;\n }\n return JSON.parse(JSON.stringify(extensions));\n}\nfunction nullableBufferToBase64Url(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return encodeBase64Url(value);\n}\nfunction nullableBufferToOptionalBase64Url(value) {\n const encoded = nullableBufferToBase64Url(value);\n return encoded !== null && encoded !== void 0 ? encoded : undefined;\n}\nfunction deriveRpId(origin) {\n if (!origin) {\n return undefined;\n }\n try {\n return new URL(origin).hostname;\n }\n catch (_a) {\n return undefined;\n }\n}\nfunction base64UrlToBytes(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\nfunction toUint8Array(value) {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return new Uint8Array(value);\n}\nfunction normalizeAttachment(value) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n return undefined;\n}\nfunction clientExtensionResultsToRecord(value) {\n if (!value) {\n return {};\n }\n return JSON.parse(JSON.stringify(value));\n}\nexport class PasskeyAuthenticatorAttestationResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n getPublicKey() {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n getPublicKeyAlgorithm() {\n var _a;\n return (_a = this.json.publicKeyAlgorithm) !== null && _a !== void 0 ? _a : -7;\n }\n getTransports() {\n return this.json.transports ? [...this.json.transports] : [];\n }\n getAuthenticatorData() {\n return this.authenticatorData;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyAuthenticatorAssertionResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyPublicKeyCredential {\n constructor(json) {\n var _a;\n this.json = json;\n this.type = PASSKEY_TYPE;\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = (_a = json.authenticatorAttachment) !== null && _a !== void 0 ? _a : null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n getClientExtensionResults() {\n var _a;\n return ((_a = this.json.clientExtensionResults) !== null && _a !== void 0 ? _a : {});\n }\n toJSON() {\n return JSON.parse(JSON.stringify(this.json));\n }\n}\nfunction resolveErrorName(error) {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n return 'UnknownError';\n}\n//# sourceMappingURL=webauthn.js.map","import { abortIfNeeded, createPasskeyDomException, credentialFromJSON, PasskeyPublicKeyCredential, normalizePluginError, parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, webAuthnCreationOptionsToJSON, webAuthnRequestOptionsToJSON, PasskeyAuthenticatorAssertionResponse, PasskeyAuthenticatorAttestationResponse, } from './webauthn';\nexport function installWebAuthnShim({ root = globalThis, plugin, options }) {\n var _a;\n const shimRoot = root;\n const config = Object.assign(Object.assign({}, ((_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {})), (options !== null && options !== void 0 ? options : {}));\n shimRoot.__capgoPasskeyShimConfig = config;\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials = {\n create: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n get: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');\n }\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n preventSilentAccess: async () => {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential) => {\n if ((originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.store) && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n }\n catch (_b) {\n shimRoot.navigator.credentials = patchedCredentials;\n }\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\nfunction installPublicKeyCredentialStatics(root, plugin) {\n var _a;\n const nativePublicKeyCredential = (_a = root.PublicKeyCredential) !== null && _a !== void 0 ? _a : class {\n };\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n }\n catch (error) {\n throw normalizePluginError(error);\n }\n };\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n root.PublicKeyCredential = nativePublicKeyCredential;\n}\nfunction defineStatic(target, key, value) {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n }\n catch (_a) {\n Reflect.set(target, key, value);\n }\n}\n//# sourceMappingURL=shim.js.map","import { registerPlugin } from '@capacitor/core';\nimport { installWebAuthnShim } from './shim';\nimport { createNativeRequest } from './webauthn';\nconst NativeCapacitorPasskey = registerPlugin('CapacitorPasskey', {\n web: () => import('./web').then((module) => new module.CapacitorPasskeyWeb()),\n});\nlet configurationPromise;\nlet cachedConfiguration;\nfunction mergeShimOptions(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration === null || configuration === void 0 ? void 0 : configuration.origin;\n const force = options === null || options === void 0 ? void 0 : options.force;\n if (!origin && force === undefined) {\n return undefined;\n }\n return {\n force,\n origin,\n };\n}\nfunction mergeRuntimeConfiguration(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration.origin;\n const domains = new Set(configuration.domains);\n if (origin) {\n try {\n domains.add(new URL(origin).hostname);\n }\n catch (_b) {\n // Ignore invalid override values here and let native APIs validate later.\n }\n }\n return Object.assign(Object.assign({}, configuration), { domains: [...domains], origin });\n}\nasync function loadConfiguration() {\n try {\n const configuration = await NativeCapacitorPasskey.getConfiguration();\n cachedConfiguration = configuration;\n return configuration;\n }\n catch (error) {\n configurationPromise = undefined;\n throw error;\n }\n}\nconst CapacitorPasskey = {\n async autoShimWebAuthn(options) {\n const configuration = await CapacitorPasskey.getConfiguration();\n const effectiveConfiguration = mergeRuntimeConfiguration(configuration, options);\n cachedConfiguration = effectiveConfiguration;\n installWebAuthnShim({\n options: mergeShimOptions(effectiveConfiguration, options),\n plugin: CapacitorPasskey,\n });\n return effectiveConfiguration;\n },\n async createCredential(options) {\n return NativeCapacitorPasskey.createCredential(createNativeRequest(options));\n },\n async getConfiguration() {\n if (!configurationPromise) {\n configurationPromise = loadConfiguration();\n }\n return configurationPromise;\n },\n async getCredential(options) {\n return NativeCapacitorPasskey.getCredential(createNativeRequest(options));\n },\n async getPluginVersion() {\n return NativeCapacitorPasskey.getPluginVersion();\n },\n async isSupported() {\n return NativeCapacitorPasskey.isSupported();\n },\n shimWebAuthn(options) {\n installWebAuthnShim({\n options: mergeShimOptions(cachedConfiguration, options),\n plugin: CapacitorPasskey,\n });\n },\n};\nexport * from './definitions';\nexport { CapacitorPasskey };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { browserAuthenticationToJSON, browserCreationOptionsFromJSON, browserRegistrationToJSON, browserRequestOptionsFromJSON, createPasskeyDomException, } from './webauthn';\nexport class CapacitorPasskeyWeb extends WebPlugin {\n async createCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.create({\n publicKey: browserCreationOptionsFromJSON(parsed),\n });\n return browserRegistrationToJSON(credential);\n }\n async getCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.get({\n publicKey: browserRequestOptionsFromJSON(parsed),\n });\n return browserAuthenticationToJSON(credential);\n }\n async getConfiguration() {\n const origin = this.currentOrigin();\n const domains = origin ? [new URL(origin).hostname] : [];\n return {\n autoShim: true,\n domains,\n origin,\n platform: 'web',\n };\n }\n async isSupported() {\n var _a, _b, _c, _d;\n const available = typeof globalThis.PublicKeyCredential !== 'undefined' &&\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) === 'function' &&\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) === 'function';\n let conditionalMediation = false;\n if (available && typeof globalThis.PublicKeyCredential.isConditionalMediationAvailable === 'function') {\n conditionalMediation = await globalThis.PublicKeyCredential.isConditionalMediationAvailable();\n }\n return {\n available,\n conditionalMediation,\n platform: 'web',\n };\n }\n async getPluginVersion() {\n return {\n version: 'web',\n };\n }\n ensureCredentials() {\n var _a, _b, _c, _d;\n if (typeof globalThis.PublicKeyCredential === 'undefined' ||\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) !== 'function' ||\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) !== 'function') {\n throw createPasskeyDomException('NotSupportedError', 'WebAuthn is not available in this browser.');\n }\n return globalThis.navigator.credentials;\n }\n currentOrigin() {\n if (typeof globalThis.location === 'undefined') {\n return undefined;\n }\n if (globalThis.location.protocol !== 'http:' && globalThis.location.protocol !== 'https:') {\n return undefined;\n }\n return globalThis.location.origin;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/webauthn.js","esm/shim.js","esm/index.js","esm/web.js"],"sourcesContent":["const PASSKEY_TYPE = 'public-key';\nexport function createNativeRequest(options) {\n if ('mediation' in options) {\n const getOptions = options;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n const createOptions = options;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\nexport function webAuthnCreationOptionsToJSON(options, origin) {\n var _a;\n return normalizeCreationOptionsJSON({\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n }, origin);\n}\nexport function webAuthnRequestOptionsToJSON(options, origin) {\n var _a;\n return normalizeRequestOptionsJSON({\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n }, origin);\n}\nexport function normalizeCreationOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rp.id) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rp.id));\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n return Object.assign(Object.assign({}, options), { excludeCredentials: (_b = options.excludeCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }), rp: Object.assign(Object.assign({}, options.rp), { id: rpId }) });\n}\nexport function normalizeRequestOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rpId) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rpId));\n return Object.assign(Object.assign({}, options), { allowCredentials: (_b = options.allowCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), rpId });\n}\nexport function browserCreationOptionsFromJSON(options) {\n var _a, _b;\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: (_b = options.user.displayName) !== null && _b !== void 0 ? _b : options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\nexport function browserRequestOptionsFromJSON(options) {\n var _a;\n return {\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\nexport async function browserRegistrationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\nexport async function browserAuthenticationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\nexport function credentialFromJSON(credential) {\n const shimCredential = new PasskeyPublicKeyCredential(credential);\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n return shimCredential;\n}\nexport function parseCreationOptionsFromJSON(options) {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\nexport function parseRequestOptionsFromJSON(options) {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\nexport function decodeBase64Url(value) {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\nexport function encodeBase64Url(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n const bytes = toUint8Array(value);\n let binary = '';\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\nexport function resolveOrigin(explicitOrigin, rpId) {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n if (rpId) {\n return `https://${rpId}`;\n }\n return undefined;\n}\nexport function createPasskeyDomException(name, message) {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n const error = new Error(message);\n error.name = name;\n return error;\n}\nexport function abortIfNeeded(signal) {\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\nexport function normalizePluginError(error) {\n if (error instanceof Error) {\n return error;\n }\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n return createPasskeyDomException(name, message);\n}\nfunction credentialWithToJSON(credential) {\n const toJSON = credential.toJSON;\n if (typeof toJSON !== 'function') {\n return null;\n }\n const json = toJSON.call(credential);\n if (!json || typeof json !== 'object') {\n return null;\n }\n const response = json.response;\n if (!response) {\n return null;\n }\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json);\n }\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json);\n }\n return null;\n}\nfunction normalizeRegistrationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAttestationResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAuthenticationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAssertionResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAttestationResponse(response) {\n var _a, _b;\n return {\n attestationObject: String((_a = response.attestationObject) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\nfunction normalizeAssertionResponse(response) {\n var _a, _b, _c;\n return {\n authenticatorData: String((_a = response.authenticatorData) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n signature: String((_c = response.signature) !== null && _c !== void 0 ? _c : ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\nfunction expectPublicKeyCredential(credential, flow) {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n return credential;\n}\nfunction descriptorToJSON(descriptor) {\n var _a;\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction jsonDescriptorToBrowser(descriptor) {\n var _a;\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction cloneExtensions(extensions) {\n if (!extensions) {\n return undefined;\n }\n return JSON.parse(JSON.stringify(extensions));\n}\nfunction nullableBufferToBase64Url(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return encodeBase64Url(value);\n}\nfunction nullableBufferToOptionalBase64Url(value) {\n const encoded = nullableBufferToBase64Url(value);\n return encoded !== null && encoded !== void 0 ? encoded : undefined;\n}\nfunction deriveRpId(origin) {\n if (!origin) {\n return undefined;\n }\n try {\n return new URL(origin).hostname;\n }\n catch (_a) {\n return undefined;\n }\n}\nfunction base64UrlToBytes(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\nfunction toUint8Array(value) {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return new Uint8Array(value);\n}\nfunction normalizeAttachment(value) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n return undefined;\n}\nfunction clientExtensionResultsToRecord(value) {\n if (!value) {\n return {};\n }\n return JSON.parse(JSON.stringify(value));\n}\nexport class PasskeyAuthenticatorAttestationResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n getPublicKey() {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n getPublicKeyAlgorithm() {\n var _a;\n return (_a = this.json.publicKeyAlgorithm) !== null && _a !== void 0 ? _a : -7;\n }\n getTransports() {\n return this.json.transports ? [...this.json.transports] : [];\n }\n getAuthenticatorData() {\n return this.authenticatorData;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyAuthenticatorAssertionResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyPublicKeyCredential {\n constructor(json) {\n var _a;\n this.json = json;\n this.type = PASSKEY_TYPE;\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = (_a = json.authenticatorAttachment) !== null && _a !== void 0 ? _a : null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n getClientExtensionResults() {\n var _a;\n return ((_a = this.json.clientExtensionResults) !== null && _a !== void 0 ? _a : {});\n }\n toJSON() {\n return JSON.parse(JSON.stringify(this.json));\n }\n}\nfunction resolveErrorName(error) {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n return 'UnknownError';\n}\n//# sourceMappingURL=webauthn.js.map","import { abortIfNeeded, createPasskeyDomException, credentialFromJSON, PasskeyPublicKeyCredential, normalizePluginError, parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, webAuthnCreationOptionsToJSON, webAuthnRequestOptionsToJSON, PasskeyAuthenticatorAssertionResponse, PasskeyAuthenticatorAttestationResponse, } from './webauthn';\nexport function installWebAuthnShim({ root = globalThis, plugin, options }) {\n var _a;\n const shimRoot = root;\n const config = Object.assign(Object.assign({}, ((_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {})), (options !== null && options !== void 0 ? options : {}));\n shimRoot.__capgoPasskeyShimConfig = config;\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials = {\n create: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n get: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');\n }\n const hints = request.publicKey.hints;\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n preferImmediatelyAvailableCredentials: (hints === null || hints === void 0 ? void 0 : hints.includes('client-device')) || undefined,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n preventSilentAccess: async () => {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential) => {\n if ((originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.store) && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n }\n catch (_b) {\n shimRoot.navigator.credentials = patchedCredentials;\n }\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\nfunction installPublicKeyCredentialStatics(root, plugin) {\n var _a;\n const nativePublicKeyCredential = (_a = root.PublicKeyCredential) !== null && _a !== void 0 ? _a : class {\n };\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n }\n catch (error) {\n throw normalizePluginError(error);\n }\n };\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n root.PublicKeyCredential = nativePublicKeyCredential;\n}\nfunction defineStatic(target, key, value) {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n }\n catch (_a) {\n Reflect.set(target, key, value);\n }\n}\n//# sourceMappingURL=shim.js.map","import { registerPlugin } from '@capacitor/core';\nimport { installWebAuthnShim } from './shim';\nimport { createNativeRequest } from './webauthn';\nconst NativeCapacitorPasskey = registerPlugin('CapacitorPasskey', {\n web: () => import('./web').then((module) => new module.CapacitorPasskeyWeb()),\n});\nlet configurationPromise;\nlet cachedConfiguration;\nfunction mergeShimOptions(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration === null || configuration === void 0 ? void 0 : configuration.origin;\n const force = options === null || options === void 0 ? void 0 : options.force;\n if (!origin && force === undefined) {\n return undefined;\n }\n return {\n force,\n origin,\n };\n}\nfunction mergeRuntimeConfiguration(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration.origin;\n const domains = new Set(configuration.domains);\n if (origin) {\n try {\n domains.add(new URL(origin).hostname);\n }\n catch (_b) {\n // Ignore invalid override values here and let native APIs validate later.\n }\n }\n return Object.assign(Object.assign({}, configuration), { domains: [...domains], origin });\n}\nasync function loadConfiguration() {\n try {\n const configuration = await NativeCapacitorPasskey.getConfiguration();\n cachedConfiguration = configuration;\n return configuration;\n }\n catch (error) {\n configurationPromise = undefined;\n throw error;\n }\n}\nconst CapacitorPasskey = {\n async autoShimWebAuthn(options) {\n const configuration = await CapacitorPasskey.getConfiguration();\n const effectiveConfiguration = mergeRuntimeConfiguration(configuration, options);\n cachedConfiguration = effectiveConfiguration;\n installWebAuthnShim({\n options: mergeShimOptions(effectiveConfiguration, options),\n plugin: CapacitorPasskey,\n });\n return effectiveConfiguration;\n },\n async createCredential(options) {\n return NativeCapacitorPasskey.createCredential(createNativeRequest(options));\n },\n async getConfiguration() {\n if (!configurationPromise) {\n configurationPromise = loadConfiguration();\n }\n return configurationPromise;\n },\n async getCredential(options) {\n return NativeCapacitorPasskey.getCredential(createNativeRequest(options));\n },\n async getPluginVersion() {\n return NativeCapacitorPasskey.getPluginVersion();\n },\n async isSupported() {\n return NativeCapacitorPasskey.isSupported();\n },\n shimWebAuthn(options) {\n installWebAuthnShim({\n options: mergeShimOptions(cachedConfiguration, options),\n plugin: CapacitorPasskey,\n });\n },\n};\nexport * from './definitions';\nexport { CapacitorPasskey };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { browserAuthenticationToJSON, browserCreationOptionsFromJSON, browserRegistrationToJSON, browserRequestOptionsFromJSON, createPasskeyDomException, } from './webauthn';\nexport class CapacitorPasskeyWeb extends WebPlugin {\n async createCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.create({\n publicKey: browserCreationOptionsFromJSON(parsed),\n });\n return browserRegistrationToJSON(credential);\n }\n async getCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.get({\n publicKey: browserRequestOptionsFromJSON(parsed),\n });\n return browserAuthenticationToJSON(credential);\n }\n async getConfiguration() {\n const origin = this.currentOrigin();\n const domains = origin ? [new URL(origin).hostname] : [];\n return {\n autoShim: true,\n domains,\n origin,\n platform: 'web',\n };\n }\n async isSupported() {\n var _a, _b, _c, _d;\n const available = typeof globalThis.PublicKeyCredential !== 'undefined' &&\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) === 'function' &&\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) === 'function';\n let conditionalMediation = false;\n if (available && typeof globalThis.PublicKeyCredential.isConditionalMediationAvailable === 'function') {\n conditionalMediation = await globalThis.PublicKeyCredential.isConditionalMediationAvailable();\n }\n return {\n available,\n conditionalMediation,\n platform: 'web',\n };\n }\n async getPluginVersion() {\n return {\n version: 'web',\n };\n }\n ensureCredentials() {\n var _a, _b, _c, _d;\n if (typeof globalThis.PublicKeyCredential === 'undefined' ||\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) !== 'function' ||\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) !== 'function') {\n throw createPasskeyDomException('NotSupportedError', 'WebAuthn is not available in this browser.');\n }\n return globalThis.navigator.credentials;\n }\n currentOrigin() {\n if (typeof globalThis.location === 'undefined') {\n return undefined;\n }\n if (globalThis.location.protocol !== 'http:' && globalThis.location.protocol !== 'https:') {\n return undefined;\n }\n return globalThis.location.origin;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
package/dist/plugin.js CHANGED
@@ -7,6 +7,7 @@ var capacitorPasskey = (function (exports, core) {
7
7
  const getOptions = options;
8
8
  return {
9
9
  origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),
10
+ preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,
10
11
  requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),
11
12
  };
12
13
  }
@@ -499,9 +500,11 @@ var capacitorPasskey = (function (exports, core) {
499
500
  if (request.mediation === 'conditional') {
500
501
  throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');
501
502
  }
503
+ const hints = request.publicKey.hints;
502
504
  const response = (await plugin.getCredential({
503
505
  mediation: request.mediation,
504
506
  origin: currentConfig.origin,
507
+ preferImmediatelyAvailableCredentials: (hints === null || hints === void 0 ? void 0 : hints.includes('client-device')) || undefined,
505
508
  publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),
506
509
  }));
507
510
  return credentialFromJSON(response);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/webauthn.js","esm/shim.js","esm/index.js","esm/web.js"],"sourcesContent":["const PASSKEY_TYPE = 'public-key';\nexport function createNativeRequest(options) {\n if ('mediation' in options) {\n const getOptions = options;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n const createOptions = options;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\nexport function webAuthnCreationOptionsToJSON(options, origin) {\n var _a;\n return normalizeCreationOptionsJSON({\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n }, origin);\n}\nexport function webAuthnRequestOptionsToJSON(options, origin) {\n var _a;\n return normalizeRequestOptionsJSON({\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n }, origin);\n}\nexport function normalizeCreationOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rp.id) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rp.id));\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n return Object.assign(Object.assign({}, options), { excludeCredentials: (_b = options.excludeCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }), rp: Object.assign(Object.assign({}, options.rp), { id: rpId }) });\n}\nexport function normalizeRequestOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rpId) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rpId));\n return Object.assign(Object.assign({}, options), { allowCredentials: (_b = options.allowCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), rpId });\n}\nexport function browserCreationOptionsFromJSON(options) {\n var _a, _b;\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: (_b = options.user.displayName) !== null && _b !== void 0 ? _b : options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\nexport function browserRequestOptionsFromJSON(options) {\n var _a;\n return {\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\nexport async function browserRegistrationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\nexport async function browserAuthenticationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\nexport function credentialFromJSON(credential) {\n const shimCredential = new PasskeyPublicKeyCredential(credential);\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n return shimCredential;\n}\nexport function parseCreationOptionsFromJSON(options) {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\nexport function parseRequestOptionsFromJSON(options) {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\nexport function decodeBase64Url(value) {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\nexport function encodeBase64Url(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n const bytes = toUint8Array(value);\n let binary = '';\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\nexport function resolveOrigin(explicitOrigin, rpId) {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n if (rpId) {\n return `https://${rpId}`;\n }\n return undefined;\n}\nexport function createPasskeyDomException(name, message) {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n const error = new Error(message);\n error.name = name;\n return error;\n}\nexport function abortIfNeeded(signal) {\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\nexport function normalizePluginError(error) {\n if (error instanceof Error) {\n return error;\n }\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n return createPasskeyDomException(name, message);\n}\nfunction credentialWithToJSON(credential) {\n const toJSON = credential.toJSON;\n if (typeof toJSON !== 'function') {\n return null;\n }\n const json = toJSON.call(credential);\n if (!json || typeof json !== 'object') {\n return null;\n }\n const response = json.response;\n if (!response) {\n return null;\n }\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json);\n }\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json);\n }\n return null;\n}\nfunction normalizeRegistrationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAttestationResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAuthenticationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAssertionResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAttestationResponse(response) {\n var _a, _b;\n return {\n attestationObject: String((_a = response.attestationObject) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\nfunction normalizeAssertionResponse(response) {\n var _a, _b, _c;\n return {\n authenticatorData: String((_a = response.authenticatorData) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n signature: String((_c = response.signature) !== null && _c !== void 0 ? _c : ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\nfunction expectPublicKeyCredential(credential, flow) {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n return credential;\n}\nfunction descriptorToJSON(descriptor) {\n var _a;\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction jsonDescriptorToBrowser(descriptor) {\n var _a;\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction cloneExtensions(extensions) {\n if (!extensions) {\n return undefined;\n }\n return JSON.parse(JSON.stringify(extensions));\n}\nfunction nullableBufferToBase64Url(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return encodeBase64Url(value);\n}\nfunction nullableBufferToOptionalBase64Url(value) {\n const encoded = nullableBufferToBase64Url(value);\n return encoded !== null && encoded !== void 0 ? encoded : undefined;\n}\nfunction deriveRpId(origin) {\n if (!origin) {\n return undefined;\n }\n try {\n return new URL(origin).hostname;\n }\n catch (_a) {\n return undefined;\n }\n}\nfunction base64UrlToBytes(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\nfunction toUint8Array(value) {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return new Uint8Array(value);\n}\nfunction normalizeAttachment(value) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n return undefined;\n}\nfunction clientExtensionResultsToRecord(value) {\n if (!value) {\n return {};\n }\n return JSON.parse(JSON.stringify(value));\n}\nexport class PasskeyAuthenticatorAttestationResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n getPublicKey() {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n getPublicKeyAlgorithm() {\n var _a;\n return (_a = this.json.publicKeyAlgorithm) !== null && _a !== void 0 ? _a : -7;\n }\n getTransports() {\n return this.json.transports ? [...this.json.transports] : [];\n }\n getAuthenticatorData() {\n return this.authenticatorData;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyAuthenticatorAssertionResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyPublicKeyCredential {\n constructor(json) {\n var _a;\n this.json = json;\n this.type = PASSKEY_TYPE;\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = (_a = json.authenticatorAttachment) !== null && _a !== void 0 ? _a : null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n getClientExtensionResults() {\n var _a;\n return ((_a = this.json.clientExtensionResults) !== null && _a !== void 0 ? _a : {});\n }\n toJSON() {\n return JSON.parse(JSON.stringify(this.json));\n }\n}\nfunction resolveErrorName(error) {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n return 'UnknownError';\n}\n//# sourceMappingURL=webauthn.js.map","import { abortIfNeeded, createPasskeyDomException, credentialFromJSON, PasskeyPublicKeyCredential, normalizePluginError, parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, webAuthnCreationOptionsToJSON, webAuthnRequestOptionsToJSON, PasskeyAuthenticatorAssertionResponse, PasskeyAuthenticatorAttestationResponse, } from './webauthn';\nexport function installWebAuthnShim({ root = globalThis, plugin, options }) {\n var _a;\n const shimRoot = root;\n const config = Object.assign(Object.assign({}, ((_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {})), (options !== null && options !== void 0 ? options : {}));\n shimRoot.__capgoPasskeyShimConfig = config;\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials = {\n create: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n get: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');\n }\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n preventSilentAccess: async () => {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential) => {\n if ((originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.store) && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n }\n catch (_b) {\n shimRoot.navigator.credentials = patchedCredentials;\n }\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\nfunction installPublicKeyCredentialStatics(root, plugin) {\n var _a;\n const nativePublicKeyCredential = (_a = root.PublicKeyCredential) !== null && _a !== void 0 ? _a : class {\n };\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n }\n catch (error) {\n throw normalizePluginError(error);\n }\n };\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n root.PublicKeyCredential = nativePublicKeyCredential;\n}\nfunction defineStatic(target, key, value) {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n }\n catch (_a) {\n Reflect.set(target, key, value);\n }\n}\n//# sourceMappingURL=shim.js.map","import { registerPlugin } from '@capacitor/core';\nimport { installWebAuthnShim } from './shim';\nimport { createNativeRequest } from './webauthn';\nconst NativeCapacitorPasskey = registerPlugin('CapacitorPasskey', {\n web: () => import('./web').then((module) => new module.CapacitorPasskeyWeb()),\n});\nlet configurationPromise;\nlet cachedConfiguration;\nfunction mergeShimOptions(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration === null || configuration === void 0 ? void 0 : configuration.origin;\n const force = options === null || options === void 0 ? void 0 : options.force;\n if (!origin && force === undefined) {\n return undefined;\n }\n return {\n force,\n origin,\n };\n}\nfunction mergeRuntimeConfiguration(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration.origin;\n const domains = new Set(configuration.domains);\n if (origin) {\n try {\n domains.add(new URL(origin).hostname);\n }\n catch (_b) {\n // Ignore invalid override values here and let native APIs validate later.\n }\n }\n return Object.assign(Object.assign({}, configuration), { domains: [...domains], origin });\n}\nasync function loadConfiguration() {\n try {\n const configuration = await NativeCapacitorPasskey.getConfiguration();\n cachedConfiguration = configuration;\n return configuration;\n }\n catch (error) {\n configurationPromise = undefined;\n throw error;\n }\n}\nconst CapacitorPasskey = {\n async autoShimWebAuthn(options) {\n const configuration = await CapacitorPasskey.getConfiguration();\n const effectiveConfiguration = mergeRuntimeConfiguration(configuration, options);\n cachedConfiguration = effectiveConfiguration;\n installWebAuthnShim({\n options: mergeShimOptions(effectiveConfiguration, options),\n plugin: CapacitorPasskey,\n });\n return effectiveConfiguration;\n },\n async createCredential(options) {\n return NativeCapacitorPasskey.createCredential(createNativeRequest(options));\n },\n async getConfiguration() {\n if (!configurationPromise) {\n configurationPromise = loadConfiguration();\n }\n return configurationPromise;\n },\n async getCredential(options) {\n return NativeCapacitorPasskey.getCredential(createNativeRequest(options));\n },\n async getPluginVersion() {\n return NativeCapacitorPasskey.getPluginVersion();\n },\n async isSupported() {\n return NativeCapacitorPasskey.isSupported();\n },\n shimWebAuthn(options) {\n installWebAuthnShim({\n options: mergeShimOptions(cachedConfiguration, options),\n plugin: CapacitorPasskey,\n });\n },\n};\nexport * from './definitions';\nexport { CapacitorPasskey };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { browserAuthenticationToJSON, browserCreationOptionsFromJSON, browserRegistrationToJSON, browserRequestOptionsFromJSON, createPasskeyDomException, } from './webauthn';\nexport class CapacitorPasskeyWeb extends WebPlugin {\n async createCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.create({\n publicKey: browserCreationOptionsFromJSON(parsed),\n });\n return browserRegistrationToJSON(credential);\n }\n async getCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.get({\n publicKey: browserRequestOptionsFromJSON(parsed),\n });\n return browserAuthenticationToJSON(credential);\n }\n async getConfiguration() {\n const origin = this.currentOrigin();\n const domains = origin ? [new URL(origin).hostname] : [];\n return {\n autoShim: true,\n domains,\n origin,\n platform: 'web',\n };\n }\n async isSupported() {\n var _a, _b, _c, _d;\n const available = typeof globalThis.PublicKeyCredential !== 'undefined' &&\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) === 'function' &&\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) === 'function';\n let conditionalMediation = false;\n if (available && typeof globalThis.PublicKeyCredential.isConditionalMediationAvailable === 'function') {\n conditionalMediation = await globalThis.PublicKeyCredential.isConditionalMediationAvailable();\n }\n return {\n available,\n conditionalMediation,\n platform: 'web',\n };\n }\n async getPluginVersion() {\n return {\n version: 'web',\n };\n }\n ensureCredentials() {\n var _a, _b, _c, _d;\n if (typeof globalThis.PublicKeyCredential === 'undefined' ||\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) !== 'function' ||\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) !== 'function') {\n throw createPasskeyDomException('NotSupportedError', 'WebAuthn is not available in this browser.');\n }\n return globalThis.navigator.credentials;\n }\n currentOrigin() {\n if (typeof globalThis.location === 'undefined') {\n return undefined;\n }\n if (globalThis.location.protocol !== 'http:' && globalThis.location.protocol !== 'https:') {\n return undefined;\n }\n return globalThis.location.origin;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/webauthn.js","esm/shim.js","esm/index.js","esm/web.js"],"sourcesContent":["const PASSKEY_TYPE = 'public-key';\nexport function createNativeRequest(options) {\n if ('mediation' in options) {\n const getOptions = options;\n return {\n origin: resolveOrigin(getOptions.origin, getOptions.publicKey.rpId),\n preferImmediatelyAvailableCredentials: getOptions.preferImmediatelyAvailableCredentials,\n requestJson: JSON.stringify(normalizeRequestOptionsJSON(getOptions.publicKey, getOptions.origin)),\n };\n }\n const createOptions = options;\n return {\n origin: resolveOrigin(createOptions.origin, createOptions.publicKey.rp.id),\n requestJson: JSON.stringify(normalizeCreationOptionsJSON(createOptions.publicKey, createOptions.origin)),\n };\n}\nexport function webAuthnCreationOptionsToJSON(options, origin) {\n var _a;\n return normalizeCreationOptionsJSON({\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: encodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => ({\n alg: entry.alg,\n type: entry.type,\n })),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: options.user.displayName,\n id: encodeBase64Url(options.user.id),\n name: options.user.name,\n },\n }, origin);\n}\nexport function webAuthnRequestOptionsToJSON(options, origin) {\n var _a;\n return normalizeRequestOptionsJSON({\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(descriptorToJSON),\n challenge: encodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n }, origin);\n}\nexport function normalizeCreationOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rp.id) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rp.id));\n if (!rpId) {\n throw createPasskeyDomException('DataError', 'A relying party id or HTTPS origin is required.');\n }\n return Object.assign(Object.assign({}, options), { excludeCredentials: (_b = options.excludeCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }), rp: Object.assign(Object.assign({}, options.rp), { id: rpId }) });\n}\nexport function normalizeRequestOptionsJSON(options, origin) {\n var _a, _b;\n const rpId = (_a = options.rpId) !== null && _a !== void 0 ? _a : deriveRpId(resolveOrigin(origin, options.rpId));\n return Object.assign(Object.assign({}, options), { allowCredentials: (_b = options.allowCredentials) === null || _b === void 0 ? void 0 : _b.map(descriptorToJSON), rpId });\n}\nexport function browserCreationOptionsFromJSON(options) {\n var _a, _b;\n return {\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection\n ? {\n authenticatorAttachment: options.authenticatorSelection.authenticatorAttachment,\n requireResidentKey: options.authenticatorSelection.requireResidentKey,\n residentKey: options.authenticatorSelection.residentKey,\n userVerification: options.authenticatorSelection.userVerification,\n }\n : undefined,\n challenge: decodeBase64Url(options.challenge),\n excludeCredentials: (_a = options.excludeCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n extensions: cloneExtensions(options.extensions),\n pubKeyCredParams: options.pubKeyCredParams.map((entry) => {\n var _a;\n return ({\n alg: entry.alg,\n type: (_a = entry.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n });\n }),\n rp: {\n id: options.rp.id,\n name: options.rp.name,\n },\n timeout: options.timeout,\n user: {\n displayName: (_b = options.user.displayName) !== null && _b !== void 0 ? _b : options.user.name,\n id: decodeBase64Url(options.user.id),\n name: options.user.name,\n },\n };\n}\nexport function browserRequestOptionsFromJSON(options) {\n var _a;\n return {\n allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(jsonDescriptorToBrowser),\n challenge: decodeBase64Url(options.challenge),\n extensions: cloneExtensions(options.extensions),\n rpId: options.rpId,\n timeout: options.timeout,\n userVerification: options.userVerification,\n };\n}\nexport async function browserRegistrationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'registration');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'attestationObject' in nativeJson.response) {\n return normalizeRegistrationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n attestationObject: encodeBase64Url(response.attestationObject),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n publicKey: response.getPublicKey ? nullableBufferToOptionalBase64Url(response.getPublicKey()) : undefined,\n publicKeyAlgorithm: response.getPublicKeyAlgorithm ? response.getPublicKeyAlgorithm() : undefined,\n transports: response.getTransports ? response.getTransports() : undefined,\n },\n type: PASSKEY_TYPE,\n };\n}\nexport async function browserAuthenticationToJSON(credential) {\n var _a;\n const publicKeyCredential = expectPublicKeyCredential(credential, 'authentication');\n const response = publicKeyCredential.response;\n const nativeJson = credentialWithToJSON(publicKeyCredential);\n if (nativeJson && 'authenticatorData' in nativeJson.response) {\n return normalizeAuthenticationCredential(nativeJson);\n }\n return {\n authenticatorAttachment: normalizeAttachment(publicKeyCredential.authenticatorAttachment),\n clientExtensionResults: clientExtensionResultsToRecord((_a = publicKeyCredential.getClientExtensionResults) === null || _a === void 0 ? void 0 : _a.call(publicKeyCredential)),\n id: publicKeyCredential.id,\n rawId: encodeBase64Url(publicKeyCredential.rawId),\n response: {\n authenticatorData: encodeBase64Url(response.authenticatorData),\n clientDataJSON: encodeBase64Url(response.clientDataJSON),\n signature: encodeBase64Url(response.signature),\n userHandle: nullableBufferToBase64Url(response.userHandle),\n },\n type: PASSKEY_TYPE,\n };\n}\nexport function credentialFromJSON(credential) {\n const shimCredential = new PasskeyPublicKeyCredential(credential);\n if (typeof globalThis.PublicKeyCredential === 'function') {\n Object.setPrototypeOf(shimCredential, globalThis.PublicKeyCredential.prototype);\n }\n return shimCredential;\n}\nexport function parseCreationOptionsFromJSON(options) {\n return browserCreationOptionsFromJSON(normalizeCreationOptionsJSON(options));\n}\nexport function parseRequestOptionsFromJSON(options) {\n return browserRequestOptionsFromJSON(normalizeRequestOptionsJSON(options));\n}\nexport function decodeBase64Url(value) {\n const bytes = base64UrlToBytes(value);\n return bytes.slice().buffer;\n}\nexport function encodeBase64Url(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n const bytes = toUint8Array(value);\n let binary = '';\n bytes.forEach((byte) => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\nexport function resolveOrigin(explicitOrigin, rpId) {\n if (explicitOrigin) {\n return explicitOrigin;\n }\n if (typeof globalThis.location !== 'undefined' && /^https?:$/u.test(globalThis.location.protocol)) {\n return globalThis.location.origin;\n }\n if (rpId) {\n return `https://${rpId}`;\n }\n return undefined;\n}\nexport function createPasskeyDomException(name, message) {\n if (typeof DOMException !== 'undefined') {\n return new DOMException(message, name);\n }\n const error = new Error(message);\n error.name = name;\n return error;\n}\nexport function abortIfNeeded(signal) {\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n throw createPasskeyDomException('AbortError', 'The passkey request was aborted.');\n }\n}\nexport function normalizePluginError(error) {\n if (error instanceof Error) {\n return error;\n }\n const message = typeof error === 'object' && error && 'message' in error ? String(error.message) : String(error);\n const name = resolveErrorName(error);\n return createPasskeyDomException(name, message);\n}\nfunction credentialWithToJSON(credential) {\n const toJSON = credential.toJSON;\n if (typeof toJSON !== 'function') {\n return null;\n }\n const json = toJSON.call(credential);\n if (!json || typeof json !== 'object') {\n return null;\n }\n const response = json.response;\n if (!response) {\n return null;\n }\n if ('attestationObject' in response) {\n return normalizeRegistrationCredential(json);\n }\n if ('authenticatorData' in response) {\n return normalizeAuthenticationCredential(json);\n }\n return null;\n}\nfunction normalizeRegistrationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAttestationResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAuthenticationCredential(credential) {\n var _a, _b, _c, _d, _e;\n return {\n authenticatorAttachment: normalizeAttachment(credential.authenticatorAttachment),\n clientExtensionResults: (_a = credential.clientExtensionResults) !== null && _a !== void 0 ? _a : {},\n id: String((_b = credential.id) !== null && _b !== void 0 ? _b : ''),\n rawId: String((_d = (_c = credential.rawId) !== null && _c !== void 0 ? _c : credential.id) !== null && _d !== void 0 ? _d : ''),\n response: normalizeAssertionResponse((_e = credential.response) !== null && _e !== void 0 ? _e : {}),\n type: PASSKEY_TYPE,\n };\n}\nfunction normalizeAttestationResponse(response) {\n var _a, _b;\n return {\n attestationObject: String((_a = response.attestationObject) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n publicKey: response.publicKey,\n publicKeyAlgorithm: response.publicKeyAlgorithm,\n transports: response.transports,\n };\n}\nfunction normalizeAssertionResponse(response) {\n var _a, _b, _c;\n return {\n authenticatorData: String((_a = response.authenticatorData) !== null && _a !== void 0 ? _a : ''),\n clientDataJSON: String((_b = response.clientDataJSON) !== null && _b !== void 0 ? _b : ''),\n signature: String((_c = response.signature) !== null && _c !== void 0 ? _c : ''),\n userHandle: typeof response.userHandle === 'undefined' ? null : response.userHandle,\n };\n}\nfunction expectPublicKeyCredential(credential, flow) {\n if (!credential || !(credential instanceof PublicKeyCredential)) {\n throw createPasskeyDomException('InvalidStateError', `The browser did not return a ${flow} credential.`);\n }\n return credential;\n}\nfunction descriptorToJSON(descriptor) {\n var _a;\n return {\n id: typeof descriptor.id === 'string' ? descriptor.id : encodeBase64Url(descriptor.id),\n transports: descriptor.transports ? [...descriptor.transports] : undefined,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction jsonDescriptorToBrowser(descriptor) {\n var _a;\n return {\n id: decodeBase64Url(descriptor.id),\n transports: descriptor.transports,\n type: (_a = descriptor.type) !== null && _a !== void 0 ? _a : PASSKEY_TYPE,\n };\n}\nfunction cloneExtensions(extensions) {\n if (!extensions) {\n return undefined;\n }\n return JSON.parse(JSON.stringify(extensions));\n}\nfunction nullableBufferToBase64Url(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return encodeBase64Url(value);\n}\nfunction nullableBufferToOptionalBase64Url(value) {\n const encoded = nullableBufferToBase64Url(value);\n return encoded !== null && encoded !== void 0 ? encoded : undefined;\n}\nfunction deriveRpId(origin) {\n if (!origin) {\n return undefined;\n }\n try {\n return new URL(origin).hostname;\n }\n catch (_a) {\n return undefined;\n }\n}\nfunction base64UrlToBytes(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4 === 0 ? '' : '='.repeat(4 - (normalized.length % 4));\n const binary = atob(`${normalized}${padding}`);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\nfunction toUint8Array(value) {\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return new Uint8Array(value);\n}\nfunction normalizeAttachment(value) {\n if (value === 'platform' || value === 'cross-platform') {\n return value;\n }\n return undefined;\n}\nfunction clientExtensionResultsToRecord(value) {\n if (!value) {\n return {};\n }\n return JSON.parse(JSON.stringify(value));\n}\nexport class PasskeyAuthenticatorAttestationResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.attestationObject = decodeBase64Url(json.attestationObject);\n this.authenticatorData = json.authenticatorData ? decodeBase64Url(json.authenticatorData) : new ArrayBuffer(0);\n }\n getPublicKey() {\n return this.json.publicKey ? decodeBase64Url(this.json.publicKey) : null;\n }\n getPublicKeyAlgorithm() {\n var _a;\n return (_a = this.json.publicKeyAlgorithm) !== null && _a !== void 0 ? _a : -7;\n }\n getTransports() {\n return this.json.transports ? [...this.json.transports] : [];\n }\n getAuthenticatorData() {\n return this.authenticatorData;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyAuthenticatorAssertionResponse {\n constructor(json) {\n this.json = json;\n this.clientDataJSON = decodeBase64Url(json.clientDataJSON);\n this.authenticatorData = decodeBase64Url(json.authenticatorData);\n this.signature = decodeBase64Url(json.signature);\n this.userHandle = json.userHandle ? decodeBase64Url(json.userHandle) : null;\n }\n toJSON() {\n return Object.assign({}, this.json);\n }\n}\nexport class PasskeyPublicKeyCredential {\n constructor(json) {\n var _a;\n this.json = json;\n this.type = PASSKEY_TYPE;\n this.id = json.id;\n this.rawId = decodeBase64Url(json.rawId);\n this.authenticatorAttachment = (_a = json.authenticatorAttachment) !== null && _a !== void 0 ? _a : null;\n this.response =\n 'attestationObject' in json.response\n ? new PasskeyAuthenticatorAttestationResponse(json.response)\n : new PasskeyAuthenticatorAssertionResponse(json.response);\n }\n getClientExtensionResults() {\n var _a;\n return ((_a = this.json.clientExtensionResults) !== null && _a !== void 0 ? _a : {});\n }\n toJSON() {\n return JSON.parse(JSON.stringify(this.json));\n }\n}\nfunction resolveErrorName(error) {\n if (typeof error === 'object' && error) {\n if ('code' in error && typeof error.code === 'string') {\n return error.code;\n }\n if ('data' in error && error.data && typeof error.data === 'object' && 'name' in error.data) {\n const candidate = error.data.name;\n if (typeof candidate === 'string') {\n return candidate;\n }\n }\n }\n return 'UnknownError';\n}\n//# sourceMappingURL=webauthn.js.map","import { abortIfNeeded, createPasskeyDomException, credentialFromJSON, PasskeyPublicKeyCredential, normalizePluginError, parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, webAuthnCreationOptionsToJSON, webAuthnRequestOptionsToJSON, PasskeyAuthenticatorAssertionResponse, PasskeyAuthenticatorAttestationResponse, } from './webauthn';\nexport function installWebAuthnShim({ root = globalThis, plugin, options }) {\n var _a;\n const shimRoot = root;\n const config = Object.assign(Object.assign({}, ((_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {})), (options !== null && options !== void 0 ? options : {}));\n shimRoot.__capgoPasskeyShimConfig = config;\n if (shimRoot.__capgoPasskeyShimInstalled && !config.force) {\n return;\n }\n Object.defineProperty(root.window, 'PublicKeyCredential', {\n configurable: true,\n writable: true,\n value: PasskeyPublicKeyCredential,\n });\n Object.defineProperty(root.window, 'AuthenticatorAttestationResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAttestationResponse,\n });\n Object.defineProperty(root.window, 'AuthenticatorAssertionResponse', {\n configurable: true,\n writable: true,\n value: PasskeyAuthenticatorAssertionResponse,\n });\n const originalCredentials = shimRoot.navigator.credentials;\n const patchedCredentials = {\n create: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.create) {\n return originalCredentials.create.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential creation is supported.');\n }\n abortIfNeeded(request.signal);\n const response = (await plugin.createCredential({\n origin: currentConfig.origin,\n publicKey: webAuthnCreationOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n get: async (request) => {\n var _a;\n const currentConfig = (_a = shimRoot.__capgoPasskeyShimConfig) !== null && _a !== void 0 ? _a : {};\n if (!(request === null || request === void 0 ? void 0 : request.publicKey)) {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.get) {\n return originalCredentials.get.call(originalCredentials, request);\n }\n throw createPasskeyDomException('NotSupportedError', 'Only public-key credential requests are supported.');\n }\n abortIfNeeded(request.signal);\n if (request.mediation === 'conditional') {\n throw createPasskeyDomException('NotSupportedError', 'Conditional mediation is not available through the Capacitor passkey shim.');\n }\n const hints = request.publicKey.hints;\n const response = (await plugin.getCredential({\n mediation: request.mediation,\n origin: currentConfig.origin,\n preferImmediatelyAvailableCredentials: (hints === null || hints === void 0 ? void 0 : hints.includes('client-device')) || undefined,\n publicKey: webAuthnRequestOptionsToJSON(request.publicKey, currentConfig.origin),\n }));\n return credentialFromJSON(response);\n },\n preventSilentAccess: async () => {\n if (originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.preventSilentAccess) {\n await originalCredentials.preventSilentAccess.call(originalCredentials);\n }\n },\n store: async (credential) => {\n if ((originalCredentials === null || originalCredentials === void 0 ? void 0 : originalCredentials.store) && credential) {\n await originalCredentials.store.call(originalCredentials, credential);\n }\n },\n };\n try {\n Object.defineProperty(shimRoot.navigator, 'credentials', {\n configurable: true,\n value: patchedCredentials,\n writable: false,\n });\n }\n catch (_b) {\n shimRoot.navigator.credentials = patchedCredentials;\n }\n installPublicKeyCredentialStatics(shimRoot, plugin);\n shimRoot.__capgoPasskeyShimInstalled = true;\n}\nfunction installPublicKeyCredentialStatics(root, plugin) {\n var _a;\n const nativePublicKeyCredential = (_a = root.PublicKeyCredential) !== null && _a !== void 0 ? _a : class {\n };\n const supportRequest = async () => {\n try {\n return await plugin.isSupported();\n }\n catch (error) {\n throw normalizePluginError(error);\n }\n };\n defineStatic(nativePublicKeyCredential, 'isUserVerifyingPlatformAuthenticatorAvailable', async () => {\n const support = await supportRequest();\n return support.available;\n });\n defineStatic(nativePublicKeyCredential, 'isConditionalMediationAvailable', async () => {\n const support = await supportRequest();\n return support.conditionalMediation;\n });\n defineStatic(nativePublicKeyCredential, 'parseCreationOptionsFromJSON', parseCreationOptionsFromJSON);\n defineStatic(nativePublicKeyCredential, 'parseRequestOptionsFromJSON', parseRequestOptionsFromJSON);\n root.PublicKeyCredential = nativePublicKeyCredential;\n}\nfunction defineStatic(target, key, value) {\n try {\n Object.defineProperty(target, key, {\n configurable: true,\n value,\n writable: true,\n });\n }\n catch (_a) {\n Reflect.set(target, key, value);\n }\n}\n//# sourceMappingURL=shim.js.map","import { registerPlugin } from '@capacitor/core';\nimport { installWebAuthnShim } from './shim';\nimport { createNativeRequest } from './webauthn';\nconst NativeCapacitorPasskey = registerPlugin('CapacitorPasskey', {\n web: () => import('./web').then((module) => new module.CapacitorPasskeyWeb()),\n});\nlet configurationPromise;\nlet cachedConfiguration;\nfunction mergeShimOptions(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration === null || configuration === void 0 ? void 0 : configuration.origin;\n const force = options === null || options === void 0 ? void 0 : options.force;\n if (!origin && force === undefined) {\n return undefined;\n }\n return {\n force,\n origin,\n };\n}\nfunction mergeRuntimeConfiguration(configuration, options) {\n var _a;\n const origin = (_a = options === null || options === void 0 ? void 0 : options.origin) !== null && _a !== void 0 ? _a : configuration.origin;\n const domains = new Set(configuration.domains);\n if (origin) {\n try {\n domains.add(new URL(origin).hostname);\n }\n catch (_b) {\n // Ignore invalid override values here and let native APIs validate later.\n }\n }\n return Object.assign(Object.assign({}, configuration), { domains: [...domains], origin });\n}\nasync function loadConfiguration() {\n try {\n const configuration = await NativeCapacitorPasskey.getConfiguration();\n cachedConfiguration = configuration;\n return configuration;\n }\n catch (error) {\n configurationPromise = undefined;\n throw error;\n }\n}\nconst CapacitorPasskey = {\n async autoShimWebAuthn(options) {\n const configuration = await CapacitorPasskey.getConfiguration();\n const effectiveConfiguration = mergeRuntimeConfiguration(configuration, options);\n cachedConfiguration = effectiveConfiguration;\n installWebAuthnShim({\n options: mergeShimOptions(effectiveConfiguration, options),\n plugin: CapacitorPasskey,\n });\n return effectiveConfiguration;\n },\n async createCredential(options) {\n return NativeCapacitorPasskey.createCredential(createNativeRequest(options));\n },\n async getConfiguration() {\n if (!configurationPromise) {\n configurationPromise = loadConfiguration();\n }\n return configurationPromise;\n },\n async getCredential(options) {\n return NativeCapacitorPasskey.getCredential(createNativeRequest(options));\n },\n async getPluginVersion() {\n return NativeCapacitorPasskey.getPluginVersion();\n },\n async isSupported() {\n return NativeCapacitorPasskey.isSupported();\n },\n shimWebAuthn(options) {\n installWebAuthnShim({\n options: mergeShimOptions(cachedConfiguration, options),\n plugin: CapacitorPasskey,\n });\n },\n};\nexport * from './definitions';\nexport { CapacitorPasskey };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { browserAuthenticationToJSON, browserCreationOptionsFromJSON, browserRegistrationToJSON, browserRequestOptionsFromJSON, createPasskeyDomException, } from './webauthn';\nexport class CapacitorPasskeyWeb extends WebPlugin {\n async createCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.create({\n publicKey: browserCreationOptionsFromJSON(parsed),\n });\n return browserRegistrationToJSON(credential);\n }\n async getCredential(options) {\n const credentials = this.ensureCredentials();\n const parsed = JSON.parse(options.requestJson);\n const credential = await credentials.get({\n publicKey: browserRequestOptionsFromJSON(parsed),\n });\n return browserAuthenticationToJSON(credential);\n }\n async getConfiguration() {\n const origin = this.currentOrigin();\n const domains = origin ? [new URL(origin).hostname] : [];\n return {\n autoShim: true,\n domains,\n origin,\n platform: 'web',\n };\n }\n async isSupported() {\n var _a, _b, _c, _d;\n const available = typeof globalThis.PublicKeyCredential !== 'undefined' &&\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) === 'function' &&\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) === 'function';\n let conditionalMediation = false;\n if (available && typeof globalThis.PublicKeyCredential.isConditionalMediationAvailable === 'function') {\n conditionalMediation = await globalThis.PublicKeyCredential.isConditionalMediationAvailable();\n }\n return {\n available,\n conditionalMediation,\n platform: 'web',\n };\n }\n async getPluginVersion() {\n return {\n version: 'web',\n };\n }\n ensureCredentials() {\n var _a, _b, _c, _d;\n if (typeof globalThis.PublicKeyCredential === 'undefined' ||\n typeof ((_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.create) !== 'function' ||\n typeof ((_d = (_c = globalThis.navigator) === null || _c === void 0 ? void 0 : _c.credentials) === null || _d === void 0 ? void 0 : _d.get) !== 'function') {\n throw createPasskeyDomException('NotSupportedError', 'WebAuthn is not available in this browser.');\n }\n return globalThis.navigator.credentials;\n }\n currentOrigin() {\n if (typeof globalThis.location === 'undefined') {\n return undefined;\n }\n if (globalThis.location.protocol !== 'http:' && globalThis.location.protocol !== 'https:') {\n return undefined;\n }\n return globalThis.location.origin;\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
@@ -166,7 +166,12 @@ public class CapacitorPasskeyPlugin: CAPPlugin,
166
166
  let assertionRequest = try JSONDecoder().decode(PasskeyAssertionRequestJSON.self, from: requestJson)
167
167
  let origin = normalizedOrigin(call.getString("origin"), rpId: assertionRequest.rpId)
168
168
  let authorizationRequest = try buildAssertionRequest(from: assertionRequest, origin: origin)
169
- performAuthorization(call: call, request: authorizationRequest, operation: .assertion)
169
+ performAuthorization(
170
+ call: call,
171
+ request: authorizationRequest,
172
+ operation: .assertion,
173
+ preferImmediatelyAvailableCredentials: call.getBool("preferImmediatelyAvailableCredentials") ?? false
174
+ )
170
175
  } catch let error as PasskeyPluginError {
171
176
  reject(call, error: error)
172
177
  } catch {
@@ -255,7 +260,12 @@ public class CapacitorPasskeyPlugin: CAPPlugin,
255
260
  bridge?.viewController?.view.window ?? ASPresentationAnchor()
256
261
  }
257
262
 
258
- private func performAuthorization(call: CAPPluginCall, request: ASAuthorizationRequest, operation: PasskeyOperation) {
263
+ private func performAuthorization(
264
+ call: CAPPluginCall,
265
+ request: ASAuthorizationRequest,
266
+ operation: PasskeyOperation,
267
+ preferImmediatelyAvailableCredentials: Bool = false
268
+ ) {
259
269
  pendingCall = call
260
270
  pendingOperation = operation
261
271
 
@@ -263,7 +273,11 @@ public class CapacitorPasskeyPlugin: CAPPlugin,
263
273
  let controller = ASAuthorizationController(authorizationRequests: [request])
264
274
  controller.delegate = self
265
275
  controller.presentationContextProvider = self
266
- controller.performRequests()
276
+ if #available(iOS 16.0, *), preferImmediatelyAvailableCredentials {
277
+ controller.performRequests(options: .preferImmediatelyAvailableCredentials)
278
+ } else {
279
+ controller.performRequests()
280
+ }
267
281
  }
268
282
  }
269
283
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capgo/capacitor-passkey",
3
- "version": "8.3.10",
3
+ "version": "8.4.0",
4
4
  "description": "Capacitor passkey plugin with a WebAuthn-style shim for Capacitor apps.",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",