Skip to content

Publicly export auth error codes #4579

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/tiny-years-suffer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@firebase/auth': minor
'firebase': minor
---

Export firebase.auth.ErrorCode as an object map developers can use.
95 changes: 94 additions & 1 deletion packages/auth/src/exports_auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,100 @@ fireauth.exportlib.exportFunction(
},
'Auth': fireauth.Auth,
'AuthCredential': fireauth.AuthCredential,
'Error': fireauth.AuthError
'Error': fireauth.AuthError,
'ErrorCode': {
'ADMIN_ONLY_OPERATION': fireauth.authenum.Error.ADMIN_ONLY_OPERATION,
'ARGUMENT_ERROR': fireauth.authenum.Error.ARGUMENT_ERROR,
'APP_NOT_AUTHORIZED': fireauth.authenum.Error.APP_NOT_AUTHORIZED,
'APP_NOT_INSTALLED': fireauth.authenum.Error.APP_NOT_INSTALLED,
'CAPTCHA_CHECK_FAILED': fireauth.authenum.Error.CAPTCHA_CHECK_FAILED,
'CODE_EXPIRED': fireauth.authenum.Error.CODE_EXPIRED,
'CORDOVA_NOT_READY': fireauth.authenum.Error.CORDOVA_NOT_READY,
'CORS_UNSUPPORTED': fireauth.authenum.Error.CORS_UNSUPPORTED,
'CREDENTIAL_ALREADY_IN_USE': fireauth.authenum.Error.CREDENTIAL_ALREADY_IN_USE,
'CREDENTIAL_MISMATCH': fireauth.authenum.Error.CREDENTIAL_MISMATCH,
'CREDENTIAL_TOO_OLD_LOGIN_AGAIN': fireauth.authenum.Error.CREDENTIAL_TOO_OLD_LOGIN_AGAIN,
'DYNAMIC_LINK_NOT_ACTIVATED': fireauth.authenum.Error.DYNAMIC_LINK_NOT_ACTIVATED,
'EMAIL_CHANGE_NEEDS_VERIFICATION': fireauth.authenum.Error.EMAIL_CHANGE_NEEDS_VERIFICATION,
'EMAIL_EXISTS': fireauth.authenum.Error.EMAIL_EXISTS,
'EXPIRED_OOB_CODE': fireauth.authenum.Error.EXPIRED_OOB_CODE,
'EXPIRED_POPUP_REQUEST': fireauth.authenum.Error.EXPIRED_POPUP_REQUEST,
'INTERNAL_ERROR': fireauth.authenum.Error.INTERNAL_ERROR,
'INVALID_API_KEY': fireauth.authenum.Error.INVALID_API_KEY,
'INVALID_APP_CREDENTIAL': fireauth.authenum.Error.INVALID_APP_CREDENTIAL,
'INVALID_APP_ID': fireauth.authenum.Error.INVALID_APP_ID,
'INVALID_AUTH': fireauth.authenum.Error.INVALID_AUTH,
'INVALID_AUTH_EVENT': fireauth.authenum.Error.INVALID_AUTH_EVENT,
'INVALID_CERT_HASH': fireauth.authenum.Error.INVALID_CERT_HASH,
'INVALID_CODE': fireauth.authenum.Error.INVALID_CODE,
'INVALID_CONTINUE_URI': fireauth.authenum.Error.INVALID_CONTINUE_URI,
'INVALID_CORDOVA_CONFIGURATION': fireauth.authenum.Error.INVALID_CORDOVA_CONFIGURATION,
'INVALID_CUSTOM_TOKEN': fireauth.authenum.Error.INVALID_CUSTOM_TOKEN,
'INVALID_DYNAMIC_LINK_DOMAIN': fireauth.authenum.Error.INVALID_DYNAMIC_LINK_DOMAIN,
'INVALID_EMAIL': fireauth.authenum.Error.INVALID_EMAIL,
'INVALID_IDP_RESPONSE': fireauth.authenum.Error.INVALID_IDP_RESPONSE,
'INVALID_MESSAGE_PAYLOAD': fireauth.authenum.Error.INVALID_MESSAGE_PAYLOAD,
'INVALID_MFA_PENDING_CREDENTIAL': fireauth.authenum.Error.INVALID_MFA_PENDING_CREDENTIAL,
'INVALID_OAUTH_CLIENT_ID': fireauth.authenum.Error.INVALID_OAUTH_CLIENT_ID,
'INVALID_OAUTH_PROVIDER': fireauth.authenum.Error.INVALID_OAUTH_PROVIDER,
'INVALID_OOB_CODE': fireauth.authenum.Error.INVALID_OOB_CODE,
'INVALID_ORIGIN': fireauth.authenum.Error.INVALID_ORIGIN,
'INVALID_PASSWORD': fireauth.authenum.Error.INVALID_PASSWORD,
'INVALID_PERSISTENCE': fireauth.authenum.Error.INVALID_PERSISTENCE,
'INVALID_PHONE_NUMBER': fireauth.authenum.Error.INVALID_PHONE_NUMBER,
'INVALID_PROVIDER_ID': fireauth.authenum.Error.INVALID_PROVIDER_ID,
'INVALID_RECIPIENT_EMAIL': fireauth.authenum.Error.INVALID_RECIPIENT_EMAIL,
'INVALID_SENDER': fireauth.authenum.Error.INVALID_SENDER,
'INVALID_SESSION_INFO': fireauth.authenum.Error.INVALID_SESSION_INFO,
'INVALID_TENANT_ID': fireauth.authenum.Error.INVALID_TENANT_ID,
'MFA_ENROLLMENT_NOT_FOUND': fireauth.authenum.Error.MFA_ENROLLMENT_NOT_FOUND,
'MFA_REQUIRED': fireauth.authenum.Error.MFA_REQUIRED,
'MISSING_ANDROID_PACKAGE_NAME': fireauth.authenum.Error.MISSING_ANDROID_PACKAGE_NAME,
'MISSING_APP_CREDENTIAL': fireauth.authenum.Error.MISSING_APP_CREDENTIAL,
'MISSING_AUTH_DOMAIN': fireauth.authenum.Error.MISSING_AUTH_DOMAIN,
'MISSING_CODE': fireauth.authenum.Error.MISSING_CODE,
'MISSING_CONTINUE_URI': fireauth.authenum.Error.MISSING_CONTINUE_URI,
'MISSING_IFRAME_START': fireauth.authenum.Error.MISSING_IFRAME_START,
'MISSING_IOS_BUNDLE_ID': fireauth.authenum.Error.MISSING_IOS_BUNDLE_ID,
'MISSING_MFA_ENROLLMENT_ID': fireauth.authenum.Error.MISSING_MFA_ENROLLMENT_ID,
'MISSING_MFA_PENDING_CREDENTIAL': fireauth.authenum.Error.MISSING_MFA_PENDING_CREDENTIAL,
'MISSING_OR_INVALID_NONCE': fireauth.authenum.Error.MISSING_OR_INVALID_NONCE,
'MISSING_PHONE_NUMBER': fireauth.authenum.Error.MISSING_PHONE_NUMBER,
'MISSING_SESSION_INFO': fireauth.authenum.Error.MISSING_SESSION_INFO,
'MODULE_DESTROYED': fireauth.authenum.Error.MODULE_DESTROYED,
'NEED_CONFIRMATION': fireauth.authenum.Error.NEED_CONFIRMATION,
'NETWORK_REQUEST_FAILED': fireauth.authenum.Error.NETWORK_REQUEST_FAILED,
'NULL_USER': fireauth.authenum.Error.NULL_USER,
'NO_AUTH_EVENT': fireauth.authenum.Error.NO_AUTH_EVENT,
'NO_SUCH_PROVIDER': fireauth.authenum.Error.NO_SUCH_PROVIDER,
'OPERATION_NOT_ALLOWED': fireauth.authenum.Error.OPERATION_NOT_ALLOWED,
'OPERATION_NOT_SUPPORTED': fireauth.authenum.Error.OPERATION_NOT_SUPPORTED,
'POPUP_BLOCKED': fireauth.authenum.Error.POPUP_BLOCKED,
'POPUP_CLOSED_BY_USER': fireauth.authenum.Error.POPUP_CLOSED_BY_USER,
'PROVIDER_ALREADY_LINKED': fireauth.authenum.Error.PROVIDER_ALREADY_LINKED,
'QUOTA_EXCEEDED': fireauth.authenum.Error.QUOTA_EXCEEDED,
'REDIRECT_CANCELLED_BY_USER': fireauth.authenum.Error.REDIRECT_CANCELLED_BY_USER,
'REDIRECT_OPERATION_PENDING': fireauth.authenum.Error.REDIRECT_OPERATION_PENDING,
'REJECTED_CREDENTIAL': fireauth.authenum.Error.REJECTED_CREDENTIAL,
'SECOND_FACTOR_EXISTS': fireauth.authenum.Error.SECOND_FACTOR_EXISTS,
'SECOND_FACTOR_LIMIT_EXCEEDED': fireauth.authenum.Error.SECOND_FACTOR_LIMIT_EXCEEDED,
'TENANT_ID_MISMATCH': fireauth.authenum.Error.TENANT_ID_MISMATCH,
'TIMEOUT': fireauth.authenum.Error.TIMEOUT,
'TOKEN_EXPIRED': fireauth.authenum.Error.TOKEN_EXPIRED,
'TOO_MANY_ATTEMPTS_TRY_LATER': fireauth.authenum.Error.TOO_MANY_ATTEMPTS_TRY_LATER,
'UNAUTHORIZED_DOMAIN': fireauth.authenum.Error.UNAUTHORIZED_DOMAIN,
'UNSUPPORTED_FIRST_FACTOR': fireauth.authenum.Error.UNSUPPORTED_FIRST_FACTOR,
'UNSUPPORTED_PERSISTENCE': fireauth.authenum.Error.UNSUPPORTED_PERSISTENCE,
'UNSUPPORTED_TENANT_OPERATION': fireauth.authenum.Error.UNSUPPORTED_TENANT_OPERATION,
'UNVERIFIED_EMAIL': fireauth.authenum.Error.UNVERIFIED_EMAIL,
'USER_CANCELLED': fireauth.authenum.Error.USER_CANCELLED,
'USER_DELETED': fireauth.authenum.Error.USER_DELETED,
'USER_DISABLED': fireauth.authenum.Error.USER_DISABLED,
'USER_MISMATCH': fireauth.authenum.Error.USER_MISMATCH,
'USER_SIGNED_OUT': fireauth.authenum.Error.USER_SIGNED_OUT,
'WEAK_PASSWORD': fireauth.authenum.Error.WEAK_PASSWORD,
'WEB_STORAGE_UNSUPPORTED': fireauth.authenum.Error.WEB_STORAGE_UNSUPPORTED,
}
};
fireauth.exportlib.exportFunction(namespace,
'EmailAuthProvider', fireauth.EmailAuthProvider, []);
Expand Down
97 changes: 97 additions & 0 deletions packages/firebase/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5277,6 +5277,103 @@ declare namespace firebase.User {
}
}

/**
* Developer-facing Firebase Auth error codes.
*/
declare namespace firebase.auth.ErrorCode {
var ADMIN_ONLY_OPERATION: string;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we use the enum value as type instead of string?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

var ARGUMENT_ERROR: string;
var APP_NOT_AUTHORIZED: string;
var APP_NOT_INSTALLED: string;
var CAPTCHA_CHECK_FAILED: string;
var CODE_EXPIRED: string;
var CORDOVA_NOT_READY: string;
var CORS_UNSUPPORTED: string;
var CREDENTIAL_ALREADY_IN_USE: string;
var CREDENTIAL_MISMATCH: string;
var CREDENTIAL_TOO_OLD_LOGIN_AGAIN: string;
var DYNAMIC_LINK_NOT_ACTIVATED: string;
var EMAIL_CHANGE_NEEDS_VERIFICATION: string;
var EMAIL_EXISTS: string;
var EXPIRED_OOB_CODE: string;
var EXPIRED_POPUP_REQUEST: string;
var INTERNAL_ERROR: string;
var INVALID_API_KEY: string;
var INVALID_APP_CREDENTIAL: string;
var INVALID_APP_ID: string;
var INVALID_AUTH: string;
var INVALID_AUTH_EVENT: string;
var INVALID_CERT_HASH: string;
var INVALID_CODE: string;
var INVALID_CONTINUE_URI: string;
var INVALID_CORDOVA_CONFIGURATION: string;
var INVALID_CUSTOM_TOKEN: string;
var INVALID_DYNAMIC_LINK_DOMAIN: string;
var INVALID_EMAIL: string;
var INVALID_IDP_RESPONSE: string;
var INVALID_MESSAGE_PAYLOAD: string;
var INVALID_MFA_PENDING_CREDENTIAL: string;
var INVALID_OAUTH_CLIENT_ID: string;
var INVALID_OAUTH_PROVIDER: string;
var INVALID_OOB_CODE: string;
var INVALID_ORIGIN: string;
var INVALID_PASSWORD: string;
var INVALID_PERSISTENCE: string;
var INVALID_PHONE_NUMBER: string;
var INVALID_PROVIDER_ID: string;
var INVALID_RECIPIENT_EMAIL: string;
var INVALID_SENDER: string;
var INVALID_SESSION_INFO: string;
var INVALID_TENANT_ID: string;
var MFA_ENROLLMENT_NOT_FOUND: string;
var MFA_REQUIRED: string;
var MISSING_ANDROID_PACKAGE_NAME: string;
var MISSING_APP_CREDENTIAL: string;
var MISSING_AUTH_DOMAIN: string;
var MISSING_CODE: string;
var MISSING_CONTINUE_URI: string;
var MISSING_IFRAME_START: string;
var MISSING_IOS_BUNDLE_ID: string;
var MISSING_MFA_ENROLLMENT_ID: string;
var MISSING_MFA_PENDING_CREDENTIAL: string;
var MISSING_OR_INVALID_NONCE: string;
var MISSING_PHONE_NUMBER: string;
var MISSING_SESSION_INFO: string;
var MODULE_DESTROYED: string;
var NEED_CONFIRMATION: string;
var NETWORK_REQUEST_FAILED: string;
var NULL_USER: string;
var NO_AUTH_EVENT: string;
var NO_SUCH_PROVIDER: string;
var OPERATION_NOT_ALLOWED: string;
var OPERATION_NOT_SUPPORTED: string;
var POPUP_BLOCKED: string;
var POPUP_CLOSED_BY_USER: string;
var PROVIDER_ALREADY_LINKED: string;
var QUOTA_EXCEEDED: string;
var REDIRECT_CANCELLED_BY_USER: string;
var REDIRECT_OPERATION_PENDING: string;
var REJECTED_CREDENTIAL: string;
var SECOND_FACTOR_EXISTS: string;
var SECOND_FACTOR_LIMIT_EXCEEDED: string;
var TENANT_ID_MISMATCH: string;
var TIMEOUT: string;
var TOKEN_EXPIRED: string;
var TOO_MANY_ATTEMPTS_TRY_LATER: string;
var UNAUTHORIZED_DOMAIN: string;
var UNSUPPORTED_FIRST_FACTOR: string;
var UNSUPPORTED_PERSISTENCE: string;
var UNSUPPORTED_TENANT_OPERATION: string;
var UNVERIFIED_EMAIL: string;
var USER_CANCELLED: string;
var USER_DELETED: string;
var USER_DISABLED: string;
var USER_MISMATCH: string;
var USER_SIGNED_OUT: string;
var WEAK_PASSWORD: string;
var WEB_STORAGE_UNSUPPORTED: string;
}

declare namespace firebase.auth.ActionCodeInfo {
type Operation = string;
/**
Expand Down