{"version":3,"file":"index-Dbvx56AE.js","sources":["../../../node_modules/@simplewebauthn/browser/dist/bundle/index.js"],"sourcesContent":["/* [@simplewebauthn/browser@11.0.0] */\nfunction bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n const binary = atob(padded);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n return (window?.PublicKeyCredential !== undefined &&\n typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n transports: descriptor.transports,\n };\n}\n\nfunction isValidDomain(hostname) {\n return (hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n super(message, { cause });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (options.mediation === 'conditional' &&\n publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required during automatic registration but it could not be performed',\n code: 'ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nclass BaseWebAuthnAbortService {\n createNewAbortSignal() {\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\nconst WebAuthnAbortService = new BaseWebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n\nasync function startRegistration(options) {\n const { optionsJSON, useAutoRegister = false } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n const createOptions = {};\n if (useAutoRegister) {\n createOptions.mediation = 'conditional';\n }\n createOptions.publicKey = publicKey;\n createOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.create(createOptions));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options: createOptions });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n\nfunction browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n const globalPublicKeyCredential = window\n .PublicKeyCredential;\n if (globalPublicKeyCredential.isConditionalMediationAvailable === undefined) {\n return new Promise((resolve) => resolve(false));\n }\n return globalPublicKeyCredential.isConditionalMediationAvailable();\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = window.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n return new WebAuthnError({\n message: `${window.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n\nasync function startAuthentication(options) {\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n const getOptions = {};\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n getOptions.mediation = 'conditional';\n publicKey.allowCredentials = [];\n }\n getOptions.publicKey = publicKey;\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n\nfunction platformAuthenticatorIsAvailable() {\n if (!browserSupportsWebAuthn()) {\n return new Promise((resolve) => resolve(false));\n }\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { WebAuthnAbortService, WebAuthnError, base64URLStringToBuffer, browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, bufferToBase64URLString, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\n"],"names":["bufferToBase64URLString","buffer","bytes","str","charCode","base64URLStringToBuffer","base64URLString","base64","padLength","padded","binary","i","browserSupportsWebAuthn","toPublicKeyCredentialDescriptor","descriptor","id","isValidDomain","hostname","WebAuthnError","message","code","cause","name","identifyRegistrationError","error","options","_a","_b","_c","publicKey","param","effectiveDomain","BaseWebAuthnAbortService","abortError","newController","WebAuthnAbortService","attachments","toAuthenticatorAttachment","attachment","startRegistration","optionsJSON","useAutoRegister","createOptions","credential","err","rawId","response","type","transports","responsePublicKeyAlgorithm","warnOnBrokenImplementation","responsePublicKey","_publicKey","responseAuthenticatorData","methodName","browserSupportsWebAuthnAutofill","resolve","globalPublicKeyCredential","identifyAuthenticationError","startAuthentication","useBrowserAutofill","verifyBrowserAutofillInput","allowCredentials","getOptions","userHandle"],"mappings":"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","x_google_ignoreList":[0]}