diff --git a/common/api-review/auth-exp.api.md b/common/api-review/auth-exp.api.md index e42b94a9e34..e5d78616b0b 100644 --- a/common/api-review/auth-exp.api.md +++ b/common/api-review/auth-exp.api.md @@ -82,7 +82,6 @@ export function applyActionCode(auth: Auth, oobCode: string): Promise; export interface Auth { readonly config: Config; readonly currentUser: User | null; - // Warning: (ae-forgotten-export) The symbol "EmulatorConfig" needs to be exported by the entry point index.d.ts readonly emulatorConfig: EmulatorConfig | null; languageCode: string | null; readonly name: string; @@ -328,6 +327,16 @@ export class EmailAuthProvider implements AuthProvider { readonly providerId: "password"; } +// @public +export interface EmulatorConfig { + readonly host: string; + readonly options: { + readonly disableWarnings: boolean; + }; + readonly port: number | null; + readonly protocol: string; +} + export { ErrorFn } // Warning: (ae-forgotten-export) The symbol "BaseOAuthProvider" needs to be exported by the entry point index.d.ts @@ -463,6 +472,8 @@ export interface MultiFactorUser { unenroll(option: MultiFactorInfo | string): Promise; } +export { NextFn } + // @public export type NextOrObserver = NextFn | Observer; @@ -634,12 +645,17 @@ export function reauthenticateWithPopup(user: User, provider: AuthProvider, reso // @public export function reauthenticateWithRedirect(user: User, provider: AuthProvider, resolver?: PopupRedirectResolver): Promise; +// @public +export interface RecaptchaParameters { + // (undocumented) + [key: string]: any; +} + // Warning: (ae-forgotten-export) The symbol "ApplicationVerifierInternal" needs to be exported by the entry point index.d.ts // // @public export class RecaptchaVerifier implements ApplicationVerifierInternal { - // Warning: (ae-forgotten-export) The symbol "Parameters" needs to be exported by the entry point index.d.ts - constructor(containerOrId: HTMLElement | string, parameters: Parameters_2, authExtern: Auth); + constructor(containerOrId: HTMLElement | string, parameters: RecaptchaParameters, authExtern: Auth); clear(): void; // Warning: (ae-forgotten-export) The symbol "ReCaptchaLoader" needs to be exported by the entry point index.d.ts // diff --git a/packages-exp/auth-exp/index.ts b/packages-exp/auth-exp/index.ts index b9d74996b7f..b6fc63830e5 100644 --- a/packages-exp/auth-exp/index.ts +++ b/packages-exp/auth-exp/index.ts @@ -32,46 +32,7 @@ import { browserPopupRedirectResolver } from './src/platform_browser/popup_redir import { Auth } from './src/model/public_types'; // Public types -export { - // Interfaces - ActionCodeInfo, - ActionCodeSettings, - AdditionalUserInfo, - ApplicationVerifier, - Auth, - AuthError, - AuthErrorMap, - AuthProvider, - AuthSettings, - Config, - ConfirmationResult, - IdTokenResult, - MultiFactorAssertion, - MultiFactorError, - MultiFactorInfo, - MultiFactorResolver, - MultiFactorSession, - MultiFactorUser, - ParsedToken, - Persistence, - PhoneMultiFactorAssertion, - PhoneMultiFactorEnrollInfoOptions, - PhoneMultiFactorSignInInfoOptions, - PhoneSingleFactorInfoOptions, - PopupRedirectResolver, - ReactNativeAsyncStorage, - User, - UserCredential, - UserInfo, - UserMetadata, - UserProfile, - PhoneInfoOptions, - Dependencies, - NextOrObserver, - ErrorFn, - CompleteFn, - Unsubscribe -} from './src/model/public_types'; +export * from './src/model/public_types'; // Helper maps (not used internally) export { diff --git a/packages-exp/auth-exp/package.json b/packages-exp/auth-exp/package.json index 16aced9011b..8e35b8d928f 100644 --- a/packages-exp/auth-exp/package.json +++ b/packages-exp/auth-exp/package.json @@ -42,7 +42,7 @@ "test:node:integration": "node ./scripts/run-node-tests.js --integration", "test:node:integration:local": "node ./scripts/run-node-tests.js --integration --local", "test:webdriver": "rollup -c test/integration/webdriver/static/rollup.config.js && node ./scripts/run-node-tests.js --webdriver", - "api-report": "api-extractor run --local --verbose", + "api-report": "api-extractor run --local --verbose && ts-node-script ../../repo-scripts/prune-dts/prune-dts.ts --input dist/auth-exp-public.d.ts --output dist/auth-exp-public.d.ts", "predoc": "node ../../scripts/exp/remove-exp.js temp", "doc": "api-documenter markdown --input temp --output docs", "build:doc": "yarn build && yarn doc", diff --git a/packages-exp/auth-exp/src/api/account_management/account.test.ts b/packages-exp/auth-exp/src/api/account_management/account.test.ts index ff1cf27c4e3..896786baccb 100644 --- a/packages-exp/auth-exp/src/api/account_management/account.test.ts +++ b/packages-exp/auth-exp/src/api/account_management/account.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { Endpoint, HttpHeader } from '../'; diff --git a/packages-exp/auth-exp/src/api/authentication/custom_token.test.ts b/packages-exp/auth-exp/src/api/authentication/custom_token.test.ts index 8e003376ab6..7b0b21075cb 100644 --- a/packages-exp/auth-exp/src/api/authentication/custom_token.test.ts +++ b/packages-exp/auth-exp/src/api/authentication/custom_token.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { Endpoint, HttpHeader } from '../'; diff --git a/packages-exp/auth-exp/src/api/authentication/sms.test.ts b/packages-exp/auth-exp/src/api/authentication/sms.test.ts index b27db5d9475..4744520ff90 100644 --- a/packages-exp/auth-exp/src/api/authentication/sms.test.ts +++ b/packages-exp/auth-exp/src/api/authentication/sms.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { Endpoint, HttpHeader } from '../'; diff --git a/packages-exp/auth-exp/src/core/credentials/email.test.ts b/packages-exp/auth-exp/src/core/credentials/email.test.ts index b0d02f2f50c..ca4334b98e3 100644 --- a/packages-exp/auth-exp/src/core/credentials/email.test.ts +++ b/packages-exp/auth-exp/src/core/credentials/email.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId, SignInMethod } from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { testAuth, TestAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/credentials/email.ts b/packages-exp/auth-exp/src/core/credentials/email.ts index 3d06319b329..45e3ad5908d 100644 --- a/packages-exp/auth-exp/src/core/credentials/email.ts +++ b/packages-exp/auth-exp/src/core/credentials/email.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ProviderId, SignInMethod } from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; import { updateEmailPassword } from '../../api/account_management/email_and_password'; import { signInWithPassword } from '../../api/authentication/email_and_password'; diff --git a/packages-exp/auth-exp/src/core/credentials/oauth.test.ts b/packages-exp/auth-exp/src/core/credentials/oauth.test.ts index 982b8e963dd..da11b6a11ef 100644 --- a/packages-exp/auth-exp/src/core/credentials/oauth.test.ts +++ b/packages-exp/auth-exp/src/core/credentials/oauth.test.ts @@ -17,7 +17,7 @@ import { expect } from 'chai'; -import { ProviderId, SignInMethod } from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; diff --git a/packages-exp/auth-exp/src/core/credentials/phone.ts b/packages-exp/auth-exp/src/core/credentials/phone.ts index 03117d3e63a..3a0a3fd8cbe 100644 --- a/packages-exp/auth-exp/src/core/credentials/phone.ts +++ b/packages-exp/auth-exp/src/core/credentials/phone.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ProviderId, SignInMethod } from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; import { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa'; import { @@ -84,12 +84,8 @@ export class PhoneAuthCredential extends AuthCredential { /** @internal */ _makeVerificationRequest(): SignInWithPhoneNumberRequest { - const { - temporaryProof, - phoneNumber, - verificationId, - verificationCode - } = this.params; + const { temporaryProof, phoneNumber, verificationId, verificationCode } = + this.params; if (temporaryProof && phoneNumber) { return { temporaryProof, phoneNumber }; } @@ -127,12 +123,8 @@ export class PhoneAuthCredential extends AuthCredential { json = JSON.parse(json); } - const { - verificationId, - verificationCode, - phoneNumber, - temporaryProof - } = json as { [key: string]: string }; + const { verificationId, verificationCode, phoneNumber, temporaryProof } = + json as { [key: string]: string }; if ( !verificationCode && !verificationId && diff --git a/packages-exp/auth-exp/src/core/providers/email.test.ts b/packages-exp/auth-exp/src/core/providers/email.test.ts index 7046d1006ae..5eea4529d46 100644 --- a/packages-exp/auth-exp/src/core/providers/email.test.ts +++ b/packages-exp/auth-exp/src/core/providers/email.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId, SignInMethod } from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; // eslint-disable-next-line import/no-extraneous-dependencies import { FirebaseError } from '@firebase/util'; diff --git a/packages-exp/auth-exp/src/core/providers/email.ts b/packages-exp/auth-exp/src/core/providers/email.ts index c72a75cb868..81382b15aa9 100644 --- a/packages-exp/auth-exp/src/core/providers/email.ts +++ b/packages-exp/auth-exp/src/core/providers/email.ts @@ -15,11 +15,8 @@ * limitations under the License. */ -import { - ProviderId, - SignInMethod, - AuthProvider -} from '../../model/public_types'; +import { ProviderId, SignInMethod } from '../../model/enums'; +import { AuthProvider } from '../../model/public_types'; import { ActionCodeURL } from '../action_code_url'; import { EmailAuthCredential } from '../credentials/email'; diff --git a/packages-exp/auth-exp/src/core/providers/facebook.test.ts b/packages-exp/auth-exp/src/core/providers/facebook.test.ts index dcf310dee64..7b6ba70cbbf 100644 --- a/packages-exp/auth-exp/src/core/providers/facebook.test.ts +++ b/packages-exp/auth-exp/src/core/providers/facebook.test.ts @@ -21,7 +21,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/facebook.ts b/packages-exp/auth-exp/src/core/providers/facebook.ts index 7ab304c55f7..16cf6dc8236 100644 --- a/packages-exp/auth-exp/src/core/providers/facebook.ts +++ b/packages-exp/auth-exp/src/core/providers/facebook.ts @@ -15,17 +15,14 @@ * limitations under the License. */ -import { - ProviderId, - SignInMethod, - UserCredential -} from '../../model/public_types'; +import { UserCredential } from '../../model/public_types'; import { FirebaseError } from '@firebase/util'; import { TaggedWithTokenResponse } from '../../model/id_token'; import { UserCredentialInternal } from '../../model/user'; import { OAuthCredential } from '../credentials/oauth'; import { BaseOAuthProvider } from './oauth'; +import { ProviderId, SignInMethod } from '../../model/enums'; /** * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.FACEBOOK. diff --git a/packages-exp/auth-exp/src/core/providers/github.test.ts b/packages-exp/auth-exp/src/core/providers/github.test.ts index 3a0f8bb29a1..56d8bfcf64c 100644 --- a/packages-exp/auth-exp/src/core/providers/github.test.ts +++ b/packages-exp/auth-exp/src/core/providers/github.test.ts @@ -21,7 +21,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/github.ts b/packages-exp/auth-exp/src/core/providers/github.ts index 0a0f1cc8e63..3e8c152a7d2 100644 --- a/packages-exp/auth-exp/src/core/providers/github.ts +++ b/packages-exp/auth-exp/src/core/providers/github.ts @@ -15,17 +15,14 @@ * limitations under the License. */ -import { - ProviderId, - SignInMethod, - UserCredential -} from '../../model/public_types'; +import { UserCredential } from '../../model/public_types'; import { FirebaseError } from '@firebase/util'; import { TaggedWithTokenResponse } from '../../model/id_token'; import { UserCredentialInternal } from '../../model/user'; import { OAuthCredential } from '../credentials/oauth'; import { BaseOAuthProvider } from './oauth'; +import { ProviderId, SignInMethod } from '../../model/enums'; /** * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.GITHUB. diff --git a/packages-exp/auth-exp/src/core/providers/google.test.ts b/packages-exp/auth-exp/src/core/providers/google.test.ts index 4df94d378b5..544860711f6 100644 --- a/packages-exp/auth-exp/src/core/providers/google.test.ts +++ b/packages-exp/auth-exp/src/core/providers/google.test.ts @@ -21,7 +21,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/google.ts b/packages-exp/auth-exp/src/core/providers/google.ts index 82b08ea7f6e..3aa6cfa5562 100644 --- a/packages-exp/auth-exp/src/core/providers/google.ts +++ b/packages-exp/auth-exp/src/core/providers/google.ts @@ -15,11 +15,7 @@ * limitations under the License. */ -import { - ProviderId, - SignInMethod, - UserCredential -} from '../../model/public_types'; +import { UserCredential } from '../../model/public_types'; import { FirebaseError } from '@firebase/util'; import { SignInWithIdpResponse } from '../../api/authentication/idp'; @@ -27,6 +23,7 @@ import { TaggedWithTokenResponse } from '../../model/id_token'; import { UserCredentialInternal } from '../../model/user'; import { OAuthCredential } from '../credentials/oauth'; import { BaseOAuthProvider } from './oauth'; +import { ProviderId, SignInMethod } from '../../model/enums'; /** * Provider for generating an an {@link OAuthCredential} for {@link ProviderId}.GOOGLE. diff --git a/packages-exp/auth-exp/src/core/providers/oauth.test.ts b/packages-exp/auth-exp/src/core/providers/oauth.test.ts index c647055ffba..5c831e8a5fc 100644 --- a/packages-exp/auth-exp/src/core/providers/oauth.test.ts +++ b/packages-exp/auth-exp/src/core/providers/oauth.test.ts @@ -21,7 +21,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/saml.test.ts b/packages-exp/auth-exp/src/core/providers/saml.test.ts index 5d3e882227e..b2e714c7918 100644 --- a/packages-exp/auth-exp/src/core/providers/saml.test.ts +++ b/packages-exp/auth-exp/src/core/providers/saml.test.ts @@ -17,7 +17,7 @@ import { expect } from 'chai'; -import { OperationType } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/twitter.test.ts b/packages-exp/auth-exp/src/core/providers/twitter.test.ts index 8e8f766eb37..31d1f382cf3 100644 --- a/packages-exp/auth-exp/src/core/providers/twitter.test.ts +++ b/packages-exp/auth-exp/src/core/providers/twitter.test.ts @@ -38,7 +38,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; import { testUser, testAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/providers/twitter.ts b/packages-exp/auth-exp/src/core/providers/twitter.ts index e83924db18b..8aa35c7ab9a 100644 --- a/packages-exp/auth-exp/src/core/providers/twitter.ts +++ b/packages-exp/auth-exp/src/core/providers/twitter.ts @@ -32,11 +32,7 @@ * limitations under the License. */ -import { - ProviderId, - SignInMethod, - UserCredential -} from '../../model/public_types'; +import { UserCredential } from '../../model/public_types'; import { FirebaseError } from '@firebase/util'; import { SignInWithIdpResponse } from '../../api/authentication/idp'; @@ -44,6 +40,7 @@ import { TaggedWithTokenResponse } from '../../model/id_token'; import { UserCredentialInternal } from '../../model/user'; import { OAuthCredential } from '../credentials/oauth'; import { BaseOAuthProvider } from './oauth'; +import { ProviderId, SignInMethod } from '../../model/enums'; /** * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.TWITTER. diff --git a/packages-exp/auth-exp/src/core/strategies/abstract_popup_redirect_operation.test.ts b/packages-exp/auth-exp/src/core/strategies/abstract_popup_redirect_operation.test.ts index fbdee4d6d95..ba818c0b9dd 100644 --- a/packages-exp/auth-exp/src/core/strategies/abstract_popup_redirect_operation.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/abstract_popup_redirect_operation.test.ts @@ -20,7 +20,7 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { OperationType, ProviderId } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; diff --git a/packages-exp/auth-exp/src/core/strategies/anonymous.test.ts b/packages-exp/auth-exp/src/core/strategies/anonymous.test.ts index 887878fe5d1..044019ecc1f 100644 --- a/packages-exp/auth-exp/src/core/strategies/anonymous.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/anonymous.test.ts @@ -17,7 +17,7 @@ import { expect } from 'chai'; -import { OperationType } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { testAuth, testUser, TestAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/strategies/anonymous.ts b/packages-exp/auth-exp/src/core/strategies/anonymous.ts index 97ddab32d6e..5233e1bb52e 100644 --- a/packages-exp/auth-exp/src/core/strategies/anonymous.ts +++ b/packages-exp/auth-exp/src/core/strategies/anonymous.ts @@ -15,11 +15,12 @@ * limitations under the License. */ -import { Auth, OperationType, UserCredential } from '../../model/public_types'; +import { Auth, UserCredential } from '../../model/public_types'; import { signUp } from '../../api/authentication/sign_up'; import { UserInternal } from '../../model/user'; import { UserCredentialImpl } from '../user/user_credential_impl'; import { _castAuth } from '../auth/auth_impl'; +import { OperationType } from '../../model/enums'; /** * Asynchronously signs in as an anonymous user. diff --git a/packages-exp/auth-exp/src/core/strategies/credential.test.ts b/packages-exp/auth-exp/src/core/strategies/credential.test.ts index 837ec2bd5e6..c0604f69d9a 100644 --- a/packages-exp/auth-exp/src/core/strategies/credential.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/credential.test.ts @@ -23,7 +23,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/strategies/credential.ts b/packages-exp/auth-exp/src/core/strategies/credential.ts index af3880ec85a..3e77eef37cb 100644 --- a/packages-exp/auth-exp/src/core/strategies/credential.ts +++ b/packages-exp/auth-exp/src/core/strategies/credential.ts @@ -15,12 +15,7 @@ * limitations under the License. */ -import { - OperationType, - UserCredential, - Auth, - User -} from '../../model/public_types'; +import { UserCredential, Auth, User } from '../../model/public_types'; import { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error'; import { AuthInternal } from '../../model/auth'; @@ -31,6 +26,7 @@ import { _reauthenticate } from '../user/reauthenticate'; import { UserCredentialImpl } from '../user/user_credential_impl'; import { _castAuth } from '../auth/auth_impl'; import { getModularInstance } from '@firebase/util'; +import { OperationType } from '../../model/enums'; export async function _signInWithCredential( auth: AuthInternal, diff --git a/packages-exp/auth-exp/src/core/strategies/custom_token.test.ts b/packages-exp/auth-exp/src/core/strategies/custom_token.test.ts index 082b678dad3..5c046ec4d5c 100644 --- a/packages-exp/auth-exp/src/core/strategies/custom_token.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/custom_token.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { OperationType } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { testAuth, TestAuth } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/strategies/custom_token.ts b/packages-exp/auth-exp/src/core/strategies/custom_token.ts index 1b535036265..65c4707eaba 100644 --- a/packages-exp/auth-exp/src/core/strategies/custom_token.ts +++ b/packages-exp/auth-exp/src/core/strategies/custom_token.ts @@ -15,12 +15,13 @@ * limitations under the License. */ -import { Auth, OperationType, UserCredential } from '../../model/public_types'; +import { Auth, UserCredential } from '../../model/public_types'; import { signInWithCustomToken as getIdTokenResponse } from '../../api/authentication/custom_token'; import { IdTokenResponse } from '../../model/id_token'; import { UserCredentialImpl } from '../user/user_credential_impl'; import { _castAuth } from '../auth/auth_impl'; +import { OperationType } from '../../model/enums'; /** * Asynchronously signs in using a custom token. diff --git a/packages-exp/auth-exp/src/core/strategies/email.test.ts b/packages-exp/auth-exp/src/core/strategies/email.test.ts index 2a7911958be..45771c33390 100644 --- a/packages-exp/auth-exp/src/core/strategies/email.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/email.test.ts @@ -20,7 +20,8 @@ import * as chaiAsPromised from 'chai-as-promised'; import { restore, SinonStub, stub } from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { ActionCodeOperation, ProviderId } from '../../model/public_types'; +import { ActionCodeOperation } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError, isNode } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/strategies/email_and_password.test.ts b/packages-exp/auth-exp/src/core/strategies/email_and_password.test.ts index e0b60903aa9..af941c31760 100644 --- a/packages-exp/auth-exp/src/core/strategies/email_and_password.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/email_and_password.test.ts @@ -19,7 +19,8 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as sinonChai from 'sinon-chai'; -import { ActionCodeOperation, OperationType } from '../../model/public_types'; +import { ActionCodeOperation } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/strategies/email_and_password.ts b/packages-exp/auth-exp/src/core/strategies/email_and_password.ts index ec4c0f6fc15..bce6334b3be 100644 --- a/packages-exp/auth-exp/src/core/strategies/email_and_password.ts +++ b/packages-exp/auth-exp/src/core/strategies/email_and_password.ts @@ -20,7 +20,6 @@ import { ActionCodeOperation, ActionCodeSettings, Auth, - OperationType, UserCredential } from '../../model/public_types'; @@ -36,6 +35,7 @@ import { signInWithCredential } from './credential'; import { _castAuth } from '../auth/auth_impl'; import { AuthErrorCode } from '../errors'; import { getModularInstance } from '@firebase/util'; +import { OperationType } from '../../model/enums'; /** * Sends a password reset email to the given email address. diff --git a/packages-exp/auth-exp/src/core/strategies/email_link.test.ts b/packages-exp/auth-exp/src/core/strategies/email_link.test.ts index e158aa648c6..ac96284e6c2 100644 --- a/packages-exp/auth-exp/src/core/strategies/email_link.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/email_link.test.ts @@ -19,7 +19,8 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as sinonChai from 'sinon-chai'; -import { ActionCodeOperation, OperationType } from '../../model/public_types'; +import { ActionCodeOperation } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/strategies/idp.test.ts b/packages-exp/auth-exp/src/core/strategies/idp.test.ts index 87e0c4ac303..0fcef68c246 100644 --- a/packages-exp/auth-exp/src/core/strategies/idp.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/idp.test.ts @@ -20,7 +20,7 @@ import * as sinonChai from 'sinon-chai'; import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { OperationType } from '../../model/public_types'; +import { OperationType } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; diff --git a/packages-exp/auth-exp/src/core/strategies/idp.ts b/packages-exp/auth-exp/src/core/strategies/idp.ts index 677e142a99b..09e6dee95e8 100644 --- a/packages-exp/auth-exp/src/core/strategies/idp.ts +++ b/packages-exp/auth-exp/src/core/strategies/idp.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -import { ProviderId } from '../../model/public_types'; import { signInWithIdp, SignInWithIdpRequest @@ -30,6 +29,7 @@ import { _reauthenticate } from '../user/reauthenticate'; import { _assert } from '../util/assert'; import { _signInWithCredential } from './credential'; import { AuthErrorCode } from '../errors'; +import { ProviderId } from '../../model/enums'; export interface IdpTaskParams { auth: AuthInternal; diff --git a/packages-exp/auth-exp/src/core/strategies/redirect.test.ts b/packages-exp/auth-exp/src/core/strategies/redirect.test.ts index e7ffb04f4d0..0b94ae8bfd0 100644 --- a/packages-exp/auth-exp/src/core/strategies/redirect.test.ts +++ b/packages-exp/auth-exp/src/core/strategies/redirect.test.ts @@ -17,10 +17,9 @@ import { AuthError, - OperationType, - PopupRedirectResolver, - ProviderId + PopupRedirectResolver } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; import { _clearInstanceMap, _getInstance } from '../util/instantiator'; diff --git a/packages-exp/auth-exp/src/core/user/account_info.test.ts b/packages-exp/auth-exp/src/core/user/account_info.test.ts index 7c33f05de79..05ac0856d1a 100644 --- a/packages-exp/auth-exp/src/core/user/account_info.test.ts +++ b/packages-exp/auth-exp/src/core/user/account_info.test.ts @@ -20,7 +20,8 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { ProviderId, UserInfo } from '../../model/public_types'; +import { UserInfo } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { TestAuth, testAuth, testUser } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/user/account_info.ts b/packages-exp/auth-exp/src/core/user/account_info.ts index 2d1c4f5fc53..460ba7d3ed3 100644 --- a/packages-exp/auth-exp/src/core/user/account_info.ts +++ b/packages-exp/auth-exp/src/core/user/account_info.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ProviderId, User } from '../../model/public_types'; +import { User } from '../../model/public_types'; import { updateEmailPassword as apiUpdateEmailPassword, @@ -25,6 +25,7 @@ import { updateProfile as apiUpdateProfile } from '../../api/account_management/ import { UserInternal } from '../../model/user'; import { _logoutIfInvalidated } from './invalidation'; import { getModularInstance } from '@firebase/util'; +import { ProviderId } from '../../model/enums'; /** * Updates a user's profile data. diff --git a/packages-exp/auth-exp/src/core/user/additional_user_info.test.ts b/packages-exp/auth-exp/src/core/user/additional_user_info.test.ts index 34e314bf4c1..3e89ecefacb 100644 --- a/packages-exp/auth-exp/src/core/user/additional_user_info.test.ts +++ b/packages-exp/auth-exp/src/core/user/additional_user_info.test.ts @@ -17,7 +17,7 @@ import { expect } from 'chai'; -import { OperationType, ProviderId } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import { IdTokenResponse, IdTokenResponseKind } from '../../model/id_token'; import { diff --git a/packages-exp/auth-exp/src/core/user/additional_user_info.ts b/packages-exp/auth-exp/src/core/user/additional_user_info.ts index 06321190b3c..40687a746af 100644 --- a/packages-exp/auth-exp/src/core/user/additional_user_info.ts +++ b/packages-exp/auth-exp/src/core/user/additional_user_info.ts @@ -15,14 +15,11 @@ * limitations under the License. */ -import { - AdditionalUserInfo, - ProviderId, - UserCredential -} from '../../model/public_types'; +import { AdditionalUserInfo, UserCredential } from '../../model/public_types'; import { IdTokenResponse, IdTokenResponseKind } from '../../model/id_token'; import { _parseToken } from './id_token_result'; import { UserCredentialInternal } from '../../model/user'; +import { ProviderId } from '../../model/enums'; /** * Parse the `AdditionalUserInfo` from the ID token response. diff --git a/packages-exp/auth-exp/src/core/user/id_token_result.test.ts b/packages-exp/auth-exp/src/core/user/id_token_result.test.ts index 82e5f70079b..72bf829e04a 100644 --- a/packages-exp/auth-exp/src/core/user/id_token_result.test.ts +++ b/packages-exp/auth-exp/src/core/user/id_token_result.test.ts @@ -19,7 +19,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; -import { ProviderId } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { makeJWT } from '../../../test/helpers/jwt'; diff --git a/packages-exp/auth-exp/src/core/user/link_unlink.test.ts b/packages-exp/auth-exp/src/core/user/link_unlink.test.ts index a2bb6d271da..59d66ae9ad4 100644 --- a/packages-exp/auth-exp/src/core/user/link_unlink.test.ts +++ b/packages-exp/auth-exp/src/core/user/link_unlink.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/user/link_unlink.ts b/packages-exp/auth-exp/src/core/user/link_unlink.ts index 756aa654015..7657ead663c 100644 --- a/packages-exp/auth-exp/src/core/user/link_unlink.ts +++ b/packages-exp/auth-exp/src/core/user/link_unlink.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { OperationType, ProviderId, User } from '../../model/public_types'; +import { User } from '../../model/public_types'; import { deleteLinkedAccounts } from '../../api/account_management/account'; import { UserInternal, UserCredentialInternal } from '../../model/user'; @@ -27,6 +27,7 @@ import { _logoutIfInvalidated } from './invalidation'; import { _reloadWithoutSaving } from './reload'; import { UserCredentialImpl } from './user_credential_impl'; import { getModularInstance } from '@firebase/util'; +import { OperationType, ProviderId } from '../../model/enums'; /** * Unlinks a provider from a user account. diff --git a/packages-exp/auth-exp/src/core/user/reauthenticate.test.ts b/packages-exp/auth-exp/src/core/user/reauthenticate.test.ts index aaeb1423d4e..d75f20dbb74 100644 --- a/packages-exp/auth-exp/src/core/user/reauthenticate.test.ts +++ b/packages-exp/auth-exp/src/core/user/reauthenticate.test.ts @@ -23,7 +23,7 @@ import { OperationType, ProviderId, SignInMethod -} from '../../model/public_types'; +} from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/core/user/reauthenticate.ts b/packages-exp/auth-exp/src/core/user/reauthenticate.ts index 71b901a03f9..832f8198e71 100644 --- a/packages-exp/auth-exp/src/core/user/reauthenticate.ts +++ b/packages-exp/auth-exp/src/core/user/reauthenticate.ts @@ -15,9 +15,8 @@ * limitations under the License. */ -import { OperationType } from '../../model/public_types'; - import { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error'; +import { OperationType } from '../../model/enums'; import { UserInternal } from '../../model/user'; import { AuthCredential } from '../credentials'; import { AuthErrorCode } from '../errors'; diff --git a/packages-exp/auth-exp/src/core/user/reload.test.ts b/packages-exp/auth-exp/src/core/user/reload.test.ts index 134847f3010..29c9cd1ce8a 100644 --- a/packages-exp/auth-exp/src/core/user/reload.test.ts +++ b/packages-exp/auth-exp/src/core/user/reload.test.ts @@ -20,7 +20,9 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { ProviderId, UserInfo } from '../../model/public_types'; +import { UserInfo } from '../../model/public_types'; +import { ProviderId } from '../../model/enums'; + import { mockEndpoint } from '../../../test/helpers/api/helper'; import { testAuth, TestAuth, testUser } from '../../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/core/user/user_credential_impl.test.ts b/packages-exp/auth-exp/src/core/user/user_credential_impl.test.ts index 4f864257b1c..bc609a39d28 100644 --- a/packages-exp/auth-exp/src/core/user/user_credential_impl.test.ts +++ b/packages-exp/auth-exp/src/core/user/user_credential_impl.test.ts @@ -20,7 +20,7 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { OperationType, ProviderId } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import { mockEndpoint } from '../../../test/helpers/api/helper'; import { TEST_ID_TOKEN_RESPONSE } from '../../../test/helpers/id_token_response'; diff --git a/packages-exp/auth-exp/src/core/user/user_credential_impl.ts b/packages-exp/auth-exp/src/core/user/user_credential_impl.ts index 9bea29772e8..edac9079246 100644 --- a/packages-exp/auth-exp/src/core/user/user_credential_impl.ts +++ b/packages-exp/auth-exp/src/core/user/user_credential_impl.ts @@ -15,13 +15,12 @@ * limitations under the License. */ -import { OperationType, ProviderId } from '../../model/public_types'; - import { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa'; import { IdTokenResponse } from '../../model/id_token'; import { UserInternal, UserCredentialInternal } from '../../model/user'; import { UserImpl } from './user_impl'; import { AuthInternal } from '../../model/auth'; +import { OperationType, ProviderId } from '../../model/enums'; interface UserCredentialParams { readonly user: UserInternal; @@ -31,7 +30,8 @@ interface UserCredentialParams { } export class UserCredentialImpl - implements UserCredentialInternal, UserCredentialParams { + implements UserCredentialInternal, UserCredentialParams +{ readonly user: UserInternal; readonly providerId: ProviderId | string | null; readonly _tokenResponse: PhoneOrOauthTokenResponse | undefined; diff --git a/packages-exp/auth-exp/src/core/user/user_impl.ts b/packages-exp/auth-exp/src/core/user/user_impl.ts index 7a9aa0a8383..da62f2590d3 100644 --- a/packages-exp/auth-exp/src/core/user/user_impl.ts +++ b/packages-exp/auth-exp/src/core/user/user_impl.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { IdTokenResult, ProviderId } from '../../model/public_types'; +import { IdTokenResult } from '../../model/public_types'; import { NextFn } from '@firebase/util'; import { @@ -39,6 +39,7 @@ import { ProactiveRefresh } from './proactive_refresh'; import { _reloadWithoutSaving, reload } from './reload'; import { StsTokenManager } from './token_manager'; import { UserMetadata } from './user_metadata'; +import { ProviderId } from '../../model/enums'; function assertStringOrUndefined( assertion: unknown, diff --git a/packages-exp/auth-exp/src/mfa/mfa_error.ts b/packages-exp/auth-exp/src/mfa/mfa_error.ts index d0af68a3bf1..97a1de0218c 100644 --- a/packages-exp/auth-exp/src/mfa/mfa_error.ts +++ b/packages-exp/auth-exp/src/mfa/mfa_error.ts @@ -15,10 +15,7 @@ * limitations under the License. */ -import { - MultiFactorError as MultiFactorErrorPublic, - OperationType -} from '../model/public_types'; +import { MultiFactorError as MultiFactorErrorPublic } from '../model/public_types'; import { FirebaseError } from '@firebase/util'; import { AuthInternal } from '../model/auth'; import { IdTokenResponse } from '../model/id_token'; @@ -26,10 +23,12 @@ import { AuthErrorCode } from '../core/errors'; import { UserInternal } from '../model/user'; import { AuthCredential } from '../core/credentials'; import { IdTokenMfaResponse } from '../api/authentication/mfa'; +import { OperationType } from '../model/enums'; export class MultiFactorError extends FirebaseError - implements MultiFactorErrorPublic { + implements MultiFactorErrorPublic +{ readonly name = 'FirebaseError'; readonly code: string; readonly appName: string; diff --git a/packages-exp/auth-exp/src/mfa/mfa_info.test.ts b/packages-exp/auth-exp/src/mfa/mfa_info.test.ts index 59d292f1e18..ba97f85cb05 100644 --- a/packages-exp/auth-exp/src/mfa/mfa_info.test.ts +++ b/packages-exp/auth-exp/src/mfa/mfa_info.test.ts @@ -18,7 +18,7 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; -import { ProviderId } from '../model/public_types'; +import { ProviderId } from '../model/enums'; import { FirebaseError } from '@firebase/util'; import { testAuth, TestAuth } from '../../test/helpers/mock_auth'; diff --git a/packages-exp/auth-exp/src/mfa/mfa_resolver.test.ts b/packages-exp/auth-exp/src/mfa/mfa_resolver.test.ts index 73eadafc084..086e4f54b11 100644 --- a/packages-exp/auth-exp/src/mfa/mfa_resolver.test.ts +++ b/packages-exp/auth-exp/src/mfa/mfa_resolver.test.ts @@ -19,7 +19,8 @@ import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; -import { FactorId, OperationType, ProviderId } from '../model/public_types'; +import { FactorId } from '../model/public_types'; +import { OperationType, ProviderId } from '../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/mfa/mfa_resolver.ts b/packages-exp/auth-exp/src/mfa/mfa_resolver.ts index 52bed8c5e6f..89dd5d0e05a 100644 --- a/packages-exp/auth-exp/src/mfa/mfa_resolver.ts +++ b/packages-exp/auth-exp/src/mfa/mfa_resolver.ts @@ -18,7 +18,6 @@ import { Auth, MultiFactorResolver, - OperationType, UserCredential, MultiFactorError } from '../model/public_types'; @@ -33,6 +32,7 @@ import { MultiFactorError as MultiFactorErrorInternal } from './mfa_error'; import { MultiFactorInfoImpl } from './mfa_info'; import { MultiFactorSessionImpl } from './mfa_session'; import { getModularInstance } from '@firebase/util'; +import { OperationType } from '../model/enums'; export class MultiFactorResolverImpl implements MultiFactorResolver { private constructor( @@ -83,11 +83,12 @@ export class MultiFactorResolverImpl implements MultiFactorResolver { // TODO: we should collapse this switch statement into UserCredentialImpl._forOperation and have it support the SIGN_IN case switch (error.operationType) { case OperationType.SIGN_IN: - const userCredential = await UserCredentialImpl._fromIdTokenResponse( - auth, - error.operationType, - idTokenResponse - ); + const userCredential = + await UserCredentialImpl._fromIdTokenResponse( + auth, + error.operationType, + idTokenResponse + ); await auth._updateCurrentUser(userCredential.user); return userCredential; case OperationType.REAUTHENTICATE: diff --git a/packages-exp/auth-exp/src/model/enums.ts b/packages-exp/auth-exp/src/model/enums.ts new file mode 100644 index 00000000000..c57c6c19035 --- /dev/null +++ b/packages-exp/auth-exp/src/model/enums.ts @@ -0,0 +1,77 @@ +/** + * @license + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Enumeration of supported providers. + * + */ +export const enum ProviderId { + /** @internal */ + ANONYMOUS = 'anonymous', + /** @internal */ + CUSTOM = 'custom', + /** Facebook provider ID */ + FACEBOOK = 'facebook.com', + /** @internal */ + FIREBASE = 'firebase', + /** GitHub provider ID */ + GITHUB = 'github.com', + /** Google provider ID */ + GOOGLE = 'google.com', + /** Password provider */ + PASSWORD = 'password', + /** Phone provider */ + PHONE = 'phone', + /** Twitter provider ID */ + TWITTER = 'twitter.com' +} + +/** + * Enumeration of supported sign-in methods. + * + */ +export const enum SignInMethod { + /** @internal */ + ANONYMOUS = 'anonymous', + /** Email link sign in method */ + EMAIL_LINK = 'emailLink', + /** Email/password sign in method */ + EMAIL_PASSWORD = 'password', + /** Facebook sign in method */ + FACEBOOK = 'facebook.com', + /** GitHub sign in method */ + GITHUB = 'github.com', + /** Google sign in method */ + GOOGLE = 'google.com', + /** Phone sign in method */ + PHONE = 'phone', + /** Twitter sign in method */ + TWITTER = 'twitter.com' +} + +/** + * Enumeration of supported operation types. + * + */ +export const enum OperationType { + /** Operation involving linking an additional provider to an already signed-in user. */ + LINK = 'link', + /** Operation involving using a provider to reauthenticate an already signed-in user. */ + REAUTHENTICATE = 'reauthenticate', + /** Operation involving signing in a user. */ + SIGN_IN = 'signIn' +} diff --git a/packages-exp/auth-exp/src/model/public_types.ts b/packages-exp/auth-exp/src/model/public_types.ts index afaf89de2a2..4c31ae75317 100644 --- a/packages-exp/auth-exp/src/model/public_types.ts +++ b/packages-exp/auth-exp/src/model/public_types.ts @@ -31,69 +31,6 @@ import { } from './enum_maps'; export { CompleteFn, ErrorFn, NextFn, Unsubscribe }; -/** - * Enumeration of supported providers. - * - * @internal - */ -export const enum ProviderId { - /** @internal */ - ANONYMOUS = 'anonymous', - /** @internal */ - CUSTOM = 'custom', - /** Facebook provider ID */ - FACEBOOK = 'facebook.com', - /** @internal */ - FIREBASE = 'firebase', - /** GitHub provider ID */ - GITHUB = 'github.com', - /** Google provider ID */ - GOOGLE = 'google.com', - /** Password provider */ - PASSWORD = 'password', - /** Phone provider */ - PHONE = 'phone', - /** Twitter provider ID */ - TWITTER = 'twitter.com' -} - -/** - * Enumeration of supported sign-in methods. - * - * @internal - */ -export const enum SignInMethod { - /** @internal */ - ANONYMOUS = 'anonymous', - /** Email link sign in method */ - EMAIL_LINK = 'emailLink', - /** Email/password sign in method */ - EMAIL_PASSWORD = 'password', - /** Facebook sign in method */ - FACEBOOK = 'facebook.com', - /** GitHub sign in method */ - GITHUB = 'github.com', - /** Google sign in method */ - GOOGLE = 'google.com', - /** Phone sign in method */ - PHONE = 'phone', - /** Twitter sign in method */ - TWITTER = 'twitter.com' -} - -/** - * Enumeration of supported operation types. - * - * @internal - */ -export const enum OperationType { - /** Operation involving linking an additional provider to an already signed-in user. */ - LINK = 'link', - /** Operation involving using a provider to reauthenticate an already signed-in user. */ - REAUTHENTICATE = 'reauthenticate', - /** Operation involving signing in a user. */ - SIGN_IN = 'signIn' -} /** * Interface representing the Auth config. @@ -127,6 +64,22 @@ export interface Config { authDomain?: string; } +/** + * Interface representing reCAPTCHA parameters. + * + * See the [reCAPTCHA docs](https://developers.google.com/recaptcha/docs/display#render_param) + * for the list of accepted parameters. All parameters are accepted except for `sitekey`: Firebase Auth + * provisions a reCAPTCHA for each project and will configure the site key upon rendering. + * + * For an invisible reCAPTCHA, set the `size` key to `invisible`. + * + * @public + */ +export interface RecaptchaParameters { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [key: string]: any; +} + /** * Interface representing a parsed ID token. * diff --git a/packages-exp/auth-exp/src/model/user.ts b/packages-exp/auth-exp/src/model/user.ts index 9f0802a2423..2974fa1777b 100644 --- a/packages-exp/auth-exp/src/model/user.ts +++ b/packages-exp/auth-exp/src/model/user.ts @@ -15,13 +15,7 @@ * limitations under the License. */ -import { - IdTokenResult, - ProviderId, - User, - UserCredential, - UserInfo -} from './public_types'; +import { IdTokenResult, User, UserCredential, UserInfo } from './public_types'; import { NextFn } from '@firebase/util'; import { APIUserInfo } from '../api/account_management/account'; import { FinalizeMfaResponse } from '../api/authentication/mfa'; @@ -30,6 +24,7 @@ import { StsTokenManager } from '../core/user/token_manager'; import { UserMetadata } from '../core/user/user_metadata'; import { AuthInternal } from './auth'; import { IdTokenResponse, TaggedWithTokenResponse } from './id_token'; +import { ProviderId } from './enums'; export type MutableUserInfo = { -readonly [K in keyof UserInfo]: UserInfo[K]; diff --git a/packages-exp/auth-exp/src/platform_browser/auth.test.ts b/packages-exp/auth-exp/src/platform_browser/auth.test.ts index 072e60b6f49..7331d4e7358 100644 --- a/packages-exp/auth-exp/src/platform_browser/auth.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/auth.test.ts @@ -23,10 +23,10 @@ import * as sinonChai from 'sinon-chai'; import { FirebaseApp } from '@firebase/app-exp'; import { Auth, - OperationType, Persistence, PopupRedirectResolver } from '../model/public_types'; +import { OperationType } from '../model/enums'; import { testAuth, testUser } from '../../test/helpers/mock_auth'; import { AuthImpl, DefaultConfig } from '../core/auth/auth_impl'; diff --git a/packages-exp/auth-exp/src/platform_browser/mfa/assertions/phone.test.ts b/packages-exp/auth-exp/src/platform_browser/mfa/assertions/phone.test.ts index 285934e12f1..f1f0bd7223c 100644 --- a/packages-exp/auth-exp/src/platform_browser/mfa/assertions/phone.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/mfa/assertions/phone.test.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ProviderId } from '../../../model/public_types'; +import { ProviderId } from '../../../model/enums'; import { expect, use } from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; diff --git a/packages-exp/auth-exp/src/platform_browser/popup_redirect.test.ts b/packages-exp/auth-exp/src/platform_browser/popup_redirect.test.ts index 07724657e1e..4f394572354 100644 --- a/packages-exp/auth-exp/src/platform_browser/popup_redirect.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/popup_redirect.test.ts @@ -21,7 +21,9 @@ import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; import { SDK_VERSION } from '@firebase/app-exp'; -import { Config, ProviderId } from '../model/public_types'; +import { Config } from '../model/public_types'; +import { ProviderId } from '../model/enums'; + import { FirebaseError } from '@firebase/util'; import { diff --git a/packages-exp/auth-exp/src/platform_browser/providers/phone.ts b/packages-exp/auth-exp/src/platform_browser/providers/phone.ts index 849b891062a..41696066837 100644 --- a/packages-exp/auth-exp/src/platform_browser/providers/phone.ts +++ b/packages-exp/auth-exp/src/platform_browser/providers/phone.ts @@ -18,8 +18,6 @@ import { Auth, PhoneInfoOptions, - ProviderId, - SignInMethod, ApplicationVerifier, UserCredential } from '../../model/public_types'; @@ -34,6 +32,7 @@ import { _castAuth } from '../../core/auth/auth_impl'; import { AuthCredential } from '../../core'; import { FirebaseError, getModularInstance } from '@firebase/util'; import { TaggedWithTokenResponse } from '../../model/id_token'; +import { ProviderId, SignInMethod } from '../../model/enums'; /** * Provider for generating an {@link PhoneAuthCredential}. diff --git a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha.ts b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha.ts index aad5cfc5420..065e6c3308b 100644 --- a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha.ts +++ b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha.ts @@ -15,13 +15,10 @@ * limitations under the License. */ -export interface Parameters { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [key: string]: any; -} +import { RecaptchaParameters } from '../../model/public_types'; export interface Recaptcha { - render: (container: HTMLElement, parameters: Parameters) => number; + render: (container: HTMLElement, parameters: RecaptchaParameters) => number; getResponse: (id: number) => string; execute: (id: number) => unknown; reset: (id: number) => unknown; diff --git a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_mock.ts b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_mock.ts index 8839d511014..c21c7a3327d 100644 --- a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_mock.ts +++ b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_mock.ts @@ -18,7 +18,8 @@ import { AuthErrorCode } from '../../core/errors'; import { _assert } from '../../core/util/assert'; import { AuthInternal } from '../../model/auth'; -import { Parameters, Recaptcha } from './recaptcha'; +import { RecaptchaParameters } from '../../model/public_types'; +import { Recaptcha } from './recaptcha'; export const _SOLVE_TIME_MS = 500; export const _EXPIRATION_TIME_MS = 60_000; @@ -36,7 +37,10 @@ export class MockReCaptcha implements Recaptcha { constructor(private readonly auth: AuthInternal) {} - render(container: string | HTMLElement, parameters?: Parameters): number { + render( + container: string | HTMLElement, + parameters?: RecaptchaParameters + ): number { const id = this.counter; this._widgets.set( id, @@ -77,7 +81,7 @@ export class MockWidget { constructor( containerOrId: string | HTMLElement, appName: string, - private readonly params: Parameters + private readonly params: RecaptchaParameters ) { const container = typeof containerOrId === 'string' diff --git a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.test.ts b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.test.ts index 170adb0f278..59e299b627d 100644 --- a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.test.ts @@ -27,7 +27,9 @@ import { testAuth, TestAuth } from '../../../test/helpers/mock_auth'; import * as fetch from '../../../test/helpers/mock_fetch'; import { Endpoint } from '../../api'; import { _window } from '../auth_window'; -import { Parameters, Recaptcha } from './recaptcha'; +import { Recaptcha } from './recaptcha'; +import { RecaptchaParameters } from '../../model/public_types'; + import { ReCaptchaLoader } from './recaptcha_loader'; import { MockReCaptcha } from './recaptcha_mock'; import { RecaptchaVerifier } from './recaptcha_verifier'; @@ -39,7 +41,7 @@ describe('platform_browser/recaptcha/recaptcha_verifier', () => { let auth: TestAuth; let container: HTMLElement; let verifier: RecaptchaVerifier; - let parameters: Parameters; + let parameters: RecaptchaParameters; let recaptchaLoader: ReCaptchaLoader; beforeEach(async () => { @@ -65,7 +67,7 @@ describe('platform_browser/recaptcha/recaptcha_verifier', () => { context('#render', () => { it('caches the promise if not completed and returns if called multiple times', () => { // This will force the loader to never return so the render promise never completes - sinon.stub(recaptchaLoader, 'load').returns(new Promise(() => {})); + sinon.stub(recaptchaLoader, 'load').returns(new Promise(() => { })); const renderPromise = verifier.render(); expect(verifier.render()).to.eq(renderPromise); }); diff --git a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.ts b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.ts index c68c0b3fd78..ea64cf6783e 100644 --- a/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.ts +++ b/packages-exp/auth-exp/src/platform_browser/recaptcha/recaptcha_verifier.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Auth } from '../../model/public_types'; +import { Auth, RecaptchaParameters } from '../../model/public_types'; import { getRecaptchaParams } from '../../api/authentication/recaptcha'; import { _castAuth } from '../../core/auth/auth_impl'; import { AuthErrorCode } from '../../core/errors'; @@ -25,7 +25,7 @@ import { ApplicationVerifierInternal } from '../../model/application_verifier'; import { AuthInternal } from '../../model/auth'; import { _window } from '../auth_window'; import { _isWorker } from '../util/worker'; -import { Parameters, Recaptcha } from './recaptcha'; +import { Recaptcha } from './recaptcha'; import { MockReCaptchaLoaderImpl, ReCaptchaLoader, @@ -34,7 +34,7 @@ import { export const RECAPTCHA_VERIFIER_TYPE = 'recaptcha'; -const DEFAULT_PARAMS: Parameters = { +const DEFAULT_PARAMS: RecaptchaParameters = { theme: 'light', type: 'image' }; @@ -92,7 +92,7 @@ export class RecaptchaVerifier implements ApplicationVerifierInternal { */ constructor( containerOrId: HTMLElement | string, - private readonly parameters: Parameters = { + private readonly parameters: RecaptchaParameters = { ...DEFAULT_PARAMS }, authExtern: Auth diff --git a/packages-exp/auth-exp/src/platform_browser/strategies/phone.test.ts b/packages-exp/auth-exp/src/platform_browser/strategies/phone.test.ts index da7ae45be29..a8a2ce8eac9 100644 --- a/packages-exp/auth-exp/src/platform_browser/strategies/phone.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/strategies/phone.test.ts @@ -20,7 +20,7 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { OperationType, ProviderId } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import { FirebaseError } from '@firebase/util'; import { mockEndpoint } from '../../../test/helpers/api/helper'; diff --git a/packages-exp/auth-exp/src/platform_browser/strategies/phone.ts b/packages-exp/auth-exp/src/platform_browser/strategies/phone.ts index 45affbe8039..6fb334d85df 100644 --- a/packages-exp/auth-exp/src/platform_browser/strategies/phone.ts +++ b/packages-exp/auth-exp/src/platform_browser/strategies/phone.ts @@ -20,7 +20,6 @@ import { Auth, ConfirmationResult, PhoneInfoOptions, - ProviderId, User, UserCredential } from '../../model/public_types'; @@ -47,6 +46,7 @@ import { UserInternal } from '../../model/user'; import { RECAPTCHA_VERIFIER_TYPE } from '../recaptcha/recaptcha_verifier'; import { _castAuth } from '../../core/auth/auth_impl'; import { getModularInstance } from '@firebase/util'; +import { ProviderId } from '../../model/enums'; interface OnConfirmationCallback { (credential: PhoneAuthCredential): Promise; diff --git a/packages-exp/auth-exp/src/platform_browser/strategies/popup.test.ts b/packages-exp/auth-exp/src/platform_browser/strategies/popup.test.ts index 1954d0844f7..23e67bf2dfa 100644 --- a/packages-exp/auth-exp/src/platform_browser/strategies/popup.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/strategies/popup.test.ts @@ -20,11 +20,9 @@ import * as chaiAsPromised from 'chai-as-promised'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import { - OperationType, - PopupRedirectResolver, - ProviderId -} from '../../model/public_types'; +import { PopupRedirectResolver } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; + import { FirebaseError } from '@firebase/util'; import { delay } from '../../../test/helpers/delay'; diff --git a/packages-exp/auth-exp/src/platform_browser/strategies/redirect.test.ts b/packages-exp/auth-exp/src/platform_browser/strategies/redirect.test.ts index a2892c89e4a..c722a231ceb 100644 --- a/packages-exp/auth-exp/src/platform_browser/strategies/redirect.test.ts +++ b/packages-exp/auth-exp/src/platform_browser/strategies/redirect.test.ts @@ -22,10 +22,9 @@ import * as sinonChai from 'sinon-chai'; import { AuthError, - OperationType, - PopupRedirectResolver, - ProviderId + PopupRedirectResolver } from '../../model/public_types'; +import { OperationType, ProviderId } from '../../model/enums'; import { delay } from '../../../test/helpers/delay'; import { BASE_AUTH_EVENT } from '../../../test/helpers/iframe_event'; diff --git a/packages-exp/auth-exp/test/helpers/mock_auth_credential.ts b/packages-exp/auth-exp/test/helpers/mock_auth_credential.ts index f165c628b8b..10a5ea84201 100644 --- a/packages-exp/auth-exp/test/helpers/mock_auth_credential.ts +++ b/packages-exp/auth-exp/test/helpers/mock_auth_credential.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { ProviderId, SignInMethod } from '../../src/model/public_types'; +import { ProviderId, SignInMethod } from '../../src/model/enums'; import { PhoneOrOauthTokenResponse } from '../../src/api/authentication/mfa'; import { AuthCredential } from '../../src/core/credentials';