diff --git a/CHANGELOG.md b/CHANGELOG.md index aacc5e850..d7daa11ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [unreleased] +- Add WebAuthn credential management methods: `listCredentials`, `removeCredential` +- Added `registerCredentialWithUser` method that creates and registers a credential with a user + +### Breaking changes + +- The `registerCredential` method has been renamed to `createCredential`. This was done to better represent the creation of a credential and not the actual registration of it with the backend API. The new `registerCredential` implementation now calls the backend API. + ## [0.49.1] - 2025-03-27 - Fixed a type issue making the WebauthnPreBuitlUI not produce a type error when added to the prebuiltUIList diff --git a/lib/build/components/componentOverride/genericComponentOverrideContext.d.ts b/lib/build/components/componentOverride/genericComponentOverrideContext.d.ts index 4c2800821..499dad8eb 100644 --- a/lib/build/components/componentOverride/genericComponentOverrideContext.d.ts +++ b/lib/build/components/componentOverride/genericComponentOverrideContext.d.ts @@ -1,8 +1,515 @@ import React from "react"; +import type { AllRecipeComponentOverrides } from "../../types"; export declare const createGenericComponentsOverrideContext: >( - v?: T + v: T | undefined, + key: keyof AllRecipeComponentOverrides ) => readonly [ - () => T, + () => + | T + | ({ + EmailPasswordSignInForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../../recipe/emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../../recipe/emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../../recipe/emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../../recipe/emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../../recipe/emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../../recipe/emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../../recipe/emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../../recipe/emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & T) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../../recipe/emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../../recipe/emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & T) + | ({ + MFAFactorChooserFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + availableFactors: import("../../recipe/multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: React.FC<{}>; + }> + > + | undefined; + } & T) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("./componentOverride").ComponentOverride< + (props: { + config: import("../../recipe/multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & T) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & T) + | ({ + PasswordlessEmailForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("./componentOverride").ComponentOverride< + React.FC< + import("../../recipe/passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("./componentOverride").ComponentOverride< + ( + props: import("../../recipe/passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("./componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../../recipe/passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("./componentOverride").ComponentOverride> + | undefined; + } & T) + | ({ + SessionAccessDenied_Override?: + | import("./componentOverride").ComponentOverride< + React.FC + > + | undefined; + } & T) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick< + import("../../recipe/thirdparty/providers").default, + "id" | "getButton" + >[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../../recipe/thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("./componentOverride").ComponentOverride< + (props: { + config: import("../../recipe/thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & T) + | ({ + TOTPBlockedScreen_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("./componentOverride").ComponentOverride> + | undefined; + TOTPCodeForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & T) + | ({ + AuthPageHeader_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + } & T) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("./componentOverride").ComponentOverride> + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/webauthn/types").RecoverFormProps & { + setError: React.Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType< + import("../../recipe/webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: ( + params: import("../../recipe/webauthn/types").ContinueOnSuccessParams + ) => void; + setActiveScreen: React.Dispatch< + React.SetStateAction< + import("../../recipe/webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("./componentOverride").ComponentOverride< + React.ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & T), React.FC< React.PropsWithChildren<{ components: T; diff --git a/lib/build/emailpassword-shared2.js b/lib/build/emailpassword-shared2.js index bd3b554b5..af4b54bc3 100644 --- a/lib/build/emailpassword-shared2.js +++ b/lib/build/emailpassword-shared2.js @@ -1,8 +1,12 @@ "use strict"; var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); +var recipe = require("./emailpassword-shared3.js"); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext( + undefined, + recipe.EmailPassword.RECIPE_ID + ), useContext = _a[0], Provider = _a[1]; diff --git a/lib/build/emailpassword-shared3.js b/lib/build/emailpassword-shared3.js index 4cce69e81..57c3c79e9 100644 --- a/lib/build/emailpassword-shared3.js +++ b/lib/build/emailpassword-shared3.js @@ -538,21 +538,28 @@ var EmailPassword = /** @class */ (function (_super) { ); return EmailPassword.instance; }, - webJS: EmailPasswordWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = EmailPasswordWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; EmailPassword.getInstanceOrThrow = function () { diff --git a/lib/build/emailpassword-shared6.js b/lib/build/emailpassword-shared6.js index b8dc26b72..22b2c0b5f 100644 --- a/lib/build/emailpassword-shared6.js +++ b/lib/build/emailpassword-shared6.js @@ -672,7 +672,8 @@ var FormBase = function (props) { _b, field, errorFields_1, - getErrorMessage_1; + getErrorMessage_1, + e_1; return genericComponentOverrideContext.__generator(this, function (_c) { switch (_c.label) { case 0: @@ -814,7 +815,8 @@ var FormBase = function (props) { } return [3 /*break*/, 5]; case 3: - _c.sent(); + e_1 = _c.sent(); + console.error(e_1); props.onError("SOMETHING_WENT_WRONG_ERROR"); return [3 /*break*/, 5]; case 4: diff --git a/lib/build/emailpassword.js b/lib/build/emailpassword.js index bdb7516d4..e4a83b5e8 100644 --- a/lib/build/emailpassword.js +++ b/lib/build/emailpassword.js @@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); var componentOverrideContext = require("./emailpassword-shared2.js"); var recipe = require("./emailpassword-shared3.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/emailpassword"); require("./authRecipe-shared2.js"); require("./recipeModule-shared.js"); diff --git a/lib/build/emailpasswordprebuiltui.js b/lib/build/emailpasswordprebuiltui.js index 74b0615ef..38364bd7e 100644 --- a/lib/build/emailpasswordprebuiltui.js +++ b/lib/build/emailpasswordprebuiltui.js @@ -5,7 +5,7 @@ var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); require("./multifactorauth.js"); -var componentOverrideContext = require("./emailpassword-shared2.js"); +var componentOverrideContext$1 = require("./emailpassword-shared2.js"); var React = require("react"); var translations = require("./emailverification-shared2.js"); var translationContext = require("./translationContext.js"); @@ -15,7 +15,7 @@ var STGeneralError = require("supertokens-web-js/utils/error"); var button = require("./emailpassword-shared.js"); var authCompWrapper = require("./authCompWrapper.js"); var emailverification = require("./emailverification.js"); -var recipe$1 = require("./emailverification-shared.js"); +var componentOverrideContext = require("./emailverification-shared.js"); var session = require("./session.js"); var types = require("./multifactorauth-shared.js"); var recipe = require("./emailpassword-shared3.js"); @@ -272,6 +272,7 @@ var EmailPasswordResetPasswordEmail = function (props) { }, showLabels: true, validateOnBlur: true, + footer: props.footer, }), ], } @@ -460,6 +461,7 @@ var EmailPasswordSubmitNewPassword = function (props) { ); }, showLabels: true, + footer: props.footer, }), ], } @@ -518,7 +520,7 @@ function ResetPasswordUsingTokenThemeWrapper(props) { var defaultTranslationsEmailPassword = { en: genericComponentOverrideContext.__assign( genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), translations.defaultTranslationsEmailVerification.en ), { @@ -771,14 +773,14 @@ function SignInTheme(props) { ); } -function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, userContext, navigate) { +function useChildProps$1(recipe$1, onAuthSuccess, error, onError, clearError, userContext, navigate) { var _this = this; var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React.useMemo( function () { - return getModifiedRecipeImplementation$1(recipe$2.webJSRecipe); + return getModifiedRecipeImplementation$1(recipe$1.webJSRecipe); }, - [recipe$2] + [recipe$1] ); var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); var t = translationContext.useTranslation(); @@ -822,12 +824,12 @@ function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, us }); }); }, - [recipe$2, userContext, navigate] + [recipe$1, userContext, navigate] ); return React.useMemo( function () { var onForgotPasswordClick = function () { - return recipe$2.redirect( + return recipe$1.redirect( { action: "RESET_PASSWORD", tenantIdFromQueryParams: genericComponentOverrideContext.getTenantIdFromQueryParams(), @@ -837,7 +839,7 @@ function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, us userContext ); }; - var signInAndUpFeature = recipe$2.config.signInAndUpFeature; + var signInAndUpFeature = recipe$1.config.signInAndUpFeature; var signInFeature = signInAndUpFeature.signInForm; var formFields = signInFeature.formFields.map(function (f) { return f.id !== "password" @@ -872,7 +874,7 @@ function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, us }); return { recipeImplementation: recipeImplementation, - config: recipe$2.config, + config: recipe$1.config, styleFromInit: signInFeature.style, formFields: formFields, error: error, @@ -909,7 +911,7 @@ function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, us _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe$1.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -941,7 +943,7 @@ function useChildProps$1(recipe$2, onAuthSuccess, error, onError, clearError, us userContext: userContext, }; }, - [recipe$2, error, userContext] + [recipe$1, error, userContext] ); } var SignInFeature = function (props) { @@ -1198,7 +1200,7 @@ function useChildProps(recipe, onAuthSuccess, error, onError, clearError, userCo _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe$1.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -1399,7 +1401,7 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = componentOverrideContext.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } var features = {}; if (_this.recipeInstance.config.resetPasswordUsingTokenFeature.disableDefaultUI !== true) { @@ -1420,7 +1422,7 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { }; _this.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = componentOverrideContext.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } if (componentName === "resetpassword") { return jsxRuntime.jsx( @@ -1454,13 +1456,13 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { }; EmailPasswordPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = componentOverrideContext.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } return EmailPasswordPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; EmailPasswordPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = componentOverrideContext.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } return EmailPasswordPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -1481,7 +1483,7 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign( { recipe: _this.recipeInstance, - useComponentOverrides: componentOverrideContext.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, }, props ), @@ -1499,7 +1501,7 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign( { recipe: _this.recipeInstance, - useComponentOverrides: componentOverrideContext.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, }, props ), @@ -1517,6 +1519,7 @@ var EmailPasswordPreBuiltUI = /** @class */ (function (_super) { EmailPasswordPreBuiltUI.instance = undefined; return; }; + EmailPasswordPreBuiltUI.languageTranslations = defaultTranslationsEmailPassword; EmailPasswordPreBuiltUI.ResetPasswordUsingToken = function (prop) { return EmailPasswordPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent("resetpassword", prop); }; diff --git a/lib/build/emailverification-shared.js b/lib/build/emailverification-shared.js index 1c7d9189f..8b71aea4f 100644 --- a/lib/build/emailverification-shared.js +++ b/lib/build/emailverification-shared.js @@ -12,10 +12,6 @@ function _interopDefault(e) { var EmailVerificationWebJS__default = /*#__PURE__*/ _interopDefault(EmailVerificationWebJS); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), - useContext = _a[0], - Provider = _a[1]; - /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * * This software is licensed under the Apache License, Version 2.0 (the @@ -242,21 +238,28 @@ var EmailVerification = /** @class */ (function (_super) { ); return EmailVerification.instance; }, - webJS: EmailVerificationWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = EmailVerificationWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; EmailVerification.getInstanceOrThrow = function () { @@ -301,6 +304,10 @@ var EmailVerification = /** @class */ (function (_super) { return EmailVerification; })(index.RecipeModule); +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, EmailVerification.RECIPE_ID), + useContext = _a[0], + Provider = _a[1]; + exports.DEFAULT_VERIFY_EMAIL_PATH = DEFAULT_VERIFY_EMAIL_PATH; exports.EmailVerification = EmailVerification; exports.Provider = Provider; diff --git a/lib/build/emailverification-shared2.js b/lib/build/emailverification-shared2.js index 5950573f8..a1d516121 100644 --- a/lib/build/emailverification-shared2.js +++ b/lib/build/emailverification-shared2.js @@ -3,7 +3,6 @@ var jsxRuntime = require("react/jsx-runtime"); var React = require("react"); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var uiEntry = require("./index2.js"); var styles = '/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.\n *\n * This software is licensed under the Apache License, Version 2.0 (the\n * "License") as published by the Apache Software Foundation.\n *\n * You may not use this file except in compliance with the License. You may\n * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\n[data-supertokens~="container"] {\n --palette-background: 255, 255, 255;\n --palette-inputBackground: 250, 250, 250;\n --palette-inputBorder: 224, 224, 224;\n --palette-primary: 28, 34, 42;\n --palette-primaryBorder: 45, 54, 68;\n --palette-success: 65, 167, 0;\n --palette-successBackground: 217, 255, 191;\n --palette-error: 255, 23, 23;\n --palette-errorBackground: 255, 241, 235;\n --palette-textTitle: 0, 0, 0;\n --palette-textLabel: 0, 0, 0;\n --palette-textInput: 0, 0, 0;\n --palette-textPrimary: 128, 128, 128;\n --palette-textLink: 0, 122, 255;\n --palette-buttonText: 255, 255, 255;\n --palette-textGray: 54, 54, 54;\n --palette-superTokensBrandingBackground: 242, 245, 246;\n --palette-superTokensBrandingText: 173, 189, 196;\n --palette-buttonGreyedOut: 221, 221, 221;\n --palette-caution: 124, 96, 62;\n --palette-errorDark: 207, 54, 68;\n\n --font-size-0: 12px;\n --font-size-1: 14px;\n --font-size-2: 16px;\n --font-size-3: 19px;\n --font-size-4: 24px;\n --font-size-5: 28px;\n}\n\n/*\n * Default styles.\n */\n\n@keyframes slideTop {\n 0% {\n transform: translateY(-5px);\n }\n 100% {\n transform: translateY(0px);\n }\n}\n\n@keyframes swing-in-top-fwd {\n 0% {\n transform: rotateX(-100deg);\n transform-origin: top;\n opacity: 0;\n }\n 100% {\n transform: rotateX(0deg);\n transform-origin: top;\n opacity: 1;\n }\n}\n\n[data-supertokens~="container"] {\n font-family: "Arial", sans-serif;\n margin: 12px auto;\n margin-top: 26px;\n margin-bottom: 26px;\n width: 420px;\n text-align: center;\n border-radius: 8px;\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.16);\n background-color: rgb(var(--palette-background));\n}\n\n@media (max-width: 440px) {\n [data-supertokens~="container"] {\n width: 95vw;\n }\n}\n\n[data-supertokens~="row"] {\n margin: 0 auto;\n width: 76%;\n padding-top: 30px;\n padding-bottom: 10px;\n}\n\n[data-supertokens~="superTokensBranding"] {\n display: block;\n margin: 10px auto 0;\n background: rgb(var(--palette-superTokensBrandingBackground));\n color: rgb(var(--palette-superTokensBrandingText));\n text-decoration: none;\n width: -webkit-fit-content;\n width: fit-content;\n border-radius: 6px 6px 0 0;\n padding: 4px 9px;\n font-weight: 400;\n font-size: var(--font-size-0);\n letter-spacing: 0.4px;\n}\n\n[data-supertokens~="generalError"] {\n background: rgb(var(--palette-errorBackground));\n padding-top: 10px;\n padding-bottom: 10px;\n margin-bottom: 10px;\n margin-top: 24px;\n padding-left: 18px;\n padding-right: 18px;\n letter-spacing: 0.2px;\n font-size: var(--font-size-1);\n border-radius: 8px;\n color: rgb(var(--palette-error));\n animation: swing-in-top-fwd 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;\n word-wrap: break-word;\n}\n\n[data-supertokens~="headerTitle"] {\n font-size: var(--font-size-4);\n line-height: 27.6px;\n letter-spacing: 0.58px;\n font-weight: 700;\n margin-bottom: 20px;\n color: rgb(var(--palette-textTitle));\n}\n\n[data-supertokens~="headerSubtitle"] {\n font-weight: 400;\n color: rgb(var(--palette-textGray));\n margin-bottom: 21px;\n}\n\n[data-supertokens~="headerSubtitle"][data-supertokens~="secondaryText"] {\n color: rgb(var(--palette-textGray));\n font-weight: 400;\n}\n\n[data-supertokens~="privacyPolicyAndTermsAndConditions"] {\n max-width: 300px;\n margin-top: 10px;\n}\n\n[data-supertokens~="privacyPolicyAndTermsAndConditions"] a {\n line-height: 21px;\n}\n\n/* TODO: split the link style into separate things*/\n\n/* We add this before primary and secondary text, because if they are applied to the same element the other ones take priority */\n\n[data-supertokens~="link"] {\n padding-left: 3px;\n padding-right: 3px;\n color: rgb(var(--palette-textLink));\n font-size: var(--font-size-1);\n cursor: pointer;\n letter-spacing: 0.16px;\n line-height: 26px;\n}\n\n[data-supertokens~="primaryText"] {\n font-size: var(--font-size-2);\n font-weight: 400;\n letter-spacing: 0.4px;\n line-height: 21px;\n color: rgb(var(--palette-textLabel));\n}\n\n[data-supertokens~="secondaryText"] {\n font-size: var(--font-size-1);\n font-weight: 400;\n letter-spacing: 0.4px;\n color: rgb(var(--palette-textPrimary));\n}\n\n[data-supertokens~="secondaryText"] strong {\n font-weight: 600;\n}\n\n[data-supertokens~="divider"] {\n margin-top: 1.5em;\n margin-bottom: 1.5em;\n border-bottom: 0.3px solid #dddddd;\n align-items: center;\n padding-bottom: 5px;\n flex: 3 3;\n}\n\n[data-supertokens~="headerTinyTitle"] {\n margin-top: 24px;\n font-size: var(--font-size-5);\n letter-spacing: 1.1px;\n font-weight: 700;\n line-height: 28px;\n}\n\n[data-supertokens~="secondaryLinkWithArrow"] {\n margin-top: 10px;\n margin-bottom: 30px;\n cursor: pointer;\n}\n\n[data-supertokens~="secondaryLinkWithArrow"]:hover {\n position: relative;\n left: 2px;\n word-spacing: 4px;\n}\n\n[data-supertokens~="generalSuccess"] {\n color: rgb(var(--palette-success));\n font-size: var(--font-size-1);\n background: rgb(var(--palette-successBackground));\n animation: swing-in-top-fwd 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;\n padding: 9px 15px 9px 15px;\n border-radius: 6px;\n display: inline-block;\n}\n\n[data-supertokens~="spinner"] {\n width: 80px;\n height: auto;\n padding-top: 20px;\n padding-bottom: 40px;\n margin: 0 auto;\n}\n\n[data-supertokens~="error"] {\n color: rgb(var(--palette-error));\n}\n\n[data-supertokens~="linkButton"] {\n font-family: "Arial", sans-serif;\n background-color: transparent;\n border: 0;\n}\n\n[data-supertokens~="secondaryLinkWithLeftArrow"] {\n color: rgb(var(--palette-textGray));\n font-weight: 400;\n margin-top: 10px;\n margin-bottom: 40px;\n cursor: pointer;\n}\n\n[data-supertokens~="secondaryLinkWithLeftArrow"] svg {\n margin-right: 0.3em;\n}\n\n[data-supertokens~="secondaryLinkWithLeftArrow"]:hover svg {\n position: relative;\n left: -4px;\n}\n\n[data-supertokens~="button"] {\n font-family: "Arial", sans-serif;\n background-color: rgb(var(--palette-primary));\n color: rgb(var(--palette-buttonText));\n width: 100%;\n height: 34px;\n font-weight: 600;\n border-width: 1px;\n border-style: solid;\n border-radius: 6px;\n border-color: rgb(var(--palette-primaryBorder));\n background-position: center;\n transition: all 0.4s;\n background-size: 12000%;\n cursor: pointer;\n}\n\n[data-supertokens~="buttonGreyedOut"] {\n background-color: rgb(var(--palette-buttonGreyedOut));\n border-color: rgb(var(--palette-buttonGreyedOut));\n}\n\n[data-supertokens~="buttonWithIcon"] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n[data-supertokens~="button"]:disabled {\n border: none;\n cursor: no-drop;\n}\n\n[data-supertokens~="button"]:active {\n outline: none;\n transition: all 0s;\n background-size: 100%;\n filter: brightness(0.85);\n}\n\n[data-supertokens~="button"]:focus {\n outline: none;\n}\n\n[data-supertokens~="backButtonCommon"] {\n width: 16px;\n height: 13px;\n}\n\n[data-supertokens~="backButton"] {\n cursor: pointer;\n border: none;\n background-color: transparent;\n padding: 0px;\n}\n\n[data-supertokens~="backButtonPlaceholder"] {\n display: block;\n}\n\n[data-supertokens~="delayedRender"] {\n animation-duration: 0.1s;\n animation-name: animate-fade;\n animation-delay: 0.2s;\n animation-fill-mode: backwards;\n}\n\n@keyframes animate-fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n[data-supertokens~="footerLinkGroupVert"] {\n display: flex;\n flex-direction: column;\n margin-top: 10px;\n gap: 24px;\n}\n\n[data-supertokens~="footerLinkGroupVert"] > div {\n cursor: pointer;\n margin: 0;\n}\n\n[data-supertokens~="footerLinkGroupVert"] [data-supertokens~="secondaryText"] {\n font-weight: 400;\n}\n\n[data-supertokens~="footerLinkGroupVert"] [data-supertokens~="secondaryLinkWithLeftArrow"] {\n font-weight: 400;\n position: relative;\n left: -6px; /* half the width of the left arrow */\n}\n\n@media (max-width: 360px) {\n [data-supertokens~="footerLinkGroupVert"] {\n flex-direction: column;\n }\n [data-supertokens~="footerLinkGroupVert"] > div {\n margin: 0 auto;\n }\n}\n\n[data-supertokens~="footerLinkGroupVert"] div:only-child {\n margin-left: auto;\n margin-right: auto;\n margin-top: 14px;\n}\n\n[data-supertokens~="withBackButton"] {\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n[data-supertokens~="dividerWithOr"] {\n padding-top: 5px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n color: rgb(var(--palette-textPrimary));\n}\n\n[data-supertokens~="dividerText"] {\n flex: 1 1;\n font-weight: 400;\n font-size: var(--font-size-1);\n}\n\n[data-supertokens~="formLabelWithLinkWrapper"] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n[data-supertokens~="formLabelLinkBtn"] {\n width: auto;\n margin-top: 0;\n line-height: 24px;\n font-size: var(--font-size-0);\n}\n\n[data-supertokens~="formLabelLinkBtn"]:hover {\n text-decoration: underline;\n}\n\n[data-supertokens~="formLabelLinkBtn"]:disabled {\n color: rgb(var(--palette-textPrimary));\n cursor: default;\n text-decoration: none;\n}\n\n[data-supertokens~="authComponentList"] {\n padding-bottom: 20px;\n}\n\n[data-supertokens~="authPageTitleOAuthClient"] {\n color: rgb(var(--palette-textGray));\n font-size: var(--font-size-1);\n font-weight: 400;\n margin: 10px 0 25px;\n}\n\n[data-supertokens~="authPageTitleOAuthClientUrl"] {\n text-decoration: none;\n}\n\n[data-supertokens~="authPageTitleOAuthClientLogo"] {\n width: 44px;\n height: 44px;\n margin-bottom: 10px;\n}\n\n[data-supertokens~="authPageTitleOAuthClient"] [data-supertokens~="authPageTitleOAuthClientName"] {\n color: rgb(var(--palette-textTitle));\n}\n\n[data-supertokens~="buttonWithArrow"] {\n border-radius: 6px;\n border: 1px solid #d0d5dd;\n width: 100%;\n color: rgb(var(--palette-textGray));\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n margin: 24px 0;\n min-height: 48px;\n cursor: pointer;\n}\n\n[data-supertokens~="buttonWithArrow"]:hover {\n background-color: rgb(var(--palette-inputBackground));\n}\n\n[data-supertokens~="buttonWithArrow"] [data-supertokens~="secondaryText"] {\n font-weight: 700;\n font-size: var(--font-size-2);\n color: rgb(var(--palette-textGray));\n margin: 0;\n}\n\n[data-supertokens~="buttonWithArrow"]:hover [data-supertokens~="secondaryLinkWithRightArrow"] ~ svg {\n position: relative;\n left: 2px;\n}\n\n[data-supertokens~="buttonWithArrow"]:hover [data-supertokens~="secondaryLinkWithLeftArrow"] svg {\n position: relative;\n left: -2px;\n}\n\n[data-supertokens~="buttonWithArrow"] [data-supertokens~="secondaryLinkWithLeftArrow"] {\n display: flex;\n align-items: center;\n}\n\n[data-supertokens~="inputContainer"] {\n margin-top: 6px;\n}\n\n[data-supertokens~="inputWrapper"] {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n align-items: center;\n background-color: rgb(var(--palette-inputBackground));\n height: 34px;\n border-radius: 6px;\n border: 1px solid rgb(var(--palette-inputBorder));\n}\n\n[data-supertokens~="inputWrapper"][focus-within] {\n background-color: rgba(var(--palette-inputBackground), 0.25);\n border: 1px solid rgb(var(--palette-primary));\n box-shadow: 0 0 0 0.2rem rgba(var(--palette-primary), 0.25);\n outline: none;\n}\n\n[data-supertokens~="inputWrapper"]:focus-within {\n background-color: rgba(var(--palette-inputBackground), 0.25);\n border: 1px solid rgb(var(--palette-primary));\n box-shadow: 0 0 0 0.2rem rgba(var(--palette-primary), 0.25);\n outline: none;\n}\n\n[data-supertokens~="inputError"] {\n border: 1px solid rgb(var(--palette-error));\n box-shadow: 0 0 0 0.2rem rgba(var(--palette-error), 0.25);\n outline: none;\n}\n\n[data-supertokens~="inputError"][focus-within] {\n border: 1px solid rgb(var(--palette-error));\n box-shadow: 0 0 0 0.2rem rgba(var(--palette-error), 0.25);\n outline: none;\n}\n\n[data-supertokens~="inputError"]:focus-within {\n border: 1px solid rgb(var(--palette-error));\n box-shadow: 0 0 0 0.2rem rgba(var(--palette-error), 0.25);\n outline: none;\n}\n\n[data-supertokens~="input"] {\n box-sizing: border-box;\n padding-left: 15px;\n filter: none;\n color: rgb(var(--palette-textInput));\n background-color: transparent;\n border-radius: 6px;\n font-size: var(--font-size-1);\n border: none;\n padding-right: 25px;\n letter-spacing: 1.2px;\n flex: 9 1 75%;\n width: 75%;\n height: 32px;\n}\n\n[data-supertokens~="input"]:focus {\n border: none;\n outline: none;\n}\n\n[data-supertokens~="input"]:-webkit-autofill,\n[data-supertokens~="input"]:-webkit-autofill:hover,\n[data-supertokens~="input"]:-webkit-autofill:focus,\n[data-supertokens~="input"]:-webkit-autofill:active {\n -webkit-text-fill-color: rgb(var(--palette-textInput));\n box-shadow: 0 0 0 30px rgb(var(--palette-inputBackground)) inset;\n}\n\n[data-supertokens~="inputAdornment"] {\n justify-content: center;\n margin-right: 5px;\n}\n\n[data-supertokens~="showPassword"] {\n cursor: pointer;\n}\n\n[data-supertokens~="enterEmailSuccessMessage"] {\n margin-top: 15px;\n margin-bottom: 15px;\n word-break: break-word;\n}\n\n[data-supertokens~="submitNewPasswordSuccessMessage"] {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n\n[data-supertokens~="inputErrorMessage"] {\n padding-top: 5px;\n padding-bottom: 5px;\n color: rgb(var(--palette-error));\n line-height: 24px;\n font-weight: 400;\n font-size: var(--font-size-1);\n text-align: left;\n animation: slideTop 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;\n max-width: 330px;\n}\n\n@media (max-width: 440px) {\n [data-supertokens~="inputErrorMessage"] {\n max-width: 250px;\n }\n}\n\n[data-supertokens~="inputErrorSymbol"] {\n margin-right: 5px;\n top: 1px;\n position: relative;\n left: 2px;\n}\n\n[data-supertokens~="label"] {\n text-align: left;\n font-weight: 700;\n font-size: var(--font-size-0);\n line-height: 24px;\n color: rgb(var(--palette-textLabel));\n}\n\n[data-supertokens~="formRow"] {\n display: flex;\n flex-direction: column;\n padding-top: 0px;\n padding-bottom: 20px;\n}\n\n[data-supertokens~="formRow"][data-supertokens~="hasError"] {\n padding-bottom: 0;\n}\n\n[data-supertokens~="formRow"]:last-child {\n padding-bottom: 0;\n}\n\n[data-supertokens~="sendVerifyEmailIcon"] {\n margin-top: 11px;\n}\n\n[data-supertokens~="primaryText"][data-supertokens~="sendVerifyEmailText"] {\n text-align: center;\n letter-spacing: 0.8px;\n color: rgb(var(--palette-textPrimary));\n}\n\n[data-supertokens~="secondaryLinkWithArrow"] {\n margin-top: 10px;\n margin-bottom: 30px;\n cursor: pointer;\n font-weight: 700;\n}\n\n[data-supertokens~="sendVerifyEmailResend"] {\n margin-top: 13px;\n font-weight: 400;\n}\n\n[data-supertokens~="sendVerifyEmailResend"]:hover {\n text-decoration: underline;\n}\n\n[data-supertokens~="noFormRow"] {\n padding-bottom: 25px;\n}\n\n[data-supertokens~="emailVerificationButtonWrapper"] {\n padding-top: 25px;\n max-width: 96px;\n margin: 0 auto;\n}\n\n[data-supertokens~="resendEmailLink"] {\n display: inline-block;\n}\n\n[data-supertokens~="resetPasswordEmailForm"] {\n padding-bottom: 20px;\n}\n\n[data-supertokens~="resetPasswordPasswordForm"] {\n padding-bottom: 20px;\n}\n'; @@ -18,7 +17,7 @@ var ThemeBase = function (_a) { var defaultTranslationsEmailVerification = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { EMAIL_VERIFICATION_RESEND_SUCCESS: "Email resent", EMAIL_VERIFICATION_SEND_TITLE: "Verify your email!", diff --git a/lib/build/emailverification.js b/lib/build/emailverification.js index 90ef1abb0..b470b4d8d 100644 --- a/lib/build/emailverification.js +++ b/lib/build/emailverification.js @@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var recipe = require("./emailverification-shared.js"); +var componentOverrideContext = require("./emailverification-shared.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/emailverification"); require("supertokens-web-js/utils/sessionClaimValidatorStore"); require("./recipeModule-shared.js"); @@ -36,14 +36,14 @@ require("./recipeModule-shared.js"); var Wrapper = /** @class */ (function () { function Wrapper() {} Wrapper.init = function (config) { - return recipe.EmailVerification.init(config); + return componentOverrideContext.EmailVerification.init(config); }; Wrapper.isEmailVerified = function (input) { return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.EmailVerification.getInstanceOrThrow().webJSRecipe.isEmailVerified( + componentOverrideContext.EmailVerification.getInstanceOrThrow().webJSRecipe.isEmailVerified( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -59,7 +59,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.EmailVerification.getInstanceOrThrow().webJSRecipe.verifyEmail( + componentOverrideContext.EmailVerification.getInstanceOrThrow().webJSRecipe.verifyEmail( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -75,7 +75,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.EmailVerification.getInstanceOrThrow().webJSRecipe.sendVerificationEmail( + componentOverrideContext.EmailVerification.getInstanceOrThrow().webJSRecipe.sendVerificationEmail( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -87,7 +87,7 @@ var Wrapper = /** @class */ (function () { }); }; Wrapper.getEmailVerificationTokenFromURL = function (input) { - return recipe.EmailVerification.getInstanceOrThrow().webJSRecipe.getEmailVerificationTokenFromURL( + return componentOverrideContext.EmailVerification.getInstanceOrThrow().webJSRecipe.getEmailVerificationTokenFromURL( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -95,8 +95,8 @@ var Wrapper = /** @class */ (function () { }) ); }; - Wrapper.EmailVerificationClaim = recipe.EmailVerification.EmailVerificationClaim; - Wrapper.ComponentsOverrideProvider = recipe.Provider; + Wrapper.EmailVerificationClaim = componentOverrideContext.EmailVerification.EmailVerificationClaim; + Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; return Wrapper; })(); var init = Wrapper.init; @@ -105,7 +105,7 @@ var verifyEmail = Wrapper.verifyEmail; var sendVerificationEmail = Wrapper.sendVerificationEmail; var getEmailVerificationTokenFromURL = Wrapper.getEmailVerificationTokenFromURL; var EmailVerificationComponentsOverrideProvider = Wrapper.ComponentsOverrideProvider; -var EmailVerificationClaim = recipe.EmailVerification.EmailVerificationClaim; +var EmailVerificationClaim = componentOverrideContext.EmailVerification.EmailVerificationClaim; exports.EmailVerificationClaim = EmailVerificationClaim; exports.EmailVerificationComponentsOverrideProvider = EmailVerificationComponentsOverrideProvider; diff --git a/lib/build/emailverificationprebuiltui.js b/lib/build/emailverificationprebuiltui.js index 9253f8436..27c89c61a 100644 --- a/lib/build/emailverificationprebuiltui.js +++ b/lib/build/emailverificationprebuiltui.js @@ -5,7 +5,7 @@ var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); var session = require("./session.js"); -var recipe = require("./emailverification-shared.js"); +var componentOverrideContext = require("./emailverification-shared.js"); var React = require("react"); var types = require("./multifactorauth-shared.js"); var translations = require("./emailverification-shared2.js"); @@ -1068,12 +1068,12 @@ var EmailVerificationPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } var features = {}; if (_this.recipeInstance.config.disableDefaultUI !== true) { var normalisedFullPath = _this.recipeInstance.config.appInfo.websiteBasePath.appendPath( - new NormalisedURLPath__default.default(recipe.DEFAULT_VERIFY_EMAIL_PATH) + new NormalisedURLPath__default.default(componentOverrideContext.DEFAULT_VERIFY_EMAIL_PATH) ); features[normalisedFullPath.getAsStringDangerous()] = { matches: genericComponentOverrideContext.matchRecipeIdUsingQueryParams( @@ -1082,7 +1082,7 @@ var EmailVerificationPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("emailverification", props, useComponentOverrides); }, - recipeID: recipe.EmailVerification.RECIPE_ID, + recipeID: componentOverrideContext.EmailVerification.RECIPE_ID, }; } return features; @@ -1094,7 +1094,7 @@ var EmailVerificationPreBuiltUI = /** @class */ (function (_super) { useComponentOverrides ) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return jsxRuntime.jsx( uiEntry.UserContextWrapper, @@ -1143,20 +1143,20 @@ var EmailVerificationPreBuiltUI = /** @class */ (function (_super) { // Static methods EmailVerificationPreBuiltUI.getInstanceOrInitAndGetInstance = function () { if (EmailVerificationPreBuiltUI.instance === undefined) { - var recipeInstance = recipe.EmailVerification.getInstanceOrThrow(); + var recipeInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); EmailVerificationPreBuiltUI.instance = new EmailVerificationPreBuiltUI(recipeInstance); } return EmailVerificationPreBuiltUI.instance; }; EmailVerificationPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return EmailVerificationPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; EmailVerificationPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return EmailVerificationPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -1175,6 +1175,7 @@ var EmailVerificationPreBuiltUI = /** @class */ (function (_super) { EmailVerificationPreBuiltUI.instance = undefined; return; }; + EmailVerificationPreBuiltUI.languageTranslations = translations.defaultTranslationsEmailVerification; EmailVerificationPreBuiltUI.EmailVerification = function (props) { return EmailVerificationPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( "emailverification", diff --git a/lib/build/genericComponentOverrideContext.js b/lib/build/genericComponentOverrideContext.js index 5f2ecdb46..56abeb016 100644 --- a/lib/build/genericComponentOverrideContext.js +++ b/lib/build/genericComponentOverrideContext.js @@ -1,24 +1,24 @@ "use strict"; +var jsxRuntime = require("react/jsx-runtime"); +var React = require("react"); var SuperTokensWebJS = require("supertokens-web-js"); var cookieHandler = require("supertokens-web-js/utils/cookieHandler"); var postSuperTokensInitCallbacks = require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); var windowHandler = require("supertokens-web-js/utils/windowHandler"); var MultitenancyWebJS = require("supertokens-web-js/recipe/multitenancy"); var utils = require("supertokens-web-js/utils"); -var React = require("react"); var STGeneralError = require("supertokens-web-js/lib/build/error"); var NormalisedURLDomain = require("supertokens-web-js/utils/normalisedURLDomain"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); -var jsxRuntime = require("react/jsx-runtime"); function _interopDefault(e) { return e && e.__esModule ? e : { default: e }; } +var React__default = /*#__PURE__*/ _interopDefault(React); var SuperTokensWebJS__default = /*#__PURE__*/ _interopDefault(SuperTokensWebJS); var MultitenancyWebJS__default = /*#__PURE__*/ _interopDefault(MultitenancyWebJS); -var React__default = /*#__PURE__*/ _interopDefault(React); var STGeneralError__default = /*#__PURE__*/ _interopDefault(STGeneralError); var NormalisedURLDomain__default = /*#__PURE__*/ _interopDefault(NormalisedURLDomain); var NormalisedURLPath__default = /*#__PURE__*/ _interopDefault(NormalisedURLPath); @@ -270,7 +270,7 @@ var SSR_ERROR = * License for the specific language governing permissions and limitations * under the License. */ -var package_version = "0.49.1"; +var package_version = "0.49.1-canary-plugins.0"; /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * @@ -304,6 +304,22 @@ function logDebugMessage(message) { } } +/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. + * + * This software is licensed under the Apache License, Version 2.0 (the + * "License") as published by the Apache Software Foundation. + * + * 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. + */ +var nonPublicConfigProperties = ["experimental"]; + /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * * This software is licensed under the Apache License, Version 2.0 (the @@ -949,6 +965,28 @@ var handleCallAPI = function (_a) { }); }); }; +function getPublicPlugin(plugin) { + return { + id: plugin.id, + initialized: plugin.init ? false : true, + version: plugin.version, + exports: plugin.exports, + compatibleAuthReactSDKVersions: plugin.compatibleAuthReactSDKVersions, + compatibleWebJSSDKVersions: plugin.compatibleWebJSSDKVersions, + }; +} +function getPublicConfig(config) { + var configKeys = Object.keys(config); + var publicConfig = configKeys.reduce(function (acc, key) { + var _a; + if (nonPublicConfigProperties.includes(key)) { + return acc; + } else { + return exports.__assign(exports.__assign({}, acc), ((_a = {}), (_a[key] = config[key]), _a)); + } + }, {}); + return publicConfig; +} var BaseRecipeModule = /** @class */ (function () { /* @@ -1135,7 +1173,14 @@ var Multitenancy = /** @class */ (function (_super) { ); return Multitenancy.instance; }, - webJS: MultitenancyWebJS__default.default.init(exports.__assign({}, normalisedConfig)), + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = MultitenancyWebJS__default.default.init(exports.__assign({}, normalisedConfig)); + return init.apply(void 0, args); + }, }; }; Multitenancy.getInstanceOrThrow = function () { @@ -1165,6 +1210,31 @@ var Multitenancy = /** @class */ (function (_super) { return Multitenancy; })(BaseRecipeModule); +var defaultTranslationsCommon = { + en: { + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: "Sign Up / Sign In", + AUTH_PAGE_HEADER_TITLE_SIGN_IN: "Sign In", + AUTH_PAGE_HEADER_TITLE_SIGN_UP: "Sign Up", + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: " to continue to ", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: "Not registered yet?", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: "Sign Up", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: "", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: "Already have an account?", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: "Sign In", + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: "", + AUTH_PAGE_FOOTER_START: "By continuing, you agree to our ", + AUTH_PAGE_FOOTER_TOS: "Terms of Service", + AUTH_PAGE_FOOTER_AND: " and ", + AUTH_PAGE_FOOTER_PP: "Privacy Policy", + AUTH_PAGE_FOOTER_END: "", + DIVIDER_OR: "or", + BRANDING_POWERED_BY_START: "Powered by ", + BRANDING_POWERED_BY_END: "", + SOMETHING_WENT_WRONG_ERROR: "Something went wrong. Please try again.", + SOMETHING_WENT_WRONG_ERROR_RELOAD: "Something went wrong. Please try again later or reload the page.", + }, +}; + var TranslationController = /** @class */ (function () { function TranslationController() { this.handlers = new Map(); @@ -1231,6 +1301,166 @@ function getCurrentLanguageFromCookie() { }); }); } +var getTranslationFunction = function () { + var stores = []; + for (var _i = 0; _i < arguments.length; _i++) { + stores[_i] = arguments[_i]; + } + var _a = SuperTokens.getInstanceOrThrow().languageTranslations, + translationEventSource = _a.translationEventSource, + userTranslationFunc = _a.userTranslationFunc, + defaultLanguage = _a.defaultLanguage, + userTranslationStore = _a.userTranslationStore; + var _store = __spreadArray( + __spreadArray([defaultTranslationsCommon], stores, true), + [userTranslationStore], + false + ).reduce(mergeObjects, {}); + var getStore = function () { + return _store; + }; + var setStore = function (newStore) { + _store = newStore; + }; + var _language = defaultLanguage; + var getLanguage = function () { + return _language; + }; + var setLanguage = function (lang) { + _language = lang; + }; + var changeHandler = function (_eventName, detail) { + setLanguage(detail); + }; + var loadHandler = function (_eventName, detail) { + setStore(mergeObjects(_store, detail)); + }; + translationEventSource.off("LanguageChange", changeHandler); + translationEventSource.off("TranslationLoaded", loadHandler); + translationEventSource.on("LanguageChange", changeHandler); + translationEventSource.on("TranslationLoaded", loadHandler); + getCurrentLanguageFromCookie().then(function (cookieLanguage) { + if (cookieLanguage) setLanguage(cookieLanguage); + }); + var translate = function (key, replacements) { + if (replacements === void 0) { + replacements = {}; + } + if (userTranslationFunc) { + return userTranslationFunc(key); + } + if (getLanguage() !== undefined) { + var res = getStore()[getLanguage()] && getStore()[getLanguage()][key]; + var fallback = getStore()[defaultLanguage] && getStore()[defaultLanguage][key]; + if (res === undefined) { + if (fallback !== undefined) { + return fallback; + } + return key; + } + return res.replace(/{(\w+)}/g, function (match, p1) { + return replacements[p1] || match; + }); + } + throw new Error("Should never come here"); + }; + return translate; +}; + +var parseVersion = function (version) { + var match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/); + if (!match) { + throw new Error("Invalid version format: ".concat(version)); + } + return { + major: parseInt(match[1]), + minor: parseInt(match[2]), + patch: parseInt(match[3]), + prerelease: match[4], + }; +}; +var compareVersions = function (a, b) { + if (a.major !== b.major) return a.major - b.major; + if (a.minor !== b.minor) return a.minor - b.minor; + if (a.patch !== b.patch) return a.patch - b.patch; + // canary versions + if (a.prerelease && !b.prerelease) return -1; + if (!a.prerelease && b.prerelease) return 1; + if (a.prerelease && b.prerelease) { + return a.prerelease.localeCompare(b.prerelease); + } + return 0; +}; +// checks if a version satisfies a range constraint. supports: ">=0.49.0", "0.49.x", "~0.49.0", "^0.49.0", "0.49.1" +var satisfiesRange = function (version, range) { + var parsedVersion = parseVersion(version); + if (range === version) return true; + var rangeMatch = range.match(/^([<>=~^]+)\s*(.+)$/); + if (rangeMatch) { + var operator = rangeMatch[1]; + var rangeVersion = rangeMatch[2]; + var parsedRangeVersion = parseVersion(rangeVersion); + var comparison = compareVersions(parsedVersion, parsedRangeVersion); + switch (operator) { + case ">=": + return comparison >= 0; + case ">": + return comparison > 0; + case "<=": + return comparison <= 0; + case "<": + return comparison < 0; + case "=": + case "==": + return comparison === 0; + case "~": + return ( + parsedVersion.major === parsedRangeVersion.major && + parsedVersion.minor === parsedRangeVersion.minor && + parsedVersion.patch >= parsedRangeVersion.patch + ); + case "^": + if (parsedRangeVersion.major === 0) { + return ( + parsedVersion.major === 0 && + parsedVersion.minor === parsedRangeVersion.minor && + parsedVersion.patch >= parsedRangeVersion.patch + ); + } else { + return ( + parsedVersion.major === parsedRangeVersion.major && + parsedVersion.minor >= parsedRangeVersion.minor + ); + } + default: + return false; + } + } + // x-ranges like "0.49.x" + var xRangeMatch = range.match(/^(\d+)\.(\d+)\.x$/); + if (xRangeMatch) { + return ( + parsedVersion.major === parseInt(xRangeMatch[1], 10) && parsedVersion.minor === parseInt(xRangeMatch[2], 10) + ); + } + // wildcard ranges like "0.x" + var wildcardMatch = range.match(/^(\d+)\.x$/); + if (wildcardMatch) { + return parsedVersion.major === parseInt(wildcardMatch[1], 10); + } + var exactRangeVersion = parseVersion(range); + return compareVersions(parsedVersion, exactRangeVersion) === 0; +}; +var isVersionCompatible = function (currentVersion, constraints) { + var constraintArray = Array.isArray(constraints) ? constraints : [constraints]; + for (var _i = 0, constraintArray_1 = constraintArray; _i < constraintArray_1.length; _i++) { + var constraint = constraintArray_1[_i]; + if (satisfiesRange(currentVersion, constraint)) { + return true; + } + } + return false; +}; /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * @@ -1253,10 +1483,14 @@ var SuperTokens = /** @class */ (function () { /* * Constructor. */ - function SuperTokens(config) { + function SuperTokens(config, plugins) { var _this = this; - var _a, _b, _c, _d; + var _a, _b, _c, _d, _e, _f, _g, _h; + // give access to plugins through the instance + this.pluginList = []; this.recipeList = []; + this.componentOverrides = {}; + this.pluginRouteHandlers = []; this.changeLanguage = function (lang) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { @@ -1350,6 +1584,57 @@ var SuperTokens = /** @class */ (function () { "Please provide at least one recipe to the supertokens.init function call. See https://supertokens.io/docs/emailpassword/quick-setup/frontend" ); } + this.componentOverrides = {}; + for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) { + var plugin = plugins_1[_i]; + if (plugin.overrideMap !== undefined) { + for (var _j = 0, _k = Object.keys(plugin.overrideMap); _j < _k.length; _j++) { + var t = _k[_j]; + this.componentOverrides[t] = exports.__assign( + exports.__assign({}, this.componentOverrides[t]), + (_b = (_a = plugin.overrideMap[t]) === null || _a === void 0 ? void 0 : _a.components) !== + null && _b !== void 0 + ? _b + : {} + ); + } + } + this.componentOverrides.authRecipe = exports.__assign( + exports.__assign({}, (_c = this.componentOverrides.authRecipe) !== null && _c !== void 0 ? _c : {}), + (_d = plugin.generalAuthRecipeComponentOverrides) !== null && _d !== void 0 ? _d : {} + ); + } + this.pluginList = plugins.map(getPublicPlugin); + var publicConfig = getPublicConfig(exports.__assign(exports.__assign({}, config), { appInfo: this.appInfo })); + var _loop_1 = function (pluginIndex) { + var _l; + var pluginInit = plugins[pluginIndex].init; + if (pluginInit && !this_1.pluginList[pluginIndex].initialized) { + postSuperTokensInitCallbacks.PostSuperTokensInitCallbacks.addPostInitCallback(function () { + pluginInit(publicConfig, _this.pluginList, package_version); + _this.pluginList[pluginIndex].initialized = true; + }); + } + var pluginRouteHandlers = plugins[pluginIndex].routeHandlers; + if (pluginRouteHandlers) { + var handlers = []; + if (typeof pluginRouteHandlers === "function") { + var result = pluginRouteHandlers(publicConfig, this_1.pluginList, package_version); + if (result.status === "ERROR") { + throw new Error(result.message); + } + handlers = result.routeHandlers; + } else { + handlers = pluginRouteHandlers; + } + (_l = this_1.pluginRouteHandlers).push.apply(_l, handlers); + } + }; + var this_1 = this; + // iterated separately so we can pass the instance plugins as reference so they always have access to the latest + for (var pluginIndex = 0; pluginIndex < this.pluginList.length; pluginIndex += 1) { + _loop_1(pluginIndex); + } var translationConfig = config.languageTranslations === undefined ? {} : config.languageTranslations; this.languageTranslations = { defaultLanguage: translationConfig.defaultLanguage === undefined ? "en" : translationConfig.defaultLanguage, @@ -1370,18 +1655,18 @@ var SuperTokens = /** @class */ (function () { var authReact = _a.authReact; return authReact(_this.appInfo, enableDebugLogs); }); - this.rootStyle = (_a = config.style) !== null && _a !== void 0 ? _a : ""; + this.rootStyle = (_e = config.style) !== null && _e !== void 0 ? _e : ""; this.privacyPolicyLink = config.privacyPolicyLink; this.termsOfServiceLink = config.termsOfServiceLink; - this.useShadowDom = (_b = config.useShadowDom) !== null && _b !== void 0 ? _b : true; - this.defaultToSignUp = (_c = config.defaultToSignUp) !== null && _c !== void 0 ? _c : false; - this.disableAuthRoute = (_d = config.disableAuthRoute) !== null && _d !== void 0 ? _d : false; + this.useShadowDom = (_f = config.useShadowDom) !== null && _f !== void 0 ? _f : true; + this.defaultToSignUp = (_g = config.defaultToSignUp) !== null && _g !== void 0 ? _g : false; + this.disableAuthRoute = (_h = config.disableAuthRoute) !== null && _h !== void 0 ? _h : false; } /* * Static Methods. */ SuperTokens.init = function (config) { - var _a; + var _a, _b; cookieHandler.CookieHandlerReference.init(config.cookieHandler); windowHandler.WindowHandlerReference.init(config.windowHandler); if (SuperTokens.instance !== undefined) { @@ -1396,17 +1681,94 @@ var SuperTokens = /** @class */ (function () { }) !== undefined ? config.recipeList : config.recipeList.concat(Multitenancy.init({})); + var normalisedAppInfo = normaliseInputAppInfoOrThrowError(config.appInfo); + var publicConfig = getPublicConfig( + exports.__assign(exports.__assign({}, config), { appInfo: normalisedAppInfo }) + ); + var finalPluginList = []; + if ((_b = config.experimental) === null || _b === void 0 ? void 0 : _b.plugins) { + for (var _i = 0, _c = config.experimental.plugins; _i < _c.length; _i++) { + var plugin = _c[_i]; + if (plugin.compatibleAuthReactSDKVersions) { + var versionCheck = isVersionCompatible(package_version, plugin.compatibleAuthReactSDKVersions); + if (!versionCheck) { + throw new Error( + "Incompatible SDK version for plugin " + .concat(plugin.id, '. Version "') + .concat(package_version, '" not found in compatible versions: ') + .concat(JSON.stringify(plugin.compatibleAuthReactSDKVersions)) + ); + } + } + if (plugin.dependencies) { + var result = plugin.dependencies( + publicConfig, + finalPluginList.map(getPublicPlugin), + package_version + ); + if (result.status === "ERROR") { + throw new Error(result.message); + } + if (result.pluginsToAdd) { + finalPluginList.push.apply(finalPluginList, result.pluginsToAdd); + } + } + finalPluginList.push(plugin); + } + } + var duplicatePluginIds = finalPluginList.filter(function (plugin, index) { + return finalPluginList.some(function (elem, idx) { + return elem.id === plugin.id && idx !== index; + }); + }); + if (duplicatePluginIds.length > 0) { + throw new Error( + "Duplicate plugin IDs: ".concat( + duplicatePluginIds + .map(function (plugin) { + return plugin.id; + }) + .join(", ") + ) + ); + } + for (var _d = 0, finalPluginList_1 = finalPluginList; _d < finalPluginList_1.length; _d++) { + var plugin = finalPluginList_1[_d]; + if (plugin.config) { + var pluginConfig = + plugin.config( + getPublicConfig(exports.__assign(exports.__assign({}, config), { appInfo: normalisedAppInfo })) + ) || {}; + // @ts-expect-error we don't want to override the appInfo and we can't make sure the plugin won't return it + delete pluginConfig.appInfo; + config = exports.__assign(exports.__assign({}, config), pluginConfig); + } + } SuperTokensWebJS__default.default.init( exports.__assign(exports.__assign({}, config), { recipeList: recipes.map(function (_a) { var webJS = _a.webJS; return webJS; }), + experimental: { + plugins: finalPluginList.map(function (plugin) { + return { + id: plugin.id, + overrideMap: plugin.overrideMap, + }; + }), + }, }) ); - SuperTokens.instance = new SuperTokens(exports.__assign(exports.__assign({}, config), { recipeList: recipes })); + SuperTokens.instance = new SuperTokens( + exports.__assign(exports.__assign({}, config), { recipeList: recipes }), + finalPluginList + ); postSuperTokensInitCallbacks.PostSuperTokensInitCallbacks.runPostInitCallbacks(); }; + SuperTokens.getInstance = function () { + return SuperTokens.instance; + }; SuperTokens.getInstanceOrThrow = function () { if (SuperTokens.instance === undefined) { var error = "SuperTokens must be initialized before calling this method."; @@ -1502,13 +1864,21 @@ function doRedirection(appInfo, redirectUrl, navigate) { redirectWithFullPageReload(redirectUrl); } -var createGenericComponentsOverrideContext = function (v) { +var createGenericComponentsOverrideContext = function (v, key) { if (v === void 0) { v = {}; } var genericContext = React__default.default.createContext(v); var useComponentsOverrideContext = function () { - return React__default.default.useContext(genericContext); + var _a; + var contextValue = React__default.default.useContext(genericContext); + return exports.__assign( + exports.__assign( + {}, + (_a = SuperTokens.getInstance()) === null || _a === void 0 ? void 0 : _a.componentOverrides[key] + ), + contextValue + ); }; var Provider = function (_a) { var children = _a.children, @@ -1532,6 +1902,7 @@ exports.appendQueryParamsToURL = appendQueryParamsToURL; exports.clearErrorQueryParam = clearErrorQueryParam; exports.clearQueryParams = clearQueryParams; exports.createGenericComponentsOverrideContext = createGenericComponentsOverrideContext; +exports.defaultTranslationsCommon = defaultTranslationsCommon; exports.getCurrentLanguageFromCookie = getCurrentLanguageFromCookie; exports.getCurrentNormalisedUrlPath = getCurrentNormalisedUrlPath; exports.getCurrentNormalisedUrlPathWithQueryParamsAndFragments = getCurrentNormalisedUrlPathWithQueryParamsAndFragments; @@ -1541,6 +1912,7 @@ exports.getNormalisedUserContext = getNormalisedUserContext; exports.getQueryParams = getQueryParams; exports.getRedirectToPathFromURL = getRedirectToPathFromURL; exports.getTenantIdFromQueryParams = getTenantIdFromQueryParams; +exports.getTranslationFunction = getTranslationFunction; exports.getURLHash = getURLHash; exports.handleCallAPI = handleCallAPI; exports.isTest = isTest; diff --git a/lib/build/index.d.ts b/lib/build/index.d.ts index 3e0395d4b..0ca50fd8f 100644 --- a/lib/build/index.d.ts +++ b/lib/build/index.d.ts @@ -17,7 +17,11 @@ export default class SuperTokensAPIWrapper { redirectBack?: boolean; userContext?: UserContext; }) => Promise; + static isRecipeInitialized(recipeId: string): boolean; static useTranslation: () => import("./translation/translationHelpers").TranslationFunc; + static getTranslationFunction: ( + ...stores: TranslationStore[] + ) => (key: T, replacements?: Record | undefined) => string; static useUserContext: () => UserContext; } export declare const init: typeof SuperTokensAPIWrapper.init; @@ -30,6 +34,10 @@ export declare const redirectToAuth: (options?: { redirectBack?: boolean; userContext?: UserContext; }) => Promise; +export declare const isRecipeInitialized: typeof SuperTokensAPIWrapper.isRecipeInitialized; +export type { SuperTokensConfig, SuperTokensPublicConfig, SuperTokensPublicPlugin, SuperTokensPlugin } from "./types"; +export type { TranslationStore } from "./translation/translationHelpers"; export { SuperTokensWrapper } from "./components/supertokensWrapper"; export { useTranslation } from "./translation/translationContext"; +export { getTranslationFunction } from "./translation/translationHelpers"; export { useUserContext } from "./usercontext"; diff --git a/lib/build/index.js b/lib/build/index.js index ef0f8b34a..43ad2473a 100644 --- a/lib/build/index.js +++ b/lib/build/index.js @@ -2,20 +2,20 @@ Object.defineProperty(exports, "__esModule", { value: true }); -require("./genericComponentOverrideContext.js"); +var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); var uiEntry = require("./index2.js"); var translationContext = require("./translationContext.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("react-dom"); require("./multitenancy-shared.js"); require("./multifactorauth-shared2.js"); @@ -29,10 +29,12 @@ require("supertokens-web-js/recipe/oauth2provider"); require("./authRecipe-shared.js"); require("supertokens-web-js/lib/build/normalisedURLPath"); +exports.getTranslationFunction = genericComponentOverrideContext.getTranslationFunction; exports.SuperTokensWrapper = uiEntry.SuperTokensWrapper; exports.changeLanguage = uiEntry.changeLanguage; exports.default = uiEntry.SuperTokensAPIWrapper; exports.init = uiEntry.init; +exports.isRecipeInitialized = uiEntry.isRecipeInitialized; exports.loadTranslation = uiEntry.loadTranslation; exports.redirectToAuth = uiEntry.redirectToAuth; exports.useUserContext = uiEntry.useUserContext; diff --git a/lib/build/index2.js b/lib/build/index2.js index 10b2c2aed..2075807ae 100644 --- a/lib/build/index2.js +++ b/lib/build/index2.js @@ -350,31 +350,6 @@ function DisableAutoFillInput() { /* eslint-enable react/jsx-no-literals */ } -var defaultTranslationsCommon = { - en: { - AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: "Sign Up / Sign In", - AUTH_PAGE_HEADER_TITLE_SIGN_IN: "Sign In", - AUTH_PAGE_HEADER_TITLE_SIGN_UP: "Sign Up", - AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: " to continue to ", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: "Not registered yet?", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: "Sign Up", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: "", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: "Already have an account?", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: "Sign In", - AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: "", - AUTH_PAGE_FOOTER_START: "By continuing, you agree to our ", - AUTH_PAGE_FOOTER_TOS: "Terms of Service", - AUTH_PAGE_FOOTER_AND: " and ", - AUTH_PAGE_FOOTER_PP: "Privacy Policy", - AUTH_PAGE_FOOTER_END: "", - DIVIDER_OR: "or", - BRANDING_POWERED_BY_START: "Powered by ", - BRANDING_POWERED_BY_END: "", - SOMETHING_WENT_WRONG_ERROR: "Something went wrong. Please try again.", - SOMETHING_WENT_WRONG_ERROR_RELOAD: "Something went wrong. Please try again later or reload the page.", - }, -}; - var SessionContext = React__default.default.createContext({ loading: true, isDefault: true, @@ -388,7 +363,7 @@ var useSessionContext = function () { return ctx; }; -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext({}, "authRecipe"), useContext = _a[0], Provider = _a[1]; @@ -1250,7 +1225,7 @@ var AuthPageInner = function (props) { : undefined; var mergedTranslations = React.useMemo( function () { - var res = defaultTranslationsCommon; + var res = genericComponentOverrideContext.defaultTranslationsCommon; if (authComponentListInfo !== undefined) { for (var _i = 0, _a = props.preBuiltUIList; _i < _a.length; _i++) { var ui = _a[_i]; @@ -1893,6 +1868,7 @@ function RoutingComponent(props) { var isAuthPage = path === genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().appInfo.websiteBasePath.getAsStringDangerous(); + var pluginRouteHandlers = genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().pluginRouteHandlers; var location = (_b = props.getReactRouterDomWithCustomHistory()) === null || _b === void 0 ? void 0 : _b.useLocation(); var componentToRender = React__default.default.useMemo( @@ -1901,6 +1877,12 @@ function RoutingComponent(props) { return; } var normalizedPath = new NormalisedURLPath__default.default(path); + var matchingPluginRouteHandler = pluginRouteHandlers.find(function (handler) { + return handler.path === path; + }); + if (matchingPluginRouteHandler) { + return { component: matchingPluginRouteHandler.handler, recipeId: undefined }; + } // During development, this runs twice so as to warn devs of if there // are any side effects that happen here. So in tests, it will result in // the console log twice @@ -2006,6 +1988,27 @@ function getSuperTokensRoutesForReactRouterDom$1(_a) { return routes; }, {}) ); + var pluginRouteHandlers = genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().pluginRouteHandlers; + for (var _i = 0, pluginRouteHandlers_1 = pluginRouteHandlers; _i < pluginRouteHandlers_1.length; _i++) { + var handler = pluginRouteHandlers_1[_i]; + var path = handler.path; + routes.push( + jsxRuntime.jsx( + Route, + genericComponentOverrideContext.__assign( + { exact: true, path: path }, + { + children: jsxRuntime.jsx(RoutingComponent, { + getReactRouterDomWithCustomHistory: getReactRouterDomWithCustomHistory, + preBuiltUIList: recipeList, + path: path, + }), + } + ), + "st-plugin-".concat(path) + ) + ); + } if ( !genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().disableAuthRoute && recipeList.some(function (ui) { @@ -2085,6 +2088,25 @@ function getSuperTokensRoutesForReactRouterDomV6(_a) { return routes; }, {}) ); + var pluginRouteHandlers = genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().pluginRouteHandlers; + for (var _i = 0, pluginRouteHandlers_1 = pluginRouteHandlers; _i < pluginRouteHandlers_1.length; _i++) { + var handler = pluginRouteHandlers_1[_i]; + var path = handler.path; + routes.push( + jsxRuntime.jsx( + Route, + { + path: path, + element: jsxRuntime.jsx(RoutingComponent, { + getReactRouterDomWithCustomHistory: getReactRouterDomWithCustomHistory, + preBuiltUIList: recipeList, + path: path, + }), + }, + "st-plugin-".concat(path) + ) + ); + } if ( !genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().disableAuthRoute && recipeList.some(function (ui) { @@ -2221,6 +2243,7 @@ var UI = /** @class */ (function () { preBuiltUIList: recipeList, }); }; + UI.languageTranslations = genericComponentOverrideContext.defaultTranslationsCommon; UI.getReactRouterDomWithCustomHistory = function () { return UI.reactRouterDom; }; @@ -2241,6 +2264,7 @@ var UI = /** @class */ (function () { UI.AuthRecipeComponentsOverrideContextProvider = Provider; return UI; })(); +var languageTranslations = UI.languageTranslations; var getSuperTokensRoutesForReactRouterDom = UI.getSuperTokensRoutesForReactRouterDom; var canHandleRoute = UI.canHandleRoute; var getRoutingComponent = UI.getRoutingComponent; @@ -2729,6 +2753,13 @@ var SuperTokensAPIWrapper = /** @class */ (function () { SuperTokensAPIWrapper.loadTranslation = function (store) { return genericComponentOverrideContext.SuperTokens.getInstanceOrThrow().loadTranslation(store); }; + SuperTokensAPIWrapper.isRecipeInitialized = function (recipeId) { + return genericComponentOverrideContext.SuperTokens.getInstanceOrThrow() + .recipeList.map(function (recipe) { + return recipe.recipeID; + }) + .includes(recipeId); + }; var _a; _a = SuperTokensAPIWrapper; SuperTokensAPIWrapper.SuperTokensWrapper = SuperTokensWrapper; @@ -2758,6 +2789,7 @@ var SuperTokensAPIWrapper = /** @class */ (function () { }); }; SuperTokensAPIWrapper.useTranslation = translationContext.useTranslation; + SuperTokensAPIWrapper.getTranslationFunction = genericComponentOverrideContext.getTranslationFunction; SuperTokensAPIWrapper.useUserContext = useUserContext; return SuperTokensAPIWrapper; })(); @@ -2765,6 +2797,7 @@ var init = SuperTokensAPIWrapper.init; var changeLanguage = SuperTokensAPIWrapper.changeLanguage; var loadTranslation = SuperTokensAPIWrapper.loadTranslation; var redirectToAuth = SuperTokensAPIWrapper.redirectToAuth; +var isRecipeInitialized = SuperTokensAPIWrapper.isRecipeInitialized; exports.AuthPage = AuthPage; exports.AuthPageComponentList = AuthPageComponentList; @@ -2789,10 +2822,11 @@ exports.UserContextContext = UserContextContext; exports.UserContextWrapper = UserContextWrapper; exports.canHandleRoute = canHandleRoute; exports.changeLanguage = changeLanguage; -exports.defaultTranslationsCommon = defaultTranslationsCommon; exports.getRoutingComponent = getRoutingComponent; exports.getSuperTokensRoutesForReactRouterDom = getSuperTokensRoutesForReactRouterDom; exports.init = init; +exports.isRecipeInitialized = isRecipeInitialized; +exports.languageTranslations = languageTranslations; exports.loadTranslation = loadTranslation; exports.redirectToAuth = redirectToAuth; exports.useDynamicLoginMethods = useDynamicLoginMethods; diff --git a/lib/build/multifactorauth-shared.js b/lib/build/multifactorauth-shared.js index a8b16358d..8edb35b3c 100644 --- a/lib/build/multifactorauth-shared.js +++ b/lib/build/multifactorauth-shared.js @@ -492,48 +492,55 @@ var Session = /** @class */ (function (_super) { ); return Session.instance; }, - webJS: WebJSSessionRecipe__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - onHandleEvent: function (event) { - if (normalisedConfig.onHandleEvent !== undefined) { - normalisedConfig.onHandleEvent(event); - } - void Session.getInstanceOrThrow().notifyListeners(event); - }, - preAPIHook: function (context) { - return genericComponentOverrideContext.__awaiter(_this, void 0, void 0, function () { - var response; - return genericComponentOverrideContext.__generator(this, function (_a) { - response = genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, context), - { - requestInit: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, context.requestInit), - { - headers: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign( - {}, - context.requestInit.headers + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = WebJSSessionRecipe__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + onHandleEvent: function (event) { + if (normalisedConfig.onHandleEvent !== undefined) { + normalisedConfig.onHandleEvent(event); + } + void Session.getInstanceOrThrow().notifyListeners(event); + }, + preAPIHook: function (context) { + return genericComponentOverrideContext.__awaiter(_this, void 0, void 0, function () { + var response; + return genericComponentOverrideContext.__generator(this, function (_a) { + response = genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, context), + { + requestInit: genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, context.requestInit), + { + headers: genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign( + {}, + context.requestInit.headers + ), + { rid: Session.RECIPE_ID } ), - { rid: Session.RECIPE_ID } - ), - } - ), + } + ), + } + ); + if (normalisedConfig.preAPIHook === undefined) { + return [2 /*return*/, response]; + } else { + return [2 /*return*/, normalisedConfig.preAPIHook(context)]; } - ); - if (normalisedConfig.preAPIHook === undefined) { - return [2 /*return*/, response]; - } else { - return [2 /*return*/, normalisedConfig.preAPIHook(context)]; - } + }); }); - }); - }, - } - ) - ), + }, + } + ) + ); + return init.apply(void 0, args); + }, }; }; Session.getInstanceOrThrow = function () { diff --git a/lib/build/multifactorauth-shared2.js b/lib/build/multifactorauth-shared2.js index d5e65825c..fa78097b5 100644 --- a/lib/build/multifactorauth-shared2.js +++ b/lib/build/multifactorauth-shared2.js @@ -475,21 +475,28 @@ var MultiFactorAuth = /** @class */ (function (_super) { ); return MultiFactorAuth.instance; }, - webJS: MultiFactorAuthWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = MultiFactorAuthWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; MultiFactorAuth.getInstance = function () { diff --git a/lib/build/multifactorauth-shared3.js b/lib/build/multifactorauth-shared3.js index bd3b554b5..a8cae3d23 100644 --- a/lib/build/multifactorauth-shared3.js +++ b/lib/build/multifactorauth-shared3.js @@ -1,8 +1,12 @@ "use strict"; var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); +var recipe = require("./multifactorauth-shared2.js"); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext( + undefined, + recipe.MultiFactorAuth.RECIPE_ID + ), useContext = _a[0], Provider = _a[1]; diff --git a/lib/build/multifactorauth.js b/lib/build/multifactorauth.js index f0fe2be1e..03736455f 100644 --- a/lib/build/multifactorauth.js +++ b/lib/build/multifactorauth.js @@ -6,17 +6,17 @@ var genericComponentOverrideContext = require("./genericComponentOverrideContext var componentOverrideContext = require("./multifactorauth-shared3.js"); var recipe = require("./multifactorauth-shared2.js"); var types = require("./multifactorauth-shared.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/multifactorauth"); require("supertokens-web-js/utils/sessionClaimValidatorStore"); require("./recipeModule-shared.js"); @@ -73,6 +73,11 @@ var Wrapper = /** @class */ (function () { userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), }); }; + Wrapper.getSecondaryFactors = function (input) { + return recipe.MultiFactorAuth.getInstanceOrThrow().getSecondaryFactors( + genericComponentOverrideContext.getNormalisedUserContext(input.userContext) + ); + }; Wrapper.MultiFactorAuthClaim = recipe.MultiFactorAuth.MultiFactorAuthClaim; Wrapper.FactorIds = types.FactorIds; Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; @@ -82,6 +87,7 @@ var init = Wrapper.init; var resyncSessionAndFetchMFAInfo = Wrapper.resyncSessionAndFetchMFAInfo; var redirectToFactor = Wrapper.redirectToFactor; var redirectToFactorChooser = Wrapper.redirectToFactorChooser; +var getSecondaryFactors = Wrapper.getSecondaryFactors; var MultiFactorAuthComponentsOverrideProvider = Wrapper.ComponentsOverrideProvider; var MultiFactorAuthClaim = recipe.MultiFactorAuth.MultiFactorAuthClaim; @@ -89,6 +95,7 @@ exports.FactorIds = types.FactorIds; exports.MultiFactorAuthClaim = MultiFactorAuthClaim; exports.MultiFactorAuthComponentsOverrideProvider = MultiFactorAuthComponentsOverrideProvider; exports.default = Wrapper; +exports.getSecondaryFactors = getSecondaryFactors; exports.init = init; exports.redirectToFactor = redirectToFactor; exports.redirectToFactorChooser = redirectToFactorChooser; diff --git a/lib/build/multifactorauthprebuiltui.js b/lib/build/multifactorauthprebuiltui.js index f7a16c3ab..ef1f8c7fc 100644 --- a/lib/build/multifactorauthprebuiltui.js +++ b/lib/build/multifactorauthprebuiltui.js @@ -273,7 +273,7 @@ function FactorChooserThemeWrapper(props) { var defaultTranslationsMultiFactorAuth = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { MULTI_FACTOR_CHOOSER_HEADER_TITLE: "Please select a factor", MULTI_FACTOR_AUTH_LOGOUT: "Log out", @@ -607,6 +607,7 @@ var MultiFactorAuthPreBuiltUI = /** @class */ (function (_super) { MultiFactorAuthPreBuiltUI.instance = undefined; return; }; + MultiFactorAuthPreBuiltUI.languageTranslations = defaultTranslationsMultiFactorAuth; MultiFactorAuthPreBuiltUI.FactorChooser = function (props) { return MultiFactorAuthPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent("factorchooser", props); }; diff --git a/lib/build/multitenancy-shared.js b/lib/build/multitenancy-shared.js index bd3b554b5..7c609e7a7 100644 --- a/lib/build/multitenancy-shared.js +++ b/lib/build/multitenancy-shared.js @@ -2,7 +2,10 @@ var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext( + undefined, + genericComponentOverrideContext.Multitenancy.RECIPE_ID + ), useContext = _a[0], Provider = _a[1]; diff --git a/lib/build/multitenancy.js b/lib/build/multitenancy.js index 222b442d8..10f4c27cf 100644 --- a/lib/build/multitenancy.js +++ b/lib/build/multitenancy.js @@ -5,16 +5,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); var MultitenancyWebJS = require("supertokens-web-js/recipe/multitenancy"); var componentOverrideContext = require("./multitenancy-shared.js"); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * diff --git a/lib/build/oauth2provider-shared.js b/lib/build/oauth2provider-shared.js index 27f1e02ea..5c90b7d94 100644 --- a/lib/build/oauth2provider-shared.js +++ b/lib/build/oauth2provider-shared.js @@ -129,21 +129,28 @@ var OAuth2Provider = /** @class */ (function (_super) { ); return OAuth2Provider.instance; }, - webJS: OAuth2WebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = OAuth2WebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; OAuth2Provider.getInstanceOrThrow = function () { diff --git a/lib/build/oauth2provider-shared2.js b/lib/build/oauth2provider-shared2.js index bd3b554b5..c1cdcf3fd 100644 --- a/lib/build/oauth2provider-shared2.js +++ b/lib/build/oauth2provider-shared2.js @@ -1,8 +1,12 @@ "use strict"; var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); +var recipe = require("./oauth2provider-shared.js"); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext( + undefined, + recipe.OAuth2Provider.RECIPE_ID + ), useContext = _a[0], Provider = _a[1]; diff --git a/lib/build/oauth2provider.js b/lib/build/oauth2provider.js index f987e40a7..5a4530768 100644 --- a/lib/build/oauth2provider.js +++ b/lib/build/oauth2provider.js @@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); var componentOverrideContext = require("./oauth2provider-shared2.js"); var recipe = require("./oauth2provider-shared.js"); require("./genericComponentOverrideContext.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/oauth2provider"); require("./recipeModule-shared.js"); diff --git a/lib/build/oauth2providerprebuiltui.js b/lib/build/oauth2providerprebuiltui.js index 93b384ce7..a93d9e295 100644 --- a/lib/build/oauth2providerprebuiltui.js +++ b/lib/build/oauth2providerprebuiltui.js @@ -184,7 +184,7 @@ var OAuth2LogoutScreenTheme = function (props) { var defaultTranslationsOAuth2Provider = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { LOGGING_OUT: "Logging Out", LOGOUT_CONFIRMATION: "Are you sure you want to log out?", LOGOUT: "LOG OUT" } ), }; @@ -608,6 +608,7 @@ var OAuth2ProviderPreBuiltUI = /** @class */ (function (_super) { OAuth2ProviderPreBuiltUI.instance = undefined; return; }; + OAuth2ProviderPreBuiltUI.languageTranslations = defaultTranslationsOAuth2Provider; OAuth2ProviderPreBuiltUI.TryRefreshPage = function (props) { return OAuth2ProviderPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( "try-refresh-page", diff --git a/lib/build/passwordless-shared.js b/lib/build/passwordless-shared.js index 099cb859c..85af15550 100644 --- a/lib/build/passwordless-shared.js +++ b/lib/build/passwordless-shared.js @@ -15,10 +15,6 @@ function _interopDefault(e) { var PasswordlessWebJS__default = /*#__PURE__*/ _interopDefault(PasswordlessWebJS); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), - useContext = _a[0], - Provider = _a[1]; - var OTPEmailIcon = function () { return jsxRuntime.jsxs( "svg", @@ -465,7 +461,6 @@ var Passwordless = /** @class */ (function (_super) { }); }); }; - _this.recipeID = config.recipeId; postSuperTokensInitCallbacks.PostSuperTokensInitCallbacks.addPostInitCallback(function () { var mfa = recipe.MultiFactorAuth.getInstance(); if (mfa !== undefined) { @@ -496,21 +491,28 @@ var Passwordless = /** @class */ (function (_super) { ); return Passwordless.instance; }, - webJS: PasswordlessWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = PasswordlessWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; Passwordless.getInstanceOrThrow = function () { @@ -540,6 +542,10 @@ var Passwordless = /** @class */ (function (_super) { return Passwordless; })(index.AuthRecipe); +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, Passwordless.RECIPE_ID), + useContext = _a[0], + Provider = _a[1]; + exports.Passwordless = Passwordless; exports.Provider = Provider; exports.checkAdditionalLoginAttemptInfoProperties = checkAdditionalLoginAttemptInfoProperties; diff --git a/lib/build/passwordless.js b/lib/build/passwordless.js index 64c29e4ba..d80e860ee 100644 --- a/lib/build/passwordless.js +++ b/lib/build/passwordless.js @@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var recipe = require("./passwordless-shared.js"); +var componentOverrideContext = require("./passwordless-shared.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/passwordless"); require("./authRecipe-shared2.js"); require("./recipeModule-shared.js"); @@ -44,14 +44,14 @@ require("./authRecipe-shared.js"); var Wrapper = /** @class */ (function () { function Wrapper() {} Wrapper.init = function (config) { - return recipe.Passwordless.init(config); + return componentOverrideContext.Passwordless.init(config); }; Wrapper.signOut = function (input) { return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().signOut({ + componentOverrideContext.Passwordless.getInstanceOrThrow().signOut({ userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext ), @@ -65,7 +65,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.createCode( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.createCode( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -81,7 +81,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.resendCode( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.resendCode( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -97,7 +97,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.consumeCode( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.consumeCode( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -109,7 +109,7 @@ var Wrapper = /** @class */ (function () { }); }; Wrapper.getLinkCodeFromURL = function (input) { - return recipe.Passwordless.getInstanceOrThrow().webJSRecipe.getLinkCodeFromURL( + return componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.getLinkCodeFromURL( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -118,7 +118,7 @@ var Wrapper = /** @class */ (function () { ); }; Wrapper.getPreAuthSessionIdFromURL = function (input) { - return recipe.Passwordless.getInstanceOrThrow().webJSRecipe.getPreAuthSessionIdFromURL( + return componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.getPreAuthSessionIdFromURL( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -131,7 +131,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.doesEmailExist( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.doesEmailExist( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), }) @@ -145,7 +145,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.doesPhoneNumberExist( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.doesPhoneNumberExist( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), }) @@ -159,7 +159,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -175,7 +175,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.setLoginAttemptInfo( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.setLoginAttemptInfo( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), }) @@ -189,7 +189,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.Passwordless.getInstanceOrThrow().webJSRecipe.clearLoginAttemptInfo( + componentOverrideContext.Passwordless.getInstanceOrThrow().webJSRecipe.clearLoginAttemptInfo( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -200,7 +200,7 @@ var Wrapper = /** @class */ (function () { }); }); }; - Wrapper.ComponentsOverrideProvider = recipe.Provider; + Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; return Wrapper; })(); var init = Wrapper.init; diff --git a/lib/build/passwordlessprebuiltui.js b/lib/build/passwordlessprebuiltui.js index cc9c4bf3b..c49ec4f19 100644 --- a/lib/build/passwordlessprebuiltui.js +++ b/lib/build/passwordlessprebuiltui.js @@ -5,21 +5,21 @@ var React = require("react"); var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); -var recipe$3 = require("./emailpassword-shared3.js"); +var recipe$1 = require("./emailpassword-shared3.js"); require("./multifactorauth.js"); var session = require("./session.js"); -var recipe$1 = require("./passwordless-shared.js"); +var componentOverrideContext$1 = require("./passwordless-shared.js"); var authCompWrapper = require("./authCompWrapper.js"); var button = require("./emailpassword-shared.js"); var translationContext = require("./translationContext.js"); var STGeneralError = require("supertokens-web-js/utils/error"); var types = require("./multifactorauth-shared.js"); var emailverification = require("./emailverification.js"); -var recipe = require("./emailverification-shared.js"); +var componentOverrideContext = require("./emailverification-shared.js"); var arrowLeftIcon = require("./arrowLeftIcon.js"); var emailLargeIcon = require("./emailLargeIcon.js"); var windowHandler = require("supertokens-web-js/utils/windowHandler"); -var recipe$2 = require("./multifactorauth-shared2.js"); +var recipe = require("./multifactorauth-shared2.js"); var sessionprebuiltui = require("./sessionprebuiltui.js"); var formBase = require("./emailpassword-shared6.js"); var validators = require("./emailpassword-shared5.js"); @@ -241,7 +241,7 @@ var LinkClickedScreen$1 = function (props) { var defaultTranslationsPasswordless = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { GENERAL_ERROR_EMAIL_UNDEFINED: "Please set your email", GENERAL_ERROR_EMAIL_NON_STRING: "Email must be of type string", @@ -949,23 +949,14 @@ function LinkSentWrapper(props) { ); } -function useChildProps$4( - recipe$1, - loginAttemptInfo, - error, - onError, - clearError, - rebuildAuthPage, - userContext, - navigate -) { +function useChildProps$4(recipe, loginAttemptInfo, error, onError, clearError, rebuildAuthPage, userContext, navigate) { var _this = this; var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React__namespace.useMemo( function () { - return getModifiedRecipeImplementation$4(recipe$1.webJSRecipe, onError, rebuildAuthPage); + return getModifiedRecipeImplementation$4(recipe.webJSRecipe, onError, rebuildAuthPage); }, - [recipe$1, onError, rebuildAuthPage] + [recipe, onError, rebuildAuthPage] ); var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); return React.useMemo( @@ -1009,11 +1000,11 @@ function useChildProps$4( (payloadAfterCall !== undefined && session$1.accessTokenPayload.sessionHandle !== payloadAfterCall.sessionHandle), - recipeId: recipe$1.recipeID, + recipeId: recipe.recipeID, tenantIdFromQueryParams: genericComponentOverrideContext.getTenantIdFromQueryParams(), }, - recipe$1.recipeID, + recipe.recipeID, genericComponentOverrideContext.getRedirectToPathFromURL(), userContext, navigate @@ -1055,7 +1046,7 @@ function useChildProps$4( _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -1087,7 +1078,7 @@ function useChildProps$4( onError: onError, clearError: clearError, recipeImplementation: recipeImplementation, - config: recipe$1.config, + config: recipe.config, }; }, [error, recipeImplementation] @@ -3777,7 +3768,7 @@ var UserInputCodeForm = uiEntry.withOverride("PasswordlessUserInputCodeForm", fu clearOnSubmit: true, autoComplete: "one-time-code", placeholder: "", - validate: recipe$1.userInputCodeValidate, + validate: componentOverrideContext$1.userInputCodeValidate, }, ], onSuccess: props.onSuccess, @@ -4310,7 +4301,7 @@ var useFeatureReducer = function () { } ); }; -function useChildProps$3(recipe$1, recipeImplementation, state, contactMethod, dispatch, userContext, navigate) { +function useChildProps$3(recipe, recipeImplementation, state, contactMethod, dispatch, userContext, navigate) { var _this = this; var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); return React.useMemo( @@ -4322,7 +4313,7 @@ function useChildProps$3(recipe$1, recipeImplementation, state, contactMethod, d return types.Session.getInstanceOrThrow() .validateGlobalClaimsAndHandleSuccessRedirection( undefined, - recipe$1.recipeID, + recipe.recipeID, redirectToPath, userContext, navigate @@ -4421,7 +4412,7 @@ function useChildProps$3(recipe$1, recipeImplementation, state, contactMethod, d _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -4453,10 +4444,10 @@ function useChildProps$3(recipe$1, recipeImplementation, state, contactMethod, d }); }, recipeImplementation: recipeImplementation, - config: recipe$1.config, + config: recipe.config, contactMethod: contactMethod, validatePhoneNumber: - (_a = recipe$1.config.validatePhoneNumber) !== null && _a !== void 0 + (_a = recipe.config.validatePhoneNumber) !== null && _a !== void 0 ? _a : defaultPhoneNumberValidator, }; @@ -4548,7 +4539,7 @@ function useOnLoad(props, recipeImplementation, dispatch, userContext) { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe$2.MultiFactorAuth.getInstanceOrThrow().webJSRecipe.resyncSessionAndFetchMFAInfo({ + recipe.MultiFactorAuth.getInstanceOrThrow().webJSRecipe.resyncSessionAndFetchMFAInfo({ userContext: userContext, }), ]; @@ -4604,7 +4595,9 @@ function useOnLoad(props, recipeImplementation, dispatch, userContext) { !( loginAttemptInfo && (props.contactMethod !== loginAttemptInfo.contactMethod || - !recipe$1.checkAdditionalLoginAttemptInfoProperties(loginAttemptInfo)) + !componentOverrideContext$1.checkAdditionalLoginAttemptInfoProperties( + loginAttemptInfo + )) ) ) return [3 /*break*/, 3]; @@ -4651,10 +4644,10 @@ function useOnLoad(props, recipeImplementation, dispatch, userContext) { case 7: showBackButton = mfaInfo.factors.next.length === 0 || - recipe$2.getAvailableFactors( + recipe.getAvailableFactors( mfaInfo.factors, undefined, - recipe$2.MultiFactorAuth.getInstanceOrThrow(), + recipe.MultiFactorAuth.getInstanceOrThrow(), userContext ).length !== 1; contactInfoList = @@ -4717,7 +4710,7 @@ function useOnLoad(props, recipeImplementation, dispatch, userContext) { _c.label = 12; case 12: _c.trys.push([12, 14, , 15]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -5060,7 +5053,7 @@ var EmailOrPhoneForm = uiEntry.withOverride( autofocus: true, placeholder: "", autoComplete: "tel", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, }, ] : [ @@ -5101,7 +5094,7 @@ var EmailOrPhoneForm = uiEntry.withOverride( autofocus: true, placeholder: "", autoComplete: "email", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, }, ], buttonLabel: "PWLESS_SIGN_IN_UP_CONTINUE_BUTTON", @@ -5253,7 +5246,7 @@ function getActiveScreen$1(factorIds) { } function useChildProps$2( - recipe$1, + recipe, factorIds, onAuthSuccess, error, @@ -5267,11 +5260,9 @@ function useChildProps$2( var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React__namespace.useMemo( function () { - return ( - recipe$1 && getModifiedRecipeImplementation$2(recipe$1.webJSRecipe, recipe$1.config, rebuildAuthPage) - ); + return recipe && getModifiedRecipeImplementation$2(recipe.webJSRecipe, recipe.config, rebuildAuthPage); }, - [recipe$1] + [recipe] ); var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); return React.useMemo( @@ -5353,7 +5344,7 @@ function useChildProps$2( _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -5382,9 +5373,9 @@ function useChildProps$2( }, factorIds: factorIds, recipeImplementation: recipeImplementation, - config: recipe$1.config, + config: recipe.config, validatePhoneNumber: - (_a = recipe$1.config.validatePhoneNumber) !== null && _a !== void 0 + (_a = recipe.config.validatePhoneNumber) !== null && _a !== void 0 ? _a : defaultPhoneNumberValidator, }; @@ -5569,6 +5560,16 @@ var EPComboEmailForm = uiEntry.withOverride( function PasswordlessEPComboEmailForm(props) { var _this = this; var t = translationContext.useTranslation(); + var footer = props.footer; + if (!footer && props.showContinueWithPasswordlessLink) { + footer = jsxRuntime.jsx(ContinueWithPasswordlessFooter, { + isPhoneNumber: false, + onContinueWithPasswordlessClick: props.onContinueWithPasswordlessClick, + onError: props.onError, + config: props.config, + validatePhoneNumber: props.validatePhoneNumber, + }); + } var formFields = [ { id: "email", @@ -5578,7 +5579,7 @@ var EPComboEmailForm = uiEntry.withOverride( autofocus: true, placeholder: "", autoComplete: "email", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, }, ]; if (props.showPasswordField) { @@ -5588,7 +5589,7 @@ var EPComboEmailForm = uiEntry.withOverride( optional: false, placeholder: "", label: "", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, labelComponent: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( @@ -5604,7 +5605,7 @@ var EPComboEmailForm = uiEntry.withOverride( genericComponentOverrideContext.__assign( { onClick: function () { - return recipe$3.EmailPassword.getInstanceOrThrow().redirect( + return recipe$1.EmailPassword.getInstanceOrThrow().redirect( { action: "RESET_PASSWORD", tenantIdFromQueryParams: @@ -5664,15 +5665,7 @@ var EPComboEmailForm = uiEntry.withOverride( }, validateOnBlur: false, showLabels: true, - footer: props.showContinueWithPasswordlessLink - ? jsxRuntime.jsx(ContinueWithPasswordlessFooter, { - isPhoneNumber: false, - onContinueWithPasswordlessClick: props.onContinueWithPasswordlessClick, - onError: props.onError, - config: props.config, - validatePhoneNumber: props.validatePhoneNumber, - }) - : undefined, + footer: footer, }); } ); @@ -5728,7 +5721,7 @@ var EPComboEmailOrPhoneForm = uiEntry.withOverride( autofocus: true, placeholder: "", autoComplete: "tel", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, }, ] : [ @@ -5764,9 +5757,19 @@ var EPComboEmailOrPhoneForm = uiEntry.withOverride( autofocus: true, placeholder: "", autoComplete: "email", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, }, ]; + var footer = props.footer; + if (!footer && props.showContinueWithPasswordlessLink) { + footer = jsxRuntime.jsx(ContinueWithPasswordlessFooter, { + isPhoneNumber: false, + onContinueWithPasswordlessClick: props.onContinueWithPasswordlessClick, + onError: props.onError, + config: props.config, + validatePhoneNumber: props.validatePhoneNumber, + }); + } if (props.showPasswordField) { formFields.push({ id: "password", @@ -5774,7 +5777,7 @@ var EPComboEmailOrPhoneForm = uiEntry.withOverride( optional: false, placeholder: "", label: "", - validate: recipe$1.defaultValidate, + validate: componentOverrideContext$1.defaultValidate, labelComponent: jsxRuntime.jsxs( "div", genericComponentOverrideContext.__assign( @@ -5790,7 +5793,7 @@ var EPComboEmailOrPhoneForm = uiEntry.withOverride( genericComponentOverrideContext.__assign( { onClick: function () { - return recipe$3.EmailPassword.getInstanceOrThrow().redirect( + return recipe$1.EmailPassword.getInstanceOrThrow().redirect( { action: "RESET_PASSWORD", tenantIdFromQueryParams: @@ -5870,15 +5873,7 @@ var EPComboEmailOrPhoneForm = uiEntry.withOverride( validateOnBlur: false, showLabels: true, onSuccess: props.onSuccess, - footer: props.showContinueWithPasswordlessLink - ? jsxRuntime.jsx(ContinueWithPasswordlessFooter, { - isPhoneNumber: props.isPhoneNumber, - onContinueWithPasswordlessClick: props.onContinueWithPasswordlessClick, - validatePhoneNumber: props.validatePhoneNumber, - onError: props.onError, - config: props.config, - }) - : undefined, + footer: footer, }); } ); @@ -5935,7 +5930,7 @@ function getActiveScreen(factorIds) { } function useChildProps$1( - recipe$1, + recipe, factorIds, onAuthSuccess, error, @@ -5949,13 +5944,11 @@ function useChildProps$1( var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React__namespace.useMemo( function () { - return ( - recipe$1 && getModifiedRecipeImplementation$1(recipe$1.webJSRecipe, recipe$1.config, rebuildAuthPage) - ); + return recipe && getModifiedRecipeImplementation$1(recipe.webJSRecipe, recipe.config, rebuildAuthPage); }, - [recipe$1] + [recipe] ); - var _a = React__namespace.useState(!recipe$1.config.signInUpFeature.defaultToEmail), + var _a = React__namespace.useState(!recipe.config.signInUpFeature.defaultToEmail), isPhoneNumber = _a[0], setIsPhoneNumber = _a[1]; var _b = React__namespace.useState(false), @@ -6010,14 +6003,14 @@ function useChildProps$1( } case 2: email = contactInfo; - if (recipe$1.config.contactMethod === "PHONE" || !isPasswordlessEmailEnabled) { + if (recipe.config.contactMethod === "PHONE" || !isPasswordlessEmailEnabled) { setShowPasswordField(true); return [2 /*return*/, { status: "OK" }]; } return [ 4 /*yield*/, Promise.all([ - recipe$3.EmailPassword.getInstanceOrThrow().webJSRecipe.doesEmailExist({ + recipe$1.EmailPassword.getInstanceOrThrow().webJSRecipe.doesEmailExist({ email: email, userContext: userContext, }), @@ -6077,7 +6070,7 @@ function useChildProps$1( 4 /*yield*/, genericComponentOverrideContext.validateForm( formFields, - recipe$3.EmailPassword.getInstanceOrThrow().config.signInAndUpFeature + recipe$1.EmailPassword.getInstanceOrThrow().config.signInAndUpFeature .signInForm.formFields ), ]; @@ -6094,7 +6087,7 @@ function useChildProps$1( } return [ 4 /*yield*/, - recipe$3.EmailPassword.getInstanceOrThrow().webJSRecipe.signIn({ + recipe$1.EmailPassword.getInstanceOrThrow().webJSRecipe.signIn({ formFields: formFields, shouldTryLinkingWithSessionUser: false, userContext: userContext, @@ -6188,8 +6181,8 @@ function useChildProps$1( session$1.accessTokenPayload.sessionHandle !== payloadAfterCall.sessionHandle), recipeId: result.isEmailPassword - ? recipe$3.EmailPassword.RECIPE_ID - : recipe$1.recipeID, + ? recipe$1.EmailPassword.RECIPE_ID + : recipe.recipeID, }).catch(rethrowInRender), ]; } @@ -6230,7 +6223,7 @@ function useChildProps$1( _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -6259,9 +6252,9 @@ function useChildProps$1( }, factorIds: factorIds, recipeImplementation: recipeImplementation, - config: recipe$1.config, + config: recipe.config, validatePhoneNumber: - (_a = recipe$1.config.validatePhoneNumber) !== null && _a !== void 0 + (_a = recipe.config.validatePhoneNumber) !== null && _a !== void 0 ? _a : defaultPhoneNumberValidator, navigate: navigate, @@ -6384,7 +6377,7 @@ function getModifiedRecipeImplementation$1(originalImpl, config, rebuildAuthPage } function useChildProps( - recipe$1, + recipe, loginAttemptInfo, onAuthSuccess, error, @@ -6398,9 +6391,9 @@ function useChildProps( var session$1 = uiEntry.useSessionContext(); var recipeImplementation = React__namespace.useMemo( function () { - return getModifiedRecipeImplementation(recipe$1.webJSRecipe, onError, rebuildAuthPage); + return getModifiedRecipeImplementation(recipe.webJSRecipe, onError, rebuildAuthPage); }, - [recipe$1, onError, rebuildAuthPage] + [recipe, onError, rebuildAuthPage] ); var rethrowInRender = genericComponentOverrideContext.useRethrowInRender(); return React.useMemo( @@ -6478,7 +6471,7 @@ function useChildProps( _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -6510,7 +6503,7 @@ function useChildProps( onError: onError, clearError: clearError, recipeImplementation: recipeImplementation, - config: recipe$1.config, + config: recipe.config, }; }, [error, recipeImplementation] @@ -6706,7 +6699,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe$1.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } var features = {}; if (_this.recipeInstance.config.linkClickedScreenFeature.disableDefaultUI !== true) { @@ -6720,7 +6713,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("linkClickedScreen", props, useComponentOverrides); }, - recipeID: recipe$1.Passwordless.RECIPE_ID, + recipeID: componentOverrideContext$1.Passwordless.RECIPE_ID, }; } if (_this.recipeInstance.config.mfaFeature.disableDefaultUI !== true) { @@ -6734,7 +6727,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("otp-phone", props, useComponentOverrides); }, - recipeID: recipe$1.Passwordless.RECIPE_ID, + recipeID: componentOverrideContext$1.Passwordless.RECIPE_ID, }; var normalisedFullPathEmail = _this.recipeInstance.config.appInfo.websiteBasePath.appendPath( new NormalisedURLPath__default.default("/mfa/otp-email") @@ -6746,14 +6739,14 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("otp-email", props, useComponentOverrides); }, - recipeID: recipe$1.Passwordless.RECIPE_ID, + recipeID: componentOverrideContext$1.Passwordless.RECIPE_ID, }; } return features; }; _this.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe$1.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } if (componentName === "linkClickedScreen") { return jsxRuntime.jsx( @@ -6856,20 +6849,20 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { // Static methods PasswordlessPreBuiltUI.getInstanceOrInitAndGetInstance = function () { if (PasswordlessPreBuiltUI.instance === undefined) { - var recipeInstance = recipe$1.Passwordless.getInstanceOrThrow(); + var recipeInstance = componentOverrideContext$1.Passwordless.getInstanceOrThrow(); PasswordlessPreBuiltUI.instance = new PasswordlessPreBuiltUI(recipeInstance); } return PasswordlessPreBuiltUI.instance; }; PasswordlessPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe$1.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } return PasswordlessPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; PasswordlessPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe$1.useContext; + useComponentOverrides = componentOverrideContext$1.useContext; } return PasswordlessPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -6899,7 +6892,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { case 0: return [ 4 /*yield*/, - recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( + componentOverrideContext$1.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( { userContext: userContext, } @@ -6918,8 +6911,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { return [3 /*break*/, 3]; return [ 4 /*yield*/, - (_b = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _b === void 0 + (_b = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _b === void 0 ? void 0 : _b.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -6938,8 +6932,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { return [3 /*break*/, 5]; return [ 4 /*yield*/, - (_c = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _c === void 0 + (_c = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _c === void 0 ? void 0 : _c.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -6948,7 +6943,11 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { loginAttemptInfo = undefined; return [3 /*break*/, 7]; case 5: - if (!!recipe$1.checkAdditionalLoginAttemptInfoProperties(loginAttemptInfo)) + if ( + !!componentOverrideContext$1.checkAdditionalLoginAttemptInfoProperties( + loginAttemptInfo + ) + ) return [3 /*break*/, 7]; // If these properties are not set, it means that the user likely started logging in // using a custom UI and then switched to the pre-built UI. In that case, we should clear @@ -6956,8 +6955,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { // requires these properties to be set in order to show the correct UI. return [ 4 /*yield*/, - (_d = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _d === void 0 + (_d = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _d === void 0 ? void 0 : _d.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -6999,7 +6999,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { LinkSentFeature, genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, - useComponentOverrides: recipe$1.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, loginAttemptInfo: preloadInfo, }), "linkSentFullPage" @@ -7017,7 +7017,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { case 0: return [ 4 /*yield*/, - recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( + componentOverrideContext$1.Passwordless.getInstanceOrThrow().webJSRecipe.getLoginAttemptInfo( { userContext: userContext, } @@ -7036,8 +7036,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { return [3 /*break*/, 3]; return [ 4 /*yield*/, - (_b = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _b === void 0 + (_b = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _b === void 0 ? void 0 : _b.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -7056,8 +7057,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { return [3 /*break*/, 5]; return [ 4 /*yield*/, - (_c = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _c === void 0 + (_c = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _c === void 0 ? void 0 : _c.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -7066,7 +7068,11 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { loginAttemptInfo = undefined; return [3 /*break*/, 7]; case 5: - if (!!recipe$1.checkAdditionalLoginAttemptInfoProperties(loginAttemptInfo)) + if ( + !!componentOverrideContext$1.checkAdditionalLoginAttemptInfoProperties( + loginAttemptInfo + ) + ) return [3 /*break*/, 7]; // If these properties are not set, it means that the user likely started logging in // using a custom UI and then switched to the pre-built UI. In that case, we should clear @@ -7074,8 +7080,9 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { // requires these properties to be set in order to show the correct UI. return [ 4 /*yield*/, - (_d = recipe$1.Passwordless.getInstanceOrThrow().webJSRecipe) === - null || _d === void 0 + (_d = + componentOverrideContext$1.Passwordless.getInstanceOrThrow() + .webJSRecipe) === null || _d === void 0 ? void 0 : _d.clearLoginAttemptInfo({ userContext: userContext }), ]; @@ -7117,7 +7124,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { UserInputCodeFeature, genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, - useComponentOverrides: recipe$1.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, loginAttemptInfo: preloadInfo, }), "userInputCodeFullPage" @@ -7136,7 +7143,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign({}, props, { key: factors.join("|"), recipe: _this.recipeInstance, - useComponentOverrides: recipe$1.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, factorIds: factors, }) ); @@ -7156,7 +7163,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, factorIds: factors, - useComponentOverrides: recipe$1.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, }), factors.join("|") ); @@ -7168,7 +7175,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { // We only do this and check if we should add this component // because it provides a better error message if EP is not initialized, but requested try { - recipe$3.EmailPassword.getInstanceOrThrow(); + recipe$1.EmailPassword.getInstanceOrThrow(); res.push.apply( res, factorCombos @@ -7190,7 +7197,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign({}, props, { key: factors.join("|"), recipe: _this.recipeInstance, - useComponentOverrides: recipe$1.useContext, + useComponentOverrides: componentOverrideContext$1.useContext, factorIds: factors, }) ); @@ -7213,6 +7220,7 @@ var PasswordlessPreBuiltUI = /** @class */ (function (_super) { }; var _a; _a = PasswordlessPreBuiltUI; + PasswordlessPreBuiltUI.languageTranslations = defaultTranslationsPasswordless; PasswordlessPreBuiltUI.LinkClicked = function (props) { return _a.getFeatureComponent("linkClickedScreen", props); }; diff --git a/lib/build/recipe/authRecipe/componentOverrideContext.d.ts b/lib/build/recipe/authRecipe/componentOverrideContext.d.ts index 519438d4a..75e35cb28 100644 --- a/lib/build/recipe/authRecipe/componentOverrideContext.d.ts +++ b/lib/build/recipe/authRecipe/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/emailpassword/componentOverrideContext.d.ts b/lib/build/recipe/emailpassword/componentOverrideContext.d.ts index 288fc18e7..cf5677d19 100644 --- a/lib/build/recipe/emailpassword/componentOverrideContext.d.ts +++ b/lib/build/recipe/emailpassword/componentOverrideContext.d.ts @@ -1,6 +1,503 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("./types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("./types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("./types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("./types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("./types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.d.ts b/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.d.ts index a21d82bb0..fe36a31c5 100644 --- a/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.d.ts +++ b/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.d.ts @@ -10,5 +10,7 @@ export declare const ResetPasswordEmail: import("react").ComponentType< onError: (error: string) => void; config: import("../../../types").NormalisedConfig; onBackButtonClicked: () => void; + } & { + footer?: JSX.Element | undefined; } >; diff --git a/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.d.ts b/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.d.ts index 9628fda18..3309b8072 100644 --- a/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.d.ts +++ b/lib/build/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.d.ts @@ -11,5 +11,7 @@ export declare const SubmitNewPassword: import("react").ComponentType< config: import("../../../types").NormalisedConfig; onSignInClicked: () => void; token: string; + } & { + footer?: JSX.Element | undefined; } >; diff --git a/lib/build/recipe/emailpassword/prebuiltui.d.ts b/lib/build/recipe/emailpassword/prebuiltui.d.ts index dde794f58..01251cb8b 100644 --- a/lib/build/recipe/emailpassword/prebuiltui.d.ts +++ b/lib/build/recipe/emailpassword/prebuiltui.d.ts @@ -103,6 +103,101 @@ export declare class EmailPasswordPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + EMAIL_PASSWORD_EMAIL_LABEL: string; + EMAIL_PASSWORD_EMAIL_PLACEHOLDER: string; + EMAIL_PASSWORD_PASSWORD_LABEL: string; + EMAIL_PASSWORD_PASSWORD_PLACEHOLDER: string; + EMAIL_PASSWORD_SIGN_IN_FORGOT_PW_LINK: string; + EMAIL_PASSWORD_SIGN_IN_SUBMIT_BTN: string; + EMAIL_PASSWORD_SIGN_IN_WRONG_CREDENTIALS_ERROR: string; + EMAIL_PASSWORD_SIGN_UP_SUBMIT_BTN: string; + EMAIL_PASSWORD_EMAIL_ALREADY_EXISTS: string; + EMAIL_PASSWORD_RESET_HEADER_TITLE: string; + EMAIL_PASSWORD_RESET_HEADER_SUBTITLE: string; + EMAIL_PASSWORD_RESET_SEND_FALLBACK_EMAIL: string; + EMAIL_PASSWORD_RESET_SEND_BEFORE_EMAIL: string; + EMAIL_PASSWORD_RESET_SEND_AFTER_EMAIL: string; + EMAIL_PASSWORD_RESET_RESEND_LINK: string; + EMAIL_PASSWORD_RESET_SEND_BTN: string; + EMAIL_PASSWORD_RESET_SIGN_IN_LINK: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_HEADER_TITLE: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_DESC: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_SUCCESS_SIGN_IN_BTN: string; + EMAIL_PASSWORD_NEW_PASSWORD_LABEL: string; + EMAIL_PASSWORD_NEW_PASSWORD_PLACEHOLDER: string; + EMAIL_PASSWORD_CONFIRM_PASSWORD_LABEL: string; + EMAIL_PASSWORD_CONFIRM_PASSWORD_PLACEHOLDER: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_TITLE: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_HEADER_SUBTITLE: string; + EMAIL_PASSWORD_RESET_SUBMIT_PW_CHANGE_PW_BTN: string; + EMAIL_PASSWORD_RESET_PASSWORD_INVALID_TOKEN_ERROR: string; + ERROR_EMAIL_NON_STRING: string; + ERROR_EMAIL_INVALID: string; + ERROR_PASSWORD_NON_STRING: string; + ERROR_PASSWORD_TOO_SHORT: string; + ERROR_PASSWORD_TOO_LONG: string; + ERROR_PASSWORD_NO_ALPHA: string; + ERROR_PASSWORD_NO_NUM: string; + ERROR_CONFIRM_PASSWORD_NO_MATCH: string; + ERROR_NON_OPTIONAL: string; + "This email already exists. Please sign in instead.": undefined; + "Field is not optional": undefined; + "Password must contain at least 8 characters, including a number": undefined; + "Password's length must be lesser than 100 characters": undefined; + "Password must contain at least one alphabet": undefined; + "Password must contain at least one number": undefined; + "Email is invalid": undefined; + "Reset password link was not created because of account take over risk. Please contact support. (ERR_CODE_001)": undefined; + "Cannot sign up due to security reasons. Please try logging in, use a different login method or contact support. (ERR_CODE_007)": undefined; + "Cannot sign in due to security reasons. Please try resetting your password, use a different login method or contact support. (ERR_CODE_008)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_009)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_010)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_011)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_012)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_013)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_014)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_015)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_016)": undefined; + EMAIL_VERIFICATION_RESEND_SUCCESS: string; + EMAIL_VERIFICATION_SEND_TITLE: string; + EMAIL_VERIFICATION_SEND_DESC_START: string; + EMAIL_VERIFICATION_SEND_DESC_STRONG: string; + EMAIL_VERIFICATION_SEND_DESC_END: string; + EMAIL_VERIFICATION_RESEND_BTN: string; + EMAIL_VERIFICATION_LOGOUT: string; + EMAIL_VERIFICATION_SUCCESS: string; + EMAIL_VERIFICATION_CONTINUE_BTN: string; + EMAIL_VERIFICATION_CONTINUE_LINK: string; + EMAIL_VERIFICATION_EXPIRED: string; + EMAIL_VERIFICATION_ERROR_TITLE: string; + EMAIL_VERIFICATION_ERROR_DESC: string; + EMAIL_VERIFICATION_LINK_CLICKED_HEADER: string; + EMAIL_VERIFICATION_LINK_CLICKED_DESC: string; + EMAIL_VERIFICATION_LINK_CLICKED_CONTINUE_BUTTON: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: EmailPassword); static getInstanceOrInitAndGetInstance(): EmailPasswordPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/emailverification/componentOverrideContext.d.ts b/lib/build/recipe/emailverification/componentOverrideContext.d.ts index 288fc18e7..05c3bcd53 100644 --- a/lib/build/recipe/emailverification/componentOverrideContext.d.ts +++ b/lib/build/recipe/emailverification/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("./types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("./types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/emailverification/prebuiltui.d.ts b/lib/build/recipe/emailverification/prebuiltui.d.ts index 4ada857a7..3873fecb5 100644 --- a/lib/build/recipe/emailverification/prebuiltui.d.ts +++ b/lib/build/recipe/emailverification/prebuiltui.d.ts @@ -48,6 +48,46 @@ export declare class EmailVerificationPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + EMAIL_VERIFICATION_RESEND_SUCCESS: string; + EMAIL_VERIFICATION_SEND_TITLE: string; + EMAIL_VERIFICATION_SEND_DESC_START: string; + EMAIL_VERIFICATION_SEND_DESC_STRONG: string; + EMAIL_VERIFICATION_SEND_DESC_END: string; + EMAIL_VERIFICATION_RESEND_BTN: string; + EMAIL_VERIFICATION_LOGOUT: string; + EMAIL_VERIFICATION_SUCCESS: string; + EMAIL_VERIFICATION_CONTINUE_BTN: string; + EMAIL_VERIFICATION_CONTINUE_LINK: string; + EMAIL_VERIFICATION_EXPIRED: string; + EMAIL_VERIFICATION_ERROR_TITLE: string; + EMAIL_VERIFICATION_ERROR_DESC: string; + EMAIL_VERIFICATION_LINK_CLICKED_HEADER: string; + EMAIL_VERIFICATION_LINK_CLICKED_DESC: string; + EMAIL_VERIFICATION_LINK_CLICKED_CONTINUE_BUTTON: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: EmailVerificationRecipe); static getInstanceOrInitAndGetInstance(): EmailVerificationPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/emailverification/recipe.d.ts b/lib/build/recipe/emailverification/recipe.d.ts index e655d2dd2..79d3e507d 100644 --- a/lib/build/recipe/emailverification/recipe.d.ts +++ b/lib/build/recipe/emailverification/recipe.d.ts @@ -22,9 +22,9 @@ export default class EmailVerification extends RecipeModule< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: EmailVerification; - static RECIPE_ID: string; + static RECIPE_ID: "emailverification"; static EmailVerificationClaim: EmailVerificationClaimClass; - recipeID: string; + recipeID: "emailverification"; constructor( config: NormalisedConfigWithAppInfoAndRecipeID, webJSRecipe?: WebJSRecipeInterface diff --git a/lib/build/recipe/multifactorauth/componentOverrideContext.d.ts b/lib/build/recipe/multifactorauth/componentOverrideContext.d.ts index 288fc18e7..b8fc67c77 100644 --- a/lib/build/recipe/multifactorauth/componentOverrideContext.d.ts +++ b/lib/build/recipe/multifactorauth/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("./types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/multifactorauth/index.d.ts b/lib/build/recipe/multifactorauth/index.d.ts index 3ec394fa8..0e14d506e 100644 --- a/lib/build/recipe/multifactorauth/index.d.ts +++ b/lib/build/recipe/multifactorauth/index.d.ts @@ -50,6 +50,9 @@ export default class Wrapper { navigate?: Navigate; userContext?: UserContext; }): Promise; + static getSecondaryFactors(input: { + userContext?: UserContext; + }): import("./types").SecondaryFactorRedirectionInfo[]; static ComponentsOverrideProvider: import("react").FC< import("react").PropsWithChildren<{ components: import("./types").ComponentOverrideMap; @@ -60,6 +63,7 @@ declare const init: typeof Wrapper.init; declare const resyncSessionAndFetchMFAInfo: typeof Wrapper.resyncSessionAndFetchMFAInfo; declare const redirectToFactor: typeof Wrapper.redirectToFactor; declare const redirectToFactorChooser: typeof Wrapper.redirectToFactorChooser; +declare const getSecondaryFactors: typeof Wrapper.getSecondaryFactors; declare const MultiFactorAuthComponentsOverrideProvider: import("react").FC< import("react").PropsWithChildren<{ components: import("./types").ComponentOverrideMap; @@ -71,6 +75,7 @@ export { resyncSessionAndFetchMFAInfo, redirectToFactor, redirectToFactorChooser, + getSecondaryFactors, MultiFactorAuthComponentsOverrideProvider, GetRedirectionURLContext, PreAPIHookContext as PreAPIHookContext, diff --git a/lib/build/recipe/multifactorauth/prebuiltui.d.ts b/lib/build/recipe/multifactorauth/prebuiltui.d.ts index 796cdfa3d..c7e8ab2cb 100644 --- a/lib/build/recipe/multifactorauth/prebuiltui.d.ts +++ b/lib/build/recipe/multifactorauth/prebuiltui.d.ts @@ -42,6 +42,40 @@ export declare class MultiFactorAuthPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + MULTI_FACTOR_CHOOSER_HEADER_TITLE: string; + MULTI_FACTOR_AUTH_LOGOUT: string; + PWLESS_MFA_OTP_PHONE_NAME: string; + PWLESS_MFA_OTP_PHONE_DESCRIPTION: string; + PWLESS_MFA_OTP_EMAIL_NAME: string; + PWLESS_MFA_OTP_EMAIL_DESCRIPTION: string; + TOTP_MFA_NAME: string; + TOTP_MFA_DESCRIPTION: string; + MFA_NO_AVAILABLE_OPTIONS: string; + MFA_NO_AVAILABLE_OPTIONS_LOGIN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: MultiFactorAuthRecipe); static getInstanceOrInitAndGetInstance(): MultiFactorAuthPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/multifactorauth/recipe.d.ts b/lib/build/recipe/multifactorauth/recipe.d.ts index 8e2b15e5f..d406b33af 100644 --- a/lib/build/recipe/multifactorauth/recipe.d.ts +++ b/lib/build/recipe/multifactorauth/recipe.d.ts @@ -24,9 +24,9 @@ export default class MultiFactorAuth extends RecipeModule< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: MultiFactorAuth; - static RECIPE_ID: string; + static RECIPE_ID: "multifactorauth"; static MultiFactorAuthClaim: MultiFactorAuthClaimClass; - recipeID: string; + recipeID: "multifactorauth"; private secondaryFactors; constructor( config: NormalisedConfigWithAppInfoAndRecipeID, diff --git a/lib/build/recipe/multitenancy/componentOverrideContext.d.ts b/lib/build/recipe/multitenancy/componentOverrideContext.d.ts index 288fc18e7..d6691de7d 100644 --- a/lib/build/recipe/multitenancy/componentOverrideContext.d.ts +++ b/lib/build/recipe/multitenancy/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("./types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/oauth2provider/componentOverrideContext.d.ts b/lib/build/recipe/oauth2provider/componentOverrideContext.d.ts index 288fc18e7..ae184816e 100644 --- a/lib/build/recipe/oauth2provider/componentOverrideContext.d.ts +++ b/lib/build/recipe/oauth2provider/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/oauth2provider/prebuiltui.d.ts b/lib/build/recipe/oauth2provider/prebuiltui.d.ts index 8b17b7fb5..caf39ca23 100644 --- a/lib/build/recipe/oauth2provider/prebuiltui.d.ts +++ b/lib/build/recipe/oauth2provider/prebuiltui.d.ts @@ -34,6 +34,33 @@ export declare class OAuth2ProviderPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + LOGGING_OUT: string; + LOGOUT_CONFIRMATION: string; + LOGOUT: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: OAuth2ProviderRecipe); static getInstanceOrInitAndGetInstance(): OAuth2ProviderPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/passwordless/componentOverrideContext.d.ts b/lib/build/recipe/passwordless/componentOverrideContext.d.ts index 288fc18e7..ff339f158 100644 --- a/lib/build/recipe/passwordless/componentOverrideContext.d.ts +++ b/lib/build/recipe/passwordless/componentOverrideContext.d.ts @@ -1,6 +1,508 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("./types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: import("./types").LinkClickedScreenProps) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("./types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.d.ts b/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.d.ts index 5151d400d..15bf8cf9c 100644 --- a/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.d.ts +++ b/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.d.ts @@ -1,3 +1,7 @@ /// import type { SignInUpEPComboEmailFormProps } from "../../../types"; -export declare const EPComboEmailForm: import("react").ComponentType; +export declare const EPComboEmailForm: import("react").ComponentType< + SignInUpEPComboEmailFormProps & { + footer?: JSX.Element | undefined; + } +>; diff --git a/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.d.ts b/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.d.ts index dad0ab75e..a26759918 100644 --- a/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.d.ts +++ b/lib/build/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.d.ts @@ -1,3 +1,7 @@ /// import type { SignInUpEPComboEmailOrPhoneFormProps } from "../../../types"; -export declare const EPComboEmailOrPhoneForm: import("react").ComponentType; +export declare const EPComboEmailOrPhoneForm: import("react").ComponentType< + SignInUpEPComboEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } +>; diff --git a/lib/build/recipe/passwordless/prebuiltui.d.ts b/lib/build/recipe/passwordless/prebuiltui.d.ts index 10c96a0a5..c1d0f85a6 100644 --- a/lib/build/recipe/passwordless/prebuiltui.d.ts +++ b/lib/build/recipe/passwordless/prebuiltui.d.ts @@ -88,6 +88,85 @@ export declare class PasswordlessPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + GENERAL_ERROR_EMAIL_UNDEFINED: string; + GENERAL_ERROR_EMAIL_NON_STRING: string; + GENERAL_ERROR_EMAIL_INVALID: string; + GENERAL_ERROR_PHONE_UNDEFINED: string; + GENERAL_ERROR_PHONE_NON_STRING: string; + GENERAL_ERROR_PHONE_INVALID: string; + GENERAL_ERROR_OTP_UNDEFINED: string; + GENERAL_ERROR_OTP_INVALID: string; + GENERAL_ERROR_OTP_EXPIRED: string; + GENERAL_ERROR_OTP_NON_STRING: string; + GENERAL_ERROR_OTP_EMPTY: string; + ERROR_SIGN_IN_UP_LINK: string; + ERROR_SIGN_IN_UP_RESEND_RESTART_FLOW: string; + ERROR_SIGN_IN_UP_CODE_CONSUME_RESTART_FLOW: string; + PWLESS_SIGN_IN_UP_EMAIL_LABEL: string; + PWLESS_SIGN_IN_UP_PHONE_LABEL: string; + PWLESS_SIGN_IN_UP_SWITCH_TO_PHONE: string; + PWLESS_SIGN_IN_UP_SWITCH_TO_EMAIL: string; + PWLESS_SIGN_IN_UP_CONTINUE_BUTTON: string; + PWLESS_COMBO_CONTINUE_WITH_PASSWORDLESS_LINK: string; + PWLESS_COMBO_CONTINUE_WITH_PASSWORDLESS_BUTTON: string; + PWLESS_COMBO_PASSWORD_LABEL: string; + PWLESS_COMBO_FORGOT_PW_LINK: string; + PWLESS_LINK_SENT_RESEND_SUCCESS: string; + PWLESS_LINK_SENT_RESEND_TITLE: string; + PWLESS_LINK_SENT_RESEND_DESC_START_EMAIL: string; + PWLESS_LINK_SENT_RESEND_DESC_START_PHONE: string; + PWLESS_LINK_SENT_RESEND_DESC_END_EMAIL: string; + PWLESS_LINK_SENT_RESEND_DESC_END_PHONE: string; + PWLESS_SIGN_IN_UP_CHANGE_CONTACT_INFO_EMAIL: string; + PWLESS_SIGN_IN_UP_CHANGE_CONTACT_INFO_PHONE: string; + PWLESS_LINK_CLICKED_CONTINUE_HEADER: string; + PWLESS_LINK_CLICKED_CONTINUE_DESC: string; + PWLESS_LINK_CLICKED_CONTINUE_BUTTON: string; + PWLESS_RESEND_SUCCESS_EMAIL: string; + PWLESS_RESEND_SUCCESS_PHONE: string; + PWLESS_RESEND_BTN_DISABLED_START: string; + PWLESS_RESEND_BTN_DISABLED_END: string; + PWLESS_RESEND_BTN_EMAIL: string; + PWLESS_RESEND_BTN_PHONE: string; + PWLESS_USER_INPUT_CODE_HEADER_TITLE: string; + PWLESS_USER_INPUT_CODE_HEADER_SUBTITLE: string; + PWLESS_USER_INPUT_CODE_HEADER_SUBTITLE_LINK: string; + PWLESS_USER_INPUT_CODE_INPUT_LABEL: string; + PWLESS_MFA_HEADER_TITLE_PHONE: string; + PWLESS_MFA_HEADER_TITLE_EMAIL: string; + PWLESS_MFA_FOOTER_LOGOUT: string; + "Failed to generate a one time code. Please try again": undefined; + "Phone number is invalid": undefined; + "Email is invalid": undefined; + "Cannot sign in / up due to security reasons. Please try a different login method or contact support. (ERR_CODE_002)": undefined; + "Cannot sign in / up due to security reasons. Please try a different login method or contact support. (ERR_CODE_003)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_017)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_018)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_019)": undefined; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: Passwordless); static getInstanceOrInitAndGetInstance(): PasswordlessPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/passwordless/recipe.d.ts b/lib/build/recipe/passwordless/recipe.d.ts index 88fd8549c..d2701a856 100644 --- a/lib/build/recipe/passwordless/recipe.d.ts +++ b/lib/build/recipe/passwordless/recipe.d.ts @@ -30,8 +30,8 @@ export default class Passwordless extends AuthRecipe< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: Passwordless; - static RECIPE_ID: string; - recipeID: string; + static RECIPE_ID: "passwordless"; + recipeID: "passwordless"; firstFactorIds: ("otp-email" | "otp-phone" | "link-email" | "link-phone")[]; getFirstFactorsForAuthPage(): string[]; constructor( diff --git a/lib/build/recipe/session/componentOverrideContext.d.ts b/lib/build/recipe/session/componentOverrideContext.d.ts index 288fc18e7..9db99a3ab 100644 --- a/lib/build/recipe/session/componentOverrideContext.d.ts +++ b/lib/build/recipe/session/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/session/prebuiltui.d.ts b/lib/build/recipe/session/prebuiltui.d.ts index 85559c54b..72ae384e7 100644 --- a/lib/build/recipe/session/prebuiltui.d.ts +++ b/lib/build/recipe/session/prebuiltui.d.ts @@ -35,6 +35,33 @@ export declare class SessionPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + ACCESS_DENIED: string; + GO_BACK: string; + LOGOUT: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: Session); static getInstanceOrInitAndGetInstance(): SessionPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/session/recipe.d.ts b/lib/build/recipe/session/recipe.d.ts index 674e168a9..376f2de78 100644 --- a/lib/build/recipe/session/recipe.d.ts +++ b/lib/build/recipe/session/recipe.d.ts @@ -16,8 +16,8 @@ import type { SessionClaim } from "supertokens-web-js/recipe/session"; export default class Session extends RecipeModule { readonly webJSRecipe: Omit; static instance?: Session; - static RECIPE_ID: string; - recipeID: string; + static RECIPE_ID: "session"; + recipeID: "session"; private eventListeners; constructor( config: NormalisedConfigWithAppInfoAndRecipeID, diff --git a/lib/build/recipe/thirdparty/componentOverrideContext.d.ts b/lib/build/recipe/thirdparty/componentOverrideContext.d.ts index 288fc18e7..ea443a1de 100644 --- a/lib/build/recipe/thirdparty/componentOverrideContext.d.ts +++ b/lib/build/recipe/thirdparty/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("./types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("./types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/thirdparty/index.d.ts b/lib/build/recipe/thirdparty/index.d.ts index 6b2d6695f..08916c966 100644 --- a/lib/build/recipe/thirdparty/index.d.ts +++ b/lib/build/recipe/thirdparty/index.d.ts @@ -66,6 +66,10 @@ export default class Wrapper { fetchResponse: Response; } >; + static getProviders(): { + id: string; + name: string; + }[]; static Apple: typeof Apple; static Bitbucket: typeof Bitbucket; static Discord: typeof Discord; @@ -91,6 +95,7 @@ declare const redirectToThirdPartyLogin: typeof Wrapper.redirectToThirdPartyLogi declare const getStateAndOtherInfoFromStorage: typeof Wrapper.getStateAndOtherInfoFromStorage; declare const getAuthorisationURLWithQueryParamsAndSetState: typeof Wrapper.getAuthorisationURLWithQueryParamsAndSetState; declare const signInAndUp: typeof Wrapper.signInAndUp; +declare const getProviders: typeof Wrapper.getProviders; declare const ThirdpartyComponentsOverrideProvider: import("react").FC< import("react").PropsWithChildren<{ components: import("./types").ComponentOverrideMap; @@ -114,6 +119,7 @@ export { getStateAndOtherInfoFromStorage, getAuthorisationURLWithQueryParamsAndSetState, signInAndUp, + getProviders, redirectToThirdPartyLogin, ThirdpartyComponentsOverrideProvider, signOut, diff --git a/lib/build/recipe/thirdparty/prebuiltui.d.ts b/lib/build/recipe/thirdparty/prebuiltui.d.ts index 4c3899d89..2f8f6a51e 100644 --- a/lib/build/recipe/thirdparty/prebuiltui.d.ts +++ b/lib/build/recipe/thirdparty/prebuiltui.d.ts @@ -42,6 +42,40 @@ export declare class ThirdPartyPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + THIRD_PARTY_PROVIDER_DEFAULT_BTN_START: string; + THIRD_PARTY_PROVIDER_DEFAULT_BTN_END: string; + THIRD_PARTY_ERROR_NO_EMAIL: string; + "Cannot sign in / up due to security reasons. Please try a different login method or contact support. (ERR_CODE_004)": undefined; + "Cannot sign in / up because new email cannot be applied to existing account. Please contact support. (ERR_CODE_005)": undefined; + "Cannot sign in / up due to security reasons. Please try a different login method or contact support. (ERR_CODE_006)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_020)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_021)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_022)": undefined; + "Cannot sign in / up due to security reasons. Please contact support. (ERR_CODE_023)": undefined; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: ThirdParty); static getInstanceOrInitAndGetInstance(): ThirdPartyPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/thirdparty/recipe.d.ts b/lib/build/recipe/thirdparty/recipe.d.ts index 87602a264..8e642d4b8 100644 --- a/lib/build/recipe/thirdparty/recipe.d.ts +++ b/lib/build/recipe/thirdparty/recipe.d.ts @@ -16,8 +16,8 @@ export default class ThirdParty extends AuthRecipe< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: ThirdParty; - static RECIPE_ID: string; - recipeID: string; + static RECIPE_ID: "thirdparty"; + recipeID: "thirdparty"; firstFactorIds: "thirdparty"[]; getFirstFactorsForAuthPage(): string[]; constructor( diff --git a/lib/build/recipe/totp/componentOverrideContext.d.ts b/lib/build/recipe/totp/componentOverrideContext.d.ts index 288fc18e7..0a02988b2 100644 --- a/lib/build/recipe/totp/componentOverrideContext.d.ts +++ b/lib/build/recipe/totp/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap) + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../webauthn/types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("../webauthn/types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("../webauthn/components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/totp/prebuiltui.d.ts b/lib/build/recipe/totp/prebuiltui.d.ts index 690aa7282..a0e37d80c 100644 --- a/lib/build/recipe/totp/prebuiltui.d.ts +++ b/lib/build/recipe/totp/prebuiltui.d.ts @@ -54,6 +54,52 @@ export declare class TOTPPreBuiltUI extends RecipeRouter { SOMETHING_WENT_WRONG_ERROR_RELOAD: string; }; }; + static languageTranslations: { + en: { + TOTP_SHOW_SECRET_START: string; + TOTP_SHOW_SECRET_LINK: string; + TOTP_SHOW_SECRET_END: string; + TOTP_CODE_VERIFICATION_HEADER_TITLE: string; + TOTP_CODE_VERIFICATION_HEADER_SUBTITLE: string; + TOTP_DEVICE_SETUP_HEADER_TITLE: string; + TOTP_DEVICE_SETUP_HEADER_SUBTITLE: string; + TOTP_CODE_INPUT_LABEL: string; + TOTP_CODE_CONTINUE_BUTTON: string; + TOTP_BLOCKED_TITLE: string; + TOTP_BLOCKED_SUBTITLE: string; + TOTP_MFA_BLOCKED_TIMER_START: string; + TOTP_MFA_BLOCKED_TIMER_END: string; + TOTP_MFA_BLOCKED_RETRY: string; + TOTP_MFA_LOGOUT: string; + ERROR_TOTP_INVALID_CODE: string; + ERROR_TOTP_INVALID_CODE_RETRY_START: string; + ERROR_TOTP_INVALID_CODE_RETRY_END: string; + ERROR_TOTP_UNKNOWN_DEVICE: string; + GENERAL_ERROR_TOTP_NON_STRING: string; + GENERAL_ERROR_TOTP_EMPTY: string; + GENERAL_ERROR_TOTP_UNDEFINED: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; constructor(recipeInstance: TOTPRecipe); static getInstanceOrInitAndGetInstance(): TOTPPreBuiltUI; static getFeatures(useComponentOverrides?: () => GenericComponentOverrideMap): RecipeFeatureComponentMap; diff --git a/lib/build/recipe/totp/recipe.d.ts b/lib/build/recipe/totp/recipe.d.ts index 26ad2ff0d..2722220fd 100644 --- a/lib/build/recipe/totp/recipe.d.ts +++ b/lib/build/recipe/totp/recipe.d.ts @@ -23,8 +23,8 @@ export default class TOTP extends RecipeModule< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: TOTP; - static RECIPE_ID: string; - recipeID: string; + static RECIPE_ID: "totp"; + recipeID: "totp"; constructor( config: NormalisedConfigWithAppInfoAndRecipeID, webJSRecipe?: WebJSRecipeInterface diff --git a/lib/build/recipe/webauthn/componentOverrideContext.d.ts b/lib/build/recipe/webauthn/componentOverrideContext.d.ts index 288fc18e7..b6b7042d1 100644 --- a/lib/build/recipe/webauthn/componentOverrideContext.d.ts +++ b/lib/build/recipe/webauthn/componentOverrideContext.d.ts @@ -1,6 +1,512 @@ /// import type { ComponentOverrideMap } from "./types"; -declare const useContext: () => ComponentOverrideMap, +declare const useContext: () => + | ComponentOverrideMap + | ({ + WebauthnContinueWithPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyNotSupportedError_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyRecoveryEmailSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnRecoverAccountForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").RecoverFormProps & { + setError: import("react").Dispatch>; + } + > + > + | undefined; + WebauthnRecoverAccount_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnPasskeyConfirmation_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").SignUpFormProps & { + email?: string | undefined; + onContinueClick: () => void; + errorMessageLabel?: string | undefined; + isLoading: boolean; + hideContinueWithoutPasskey?: boolean | undefined; + isContinueDisabled?: boolean | undefined; + isPasskeySupported: boolean; + } + > + > + | undefined; + WebauthnPasskeyFeatureBlock_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + WebauthnContinueWithoutPasskey_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + WebauthnPasskeySignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("./types").SignUpFormProps & { + footer?: JSX.Element | undefined; + onContinueClick: (params: import("./types").ContinueOnSuccessParams) => void; + setActiveScreen: import("react").Dispatch< + import("react").SetStateAction< + import("./components/themes/signUp/signUpForm").SignUpScreen + > + >; + onRecoverAccountClick: () => void; + } + > + > + | undefined; + WebauthnPasskeySignUpSomethingWentWrong_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailPasswordSignInForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onForgotPasswordClick: () => void; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordSignUpForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + clearError: () => void; + onFetchError: (error: Response) => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + signInClicked?: (() => void) | undefined; + onSuccess: (result: { user: import("supertokens-web-js/types").User }) => void; + formFields: import("../emailpassword/types").FormFieldThemeProps[]; + error: string | undefined; + userContext: import("../../types").UserContext; + } & { + header?: JSX.Element | undefined; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + EmailPasswordResetPasswordEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onBackButtonClicked: () => void; + } + > + > + | undefined; + EmailPasswordSubmitNewPassword_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + formFields: Omit< + import("../emailpassword/types").FormFieldThemeProps, + "inputComponent" + >[]; + error: string | undefined; + } & { + recipeImplementation: import("supertokens-web-js/recipe/emailpassword").RecipeInterface; + error: string | undefined; + clearError: () => void; + onError: (error: string) => void; + config: import("../emailpassword/types").NormalisedConfig; + onSignInClicked: () => void; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + EmailVerificationSendVerifyEmail_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + signOut: () => Promise; + onEmailAlreadyVerified: () => Promise; + redirectToAuth: () => Promise; + } + > + > + | undefined; + EmailVerificationVerifyEmailLinkClicked_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").ThemeBaseProps & { + recipeImplementation: import("supertokens-web-js/recipe/emailverification").RecipeInterface; + config: import("../emailverification/types").NormalisedConfig; + onSuccess: () => Promise; + onTokenInvalidRedirect: () => Promise; + token: string; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + MFAFactorChooserFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + logout: (() => void) | undefined; + }> + > + | undefined; + MFAFactorChooserHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + showBackButton: boolean; + onBackButtonClicked: () => void; + }> + > + | undefined; + MFAFactorList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + availableFactors: import("../multifactorauth/types").SecondaryFactorRedirectionInfo[]; + navigateToFactor: (factorId: string) => void; + }> + > + | undefined; + MFAFactorOption_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + onClick: (() => void) | undefined; + id: string; + name: string; + description: string; + logo: import("react").FC<{}>; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + MultitenancyDynamicLoginMethodsSpinnerTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../multitenancy/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + OAuth2LogoutScreenInner_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + isLoggingOut: boolean; + onLogoutClicked: () => void; + }> + > + | undefined; + } & ComponentOverrideMap) + | ({ + PasswordlessEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEmailOrPhoneFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessEPComboEmailForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessEPComboEmailOrPhoneForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../passwordless/types").SignInUpEPComboEmailOrPhoneFormProps + > + > + | undefined; + PasswordlessUserInputCodeFormHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeFormFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessUserInputCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC< + import("../passwordless/types").SignInUpUserInputCodeFormProps & { + footer?: JSX.Element | undefined; + } + > + > + | undefined; + PasswordlessLinkSent_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessLinkClickedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../passwordless/types").LinkClickedScreenProps + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessContinueWithPasswordless_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + ( + props: import("../../types").AuthComponentProps & { + config: import("../passwordless/types").NormalisedConfig; + continueWithPasswordlessClicked: () => void; + } + ) => import("react/jsx-runtime").JSX.Element + > + | undefined; + PasswordlessMFAHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + PasswordlessMFAOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + } & ComponentOverrideMap) + | ({ + SessionAccessDenied_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").FC + > + | undefined; + } & ComponentOverrideMap) + | ({ + ThirdPartySignInAndUpProvidersForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../../types").AuthComponentProps & { + providers: Pick[]; + recipeImplementation: import("../../types").WebJSRecipeInterface< + typeof import("supertokens-web-js/lib/build/recipe/thirdparty") + >; + config: import("../thirdparty/types").NormalisedConfig; + } + > + > + | undefined; + ThirdPartySignInAndUpCallbackTheme_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + (props: { + config: import("../thirdparty/types").NormalisedConfig; + }) => import("react/jsx-runtime").JSX.Element + > + | undefined; + } & ComponentOverrideMap) + | ({ + TOTPBlockedScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + nextRetryAt: number; + onRetry: () => void; + onSignOutClicked: () => void; + }> + > + | undefined; + TOTPLoadingScreen_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{}> + > + | undefined; + TOTPCodeForm_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSuccess: () => void; + clearError: () => void; + onError: (err: string) => void; + footer?: JSX.Element | undefined; + } + > + > + | undefined; + TOTPCodeVerificationFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPCodeVerificationHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + onSignOutClicked: () => void; + } + > + > + | undefined; + TOTPDeviceSetupHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + showBackButton: boolean; + onBackButtonClicked: () => void; + } + > + > + | undefined; + TOTPDeviceInfoSection_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType< + import("../totp/types").TOTPMFACommonProps & { + deviceInfo: import("supertokens-web-js/recipe/totp").DeviceInfo; + showSecret: boolean; + onShowSecretClicked: () => void; + } + > + > + | undefined; + } & ComponentOverrideMap) + | ({ + AuthPageHeader_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + factorIds: string[]; + isSignUp: boolean; + hasSeparateSignUpView: boolean; + onSignInUpSwitcherClick: (() => void) | undefined; + resetFactorList: () => void; + showBackButton: boolean; + oauth2ClientInfo?: + | { + logoUri?: string | undefined; + clientUri?: string | undefined; + clientName: string; + } + | undefined; + headerLabel?: string | undefined; + hideSignInSwitcher?: boolean | undefined; + }> + > + | undefined; + AuthPageFooter_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType<{ + privacyPolicyLink?: string | undefined; + termsOfServiceLink?: string | undefined; + factorIds: string[]; + hasSeparateSignUpView: boolean; + isSignUp: boolean; + }> + > + | undefined; + AuthPageComponentList_Override?: + | import("../../components/componentOverride/componentOverride").ComponentOverride< + import("react").ComponentType + > + | undefined; + } & ComponentOverrideMap), Provider: import("react").FC< import("react").PropsWithChildren<{ components: ComponentOverrideMap; diff --git a/lib/build/recipe/webauthn/index.d.ts b/lib/build/recipe/webauthn/index.d.ts index e47ec016e..2f3805c3e 100644 --- a/lib/build/recipe/webauthn/index.d.ts +++ b/lib/build/recipe/webauthn/index.d.ts @@ -212,7 +212,7 @@ export default class Wrapper { fetchResponse: Response; } >; - static registerCredential(input: { + static createCredential(input: { registrationOptions: Omit; userContext: any; }): Promise< @@ -389,6 +389,100 @@ export default class Wrapper { error: any; } >; + static listCredentials(input: { options?: RecipeFunctionOptions; userContext: any }): Promise< + | { + status: "OK"; + credentials: { + webauthnCredentialId: string; + relyingPartyId: string; + recipeUserId: string; + createdAt: number; + }[]; + } + | GeneralErrorResponse + >; + static removeCredential(input: { webauthnCredentialId: string; userContext: any }): Promise< + | { + status: "OK"; + } + | GeneralErrorResponse + | { + status: "CREDENTIAL_NOT_FOUND_ERROR"; + fetchResponse: Response; + } + >; + static registerCredentialWithUser(input: { + recipeUserId: string; + email: string; + options?: RecipeFunctionOptions; + userContext: any; + }): Promise< + | { + status: "OK"; + } + | GeneralErrorResponse + | { + status: "REGISTER_CREDENTIAL_NOT_ALLOWED"; + reason: string; + } + | { + status: "INVALID_EMAIL_ERROR"; + err: string; + } + | { + status: "INVALID_CREDENTIALS_ERROR"; + } + | { + status: "OPTIONS_NOT_FOUND_ERROR"; + } + | { + status: "INVALID_OPTIONS_ERROR"; + } + | { + status: "INVALID_AUTHENTICATOR_ERROR"; + reason: string; + } + | { + status: "AUTHENTICATOR_ALREADY_REGISTERED"; + } + | { + status: "FAILED_TO_REGISTER_USER"; + error: any; + } + | { + status: "WEBAUTHN_NOT_SUPPORTED"; + error: any; + } + >; + static registerCredential(input: { + recipeUserId: string; + webauthnGeneratedOptionsId: string; + credential: RegistrationResponseJSON; + options?: RecipeFunctionOptions; + userContext: any; + }): Promise< + | { + status: "OK"; + } + | GeneralErrorResponse + | { + status: "REGISTER_CREDENTIAL_NOT_ALLOWED"; + reason: string; + } + | { + status: "INVALID_CREDENTIALS_ERROR"; + } + | { + status: "OPTIONS_NOT_FOUND_ERROR"; + } + | { + status: "INVALID_OPTIONS_ERROR"; + } + | { + status: "INVALID_AUTHENTICATOR_ERROR"; + reason: string; + } + >; static doesBrowserSupportWebAuthn(input: { userContext: any }): Promise< | { status: "OK"; @@ -414,11 +508,15 @@ declare const signIn: typeof Wrapper.signIn; declare const getEmailExists: typeof Wrapper.getEmailExists; declare const generateRecoverAccountToken: typeof Wrapper.generateRecoverAccountToken; declare const recoverAccount: typeof Wrapper.recoverAccount; -declare const registerCredential: typeof Wrapper.registerCredential; +declare const createCredential: typeof Wrapper.createCredential; declare const authenticateCredential: typeof Wrapper.authenticateCredential; declare const registerCredentialWithSignUp: typeof Wrapper.registerCredentialWithSignUp; declare const authenticateCredentialWithSignIn: typeof Wrapper.authenticateCredentialWithSignIn; declare const registerCredentialWithRecoverAccount: typeof Wrapper.registerCredentialWithRecoverAccount; +declare const registerCredentialWithUser: typeof Wrapper.registerCredentialWithUser; +declare const listCredentials: typeof Wrapper.listCredentials; +declare const removeCredential: typeof Wrapper.removeCredential; +declare const registerCredential: typeof Wrapper.registerCredential; declare const doesBrowserSupportWebAuthn: typeof Wrapper.doesBrowserSupportWebAuthn; declare const WebauthnComponentsOverrideProvider: import("react").FC< import("react").PropsWithChildren<{ @@ -434,11 +532,15 @@ export { getEmailExists, generateRecoverAccountToken, recoverAccount, - registerCredential, + createCredential, authenticateCredential, registerCredentialWithSignUp, authenticateCredentialWithSignIn, registerCredentialWithRecoverAccount, + registerCredentialWithUser, doesBrowserSupportWebAuthn, WebauthnComponentsOverrideProvider, + listCredentials, + removeCredential, + registerCredential, }; diff --git a/lib/build/recipe/webauthn/recipe.d.ts b/lib/build/recipe/webauthn/recipe.d.ts index 41b583938..552617183 100644 --- a/lib/build/recipe/webauthn/recipe.d.ts +++ b/lib/build/recipe/webauthn/recipe.d.ts @@ -16,7 +16,7 @@ export default class Webauthn extends AuthRecipe< > { readonly webJSRecipe: WebJSRecipeInterface; static instance?: Webauthn; - static RECIPE_ID: string; + static RECIPE_ID: "webauthn"; recipeID: string; firstFactorIds: "webauthn"[]; constructor( diff --git a/lib/build/recipe/webauthn/types.d.ts b/lib/build/recipe/webauthn/types.d.ts index 2fdb40499..cace33386 100644 --- a/lib/build/recipe/webauthn/types.d.ts +++ b/lib/build/recipe/webauthn/types.d.ts @@ -38,7 +38,10 @@ export declare type PreAndPostAPIHookAction = | "SIGN_IN" | "EMAIL_EXISTS" | "GENERATE_RECOVER_ACCOUNT_TOKEN" - | "RECOVER_ACCOUNT"; + | "RECOVER_ACCOUNT" + | "REGISTER_CREDENTIAL" + | "REMOVE_CREDENTIAL" + | "LIST_CREDENTIALS"; export declare type OnHandleEventContext = | { action: "SUCCESS"; diff --git a/lib/build/session-shared.js b/lib/build/session-shared.js index bd3b554b5..1e0ac7793 100644 --- a/lib/build/session-shared.js +++ b/lib/build/session-shared.js @@ -1,8 +1,9 @@ "use strict"; var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); +var types = require("./multifactorauth-shared.js"); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, types.Session.RECIPE_ID), useContext = _a[0], Provider = _a[1]; diff --git a/lib/build/session.js b/lib/build/session.js index 79d75dfc6..387c59b67 100644 --- a/lib/build/session.js +++ b/lib/build/session.js @@ -7,17 +7,17 @@ var WebJSSessionRecipe = require("supertokens-web-js/recipe/session"); var componentOverrideContext = require("./session-shared.js"); var types = require("./multifactorauth-shared.js"); var uiEntry = require("./index2.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("./oauth2provider-shared.js"); require("supertokens-web-js/recipe/oauth2provider"); require("./recipeModule-shared.js"); diff --git a/lib/build/sessionprebuiltui.js b/lib/build/sessionprebuiltui.js index 2d0bf0987..ff3859ba9 100644 --- a/lib/build/sessionprebuiltui.js +++ b/lib/build/sessionprebuiltui.js @@ -213,7 +213,7 @@ var AccessDeniedScreenTheme = function (props) { var defaultTranslationsSession = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { ACCESS_DENIED: "Access denied", GO_BACK: "Go back", LOGOUT: "Log out" } ), }; @@ -331,6 +331,7 @@ var SessionPreBuiltUI = /** @class */ (function (_super) { }; var _a; _a = SessionPreBuiltUI; + SessionPreBuiltUI.languageTranslations = defaultTranslationsSession; SessionPreBuiltUI.AccessDeniedScreen = function (prop) { if (prop === void 0) { prop = {}; diff --git a/lib/build/superTokens.d.ts b/lib/build/superTokens.d.ts index 3d5293d6d..7b36760cc 100644 --- a/lib/build/superTokens.d.ts +++ b/lib/build/superTokens.d.ts @@ -10,11 +10,16 @@ import type { SuperTokensConfig, UserContext, NormalisedGetRedirectionURLContext, + AllRecipeComponentOverrides, + SuperTokensPlugin, + PluginRouteHandler, + SuperTokensPublicPlugin, } from "./types"; export default class SuperTokens { private static instance?; static usesDynamicLoginMethods: boolean; appInfo: NormalisedAppInfo; + pluginList: SuperTokensPublicPlugin[]; languageTranslations: { defaultLanguage: string; userTranslationStore: TranslationStore; @@ -30,8 +35,11 @@ export default class SuperTokens { termsOfServiceLink: string | undefined; defaultToSignUp: boolean; disableAuthRoute: boolean; - constructor(config: SuperTokensConfig); + componentOverrides: Partial; + pluginRouteHandlers: PluginRouteHandler[]; + constructor(config: SuperTokensConfig, plugins: SuperTokensPlugin[]); static init(config: SuperTokensConfig): void; + static getInstance(): SuperTokens | undefined; static getInstanceOrThrow(): SuperTokens; getRecipeOrThrow>( recipeId: string diff --git a/lib/build/thirdparty-shared.js b/lib/build/thirdparty-shared.js index c46ce4926..0ed85b898 100644 --- a/lib/build/thirdparty-shared.js +++ b/lib/build/thirdparty-shared.js @@ -19,9 +19,92 @@ var ThirdpartyWebJS__default = /*#__PURE__*/ _interopDefault(ThirdpartyWebJS); var NormalisedURLPath__default = /*#__PURE__*/ _interopDefault(NormalisedURLPath); var NormalisedURLPath__default$1 = /*#__PURE__*/ _interopDefault(NormalisedURLPath$1); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), - useContext = _a[0], - Provider$1 = _a[1]; +var getFunctionOverrides = function (recipeId, onHandleEvent) { + return function (originalImp) { + return genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, originalImp), { + signInAndUp: function (input) { + return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { + var payloadBeforeCall, response, payloadAfterCall; + return genericComponentOverrideContext.__generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 2, , 3]); + return [ + 4 /*yield*/, + types.Session.getInstanceOrThrow().getAccessTokenPayloadSecurely({ + userContext: input.userContext, + }), + ]; + case 1: + payloadBeforeCall = _c.sent(); + return [3 /*break*/, 3]; + case 2: + _c.sent(); + // If getAccessTokenPayloadSecurely threw, that generally means we have no active session + payloadBeforeCall = undefined; + return [3 /*break*/, 3]; + case 3: + return [4 /*yield*/, originalImp.signInAndUp(input)]; + case 4: + response = _c.sent(); + if (!(response.status === "OK")) return [3 /*break*/, 9]; + payloadAfterCall = void 0; + _c.label = 5; + case 5: + _c.trys.push([5, 7, , 8]); + return [ + 4 /*yield*/, + types.Session.getInstanceOrThrow().getAccessTokenPayloadSecurely({ + userContext: input.userContext, + }), + ]; + case 6: + payloadAfterCall = _c.sent(); + return [3 /*break*/, 8]; + case 7: + _c.sent(); + // If getAccessTokenPayloadSecurely threw, that generally means we have no active session + payloadAfterCall = undefined; + return [3 /*break*/, 8]; + case 8: + onHandleEvent({ + action: "SUCCESS", + isNewRecipeUser: response.createdNewRecipeUser, + user: response.user, + createdNewSession: + payloadAfterCall !== undefined && + (payloadBeforeCall === undefined || + payloadBeforeCall.sessionHandle !== payloadAfterCall.sessionHandle), + userContext: input.userContext, + }); + _c.label = 9; + case 9: + return [2 /*return*/, response]; + } + }); + }); + }, + setStateAndOtherInfoToStorage: function (input) { + var _a; + var loginChallenge = + (_a = genericComponentOverrideContext.getQueryParams("loginChallenge")) !== null && _a !== void 0 + ? _a + : undefined; + return originalImp.setStateAndOtherInfoToStorage({ + state: genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, input.state), + { + rid: recipeId, + oauth2LoginChallenge: loginChallenge, + redirectToPath: genericComponentOverrideContext.getRedirectToPathFromURL(), + } + ), + userContext: input.userContext, + }); + }, + }); + }; +}; var isTextOverflowing = function (element) { return element.scrollWidth > element.clientWidth; @@ -104,7 +187,7 @@ function ProviderButton(_a) { ); } -var Provider = /** @class */ (function () { +var Provider$1 = /** @class */ (function () { function Provider(config) { var _this = this; this.config = config; @@ -257,7 +340,7 @@ var ActiveDirectory = /** @class */ (function (_super) { return; }; return ActiveDirectory; -})(Provider); +})(Provider$1); /* * Class. @@ -372,7 +455,7 @@ var Apple = /** @class */ (function (_super) { return; }; return Apple; -})(Provider); +})(Provider$1); /* * Class. @@ -459,7 +542,7 @@ var Bitbucket = /** @class */ (function (_super) { return; }; return Bitbucket; -})(Provider); +})(Provider$1); var oktaLogo = jsxRuntime.jsx( "svg", @@ -1070,7 +1153,35 @@ var BoxySAML = /** @class */ (function (_super) { return; }; return BoxySAML; -})(Provider); +})(Provider$1); + +/* + * Class. + */ +var Custom = /** @class */ (function (_super) { + genericComponentOverrideContext.__extends(Custom, _super); + /* + * Constructor. + */ + function Custom(config) { + var _this = _super.call(this, config) || this; + _this.getLogo = function () { + return _this.logo; + }; + _this.logo = config.logo; + return _this; + } + /* + * Static Methods + */ + Custom.init = function (config) { + if (config === undefined || config.id === undefined) { + throw new Error("Custom provider config should contain an id attribute"); + } + return new Custom(config); + }; + return Custom; +})(Provider$1); /* * Class. @@ -1153,7 +1264,7 @@ var Discord = /** @class */ (function (_super) { return; }; return Discord; -})(Provider); +})(Provider$1); /* * Class. @@ -1210,7 +1321,7 @@ var Facebook = /** @class */ (function (_super) { return; }; return Facebook; -})(Provider); +})(Provider$1); /* * Class. @@ -1264,7 +1375,7 @@ var Github = /** @class */ (function (_super) { return; }; return Github; -})(Provider); +})(Provider$1); /* * Class. @@ -1336,7 +1447,7 @@ var Gitlab = /** @class */ (function (_super) { return; }; return Gitlab; -})(Provider); +})(Provider$1); /* * Class. @@ -1377,7 +1488,7 @@ var Google = /** @class */ (function (_super) { return; }; return Google; -})(Provider); +})(Provider$1); var GoogleWorkspaces = /** @class */ (function (_super) { genericComponentOverrideContext.__extends(GoogleWorkspaces, _super); @@ -1439,7 +1550,7 @@ var GoogleWorkspaces = /** @class */ (function (_super) { return; }; return GoogleWorkspaces; -})(Provider); +})(Provider$1); /* * Class. @@ -1497,7 +1608,7 @@ var LinkedIn = /** @class */ (function (_super) { return; }; return LinkedIn; -})(Provider); +})(Provider$1); /* * Class. @@ -1537,7 +1648,7 @@ var Okta = /** @class */ (function (_super) { return; }; return Okta; -})(Provider); +})(Provider$1); /* * Class. @@ -1622,122 +1733,7 @@ var Twitter = /** @class */ (function (_super) { return; }; return Twitter; -})(Provider); - -var getFunctionOverrides = function (recipeId, onHandleEvent) { - return function (originalImp) { - return genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, originalImp), { - signInAndUp: function (input) { - return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { - var payloadBeforeCall, response, payloadAfterCall; - return genericComponentOverrideContext.__generator(this, function (_c) { - switch (_c.label) { - case 0: - _c.trys.push([0, 2, , 3]); - return [ - 4 /*yield*/, - types.Session.getInstanceOrThrow().getAccessTokenPayloadSecurely({ - userContext: input.userContext, - }), - ]; - case 1: - payloadBeforeCall = _c.sent(); - return [3 /*break*/, 3]; - case 2: - _c.sent(); - // If getAccessTokenPayloadSecurely threw, that generally means we have no active session - payloadBeforeCall = undefined; - return [3 /*break*/, 3]; - case 3: - return [4 /*yield*/, originalImp.signInAndUp(input)]; - case 4: - response = _c.sent(); - if (!(response.status === "OK")) return [3 /*break*/, 9]; - payloadAfterCall = void 0; - _c.label = 5; - case 5: - _c.trys.push([5, 7, , 8]); - return [ - 4 /*yield*/, - types.Session.getInstanceOrThrow().getAccessTokenPayloadSecurely({ - userContext: input.userContext, - }), - ]; - case 6: - payloadAfterCall = _c.sent(); - return [3 /*break*/, 8]; - case 7: - _c.sent(); - // If getAccessTokenPayloadSecurely threw, that generally means we have no active session - payloadAfterCall = undefined; - return [3 /*break*/, 8]; - case 8: - onHandleEvent({ - action: "SUCCESS", - isNewRecipeUser: response.createdNewRecipeUser, - user: response.user, - createdNewSession: - payloadAfterCall !== undefined && - (payloadBeforeCall === undefined || - payloadBeforeCall.sessionHandle !== payloadAfterCall.sessionHandle), - userContext: input.userContext, - }); - _c.label = 9; - case 9: - return [2 /*return*/, response]; - } - }); - }); - }, - setStateAndOtherInfoToStorage: function (input) { - var _a; - var loginChallenge = - (_a = genericComponentOverrideContext.getQueryParams("loginChallenge")) !== null && _a !== void 0 - ? _a - : undefined; - return originalImp.setStateAndOtherInfoToStorage({ - state: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, input.state), - { - rid: recipeId, - oauth2LoginChallenge: loginChallenge, - redirectToPath: genericComponentOverrideContext.getRedirectToPathFromURL(), - } - ), - userContext: input.userContext, - }); - }, - }); - }; -}; - -/* - * Class. - */ -var Custom = /** @class */ (function (_super) { - genericComponentOverrideContext.__extends(Custom, _super); - /* - * Constructor. - */ - function Custom(config) { - var _this = _super.call(this, config) || this; - _this.getLogo = function () { - return _this.logo; - }; - _this.logo = config.logo; - return _this; - } - /* - * Static Methods - */ - Custom.init = function (config) { - if (config === undefined || config.id === undefined) { - throw new Error("Custom provider config should contain an id attribute"); - } - return new Custom(config); - }; - return Custom; -})(Provider); +})(Provider$1); /* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved. * @@ -1788,7 +1784,7 @@ function normaliseSignInAndUpFeature(config) { * Convert custom configs to custom providers. */ var providersWithCustom = config.providers.map(function (provider) { - if (provider instanceof Provider) { + if (provider instanceof Provider$1) { return provider; } return Custom.init(provider); @@ -2004,7 +2000,6 @@ var ThirdParty = /** @class */ (function (_super) { }); }); }; - _this.recipeID = config.recipeId; return _this; } ThirdParty.prototype.getFirstFactorsForAuthPage = function () { @@ -2023,24 +2018,31 @@ var ThirdParty = /** @class */ (function (_super) { ); return ThirdParty.instance; }, - webJS: ThirdpartyWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides( - ThirdParty.RECIPE_ID, - normalisedConfig.onHandleEvent - ); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = ThirdpartyWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides( + ThirdParty.RECIPE_ID, + normalisedConfig.onHandleEvent + ); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; ThirdParty.getInstanceOrThrow = function () { @@ -2070,6 +2072,10 @@ var ThirdParty = /** @class */ (function (_super) { return ThirdParty; })(index.AuthRecipe); +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, ThirdParty.RECIPE_ID), + useContext = _a[0], + Provider = _a[1]; + exports.ActiveDirectory = ActiveDirectory; exports.Apple = Apple; exports.Bitbucket = Bitbucket; @@ -2082,7 +2088,7 @@ exports.Google = Google; exports.GoogleWorkspaces = GoogleWorkspaces; exports.LinkedIn = LinkedIn; exports.Okta = Okta; -exports.Provider = Provider$1; +exports.Provider = Provider; exports.ThirdParty = ThirdParty; exports.Twitter = Twitter; exports.matchRecipeIdUsingState = matchRecipeIdUsingState; diff --git a/lib/build/thirdparty.js b/lib/build/thirdparty.js index 90d66d02f..a6289951e 100644 --- a/lib/build/thirdparty.js +++ b/lib/build/thirdparty.js @@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var recipe = require("./thirdparty-shared.js"); +var componentOverrideContext = require("./thirdparty-shared.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/thirdparty"); require("./authRecipe-shared2.js"); require("./recipeModule-shared.js"); @@ -46,14 +46,14 @@ var Wrapper = /** @class */ (function () { * Static attributes. */ Wrapper.init = function (config) { - return recipe.ThirdParty.init(config); + return componentOverrideContext.ThirdParty.init(config); }; Wrapper.signOut = function (input) { return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.ThirdParty.getInstanceOrThrow().signOut({ + componentOverrideContext.ThirdParty.getInstanceOrThrow().signOut({ userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext ), @@ -66,10 +66,10 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__awaiter(this, void 0, void 0, function () { var recipeInstance; return genericComponentOverrideContext.__generator(this, function (_a) { - recipeInstance = recipe.ThirdParty.getInstanceOrThrow(); + recipeInstance = componentOverrideContext.ThirdParty.getInstanceOrThrow(); return [ 2 /*return*/, - recipe.redirectToThirdPartyLogin({ + componentOverrideContext.redirectToThirdPartyLogin({ thirdPartyId: input.thirdPartyId, config: recipeInstance.config, userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), @@ -81,7 +81,7 @@ var Wrapper = /** @class */ (function () { }); }; Wrapper.getStateAndOtherInfoFromStorage = function (input) { - return recipe.ThirdParty.getInstanceOrThrow().webJSRecipe.getStateAndOtherInfoFromStorage( + return componentOverrideContext.ThirdParty.getInstanceOrThrow().webJSRecipe.getStateAndOtherInfoFromStorage( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -94,7 +94,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.ThirdParty.getInstanceOrThrow().webJSRecipe.getAuthorisationURLWithQueryParamsAndSetState( + componentOverrideContext.ThirdParty.getInstanceOrThrow().webJSRecipe.getAuthorisationURLWithQueryParamsAndSetState( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext(input.userContext), }) @@ -108,7 +108,7 @@ var Wrapper = /** @class */ (function () { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe.ThirdParty.getInstanceOrThrow().webJSRecipe.signInAndUp( + componentOverrideContext.ThirdParty.getInstanceOrThrow().webJSRecipe.signInAndUp( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -119,23 +119,33 @@ var Wrapper = /** @class */ (function () { }); }); }; + Wrapper.getProviders = function () { + return componentOverrideContext.ThirdParty.getInstanceOrThrow().config.signInAndUpFeature.providers.map( + function (provider) { + return { + id: provider.id, + name: provider.name, + }; + } + ); + }; /* * Providers */ - Wrapper.Apple = recipe.Apple; - Wrapper.Bitbucket = recipe.Bitbucket; - Wrapper.Discord = recipe.Discord; - Wrapper.Github = recipe.Github; - Wrapper.Gitlab = recipe.Gitlab; - Wrapper.Google = recipe.Google; - Wrapper.GoogleWorkspaces = recipe.GoogleWorkspaces; - Wrapper.Facebook = recipe.Facebook; - Wrapper.LinkedIn = recipe.LinkedIn; - Wrapper.ActiveDirectory = recipe.ActiveDirectory; - Wrapper.BoxySAML = recipe.BoxySAML; - Wrapper.Okta = recipe.Okta; - Wrapper.Twitter = recipe.Twitter; - Wrapper.ComponentsOverrideProvider = recipe.Provider; + Wrapper.Apple = componentOverrideContext.Apple; + Wrapper.Bitbucket = componentOverrideContext.Bitbucket; + Wrapper.Discord = componentOverrideContext.Discord; + Wrapper.Github = componentOverrideContext.Github; + Wrapper.Gitlab = componentOverrideContext.Gitlab; + Wrapper.Google = componentOverrideContext.Google; + Wrapper.GoogleWorkspaces = componentOverrideContext.GoogleWorkspaces; + Wrapper.Facebook = componentOverrideContext.Facebook; + Wrapper.LinkedIn = componentOverrideContext.LinkedIn; + Wrapper.ActiveDirectory = componentOverrideContext.ActiveDirectory; + Wrapper.BoxySAML = componentOverrideContext.BoxySAML; + Wrapper.Okta = componentOverrideContext.Okta; + Wrapper.Twitter = componentOverrideContext.Twitter; + Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; return Wrapper; })(); var init = Wrapper.init; @@ -144,24 +154,26 @@ var redirectToThirdPartyLogin = Wrapper.redirectToThirdPartyLogin; var getStateAndOtherInfoFromStorage = Wrapper.getStateAndOtherInfoFromStorage; var getAuthorisationURLWithQueryParamsAndSetState = Wrapper.getAuthorisationURLWithQueryParamsAndSetState; var signInAndUp = Wrapper.signInAndUp; +var getProviders = Wrapper.getProviders; var ThirdpartyComponentsOverrideProvider = Wrapper.ComponentsOverrideProvider; -exports.ActiveDirectory = recipe.ActiveDirectory; -exports.Apple = recipe.Apple; -exports.Bitbucket = recipe.Bitbucket; -exports.BoxySAML = recipe.BoxySAML; -exports.Discord = recipe.Discord; -exports.Facebook = recipe.Facebook; -exports.Github = recipe.Github; -exports.Gitlab = recipe.Gitlab; -exports.Google = recipe.Google; -exports.GoogleWorkspaces = recipe.GoogleWorkspaces; -exports.LinkedIn = recipe.LinkedIn; -exports.Okta = recipe.Okta; -exports.Twitter = recipe.Twitter; +exports.ActiveDirectory = componentOverrideContext.ActiveDirectory; +exports.Apple = componentOverrideContext.Apple; +exports.Bitbucket = componentOverrideContext.Bitbucket; +exports.BoxySAML = componentOverrideContext.BoxySAML; +exports.Discord = componentOverrideContext.Discord; +exports.Facebook = componentOverrideContext.Facebook; +exports.Github = componentOverrideContext.Github; +exports.Gitlab = componentOverrideContext.Gitlab; +exports.Google = componentOverrideContext.Google; +exports.GoogleWorkspaces = componentOverrideContext.GoogleWorkspaces; +exports.LinkedIn = componentOverrideContext.LinkedIn; +exports.Okta = componentOverrideContext.Okta; +exports.Twitter = componentOverrideContext.Twitter; exports.ThirdpartyComponentsOverrideProvider = ThirdpartyComponentsOverrideProvider; exports.default = Wrapper; exports.getAuthorisationURLWithQueryParamsAndSetState = getAuthorisationURLWithQueryParamsAndSetState; +exports.getProviders = getProviders; exports.getStateAndOtherInfoFromStorage = getStateAndOtherInfoFromStorage; exports.init = init; exports.redirectToThirdPartyLogin = redirectToThirdPartyLogin; diff --git a/lib/build/thirdpartyprebuiltui.js b/lib/build/thirdpartyprebuiltui.js index 05f67e3f3..981c6eba8 100644 --- a/lib/build/thirdpartyprebuiltui.js +++ b/lib/build/thirdpartyprebuiltui.js @@ -6,14 +6,14 @@ var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); require("./multifactorauth.js"); var session = require("./session.js"); -var recipe = require("./thirdparty-shared.js"); +var componentOverrideContext = require("./thirdparty-shared.js"); var React = require("react"); var authCompWrapper = require("./authCompWrapper.js"); var types = require("./multifactorauth-shared.js"); var STGeneralError = require("supertokens-web-js/utils/error"); var emailverification = require("./emailverification.js"); -var recipe$2 = require("./emailverification-shared.js"); -var recipe$1 = require("./oauth2provider-shared.js"); +var componentOverrideContext$1 = require("./emailverification-shared.js"); +var recipe = require("./oauth2provider-shared.js"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); @@ -100,7 +100,7 @@ var ThirdPartySignInAndUpProvidersForm = function (props) { _a.trys.push([1, 3, , 4]); return [ 4 /*yield*/, - recipe.redirectToThirdPartyLogin({ + componentOverrideContext.redirectToThirdPartyLogin({ recipeImplementation: props.recipeImplementation, thirdPartyId: providerId, config: props.config, @@ -194,7 +194,7 @@ var SignInAndUpThemeWrapper = function (props) { }; function useChildProps( - recipe$1, + recipe, onAuthSuccess, error, onError, @@ -209,9 +209,9 @@ function useChildProps( ) { var recipeImplementation = React.useMemo( function () { - return recipe$1 && getModifiedRecipeImplementation(recipe$1.webJSRecipe); + return recipe && getModifiedRecipeImplementation(recipe.webJSRecipe); }, - [recipe$1] + [recipe] ); var dynamicLoginMethods = uiEntry.useDynamicLoginMethods(); return React.useMemo( @@ -233,13 +233,13 @@ function useChildProps( clearError: clearError, rebuildAuthPage: rebuildAuthPage, setFactorList: setFactorList, - providers: recipe.mergeProviders({ + providers: componentOverrideContext.mergeProviders({ tenantProviders: tenantProviders, - clientProviders: recipe$1.config.signInAndUpFeature.providers, + clientProviders: recipe.config.signInAndUpFeature.providers, }), recipeImplementation: recipeImplementation, - config: recipe$1.config, - recipe: recipe$1, + config: recipe.config, + recipe: recipe, navigate: navigate, userContext: userContext, resetFactorList: resetFactorList, @@ -247,7 +247,7 @@ function useChildProps( showBackButton: showBackButton, }; }, - [recipe$1, recipeImplementation, error, userContext] + [recipe, recipeImplementation, error, userContext] ); } var SignInAndUpFeature = function (props) { @@ -356,7 +356,7 @@ var SignInAndUpCallbackTheme = function (props) { var defaultTranslationsThirdParty = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { THIRD_PARTY_PROVIDER_DEFAULT_BTN_START: "Continue with ", THIRD_PARTY_PROVIDER_DEFAULT_BTN_END: "", @@ -508,7 +508,7 @@ var SignInAndUpCallback$1 = function (props) { recipeId: props.recipe.recipeID, tenantIdFromQueryParams: genericComponentOverrideContext.getTenantIdFromQueryParams(), }; - oauth2Recipe = recipe$1.OAuth2Provider.getInstance(); + oauth2Recipe = recipe.OAuth2Provider.getInstance(); if (!(loginChallenge !== undefined && oauth2Recipe !== undefined)) return [3 /*break*/, 9]; _c.label = 5; case 5: @@ -594,7 +594,7 @@ var SignInAndUpCallback$1 = function (props) { _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - evInstance = recipe$2.EmailVerification.getInstanceOrThrow(); + evInstance = componentOverrideContext$1.EmailVerification.getInstanceOrThrow(); return [ 4 /*yield*/, evInstance.redirect( @@ -685,7 +685,7 @@ var ThirdPartyPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } var features = {}; // Add callback route for all provider @@ -694,18 +694,18 @@ var ThirdPartyPreBuiltUI = /** @class */ (function (_super) { ); features[normalisedFullPath.getAsStringDangerous()] = { matches: function () { - return recipe.matchRecipeIdUsingState(_this.recipeInstance, {}); + return componentOverrideContext.matchRecipeIdUsingState(_this.recipeInstance, {}); }, component: function (prop) { return _this.getFeatureComponent("signinupcallback", prop, useComponentOverrides); }, - recipeID: recipe.ThirdParty.RECIPE_ID, + recipeID: componentOverrideContext.ThirdParty.RECIPE_ID, }; return features; }; _this.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } if (componentName === "signinupcallback") { return jsxRuntime.jsx( @@ -741,20 +741,20 @@ var ThirdPartyPreBuiltUI = /** @class */ (function (_super) { // Static methods ThirdPartyPreBuiltUI.getInstanceOrInitAndGetInstance = function () { if (ThirdPartyPreBuiltUI.instance === undefined) { - var recipeInstace = recipe.ThirdParty.getInstanceOrThrow(); + var recipeInstace = componentOverrideContext.ThirdParty.getInstanceOrThrow(); ThirdPartyPreBuiltUI.instance = new ThirdPartyPreBuiltUI(recipeInstace); } return ThirdPartyPreBuiltUI.instance; }; ThirdPartyPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return ThirdPartyPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; ThirdPartyPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return ThirdPartyPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -771,7 +771,7 @@ var ThirdPartyPreBuiltUI = /** @class */ (function (_super) { SignInAndUpFeatureWrapper, genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, - useComponentOverrides: recipe.useContext, + useComponentOverrides: componentOverrideContext.useContext, }), "thirdparty-signinup" ); @@ -790,6 +790,7 @@ var ThirdPartyPreBuiltUI = /** @class */ (function (_super) { ThirdPartyPreBuiltUI.instance = undefined; return; }; + ThirdPartyPreBuiltUI.languageTranslations = defaultTranslationsThirdParty; ThirdPartyPreBuiltUI.SignInAndUpCallback = function (prop) { return ThirdPartyPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent("signinupcallback", prop); }; diff --git a/lib/build/totp-shared.js b/lib/build/totp-shared.js index 924824dde..3b854f1fe 100644 --- a/lib/build/totp-shared.js +++ b/lib/build/totp-shared.js @@ -14,10 +14,6 @@ function _interopDefault(e) { var TOTPWebJS__default = /*#__PURE__*/ _interopDefault(TOTPWebJS); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), - useContext = _a[0], - Provider = _a[1]; - var TOTPIcon = function () { return jsxRuntime.jsxs( "svg", @@ -247,21 +243,28 @@ var TOTP = /** @class */ (function (_super) { ); return TOTP.instance; }, - webJS: TOTPWebJS__default.default.init( - genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, normalisedConfig), - { - override: { - functions: function (originalImpl, builder) { - var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var init = TOTPWebJS__default.default.init( + genericComponentOverrideContext.__assign( + genericComponentOverrideContext.__assign({}, normalisedConfig), + { + override: { + functions: function (originalImpl, builder) { + var functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - } - ) - ), + } + ) + ); + return init.apply(void 0, args); + }, }; }; TOTP.getInstance = function () { @@ -282,6 +285,10 @@ var TOTP = /** @class */ (function (_super) { return TOTP; })(index.RecipeModule); +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, TOTP.RECIPE_ID), + useContext = _a[0], + Provider = _a[1]; + exports.Provider = Provider; exports.TOTP = TOTP; exports.totpCodeValidate = totpCodeValidate; diff --git a/lib/build/totp.js b/lib/build/totp.js index b79cc872e..a107f90dd 100644 --- a/lib/build/totp.js +++ b/lib/build/totp.js @@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); var genericComponentOverrideContext = require("./genericComponentOverrideContext.js"); -var recipe = require("./totp-shared.js"); +var componentOverrideContext = require("./totp-shared.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/recipe/totp"); require("./multifactorauth-shared2.js"); require("supertokens-web-js/recipe/multifactorauth"); @@ -42,10 +42,10 @@ require("supertokens-web-js/recipe/oauth2provider"); var Wrapper = /** @class */ (function () { function Wrapper() {} Wrapper.init = function (config) { - return recipe.TOTP.init(config); + return componentOverrideContext.TOTP.init(config); }; Wrapper.createDevice = function (input) { - return recipe.TOTP.getInstanceOrThrow().webJSRecipe.createDevice( + return componentOverrideContext.TOTP.getInstanceOrThrow().webJSRecipe.createDevice( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -54,7 +54,7 @@ var Wrapper = /** @class */ (function () { ); }; Wrapper.verifyCode = function (input) { - return recipe.TOTP.getInstanceOrThrow().webJSRecipe.verifyCode( + return componentOverrideContext.TOTP.getInstanceOrThrow().webJSRecipe.verifyCode( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -63,7 +63,7 @@ var Wrapper = /** @class */ (function () { ); }; Wrapper.verifyDevice = function (input) { - return recipe.TOTP.getInstanceOrThrow().webJSRecipe.verifyDevice( + return componentOverrideContext.TOTP.getInstanceOrThrow().webJSRecipe.verifyDevice( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -72,7 +72,7 @@ var Wrapper = /** @class */ (function () { ); }; Wrapper.removeDevice = function (input) { - return recipe.TOTP.getInstanceOrThrow().webJSRecipe.removeDevice( + return componentOverrideContext.TOTP.getInstanceOrThrow().webJSRecipe.removeDevice( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -81,7 +81,7 @@ var Wrapper = /** @class */ (function () { ); }; Wrapper.listDevices = function (input) { - return recipe.TOTP.getInstanceOrThrow().webJSRecipe.listDevices( + return componentOverrideContext.TOTP.getInstanceOrThrow().webJSRecipe.listDevices( genericComponentOverrideContext.__assign(genericComponentOverrideContext.__assign({}, input), { userContext: genericComponentOverrideContext.getNormalisedUserContext( input === null || input === void 0 ? void 0 : input.userContext @@ -89,7 +89,7 @@ var Wrapper = /** @class */ (function () { }) ); }; - Wrapper.ComponentsOverrideProvider = recipe.Provider; + Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; return Wrapper; })(); var init = Wrapper.init; diff --git a/lib/build/totpprebuiltui.js b/lib/build/totpprebuiltui.js index 39ce9e001..4747fca21 100644 --- a/lib/build/totpprebuiltui.js +++ b/lib/build/totpprebuiltui.js @@ -5,10 +5,10 @@ var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/utils/normalisedURLPath"); var uiEntry = require("./index2.js"); var session = require("./session.js"); -var recipe = require("./totp-shared.js"); +var componentOverrideContext = require("./totp-shared.js"); var React = require("react"); var windowHandler = require("supertokens-web-js/utils/windowHandler"); -var recipe$1 = require("./multifactorauth-shared2.js"); +var recipe = require("./multifactorauth-shared2.js"); var types = require("./multifactorauth-shared.js"); var translationContext = require("./translationContext.js"); var sessionprebuiltui = require("./sessionprebuiltui.js"); @@ -278,7 +278,7 @@ var CodeForm = uiEntry.withOverride("TOTPCodeForm", function TOTPCodeForm(props) clearOnSubmit: true, autoComplete: "one-time-code", placeholder: "", - validate: recipe.totpCodeValidate, + validate: componentOverrideContext.totpCodeValidate, }, ], onSuccess: props.onSuccess, @@ -3635,7 +3635,7 @@ function getErrorString(error, state, t) { var defaultTranslationsTOTP = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { TOTP_SHOW_SECRET_START: "Unable to scan? Use a", TOTP_SHOW_SECRET_LINK: "secret key", @@ -3758,7 +3758,7 @@ function useOnLoad(recipeImpl, dispatch, navigate, userContext) { return genericComponentOverrideContext.__generator(this, function (_a) { return [ 2 /*return*/, - recipe$1.MultiFactorAuth.getInstanceOrThrow().webJSRecipe.resyncSessionAndFetchMFAInfo({ + recipe.MultiFactorAuth.getInstanceOrThrow().webJSRecipe.resyncSessionAndFetchMFAInfo({ userContext: userContext, }), ]; @@ -3805,7 +3805,7 @@ function useOnLoad(recipeImpl, dispatch, navigate, userContext) { 4 /*yield*/, types.Session.getInstanceOrThrow().validateGlobalClaimsAndHandleSuccessRedirection( undefined, - recipe.TOTP.RECIPE_ID, + componentOverrideContext.TOTP.RECIPE_ID, redirectToPath, userContext, navigate @@ -3828,10 +3828,10 @@ function useOnLoad(recipeImpl, dispatch, navigate, userContext) { alreadySetup = mfaInfo.factors.alreadySetup.includes(types.FactorIds.TOTP); showBackButton = mfaInfo.factors.next.length === 0 || - recipe$1.getAvailableFactors( + recipe.getAvailableFactors( mfaInfo.factors, undefined, - recipe$1.MultiFactorAuth.getInstanceOrThrow(), + recipe.MultiFactorAuth.getInstanceOrThrow(), userContext ).length !== 1; if (!(doSetup || !alreadySetup)) return [3 /*break*/, 9]; @@ -4179,7 +4179,7 @@ var TOTPPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } var features = {}; if (_this.recipeInstance.config.totpMFAScreen.disableDefaultUI !== true) { @@ -4193,7 +4193,7 @@ var TOTPPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("mfaTOTP", props, useComponentOverrides); }, - recipeID: recipe.TOTP.RECIPE_ID, + recipeID: componentOverrideContext.TOTP.RECIPE_ID, }; } return features; @@ -4205,7 +4205,7 @@ var TOTPPreBuiltUI = /** @class */ (function (_super) { useComponentOverrides ) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return jsxRuntime.jsx( uiEntry.UserContextWrapper, @@ -4243,20 +4243,20 @@ var TOTPPreBuiltUI = /** @class */ (function (_super) { // Static methods TOTPPreBuiltUI.getInstanceOrInitAndGetInstance = function () { if (TOTPPreBuiltUI.instance === undefined) { - var recipeInstance = recipe.TOTP.getInstanceOrThrow(); + var recipeInstance = componentOverrideContext.TOTP.getInstanceOrThrow(); TOTPPreBuiltUI.instance = new TOTPPreBuiltUI(recipeInstance); } return TOTPPreBuiltUI.instance; }; TOTPPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return TOTPPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; TOTPPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return TOTPPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -4275,6 +4275,7 @@ var TOTPPreBuiltUI = /** @class */ (function (_super) { TOTPPreBuiltUI.instance = undefined; return; }; + TOTPPreBuiltUI.languageTranslations = defaultTranslationsTOTP; TOTPPreBuiltUI.MFATOTP = function (props) { return TOTPPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent("mfaTOTP", props); }; diff --git a/lib/build/translation/translationHelpers.d.ts b/lib/build/translation/translationHelpers.d.ts index d115ae204..20463e123 100644 --- a/lib/build/translation/translationHelpers.d.ts +++ b/lib/build/translation/translationHelpers.d.ts @@ -23,3 +23,6 @@ export declare class TranslationController implements TranslationControlEventSou } export declare function saveCurrentLanguage(language: string, cookieDomain: string | undefined): Promise; export declare function getCurrentLanguageFromCookie(): Promise; +export declare const getTranslationFunction: ( + ...stores: TranslationStore[] +) => (key: T, replacements?: Record) => string; diff --git a/lib/build/types.d.ts b/lib/build/types.d.ts index 3949d7e60..6707d51a4 100644 --- a/lib/build/types.d.ts +++ b/lib/build/types.d.ts @@ -1,7 +1,28 @@ import type { DateProviderInput } from "./dateProvider/types"; import type { AuthSuccessContext } from "./recipe/authRecipe/types"; +import type { ComponentOverrideMap as AuthRecipeComponentOverrideMap } from "./recipe/authRecipe/types"; +import type { Config as EmailPasswordConfig } from "./recipe/emailpassword/types"; +import type { ComponentOverrideMap as EmailPasswordComponentOverrideMap } from "./recipe/emailpassword/types"; +import type { Config as EmailVerificationConfig } from "./recipe/emailverification/types"; +import type { ComponentOverrideMap as EmailVerificationComponentOverrideMap } from "./recipe/emailverification/types"; +import type { Config as MultiFactorAuthConfig } from "./recipe/multifactorauth/types"; +import type { ComponentOverrideMap as MultiFactorAuthComponentOverrideMap } from "./recipe/multifactorauth/types"; +import type { UserInput as MultitenancyConfig } from "./recipe/multitenancy/types"; +import type { ComponentOverrideMap as MultitenancyComponentOverrideMap } from "./recipe/multitenancy/types"; +import type { UserInput as OAuth2ProviderConfig } from "./recipe/oauth2provider/types"; +import type { ComponentOverrideMap as OAuth2ProviderComponentOverrideMap } from "./recipe/oauth2provider/types"; +import type { Config as PasswordlessConfig } from "./recipe/passwordless/types"; +import type { ComponentOverrideMap as PasswordlessComponentOverrideMap } from "./recipe/passwordless/types"; import type { BaseRecipeModule } from "./recipe/recipeModule/baseRecipeModule"; import type { NormalisedConfig as NormalisedRecipeModuleConfig } from "./recipe/recipeModule/types"; +import type { InputType as SessionConfig } from "./recipe/session/types"; +import type { ComponentOverrideMap as SessionComponentOverrideMap } from "./recipe/session/types"; +import type { Config as ThirdPartyConfig } from "./recipe/thirdparty/types"; +import type { ComponentOverrideMap as ThirdPartyComponentOverrideMap } from "./recipe/thirdparty/types"; +import type { Config as TotpConfig } from "./recipe/totp/types"; +import type { ComponentOverrideMap as TotpComponentOverrideMap } from "./recipe/totp/types"; +import type { Config as WebauthnConfig } from "./recipe/webauthn/types"; +import type { ComponentOverrideMap as WebauthnComponentOverrideMap } from "./recipe/webauthn/types"; import type { TranslationFunc, TranslationStore } from "./translation/translationHelpers"; import type { ComponentClass, PropsWithChildren } from "react"; import type { CreateRecipeFunction as CreateRecipeFunctionWebJS } from "supertokens-web-js/lib/build/types"; @@ -84,6 +105,18 @@ export declare type SuperTokensConfig = { defaultToSignUp?: boolean; privacyPolicyLink?: string; termsOfServiceLink?: string; + /** + * + * Our experimental features are not yet stable and are subject to change. In practical terms, this means that their interface is subject to change without a major version update. + * They are also not tested as much as our "normal" features. + * + * If you want to use these features, or if you have any feedback please let us know at: + * https://supertokens.com/discord + * + */ + experimental?: { + plugins?: SuperTokensPlugin[]; + }; }; export declare type WebJSRecipeInterface = Omit; export declare type CreateRecipeFunction> = ( @@ -235,4 +268,98 @@ export declare type AuthComponent = PartialAuthComponent | FullPageAuth export declare type NormalisedGetRedirectionURLContext = RecipeContext & { tenantIdFromQueryParams: string | undefined; }; +export declare type AllRecipeConfigs = { + emailpassword: EmailPasswordConfig; + emailverification: EmailVerificationConfig; + multifactorauth: MultiFactorAuthConfig; + multitenancy: MultitenancyConfig; + oauth2provider: OAuth2ProviderConfig; + passwordless: PasswordlessConfig; + session: SessionConfig; + thirdparty: ThirdPartyConfig; + totp: TotpConfig; + webauthn: WebauthnConfig; +}; +export declare type AllRecipeComponentOverrides = { + emailpassword: EmailPasswordComponentOverrideMap; + emailverification: EmailVerificationComponentOverrideMap; + multifactorauth: MultiFactorAuthComponentOverrideMap; + multitenancy: MultitenancyComponentOverrideMap; + oauth2provider: OAuth2ProviderComponentOverrideMap; + passwordless: PasswordlessComponentOverrideMap; + session: SessionComponentOverrideMap; + thirdparty: ThirdPartyComponentOverrideMap; + totp: TotpComponentOverrideMap; + authRecipe: AuthRecipeComponentOverrideMap; + webauthn: WebauthnComponentOverrideMap; +}; +export declare type RecipePluginOverride = { + functions?: NonNullable["functions"]; + components?: AllRecipeComponentOverrides[T]; + config?: (config: AllRecipeConfigs[T]) => AllRecipeConfigs[T]; +}; +export declare type PluginRouteHandler = { + path: string; + handler: () => JSX.Element; +}; +export declare type SuperTokensPlugin = { + id: string; + version?: string; + compatibleAuthReactSDKVersions?: string | string[]; + compatibleWebJSSDKVersions?: string | string[]; + init?: (config: SuperTokensPublicConfig, allPlugins: SuperTokensPublicPlugin[], sdkVersion: string) => void; + dependencies?: ( + config: SuperTokensPublicConfig, + pluginsAbove: SuperTokensPublicPlugin[], + sdkVersion: string + ) => + | { + status: "OK"; + pluginsToAdd?: SuperTokensPlugin[]; + } + | { + status: "ERROR"; + message: string; + }; + overrideMap?: { + [recipeId in keyof AllRecipeConfigs]?: RecipePluginOverride & { + recipeInitRequired?: boolean | ((sdkVersion: string) => boolean); + }; + }; + generalAuthRecipeComponentOverrides?: AuthRecipeComponentOverrideMap; + routeHandlers?: + | (( + config: SuperTokensPublicConfig, + allPlugins: SuperTokensPublicPlugin[], + sdkVersion: string + ) => + | { + status: "OK"; + routeHandlers: PluginRouteHandler[]; + } + | { + status: "ERROR"; + message: string; + }) + | PluginRouteHandler[]; + config?: (config: SuperTokensPublicConfig) => Omit | undefined; + exports?: Record; +}; +export declare const nonPublicConfigProperties: readonly ["experimental"]; +export declare type NonPublicConfigPropertiesType = (typeof nonPublicConfigProperties)[number]; +export declare type SuperTokensConfigWithNormalisedAppInfo = Omit & { + appInfo: NormalisedAppInfo; +}; +export declare type SuperTokensPublicPlugin = Pick< + SuperTokensPlugin, + "id" | "version" | "exports" | "compatibleAuthReactSDKVersions" | "compatibleWebJSSDKVersions" +> & { + initialized: boolean; +}; +export declare type SuperTokensPublicConfig = Omit< + Omit, + "appInfo" +> & { + appInfo: NormalisedAppInfo; +}; export {}; diff --git a/lib/build/ui-entry.js b/lib/build/ui-entry.js index 1c6b8e41e..0627f628a 100644 --- a/lib/build/ui-entry.js +++ b/lib/build/ui-entry.js @@ -39,3 +39,4 @@ exports.canHandleRoute = uiEntry.canHandleRoute; exports.default = uiEntry.UI; exports.getRoutingComponent = uiEntry.getRoutingComponent; exports.getSuperTokensRoutesForReactRouterDom = uiEntry.getSuperTokensRoutesForReactRouterDom; +exports.languageTranslations = uiEntry.languageTranslations; diff --git a/lib/build/ui/index.d.ts b/lib/build/ui/index.d.ts index a0fdce802..1343c1eef 100644 --- a/lib/build/ui/index.d.ts +++ b/lib/build/ui/index.d.ts @@ -11,6 +11,30 @@ import type { PropsWithChildren } from "react"; declare class UI { private static reactRouterDom; private static reactRouterDomIsV6?; + static languageTranslations: { + en: { + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; + }; static getSuperTokensRoutesForReactRouterDom( reactRouterDom: any, preBuiltUiClassList?: PreBuiltRecipes, @@ -58,6 +82,30 @@ declare class UI { }> >; } +declare const languageTranslations: { + en: { + AUTH_PAGE_HEADER_TITLE_SIGN_IN_AND_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN: string; + AUTH_PAGE_HEADER_TITLE_SIGN_UP: string; + AUTH_PAGE_HEADER_TITLE_SIGN_IN_UP_TO_APP: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_SIGN_UP_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_IN_END: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_START: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_SIGN_IN_LINK: string; + AUTH_PAGE_HEADER_SUBTITLE_SIGN_UP_END: string; + AUTH_PAGE_FOOTER_START: string; + AUTH_PAGE_FOOTER_TOS: string; + AUTH_PAGE_FOOTER_AND: string; + AUTH_PAGE_FOOTER_PP: string; + AUTH_PAGE_FOOTER_END: string; + DIVIDER_OR: string; + BRANDING_POWERED_BY_START: string; + BRANDING_POWERED_BY_END: string; + SOMETHING_WENT_WRONG_ERROR: string; + SOMETHING_WENT_WRONG_ERROR_RELOAD: string; + }; +}; declare const getSuperTokensRoutesForReactRouterDom: typeof UI.getSuperTokensRoutesForReactRouterDom; declare const canHandleRoute: typeof UI.canHandleRoute; declare const getRoutingComponent: typeof UI.getRoutingComponent; @@ -70,6 +118,7 @@ declare const AuthPage: ( ) => import("react/jsx-runtime").JSX.Element; export default UI; export { + languageTranslations, getSuperTokensRoutesForReactRouterDom, canHandleRoute, getRoutingComponent, diff --git a/lib/build/utils.d.ts b/lib/build/utils.d.ts index 89ef28619..912985c94 100644 --- a/lib/build/utils.d.ts +++ b/lib/build/utils.d.ts @@ -11,7 +11,11 @@ import type { NormalisedAppInfo, NormalisedFormField, NormalisedGetRedirectionURLContext, + SuperTokensPlugin, + SuperTokensPublicConfig, + SuperTokensPublicPlugin, UserContext, + SuperTokensConfigWithNormalisedAppInfo, } from "./types"; export declare function getRecipeIdFromSearch(search: string): string | null; export declare function clearQueryParams(paramNames: string[]): void; @@ -92,3 +96,5 @@ export declare const handleCallAPI: ({ generalError?: STGeneralError | undefined; fetchError?: Response | undefined; }>; +export declare function getPublicPlugin(plugin: SuperTokensPlugin): SuperTokensPublicPlugin; +export declare function getPublicConfig(config: SuperTokensConfigWithNormalisedAppInfo): SuperTokensPublicConfig; diff --git a/lib/build/version.d.ts b/lib/build/version.d.ts index 3ffa90315..0c5a03e30 100644 --- a/lib/build/version.d.ts +++ b/lib/build/version.d.ts @@ -1 +1 @@ -export declare const package_version = "0.49.1"; +export declare const package_version = "0.49.1-canary-plugins.0"; diff --git a/lib/build/versionChecker.d.ts b/lib/build/versionChecker.d.ts new file mode 100644 index 000000000..4e9da12c7 --- /dev/null +++ b/lib/build/versionChecker.d.ts @@ -0,0 +1 @@ +export declare const isVersionCompatible: (currentVersion: string, constraints: string | string[]) => boolean; diff --git a/lib/build/webauthn-shared.js b/lib/build/webauthn-shared.js index 3927812bd..7da1081c8 100644 --- a/lib/build/webauthn-shared.js +++ b/lib/build/webauthn-shared.js @@ -12,10 +12,6 @@ function _interopDefault(e) { var WebauthnWebJS__default = /*#__PURE__*/ _interopDefault(WebauthnWebJS); -var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(), - useContext = _a[0], - Provider = _a[1]; - /* Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved. * * This software is licensed under the Apache License, Version 2.0 (the @@ -249,6 +245,10 @@ var Webauthn = /** @class */ (function (_super) { return Webauthn; })(index.AuthRecipe); +var _a = genericComponentOverrideContext.createGenericComponentsOverrideContext(undefined, Webauthn.RECIPE_ID), + useContext = _a[0], + Provider = _a[1]; + exports.DEFAULT_WEBAUTHN_RECOVERY_PATH = DEFAULT_WEBAUTHN_RECOVERY_PATH; exports.DEFAULT_WEBAUTHN_SEND_RECOVERY_EMAIL_PATH = DEFAULT_WEBAUTHN_SEND_RECOVERY_EMAIL_PATH; exports.Provider = Provider; diff --git a/lib/build/webauthn.js b/lib/build/webauthn.js index a412b3e76..454c8b6dc 100644 --- a/lib/build/webauthn.js +++ b/lib/build/webauthn.js @@ -2,19 +2,19 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var recipe = require("./webauthn-shared.js"); +var componentOverrideContext = require("./webauthn-shared.js"); require("./genericComponentOverrideContext.js"); +require("react/jsx-runtime"); +require("react"); require("supertokens-web-js"); require("supertokens-web-js/utils/cookieHandler"); require("supertokens-web-js/utils/postSuperTokensInitCallbacks"); require("supertokens-web-js/utils/windowHandler"); require("supertokens-web-js/recipe/multitenancy"); require("supertokens-web-js/utils"); -require("react"); require("supertokens-web-js/lib/build/error"); require("supertokens-web-js/utils/normalisedURLDomain"); require("supertokens-web-js/utils/normalisedURLPath"); -require("react/jsx-runtime"); require("supertokens-web-js/lib/build/recipe/webauthn"); require("./authRecipe-shared2.js"); require("./recipeModule-shared.js"); @@ -41,48 +41,64 @@ require("./authRecipe-shared.js"); var Wrapper = /** @class */ (function () { function Wrapper() {} Wrapper.init = function (config) { - return recipe.Webauthn.init(config); + return componentOverrideContext.Webauthn.init(config); }; Wrapper.getRegisterOptions = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.getRegisterOptions(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.getRegisterOptions(input); }; Wrapper.getSignInOptions = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.getSignInOptions(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.getSignInOptions(input); }; Wrapper.signUp = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.signUp(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.signUp(input); }; Wrapper.signIn = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.signIn(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.signIn(input); }; Wrapper.getEmailExists = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.getEmailExists(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.getEmailExists(input); }; Wrapper.generateRecoverAccountToken = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.generateRecoverAccountToken(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.generateRecoverAccountToken(input); }; Wrapper.recoverAccount = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.recoverAccount(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.recoverAccount(input); }; - Wrapper.registerCredential = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredential(input); + Wrapper.createCredential = function (input) { + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.createCredential(input); }; Wrapper.authenticateCredential = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.authenticateCredential(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.authenticateCredential(input); }; Wrapper.registerCredentialWithSignUp = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredentialWithSignUp(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredentialWithSignUp(input); }; Wrapper.authenticateCredentialWithSignIn = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.authenticateCredentialWithSignIn(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.authenticateCredentialWithSignIn( + input + ); }; Wrapper.registerCredentialWithRecoverAccount = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredentialWithRecoverAccount(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredentialWithRecoverAccount( + input + ); + }; + Wrapper.listCredentials = function (input) { + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.listCredentials(input); + }; + Wrapper.removeCredential = function (input) { + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.removeCredential(input); + }; + Wrapper.registerCredentialWithUser = function (input) { + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredentialWithUser(input); + }; + Wrapper.registerCredential = function (input) { + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.registerCredential(input); }; Wrapper.doesBrowserSupportWebAuthn = function (input) { - return recipe.Webauthn.getInstanceOrThrow().webJSRecipe.doesBrowserSupportWebAuthn(input); + return componentOverrideContext.Webauthn.getInstanceOrThrow().webJSRecipe.doesBrowserSupportWebAuthn(input); }; - Wrapper.ComponentsOverrideProvider = recipe.Provider; + Wrapper.ComponentsOverrideProvider = componentOverrideContext.Provider; return Wrapper; })(); var init = Wrapper.init; @@ -93,17 +109,22 @@ var signIn = Wrapper.signIn; var getEmailExists = Wrapper.getEmailExists; var generateRecoverAccountToken = Wrapper.generateRecoverAccountToken; var recoverAccount = Wrapper.recoverAccount; -var registerCredential = Wrapper.registerCredential; +var createCredential = Wrapper.createCredential; var authenticateCredential = Wrapper.authenticateCredential; var registerCredentialWithSignUp = Wrapper.registerCredentialWithSignUp; var authenticateCredentialWithSignIn = Wrapper.authenticateCredentialWithSignIn; var registerCredentialWithRecoverAccount = Wrapper.registerCredentialWithRecoverAccount; +var registerCredentialWithUser = Wrapper.registerCredentialWithUser; +var listCredentials = Wrapper.listCredentials; +var removeCredential = Wrapper.removeCredential; +var registerCredential = Wrapper.registerCredential; var doesBrowserSupportWebAuthn = Wrapper.doesBrowserSupportWebAuthn; var WebauthnComponentsOverrideProvider = Wrapper.ComponentsOverrideProvider; exports.WebauthnComponentsOverrideProvider = WebauthnComponentsOverrideProvider; exports.authenticateCredential = authenticateCredential; exports.authenticateCredentialWithSignIn = authenticateCredentialWithSignIn; +exports.createCredential = createCredential; exports.default = Wrapper; exports.doesBrowserSupportWebAuthn = doesBrowserSupportWebAuthn; exports.generateRecoverAccountToken = generateRecoverAccountToken; @@ -111,9 +132,12 @@ exports.getEmailExists = getEmailExists; exports.getRegisterOptions = getRegisterOptions; exports.getSignInOptions = getSignInOptions; exports.init = init; +exports.listCredentials = listCredentials; exports.recoverAccount = recoverAccount; exports.registerCredential = registerCredential; exports.registerCredentialWithRecoverAccount = registerCredentialWithRecoverAccount; exports.registerCredentialWithSignUp = registerCredentialWithSignUp; +exports.registerCredentialWithUser = registerCredentialWithUser; +exports.removeCredential = removeCredential; exports.signIn = signIn; exports.signUp = signUp; diff --git a/lib/build/webauthnprebuiltui.js b/lib/build/webauthnprebuiltui.js index 23f1c7da4..a989570c5 100644 --- a/lib/build/webauthnprebuiltui.js +++ b/lib/build/webauthnprebuiltui.js @@ -5,7 +5,7 @@ var jsxRuntime = require("react/jsx-runtime"); var NormalisedURLPath = require("supertokens-web-js/lib/build/normalisedURLPath"); var uiEntry = require("./index2.js"); require("./multifactorauth.js"); -var recipe = require("./webauthn-shared.js"); +var componentOverrideContext = require("./webauthn-shared.js"); var React = require("react"); var translationContext = require("./translationContext.js"); var button = require("./emailpassword-shared.js"); @@ -605,7 +605,7 @@ function PasskeyRecoverAccountWithTokenTheme(props) { var defaultTranslationsWebauthn = { en: genericComponentOverrideContext.__assign( - genericComponentOverrideContext.__assign({}, uiEntry.defaultTranslationsCommon.en), + genericComponentOverrideContext.__assign({}, genericComponentOverrideContext.defaultTranslationsCommon.en), { WEBAUTHN_EMAIL_CONTINUE_BUTTON: "CONTINUE", WEBAUTHN_SIGN_UP_LABEL: "Email", @@ -2416,7 +2416,7 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { // Instance methods _this.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } var features = {}; if ( @@ -2424,7 +2424,7 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { _this.recipeInstance.config.recoveryFeature.disableDefaultUI !== true ) { var normalisedFullPath = _this.recipeInstance.config.appInfo.websiteBasePath.appendPath( - new NormalisedURLPath__default.default(recipe.DEFAULT_WEBAUTHN_RECOVERY_PATH) + new NormalisedURLPath__default.default(componentOverrideContext.DEFAULT_WEBAUTHN_RECOVERY_PATH) ); features[normalisedFullPath.getAsStringDangerous()] = { matches: genericComponentOverrideContext.matchRecipeIdUsingQueryParams( @@ -2433,11 +2433,13 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("webauthn-recover-account", props, useComponentOverrides); }, - recipeID: recipe.Webauthn.RECIPE_ID, + recipeID: componentOverrideContext.Webauthn.RECIPE_ID, }; var normalisedFullPathForRecoveryThroughEmail = _this.recipeInstance.config.appInfo.websiteBasePath.appendPath( - new NormalisedURLPath__default.default(recipe.DEFAULT_WEBAUTHN_SEND_RECOVERY_EMAIL_PATH) + new NormalisedURLPath__default.default( + componentOverrideContext.DEFAULT_WEBAUTHN_SEND_RECOVERY_EMAIL_PATH + ) ); features[normalisedFullPathForRecoveryThroughEmail.getAsStringDangerous()] = { matches: genericComponentOverrideContext.matchRecipeIdUsingQueryParams( @@ -2446,14 +2448,14 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { component: function (props) { return _this.getFeatureComponent("webauthn-send-recovery-email", props, useComponentOverrides); }, - recipeID: recipe.Webauthn.RECIPE_ID, + recipeID: componentOverrideContext.Webauthn.RECIPE_ID, }; } return features; }; _this.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } if (componentName === "webauthn-recover-account") { return jsxRuntime.jsx( @@ -2494,20 +2496,20 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { // Static methods WebauthnPreBuiltUI.getInstanceOrInitAndGetInstance = function () { if (WebauthnPreBuiltUI.instance === undefined) { - var recipeInstance = recipe.Webauthn.getInstanceOrThrow(); + var recipeInstance = componentOverrideContext.Webauthn.getInstanceOrThrow(); WebauthnPreBuiltUI.instance = new WebauthnPreBuiltUI(recipeInstance); } return WebauthnPreBuiltUI.instance; }; WebauthnPreBuiltUI.getFeatures = function (useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return WebauthnPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatures(useComponentOverrides); }; WebauthnPreBuiltUI.getFeatureComponent = function (componentName, props, useComponentOverrides) { if (useComponentOverrides === void 0) { - useComponentOverrides = recipe.useContext; + useComponentOverrides = componentOverrideContext.useContext; } return WebauthnPreBuiltUI.getInstanceOrInitAndGetInstance().getFeatureComponent( componentName, @@ -2541,7 +2543,7 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { SignInUpFeatureFullPage, genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, - useComponentOverrides: recipe.useContext, + useComponentOverrides: componentOverrideContext.useContext, factorIds: [types.FactorIds.WEBAUTHN], }), "webauthnSignUpFullPage" @@ -2558,7 +2560,7 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, factorIds: [types.FactorIds.WEBAUTHN], - useComponentOverrides: recipe.useContext, + useComponentOverrides: componentOverrideContext.useContext, }), "webauthn-sign-up" ); @@ -2574,7 +2576,7 @@ var WebauthnPreBuiltUI = /** @class */ (function (_super) { genericComponentOverrideContext.__assign({}, props, { recipe: _this.recipeInstance, factorIds: [types.FactorIds.WEBAUTHN], - useComponentOverrides: recipe.useContext, + useComponentOverrides: componentOverrideContext.useContext, }), "webauthn-sign-in" ); diff --git a/lib/ts/components/componentOverride/genericComponentOverrideContext.tsx b/lib/ts/components/componentOverride/genericComponentOverrideContext.tsx index 8db7bfbb7..40e5dd1b1 100644 --- a/lib/ts/components/componentOverride/genericComponentOverrideContext.tsx +++ b/lib/ts/components/componentOverride/genericComponentOverrideContext.tsx @@ -1,12 +1,20 @@ import React from "react"; +import SuperTokens from "../../superTokens"; + +import type { AllRecipeComponentOverrides } from "../../types"; import type { FC, PropsWithChildren } from "react"; -export const createGenericComponentsOverrideContext = >(v: T = {} as T) => { +export const createGenericComponentsOverrideContext = >( + v: T = {} as T, + key: keyof AllRecipeComponentOverrides +) => { const genericContext = React.createContext(v); const useComponentsOverrideContext = () => { - return React.useContext(genericContext); + const contextValue = React.useContext(genericContext); + + return { ...SuperTokens.getInstance()?.componentOverrides[key], ...contextValue }; }; const Provider: FC> = ({ children, components }) => { diff --git a/lib/ts/components/routingComponent.tsx b/lib/ts/components/routingComponent.tsx index f3c49e897..48bf24b09 100644 --- a/lib/ts/components/routingComponent.tsx +++ b/lib/ts/components/routingComponent.tsx @@ -26,12 +26,17 @@ export function RoutingComponent(props: { const path = props.path; const isAuthPage = path === SuperTokens.getInstanceOrThrow().appInfo.websiteBasePath.getAsStringDangerous(); + const pluginRouteHandlers = SuperTokens.getInstanceOrThrow().pluginRouteHandlers; const location = props.getReactRouterDomWithCustomHistory()?.useLocation(); const componentToRender = React.useMemo(() => { if (isAuthPage) { return; } const normalizedPath = new NormalisedURLPath(path); + const matchingPluginRouteHandler = pluginRouteHandlers.find((handler) => handler.path === path); + if (matchingPluginRouteHandler) { + return { component: matchingPluginRouteHandler.handler, recipeId: undefined }; + } // During development, this runs twice so as to warn devs of if there // are any side effects that happen here. So in tests, it will result in // the console log twice diff --git a/lib/ts/components/superTokensRoute.tsx b/lib/ts/components/superTokensRoute.tsx index e4f15aa32..f32a9fb97 100644 --- a/lib/ts/components/superTokensRoute.tsx +++ b/lib/ts/components/superTokensRoute.tsx @@ -67,6 +67,19 @@ export function getSuperTokensRoutesForReactRouterDom({ return routes; }, {} as Record) ); + const pluginRouteHandlers = SuperTokens.getInstanceOrThrow().pluginRouteHandlers; + for (const handler of pluginRouteHandlers) { + const path = handler.path; + routes.push( + + + + ); + } if ( !SuperTokens.getInstanceOrThrow().disableAuthRoute && diff --git a/lib/ts/components/superTokensRouteV6.tsx b/lib/ts/components/superTokensRouteV6.tsx index db8e2b5da..eb2bf4538 100644 --- a/lib/ts/components/superTokensRouteV6.tsx +++ b/lib/ts/components/superTokensRouteV6.tsx @@ -72,6 +72,23 @@ export function getSuperTokensRoutesForReactRouterDomV6({ return routes; }, {} as Record) ); + const pluginRouteHandlers = SuperTokens.getInstanceOrThrow().pluginRouteHandlers; + for (const handler of pluginRouteHandlers) { + const path = handler.path; + routes.push( + + } + /> + ); + } if ( !SuperTokens.getInstanceOrThrow().disableAuthRoute && diff --git a/lib/ts/index.ts b/lib/ts/index.ts index a62f611fe..baa511dc9 100644 --- a/lib/ts/index.ts +++ b/lib/ts/index.ts @@ -21,6 +21,7 @@ import SuperTokens from "./superTokens"; import { useTranslation } from "./translation/translationContext"; import { useUserContext } from "./usercontext"; import { getNormalisedUserContext } from "./utils"; +import { getTranslationFunction } from "./translation/translationHelpers"; import type { TranslationStore } from "./translation/translationHelpers"; import type { Navigate, SuperTokensConfig, UserContext } from "./types"; @@ -58,8 +59,16 @@ export default class SuperTokensAPIWrapper { }); }; + static isRecipeInitialized(recipeId: string) { + return SuperTokens.getInstanceOrThrow() + .recipeList.map((recipe) => recipe.recipeID) + .includes(recipeId); + } + static useTranslation = useTranslation; + static getTranslationFunction = getTranslationFunction; + static useUserContext = useUserContext; } @@ -67,7 +76,14 @@ export const init = SuperTokensAPIWrapper.init; export const changeLanguage = SuperTokensAPIWrapper.changeLanguage; export const loadTranslation = SuperTokensAPIWrapper.loadTranslation; export const redirectToAuth = SuperTokensAPIWrapper.redirectToAuth; +export const isRecipeInitialized = SuperTokensAPIWrapper.isRecipeInitialized; + +// these need to be exported so other developers are able to build on top of them +// when devs only used the sdk to build their own apps, there was no (real) need for these to be exported. +export type { SuperTokensConfig, SuperTokensPublicConfig, SuperTokensPublicPlugin, SuperTokensPlugin } from "./types"; +export type { TranslationStore } from "./translation/translationHelpers"; export { SuperTokensWrapper } from "./components/supertokensWrapper"; export { useTranslation } from "./translation/translationContext"; +export { getTranslationFunction } from "./translation/translationHelpers"; export { useUserContext } from "./usercontext"; diff --git a/lib/ts/recipe/authRecipe/componentOverrideContext.tsx b/lib/ts/recipe/authRecipe/componentOverrideContext.tsx index 1b5d5f214..fa905aae4 100644 --- a/lib/ts/recipe/authRecipe/componentOverrideContext.tsx +++ b/lib/ts/recipe/authRecipe/componentOverrideContext.tsx @@ -2,6 +2,6 @@ import { createGenericComponentsOverrideContext } from "../../components/compone import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext({}, "authRecipe"); export { useContext as useAuthRecipeComponentOverrideContext, Provider as AuthRecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/emailpassword/componentOverrideContext.tsx b/lib/ts/recipe/emailpassword/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/emailpassword/componentOverrideContext.tsx +++ b/lib/ts/recipe/emailpassword/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/emailpassword/components/library/formBase.tsx b/lib/ts/recipe/emailpassword/components/library/formBase.tsx index 9d11b6f6e..ced3f6704 100644 --- a/lib/ts/recipe/emailpassword/components/library/formBase.tsx +++ b/lib/ts/recipe/emailpassword/components/library/formBase.tsx @@ -288,6 +288,7 @@ export const FormBase: React.FC> = (props) => { } } } catch (e) { + console.error(e); props.onError("SOMETHING_WENT_WRONG_ERROR"); } finally { setIsLoading(false); diff --git a/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.tsx b/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.tsx index da81d334b..6ca3412dc 100644 --- a/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.tsx +++ b/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/resetPasswordEmail.tsx @@ -25,7 +25,11 @@ import GeneralError from "../../library/generalError"; import type { EnterEmailProps, EnterEmailStatus } from "../../../types"; -const EmailPasswordResetPasswordEmail: React.FC = (props) => { +const EmailPasswordResetPasswordEmail: React.FC< + EnterEmailProps & { + footer?: JSX.Element; + } +> = (props) => { const t = useTranslation(); const userContext = useUserContext(); const [status, setStatus] = useState("READY"); @@ -117,6 +121,7 @@ const EmailPasswordResetPasswordEmail: React.FC = (props) => { }} showLabels={true} validateOnBlur={true} + footer={props.footer} /> diff --git a/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.tsx b/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.tsx index b63dc1020..9be5877f0 100644 --- a/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.tsx +++ b/lib/ts/recipe/emailpassword/components/themes/resetPasswordUsingToken/submitNewPassword.tsx @@ -29,7 +29,11 @@ import GeneralError from "../../library/generalError"; import type { SubmitNewPasswordProps, SubmitNewPasswordStatus } from "../../../types"; -const EmailPasswordSubmitNewPassword: React.FC = (props) => { +const EmailPasswordSubmitNewPassword: React.FC< + SubmitNewPasswordProps & { + footer?: JSX.Element; + } +> = (props) => { const t = useTranslation(); const userContext = useUserContext(); const [status, setStatus] = useState("READY"); @@ -120,6 +124,7 @@ const EmailPasswordSubmitNewPassword: React.FC = (props) }; }} showLabels={true} + footer={props.footer} /> diff --git a/lib/ts/recipe/emailpassword/prebuiltui.tsx b/lib/ts/recipe/emailpassword/prebuiltui.tsx index 7f06cb707..57823ca82 100644 --- a/lib/ts/recipe/emailpassword/prebuiltui.tsx +++ b/lib/ts/recipe/emailpassword/prebuiltui.tsx @@ -21,6 +21,7 @@ import type { AuthComponent } from "../../types"; export class EmailPasswordPreBuiltUI extends RecipeRouter { static instance?: EmailPasswordPreBuiltUI; languageTranslations = defaultTranslationsEmailPassword; + static languageTranslations = defaultTranslationsEmailPassword; constructor(public readonly recipeInstance: EmailPassword) { super(); diff --git a/lib/ts/recipe/emailpassword/recipe.tsx b/lib/ts/recipe/emailpassword/recipe.tsx index 367b0186b..58e6b2c25 100644 --- a/lib/ts/recipe/emailpassword/recipe.tsx +++ b/lib/ts/recipe/emailpassword/recipe.tsx @@ -36,7 +36,6 @@ import type { UserInput, } from "./types"; import type { RecipeInitResult, NormalisedConfigWithAppInfoAndRecipeID, WebJSRecipeInterface } from "../../types"; -import type { NormalisedAppInfo } from "../../types"; import type RecipeModule from "../recipeModule"; /* @@ -80,7 +79,7 @@ export default class EmailPassword extends AuthRecipe< return { recipeID: EmailPassword.RECIPE_ID, authReact: ( - appInfo: NormalisedAppInfo + appInfo ): RecipeModule< GetRedirectionURLContext, PreAndPostAPIHookAction, @@ -94,17 +93,20 @@ export default class EmailPassword extends AuthRecipe< }); return EmailPassword.instance; }, - webJS: EmailPasswordWebJS.init({ - ...normalisedConfig, - override: { - functions: (originalImpl, builder) => { - const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: (...args) => { + const init = EmailPasswordWebJS.init({ + ...normalisedConfig, // plugins are applied by webjs + override: { + functions: (originalImpl, builder) => { + const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - }), + }); + return init(...args); + }, }; } diff --git a/lib/ts/recipe/emailverification/componentOverrideContext.tsx b/lib/ts/recipe/emailverification/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/emailverification/componentOverrideContext.tsx +++ b/lib/ts/recipe/emailverification/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/emailverification/prebuiltui.tsx b/lib/ts/recipe/emailverification/prebuiltui.tsx index 95ae83f60..6c095d714 100644 --- a/lib/ts/recipe/emailverification/prebuiltui.tsx +++ b/lib/ts/recipe/emailverification/prebuiltui.tsx @@ -20,6 +20,7 @@ import type { AuthComponent } from "../../types"; export class EmailVerificationPreBuiltUI extends RecipeRouter { static instance?: EmailVerificationPreBuiltUI; languageTranslations = defaultTranslationsEmailVerification; + static languageTranslations = defaultTranslationsEmailVerification; constructor(public readonly recipeInstance: EmailVerificationRecipe) { super(); diff --git a/lib/ts/recipe/emailverification/recipe.tsx b/lib/ts/recipe/emailverification/recipe.tsx index 07a1f2e89..7152b1c4b 100644 --- a/lib/ts/recipe/emailverification/recipe.tsx +++ b/lib/ts/recipe/emailverification/recipe.tsx @@ -52,7 +52,7 @@ export default class EmailVerification extends RecipeModule< NormalisedConfig > { static instance?: EmailVerification; - static RECIPE_ID = "emailverification"; + static RECIPE_ID = "emailverification" as const; static EmailVerificationClaim = new EmailVerificationClaimClass( () => EmailVerification.getInstanceOrThrow().webJSRecipe @@ -94,17 +94,20 @@ export default class EmailVerification extends RecipeModule< }); return EmailVerification.instance; }, - webJS: EmailVerificationWebJS.init({ - ...normalisedConfig, - override: { - functions: (originalImpl, builder) => { - const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: (...args) => { + const init = EmailVerificationWebJS.init({ + ...normalisedConfig, // plugins are applied by webjs + override: { + functions: (originalImpl, builder) => { + const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - }), + }); + return init(...args); + }, }; } diff --git a/lib/ts/recipe/multifactorauth/componentOverrideContext.tsx b/lib/ts/recipe/multifactorauth/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/multifactorauth/componentOverrideContext.tsx +++ b/lib/ts/recipe/multifactorauth/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/multifactorauth/index.ts b/lib/ts/recipe/multifactorauth/index.ts index 6db618485..0c50a9b35 100644 --- a/lib/ts/recipe/multifactorauth/index.ts +++ b/lib/ts/recipe/multifactorauth/index.ts @@ -87,6 +87,12 @@ export default class Wrapper { }); } + static getSecondaryFactors(input: { userContext?: UserContext }) { + return MultiFactorAuthRecipe.getInstanceOrThrow().getSecondaryFactors( + getNormalisedUserContext(input.userContext) + ); + } + static ComponentsOverrideProvider = RecipeComponentsOverrideContextProvider; } @@ -94,6 +100,7 @@ const init = Wrapper.init; const resyncSessionAndFetchMFAInfo = Wrapper.resyncSessionAndFetchMFAInfo; const redirectToFactor = Wrapper.redirectToFactor; const redirectToFactorChooser = Wrapper.redirectToFactorChooser; +const getSecondaryFactors = Wrapper.getSecondaryFactors; const MultiFactorAuthComponentsOverrideProvider = Wrapper.ComponentsOverrideProvider; const MultiFactorAuthClaim = MultiFactorAuthRecipe.MultiFactorAuthClaim; @@ -102,6 +109,7 @@ export { resyncSessionAndFetchMFAInfo, redirectToFactor, redirectToFactorChooser, + getSecondaryFactors, MultiFactorAuthComponentsOverrideProvider, GetRedirectionURLContext, PreAPIHookContext as PreAPIHookContext, diff --git a/lib/ts/recipe/multifactorauth/prebuiltui.tsx b/lib/ts/recipe/multifactorauth/prebuiltui.tsx index a9ec9baf5..b84788991 100644 --- a/lib/ts/recipe/multifactorauth/prebuiltui.tsx +++ b/lib/ts/recipe/multifactorauth/prebuiltui.tsx @@ -19,6 +19,7 @@ import type { AuthComponent } from "../../types"; export class MultiFactorAuthPreBuiltUI extends RecipeRouter { static instance?: MultiFactorAuthPreBuiltUI; languageTranslations = defaultTranslationsMultiFactorAuth; + static languageTranslations = defaultTranslationsMultiFactorAuth; constructor(public readonly recipeInstance: MultiFactorAuthRecipe) { super(); diff --git a/lib/ts/recipe/multifactorauth/recipe.tsx b/lib/ts/recipe/multifactorauth/recipe.tsx index d7fd8f0d0..879f3e4a1 100644 --- a/lib/ts/recipe/multifactorauth/recipe.tsx +++ b/lib/ts/recipe/multifactorauth/recipe.tsx @@ -56,7 +56,6 @@ import type { UserContext, WebJSRecipeInterface, } from "../../types"; -import type { NormalisedAppInfo } from "../../types"; export default class MultiFactorAuth extends RecipeModule< GetRedirectionURLContext, @@ -65,7 +64,7 @@ export default class MultiFactorAuth extends RecipeModule< NormalisedConfig > { static instance?: MultiFactorAuth; - static RECIPE_ID = "multifactorauth"; + static RECIPE_ID = "multifactorauth" as const; static MultiFactorAuthClaim = new MultiFactorAuthClaimClass( () => MultiFactorAuth.getInstanceOrThrow(), @@ -105,7 +104,7 @@ export default class MultiFactorAuth extends RecipeModule< return { recipeID: MultiFactorAuth.RECIPE_ID, authReact: ( - appInfo: NormalisedAppInfo + appInfo ): RecipeModule< GetRedirectionURLContext, PreAndPostAPIHookAction, @@ -119,17 +118,20 @@ export default class MultiFactorAuth extends RecipeModule< }); return MultiFactorAuth.instance; }, - webJS: MultiFactorAuthWebJS.init({ - ...normalisedConfig, - override: { - functions: (originalImpl, builder) => { - const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: (...args) => { + const init = MultiFactorAuthWebJS.init({ + ...normalisedConfig, + override: { + functions: (originalImpl, builder) => { + const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - }), + }); + return init(...args); + }, }; } diff --git a/lib/ts/recipe/multitenancy/componentOverrideContext.tsx b/lib/ts/recipe/multitenancy/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/multitenancy/componentOverrideContext.tsx +++ b/lib/ts/recipe/multitenancy/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/multitenancy/recipe.ts b/lib/ts/recipe/multitenancy/recipe.ts index 815464a3a..7bbec8c1a 100644 --- a/lib/ts/recipe/multitenancy/recipe.ts +++ b/lib/ts/recipe/multitenancy/recipe.ts @@ -35,7 +35,6 @@ import type { WebJSRecipeInterface, UserContext, } from "../../types"; -import type { NormalisedAppInfo } from "../../types"; import type AuthRecipe from "../authRecipe"; /* @@ -100,9 +99,10 @@ export default class Multitenancy extends BaseRecipeModule { static init(config?: UserInput): RecipeInitResult { const normalisedConfig = normaliseMultitenancyConfig(config); + return { recipeID: Multitenancy.RECIPE_ID, - authReact: (appInfo: NormalisedAppInfo): BaseRecipeModule => { + authReact: (appInfo): BaseRecipeModule => { Multitenancy.instance = new Multitenancy({ ...normalisedConfig, appInfo, @@ -110,9 +110,12 @@ export default class Multitenancy extends BaseRecipeModule { }); return Multitenancy.instance; }, - webJS: MultitenancyWebJS.init({ - ...normalisedConfig, - }), + webJS: (...args) => { + const init = MultitenancyWebJS.init({ + ...normalisedConfig, + }); + return init(...args); + }, }; } diff --git a/lib/ts/recipe/oauth2provider/componentOverrideContext.tsx b/lib/ts/recipe/oauth2provider/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/oauth2provider/componentOverrideContext.tsx +++ b/lib/ts/recipe/oauth2provider/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/oauth2provider/prebuiltui.tsx b/lib/ts/recipe/oauth2provider/prebuiltui.tsx index 3f88e7e71..dbf4756b0 100644 --- a/lib/ts/recipe/oauth2provider/prebuiltui.tsx +++ b/lib/ts/recipe/oauth2provider/prebuiltui.tsx @@ -19,6 +19,7 @@ import type { AuthComponent } from "../../types"; export class OAuth2ProviderPreBuiltUI extends RecipeRouter { static instance?: OAuth2ProviderPreBuiltUI; languageTranslations = defaultTranslationsOAuth2Provider; + static languageTranslations = defaultTranslationsOAuth2Provider; constructor(public readonly recipeInstance: OAuth2ProviderRecipe) { super(); diff --git a/lib/ts/recipe/oauth2provider/recipe.ts b/lib/ts/recipe/oauth2provider/recipe.ts index fd371b9e3..ce6919f67 100644 --- a/lib/ts/recipe/oauth2provider/recipe.ts +++ b/lib/ts/recipe/oauth2provider/recipe.ts @@ -34,7 +34,6 @@ import type { UserInput, } from "./types"; import type { RecipeInitResult, NormalisedConfigWithAppInfoAndRecipeID, WebJSRecipeInterface } from "../../types"; -import type { NormalisedAppInfo } from "../../types"; /* * Class. @@ -61,10 +60,11 @@ export default class OAuth2Provider extends RecipeModule< config?: UserInput ): RecipeInitResult { const normalisedConfig = normaliseOAuth2Config(config); + return { recipeID: OAuth2Provider.RECIPE_ID, authReact: ( - appInfo: NormalisedAppInfo + appInfo ): RecipeModule< GetRedirectionURLContext, PreAndPostAPIHookAction, @@ -78,17 +78,20 @@ export default class OAuth2Provider extends RecipeModule< }); return OAuth2Provider.instance; }, - webJS: OAuth2WebJS.init({ - ...normalisedConfig, - override: { - functions: (originalImpl, builder) => { - const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); - builder.override(functions); - builder.override(normalisedConfig.override.functions); - return originalImpl; + webJS: (...args) => { + const init = OAuth2WebJS.init({ + ...normalisedConfig, + override: { + functions: (originalImpl, builder) => { + const functions = getFunctionOverrides(normalisedConfig.onHandleEvent); + builder.override(functions); + builder.override(normalisedConfig.override.functions); + return originalImpl; + }, }, - }, - }), + }); + return init(...args); + }, }; } diff --git a/lib/ts/recipe/passwordless/componentOverrideContext.tsx b/lib/ts/recipe/passwordless/componentOverrideContext.tsx index 467bd5485..ee7ae1a4f 100644 --- a/lib/ts/recipe/passwordless/componentOverrideContext.tsx +++ b/lib/ts/recipe/passwordless/componentOverrideContext.tsx @@ -1,7 +1,12 @@ import { createGenericComponentsOverrideContext } from "../../components/componentOverride/genericComponentOverrideContext"; +import Recipe from "./recipe"; + import type { ComponentOverrideMap } from "./types"; -const [useContext, Provider] = createGenericComponentsOverrideContext(); +const [useContext, Provider] = createGenericComponentsOverrideContext( + undefined, + Recipe.RECIPE_ID +); export { useContext as useRecipeComponentOverrideContext, Provider as RecipeComponentsOverrideContextProvider }; diff --git a/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.tsx b/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.tsx index 7884f74dd..69cc84725 100644 --- a/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.tsx +++ b/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailForm.tsx @@ -30,9 +30,24 @@ import type { SignInUpEPComboEmailFormProps } from "../../../types"; export const EPComboEmailForm = withOverride( "PasswordlessEPComboEmailForm", - function PasswordlessEPComboEmailForm(props: SignInUpEPComboEmailFormProps): JSX.Element { + function PasswordlessEPComboEmailForm( + props: SignInUpEPComboEmailFormProps & { + footer?: JSX.Element; + } + ): JSX.Element { const t = useTranslation(); - + let footer = props.footer; + if (!footer && props.showContinueWithPasswordlessLink) { + footer = ( + + ); + } const formFields: FormFieldThemeProps[] = [ { id: "email", @@ -67,7 +82,8 @@ export const EPComboEmailForm = withOverride( props.navigate ) } - data-supertokens="link linkButton formLabelLinkBtn forgotPasswordLink"> + data-supertokens="link linkButton formLabelLinkBtn forgotPasswordLink" + > {t("PWLESS_COMBO_FORGOT_PW_LINK")} @@ -100,17 +116,7 @@ export const EPComboEmailForm = withOverride( }} validateOnBlur={false} showLabels={true} - footer={ - props.showContinueWithPasswordlessLink ? ( - - ) : undefined - } + footer={footer} /> ); } diff --git a/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.tsx b/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.tsx index 1c22712b9..b0110bfc0 100644 --- a/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.tsx +++ b/lib/ts/recipe/passwordless/components/themes/signInUpEPCombo/emailOrPhoneForm.tsx @@ -34,7 +34,11 @@ import type { SignInUpEPComboEmailOrPhoneFormProps } from "../../../types"; export const EPComboEmailOrPhoneForm = withOverride( "PasswordlessEPComboEmailOrPhoneForm", - function PasswordlessEPComboEmailOrPhoneForm(props: SignInUpEPComboEmailOrPhoneFormProps): JSX.Element { + function PasswordlessEPComboEmailOrPhoneForm( + props: SignInUpEPComboEmailOrPhoneFormProps & { + footer?: JSX.Element; + } + ): JSX.Element { const t = useTranslation(); useEffect(() => { @@ -59,7 +63,8 @@ export const EPComboEmailOrPhoneForm = withOverride(