From d088c064064c4612d7c8549354c8b47a7ba9abe5 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 28 Feb 2023 22:00:44 -0800 Subject: Prepare to expand WebAuthnError --- packages/browser/src/helpers/webAuthnError.ts | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 packages/browser/src/helpers/webAuthnError.ts (limited to 'packages/browser/src/helpers/webAuthnError.ts') diff --git a/packages/browser/src/helpers/webAuthnError.ts b/packages/browser/src/helpers/webAuthnError.ts new file mode 100644 index 0000000..aad98ff --- /dev/null +++ b/packages/browser/src/helpers/webAuthnError.ts @@ -0,0 +1,30 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/** + * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented + * errors in the spec was raised after calling `navigator.credentials.create()` or + * `navigator.credentials.get()`: + * + * - `AbortError` + * - `ConstraintError` + * - `InvalidStateError` + * - `NotAllowedError` + * - `NotSupportedError` + * - `SecurityError` + * - `TypeError` + * - `UnknownError` + * + * Error messages were determined through investigation of the spec to determine under which + * scenarios a given error would be raised. + */ +export class WebAuthnError extends Error { + constructor(message: string, cause: Error, name?: string) { + /** + * `cause` is supported in evergreen browsers, but not IE10, so this ts-ignore is to + * help Rollup complete the ES5 build. + */ + // @ts-ignore + super(message, { cause }) + // this.name = name ?? cause.name; + this.name = name ?? cause.name; + } +} -- cgit v1.2.3 From 50bf90ffa88e2f327d400cb175b1f1a0c7d7588e Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 28 Feb 2023 22:30:41 -0800 Subject: Add error codes to WebAuthnError --- packages/browser/src/helpers/webAuthnError.ts | 30 +++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'packages/browser/src/helpers/webAuthnError.ts') diff --git a/packages/browser/src/helpers/webAuthnError.ts b/packages/browser/src/helpers/webAuthnError.ts index aad98ff..135354a 100644 --- a/packages/browser/src/helpers/webAuthnError.ts +++ b/packages/browser/src/helpers/webAuthnError.ts @@ -17,14 +17,40 @@ * scenarios a given error would be raised. */ export class WebAuthnError extends Error { - constructor(message: string, cause: Error, name?: string) { + code: SimpleWebAuthnErrorCode; + + constructor({ + message, + code, + cause, + name, + }: { + message: string, + code: SimpleWebAuthnErrorCode, + cause: Error, + name?: string, + }) { /** * `cause` is supported in evergreen browsers, but not IE10, so this ts-ignore is to * help Rollup complete the ES5 build. */ // @ts-ignore super(message, { cause }) - // this.name = name ?? cause.name; this.name = name ?? cause.name; + this.code = code; } } + +export type SimpleWebAuthnErrorCode = + 'ERROR_CEREMONY_ABORTED' + | 'ERROR_INVALID_DOMAIN' + | 'ERROR_INVALID_RP_ID' + | 'ERROR_INVALID_USER_ID_LENGTH' + | 'ERROR_AUTHENTICATOR_GENERAL_ERROR' + | 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT' + | 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT' + | 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED' + | 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG' + | 'ERROR_MALFORMED_PUBKEYCREDPARAMS' + | 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY' + ; -- cgit v1.2.3 From 95a4c1f2f07640e76f0ccf2aa0409b46b311d015 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 28 Feb 2023 22:49:50 -0800 Subject: Group error codes --- packages/browser/src/helpers/webAuthnError.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/browser/src/helpers/webAuthnError.ts') diff --git a/packages/browser/src/helpers/webAuthnError.ts b/packages/browser/src/helpers/webAuthnError.ts index 135354a..56d71fd 100644 --- a/packages/browser/src/helpers/webAuthnError.ts +++ b/packages/browser/src/helpers/webAuthnError.ts @@ -46,11 +46,11 @@ export type SimpleWebAuthnErrorCode = | 'ERROR_INVALID_DOMAIN' | 'ERROR_INVALID_RP_ID' | 'ERROR_INVALID_USER_ID_LENGTH' + | 'ERROR_MALFORMED_PUBKEYCREDPARAMS' | 'ERROR_AUTHENTICATOR_GENERAL_ERROR' | 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT' | 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT' | 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED' | 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG' - | 'ERROR_MALFORMED_PUBKEYCREDPARAMS' | 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY' ; -- cgit v1.2.3 From ac97005f39974154dc2af9514294bbe217a252f6 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 28 Feb 2023 22:50:48 -0800 Subject: Rename SimpleWebAuthnErrorCode --- packages/browser/src/helpers/webAuthnError.ts | 6 +++--- packages/browser/src/index.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'packages/browser/src/helpers/webAuthnError.ts') diff --git a/packages/browser/src/helpers/webAuthnError.ts b/packages/browser/src/helpers/webAuthnError.ts index 56d71fd..1debec0 100644 --- a/packages/browser/src/helpers/webAuthnError.ts +++ b/packages/browser/src/helpers/webAuthnError.ts @@ -17,7 +17,7 @@ * scenarios a given error would be raised. */ export class WebAuthnError extends Error { - code: SimpleWebAuthnErrorCode; + code: WebAuthnErrorCode; constructor({ message, @@ -26,7 +26,7 @@ export class WebAuthnError extends Error { name, }: { message: string, - code: SimpleWebAuthnErrorCode, + code: WebAuthnErrorCode, cause: Error, name?: string, }) { @@ -41,7 +41,7 @@ export class WebAuthnError extends Error { } } -export type SimpleWebAuthnErrorCode = +export type WebAuthnErrorCode = 'ERROR_CEREMONY_ABORTED' | 'ERROR_INVALID_DOMAIN' | 'ERROR_INVALID_RP_ID' diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index d0133af..67c7c74 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -16,4 +16,4 @@ export { platformAuthenticatorIsAvailable, }; -export type { SimpleWebAuthnErrorCode } from './helpers/webAuthnError'; +export type { WebAuthnErrorCode } from './helpers/webAuthnError'; -- cgit v1.2.3