diff --git a/.changeset/afraid-cheetahs-smash.md b/.changeset/afraid-cheetahs-smash.md new file mode 100644 index 0000000000..83f014903d --- /dev/null +++ b/.changeset/afraid-cheetahs-smash.md @@ -0,0 +1,9 @@ +--- +'@clerk/nextjs': minor +--- + +Introduce the `useReverification()` hook that handles the session reverification flow: +- Replaces `__experimental_useReverification` with `useReverification` +Also replaces the following APIs: +- `____experimental_reverificationError` -> `__reverificationError` +- `__experimental_reverificationErrorResponse` -> `reverificationErrorResponse` diff --git a/.changeset/curly-terms-confess.md b/.changeset/curly-terms-confess.md new file mode 100644 index 0000000000..7e6441c892 --- /dev/null +++ b/.changeset/curly-terms-confess.md @@ -0,0 +1,6 @@ +--- +'@clerk/chrome-extension': patch +--- + +Introduce the `useReverification()` hook that handles the session reverification flow: +- Replaces `__experimental_useReverification` with `useReverification` diff --git a/.changeset/forty-countries-retire.md b/.changeset/forty-countries-retire.md new file mode 100644 index 0000000000..1e22df7165 --- /dev/null +++ b/.changeset/forty-countries-retire.md @@ -0,0 +1,10 @@ +--- +'@clerk/shared': minor +--- + +Introduce the `useReverification()` hook that handles the session reverification flow: +- `__experimental_useReverification` -> `useReverification` +Also replaces the following APIs: +- `__experimental_reverificationError` -> `reverificationError` +- `__experimental_reverificationErrorResponse` -> `reverificationErrorResponse` +- `__experimental_isReverificationHint` -> `isReverificationHint` diff --git a/.changeset/friendly-chairs-tie.md b/.changeset/friendly-chairs-tie.md new file mode 100644 index 0000000000..8fd318da6b --- /dev/null +++ b/.changeset/friendly-chairs-tie.md @@ -0,0 +1,33 @@ +--- +'@clerk/types': minor +--- + +Drop experimental tag related to reverification. + +Properties of Clerk class: +- `__experimental_openUserVerification` -> `__internal_openUserVerification` +- `__experimental_closeUserVerification` -> `__internal_closeUserVerification` +- `__experimental_UserVerificationProps` -> `__internal_UserVerificationProps` +- `__experimental_UserVerificationModalProps` -> `__internal_UserVerificationModalProps` + +Properties of `Session`: +- `__experimental_factorVerificationAge` -> `factorVerificationAge` +- `__experimental_startVerification` -> `startVerification` +- `__experimental_prepareFirstFactorVerification` -> `prepareFirstFactorVerification` +- `__experimental_attemptFirstFactorVerification` -> `attemptFirstFactorVerification` +- `__experimental_prepareSecondFactorVerification` -> `prepareSecondFactorVerification` +- `__experimental_attemptSecondFactorVerification` -> `attemptSecondFactorVerification` + +Renaming +- `__experimental_SessionVerificationResource` -> `SessionVerificationResource` +- `__experimental_SessionVerificationStatus` -> `SessionVerificationStatus` +- `__experimental_SessionVerificationLevel` -> `SessionVerificationLevel` +- `__experimental_ReverificationConfig` -> `ReverificationConfig` + +`CheckAuthorizationParamsWithCustomPermissions` and `CheckAuthorizationParams` now include `reverification?: ReverificationConfig;` + +Properties of `IntialState`: +- `__experimental_factorVerificationAge` -> `factorVerificationAge` + +Localization types: +All properties of `__experimental_userVerification` are moved to `userVerification` diff --git a/.changeset/happy-balloons-jog.md b/.changeset/happy-balloons-jog.md new file mode 100644 index 0000000000..9384bcdd39 --- /dev/null +++ b/.changeset/happy-balloons-jog.md @@ -0,0 +1,6 @@ +--- +'@clerk/clerk-react': minor +--- + +Introduce the `useReverification()` hook that handles the session reverification flow: +- Replaces `__experimental_useReverification` with `useReverification` diff --git a/.changeset/hungry-beds-prove.md b/.changeset/hungry-beds-prove.md new file mode 100644 index 0000000000..1fdf4ad7c6 --- /dev/null +++ b/.changeset/hungry-beds-prove.md @@ -0,0 +1,19 @@ +--- +'@clerk/clerk-js': minor +--- + +Drop experimental tag related to reverification. + +Properties of Clerk class: +- `__experimental_openUserVerification` -> `__internal_openUserVerification` +- `__experimental_closeUserVerification` -> `__internal_closeUserVerification` +- `__experimental_UserVerificationProps` -> `__internal_UserVerificationProps` +- `__experimental_UserVerificationModalProps` -> `__internal_UserVerificationModalProps` + +Properties of `Session`: +- `__experimental_factorVerificationAge` -> `factorVerificationAge` +- `__experimental_startVerification` -> `startVerification` +- `__experimental_prepareFirstFactorVerification` -> `prepareFirstFactorVerification` +- `__experimental_attemptFirstFactorVerification` -> `attemptFirstFactorVerification` +- `__experimental_prepareSecondFactorVerification` -> `prepareSecondFactorVerification` +- `__experimental_attemptSecondFactorVerification` -> `attemptSecondFactorVerification` diff --git a/.changeset/small-suits-knock.md b/.changeset/small-suits-knock.md new file mode 100644 index 0000000000..53c5597333 --- /dev/null +++ b/.changeset/small-suits-knock.md @@ -0,0 +1,5 @@ +--- +'@clerk/localizations': minor +--- + +Moves all properties under `__experimental_userVerification` to `userVerification`. This affects all languages. diff --git a/.changeset/smart-cooks-drop.md b/.changeset/smart-cooks-drop.md new file mode 100644 index 0000000000..f8de748b94 --- /dev/null +++ b/.changeset/smart-cooks-drop.md @@ -0,0 +1,8 @@ +--- +'@clerk/backend': minor +--- + +Update AuthObject property from `__experimental_factorVerificationAge` to `factorVerificationAge`. +Also replaces the following APIs: +- `__experimental_reverificationError` -> `__reverificationError` +- `__experimental_reverificationErrorResponse` -> `reverificationErrorResponse` diff --git a/integration/templates/next-app-router/src/app/(reverification)/action-with-use-reverification/page.tsx b/integration/templates/next-app-router/src/app/(reverification)/action-with-use-reverification/page.tsx index 8ac2db94ba..ad3bf6b307 100644 --- a/integration/templates/next-app-router/src/app/(reverification)/action-with-use-reverification/page.tsx +++ b/integration/templates/next-app-router/src/app/(reverification)/action-with-use-reverification/page.tsx @@ -1,6 +1,6 @@ 'use client'; import { useState, useTransition } from 'react'; -import { __experimental_useReverification as useReverification } from '@clerk/nextjs'; +import { useReverification } from '@clerk/nextjs'; import { logUserIdActionReverification } from '@/app/(reverification)/actions'; function Page() { diff --git a/integration/templates/next-app-router/src/app/(reverification)/actions.ts b/integration/templates/next-app-router/src/app/(reverification)/actions.ts index f281ffed63..5433473053 100644 --- a/integration/templates/next-app-router/src/app/(reverification)/actions.ts +++ b/integration/templates/next-app-router/src/app/(reverification)/actions.ts @@ -1,19 +1,17 @@ 'use server'; -import { auth } from '@clerk/nextjs/server'; -import { __experimental_reverificationError as reverificationError } from '@clerk/shared/authorization-errors'; -import { __experimental_ReverificationConfig } from '@clerk/types'; - +import { auth, reverificationError } from '@clerk/nextjs/server'; +import { ReverificationConfig } from '@clerk/types'; const logUserIdActionReverification = async () => { const { userId, has } = await auth.protect(); const config = { level: 'second_factor', afterMinutes: 1, - } satisfies __experimental_ReverificationConfig; + } satisfies ReverificationConfig; const userNeedsReverification = !has({ - __experimental_reverification: config, + reverification: config, }); if (userNeedsReverification) { diff --git a/packages/backend/src/__tests__/exports.test.ts b/packages/backend/src/__tests__/exports.test.ts index 0a9d580229..17c4894285 100644 --- a/packages/backend/src/__tests__/exports.test.ts +++ b/packages/backend/src/__tests__/exports.test.ts @@ -37,8 +37,6 @@ describe('subpath /internal exports', () => { expect(Object.keys(internalExports).sort()).toMatchInlineSnapshot(` [ "AuthStatus", - "__experimental_reverificationError", - "__experimental_reverificationErrorResponse", "constants", "createAuthenticateRequest", "createClerkRequest", @@ -46,6 +44,8 @@ describe('subpath /internal exports', () => { "debugRequestState", "decorateObjectWithResources", "makeAuthObjectSerializable", + "reverificationError", + "reverificationErrorResponse", "signedInAuthObject", "signedOutAuthObject", "stripPrivateDataFromObject", diff --git a/packages/backend/src/internal.ts b/packages/backend/src/internal.ts index e29158d637..c9b7daf9ff 100644 --- a/packages/backend/src/internal.ts +++ b/packages/backend/src/internal.ts @@ -20,7 +20,4 @@ export { decorateObjectWithResources, stripPrivateDataFromObject } from './util/ export { createClerkRequest } from './tokens/clerkRequest'; export type { ClerkRequest } from './tokens/clerkRequest'; -export { - __experimental_reverificationError, - __experimental_reverificationErrorResponse, -} from '@clerk/shared/authorization-errors'; +export { reverificationError, reverificationErrorResponse } from '@clerk/shared/authorization-errors'; diff --git a/packages/backend/src/tokens/authObjects.ts b/packages/backend/src/tokens/authObjects.ts index 8f51a97756..e24df5830c 100644 --- a/packages/backend/src/tokens/authObjects.ts +++ b/packages/backend/src/tokens/authObjects.ts @@ -39,9 +39,8 @@ export type SignedInAuthObject = { * Factor Verification Age * Each item represents the minutes that have passed since the last time a first or second factor were verified. * [fistFactorAge, secondFactorAge] - * @experimental This API is experimental and may change at any moment. */ - __experimental_factorVerificationAge: [number, number] | null; + factorVerificationAge: [number, number] | null; getToken: ServerGetToken; has: CheckAuthorizationWithCustomPermissions; debug: AuthObjectDebug; @@ -63,9 +62,8 @@ export type SignedOutAuthObject = { * Factor Verification Age * Each item represents the minutes that have passed since the last time a first or second factor were verified. * [fistFactorAge, secondFactorAge] - * @experimental This API is experimental and may change at any moment. */ - __experimental_factorVerificationAge: null; + factorVerificationAge: null; getToken: ServerGetToken; has: CheckAuthorizationWithCustomPermissions; debug: AuthObjectDebug; @@ -111,7 +109,7 @@ export function signedInAuthObject( }); // fva can be undefined for instances that have not opt-in - const __experimental_factorVerificationAge = fva ?? null; + const factorVerificationAge = fva ?? null; return { actor, @@ -122,9 +120,9 @@ export function signedInAuthObject( orgRole, orgSlug, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, getToken, - has: createCheckAuthorization({ orgId, orgRole, orgPermissions, userId, __experimental_factorVerificationAge }), + has: createCheckAuthorization({ orgId, orgRole, orgPermissions, userId, factorVerificationAge }), debug: createDebug({ ...authenticateContext, sessionToken }), }; } @@ -142,7 +140,7 @@ export function signedOutAuthObject(debugData?: AuthObjectDebugData): SignedOutA orgRole: null, orgSlug: null, orgPermissions: null, - __experimental_factorVerificationAge: null, + factorVerificationAge: null, getToken: () => Promise.resolve(null), has: () => false, debug: createDebug(debugData), diff --git a/packages/chrome-extension/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/chrome-extension/src/__tests__/__snapshots__/exports.test.ts.snap index e649aa8c78..0be5a3259f 100644 --- a/packages/chrome-extension/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/chrome-extension/src/__tests__/__snapshots__/exports.test.ts.snap @@ -28,12 +28,12 @@ exports[`public exports should not include a breaking change 1`] = ` "UserButton", "UserProfile", "Waitlist", - "__experimental_useReverification", "useAuth", "useClerk", "useEmailLink", "useOrganization", "useOrganizationList", + "useReverification", "useSession", "useSessionList", "useSignIn", diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 516ce741dc..99b578e14f 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -9,7 +9,7 @@ import { eventPrebuiltComponentMounted, TelemetryCollector } from '@clerk/shared import { addClerkPrefix, stripScheme } from '@clerk/shared/url'; import { handleValueOrFn, noop } from '@clerk/shared/utils'; import type { - __experimental_UserVerificationModalProps, + __internal_UserVerificationModalProps, ActiveSessionResource, AuthenticateWithCoinbaseWalletParams, AuthenticateWithGoogleOneTapParams, @@ -425,7 +425,7 @@ export class Clerk implements ClerkInterface { void this.#componentControls.ensureMounted().then(controls => controls.closeModal('signIn')); }; - public __experimental_openUserVerification = (props?: __experimental_UserVerificationModalProps): void => { + public __internal_openUserVerification = (props?: __internal_UserVerificationModalProps): void => { this.assertComponentsReady(this.#componentControls); if (noUserExists(this)) { if (this.#instanceType === 'development') { @@ -440,6 +440,11 @@ export class Clerk implements ClerkInterface { .then(controls => controls.openModal('userVerification', props || {})); }; + public __internal_closeUserVerification = (): void => { + this.assertComponentsReady(this.#componentControls); + void this.#componentControls.ensureMounted().then(controls => controls.closeModal('userVerification')); + }; + public __internal_openBlankCaptchaModal = (): Promise => { this.assertComponentsReady(this.#componentControls); return this.#componentControls @@ -454,11 +459,6 @@ export class Clerk implements ClerkInterface { .then(controls => controls.closeModal('blankCaptcha')); }; - public __experimental_closeUserVerification = (): void => { - this.assertComponentsReady(this.#componentControls); - void this.#componentControls.ensureMounted().then(controls => controls.closeModal('userVerification')); - }; - public openSignUp = (props?: SignUpProps): void => { this.assertComponentsReady(this.#componentControls); if (sessionExistsAndSingleSessionModeEnabled(this, this.environment)) { diff --git a/packages/clerk-js/src/core/resources/Session.ts b/packages/clerk-js/src/core/resources/Session.ts index 3d5fcf5673..2249189589 100644 --- a/packages/clerk-js/src/core/resources/Session.ts +++ b/packages/clerk-js/src/core/resources/Session.ts @@ -2,13 +2,6 @@ import { createCheckAuthorization } from '@clerk/shared/authorization'; import { is4xxError, isClerkAPIResponseError } from '@clerk/shared/error'; import { runWithExponentialBackOff } from '@clerk/shared/utils'; import type { - __experimental_SessionVerificationJSON, - __experimental_SessionVerificationResource, - __experimental_SessionVerifyAttemptFirstFactorParams, - __experimental_SessionVerifyAttemptSecondFactorParams, - __experimental_SessionVerifyCreateParams, - __experimental_SessionVerifyPrepareFirstFactorParams, - __experimental_SessionVerifyPrepareSecondFactorParams, ActJWTClaim, CheckAuthorization, EmailCodeConfig, @@ -18,6 +11,13 @@ import type { SessionJSON, SessionResource, SessionStatus, + SessionVerificationJSON, + SessionVerificationResource, + SessionVerifyAttemptFirstFactorParams, + SessionVerifyAttemptSecondFactorParams, + SessionVerifyCreateParams, + SessionVerifyPrepareFirstFactorParams, + SessionVerifyPrepareSecondFactorParams, TokenResource, UserResource, } from '@clerk/types'; @@ -41,7 +41,7 @@ export class Session extends BaseResource implements SessionResource { actor!: ActJWTClaim | null; user!: UserResource | null; publicUserData!: PublicUserData; - __experimental_factorVerificationAge: [number, number] | null = null; + factorVerificationAge: [number, number] | null = null; expireAt!: Date; abandonAt!: Date; createdAt!: Date; @@ -94,7 +94,7 @@ export class Session extends BaseResource implements SessionResource { const activeMembership = orgMemberships.find(mem => mem.organization.id === this.lastActiveOrganizationId); return createCheckAuthorization({ userId: this.user?.id, - __experimental_factorVerificationAge: this.__experimental_factorVerificationAge, + factorVerificationAge: this.factorVerificationAge, orgId: activeMembership?.id, orgRole: activeMembership?.role, orgPermissions: activeMembership?.permissions, @@ -121,9 +121,7 @@ export class Session extends BaseResource implements SessionResource { return [this.id, template, resolvedOrganizationId, this.updatedAt.getTime()].filter(Boolean).join('-'); } - __experimental_startVerification = async ({ - level, - }: __experimental_SessionVerifyCreateParams): Promise<__experimental_SessionVerificationResource> => { + startVerification = async ({ level }: SessionVerifyCreateParams): Promise => { const json = ( await BaseResource._fetch({ method: 'POST', @@ -132,14 +130,14 @@ export class Session extends BaseResource implements SessionResource { level, } as any, }) - )?.response as unknown as __experimental_SessionVerificationJSON; + )?.response as unknown as SessionVerificationJSON; return new SessionVerification(json); }; - __experimental_prepareFirstFactorVerification = async ( - factor: __experimental_SessionVerifyPrepareFirstFactorParams, - ): Promise<__experimental_SessionVerificationResource> => { + prepareFirstFactorVerification = async ( + factor: SessionVerifyPrepareFirstFactorParams, + ): Promise => { let config; switch (factor.strategy) { case 'email_code': @@ -164,49 +162,49 @@ export class Session extends BaseResource implements SessionResource { strategy: factor.strategy, } as any, }) - )?.response as unknown as __experimental_SessionVerificationJSON; + )?.response as unknown as SessionVerificationJSON; return new SessionVerification(json); }; - __experimental_attemptFirstFactorVerification = async ( - attemptFactor: __experimental_SessionVerifyAttemptFirstFactorParams, - ): Promise<__experimental_SessionVerificationResource> => { + attemptFirstFactorVerification = async ( + attemptFactor: SessionVerifyAttemptFirstFactorParams, + ): Promise => { const json = ( await BaseResource._fetch({ method: 'POST', path: `/client/sessions/${this.id}/verify/attempt_first_factor`, body: { ...attemptFactor, strategy: attemptFactor.strategy } as any, }) - )?.response as unknown as __experimental_SessionVerificationJSON; + )?.response as unknown as SessionVerificationJSON; return new SessionVerification(json); }; - __experimental_prepareSecondFactorVerification = async ( - params: __experimental_SessionVerifyPrepareSecondFactorParams, - ): Promise<__experimental_SessionVerificationResource> => { + prepareSecondFactorVerification = async ( + params: SessionVerifyPrepareSecondFactorParams, + ): Promise => { const json = ( await BaseResource._fetch({ method: 'POST', path: `/client/sessions/${this.id}/verify/prepare_second_factor`, body: params as any, }) - )?.response as unknown as __experimental_SessionVerificationJSON; + )?.response as unknown as SessionVerificationJSON; return new SessionVerification(json); }; - __experimental_attemptSecondFactorVerification = async ( - params: __experimental_SessionVerifyAttemptSecondFactorParams, - ): Promise<__experimental_SessionVerificationResource> => { + attemptSecondFactorVerification = async ( + params: SessionVerifyAttemptSecondFactorParams, + ): Promise => { const json = ( await BaseResource._fetch({ method: 'POST', path: `/client/sessions/${this.id}/verify/attempt_second_factor`, body: params as any, }) - )?.response as unknown as __experimental_SessionVerificationJSON; + )?.response as unknown as SessionVerificationJSON; return new SessionVerification(json); }; @@ -220,7 +218,7 @@ export class Session extends BaseResource implements SessionResource { this.status = data.status; this.expireAt = unixEpochToDate(data.expire_at); this.abandonAt = unixEpochToDate(data.abandon_at); - this.__experimental_factorVerificationAge = data.factor_verification_age; + this.factorVerificationAge = data.factor_verification_age; this.lastActiveAt = unixEpochToDate(data.last_active_at); this.lastActiveOrganizationId = data.last_active_organization_id; this.actor = data.actor; diff --git a/packages/clerk-js/src/core/resources/SessionVerification.ts b/packages/clerk-js/src/core/resources/SessionVerification.ts index 234b3b8339..34e703b25a 100644 --- a/packages/clerk-js/src/core/resources/SessionVerification.ts +++ b/packages/clerk-js/src/core/resources/SessionVerification.ts @@ -1,42 +1,42 @@ import { deepSnakeToCamel } from '@clerk/shared/underscore'; import type { - __experimental_SessionVerificationFirstFactor, - __experimental_SessionVerificationJSON, - __experimental_SessionVerificationLevel, - __experimental_SessionVerificationResource, - __experimental_SessionVerificationSecondFactor, - __experimental_SessionVerificationStatus, SessionResource, + SessionVerificationFirstFactor, + SessionVerificationJSON, + SessionVerificationLevel, + SessionVerificationResource, + SessionVerificationSecondFactor, + SessionVerificationStatus, VerificationResource, } from '@clerk/types'; import { BaseResource, Session, Verification } from './internal'; -export class SessionVerification extends BaseResource implements __experimental_SessionVerificationResource { - status!: __experimental_SessionVerificationStatus; - level!: __experimental_SessionVerificationLevel; +export class SessionVerification extends BaseResource implements SessionVerificationResource { + status!: SessionVerificationStatus; + level!: SessionVerificationLevel; session!: SessionResource; - supportedFirstFactors: __experimental_SessionVerificationFirstFactor[] | null = []; - supportedSecondFactors: __experimental_SessionVerificationSecondFactor[] | null = []; + supportedFirstFactors: SessionVerificationFirstFactor[] | null = []; + supportedSecondFactors: SessionVerificationSecondFactor[] | null = []; firstFactorVerification: VerificationResource = new Verification(null); secondFactorVerification: VerificationResource = new Verification(null); - constructor(data: __experimental_SessionVerificationJSON | null = null) { + constructor(data: SessionVerificationJSON | null = null) { super(); this.fromJSON(data); } - protected fromJSON(data: __experimental_SessionVerificationJSON | null): this { + protected fromJSON(data: SessionVerificationJSON | null): this { if (data) { this.id = data.id; this.status = data.status; this.session = new Session(data.session); this.level = data.level; this.supportedFirstFactors = deepSnakeToCamel(data.supported_first_factors) as - | __experimental_SessionVerificationFirstFactor[] + | SessionVerificationFirstFactor[] | null; this.supportedSecondFactors = deepSnakeToCamel(data.supported_second_factors) as - | __experimental_SessionVerificationSecondFactor[] + | SessionVerificationSecondFactor[] | null; this.firstFactorVerification = new Verification(data.first_factor_verification); this.secondFactorVerification = new Verification(data.second_factor_verification); diff --git a/packages/clerk-js/src/core/resources/__tests__/Session.test.ts b/packages/clerk-js/src/core/resources/__tests__/Session.test.ts index 0eaf4626f2..b625c82a09 100644 --- a/packages/clerk-js/src/core/resources/__tests__/Session.test.ts +++ b/packages/clerk-js/src/core/resources/__tests__/Session.test.ts @@ -311,7 +311,7 @@ describe('Session', () => { const isAuthorized = session.checkAuthorization({ permission: 'org:sys_profile:delete', - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -338,7 +338,7 @@ describe('Session', () => { const isAuthorized = session.checkAuthorization({ permission: 'org:sys_profile:delete', - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -362,7 +362,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -386,7 +386,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -410,7 +410,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -434,7 +434,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -458,7 +458,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -482,7 +482,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 'strict', + reverification: 'strict', }); expect(isAuthorized).toBe(false); @@ -503,7 +503,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 'strict_mfa', + reverification: 'strict_mfa', }); expect(isAuthorized).toBe(true); @@ -524,7 +524,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -548,7 +548,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -572,7 +572,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multiFactor', afterMinutes: 10, }, @@ -596,7 +596,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multiFactor', afterMinutes: 10, }, @@ -620,7 +620,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multiFactor', afterMinutes: 10, }, @@ -644,7 +644,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'first_factor', afterMinutes: 10, }, @@ -668,7 +668,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 'strict', + reverification: 'strict', }); expect(isAuthorized).toBe(false); @@ -677,7 +677,7 @@ describe('Session', () => { /** * Test for invalid input */ - it('incorrect params for __experimental_reverification', async () => { + it('incorrect params for reverification', async () => { const session = new Session({ status: 'active', id: 'session_1', @@ -692,7 +692,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { //@ts-expect-error level: 'any level', afterMinutes: 10, @@ -702,7 +702,7 @@ describe('Session', () => { expect(isAuthorized).toBe(false); }); - it('incorrect params for __experimental_reverification', async () => { + it('incorrect params for reverification', async () => { const session = new Session({ status: 'active', id: 'session_1', @@ -717,7 +717,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { //@ts-expect-error level: 'any level', //@ts-expect-error @@ -728,7 +728,7 @@ describe('Session', () => { expect(isAuthorized).toBe(false); }); - it('incorrect params for __experimental_reverification', async () => { + it('incorrect params for reverification', async () => { const session = new Session({ status: 'active', id: 'session_1', @@ -743,13 +743,14 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 'invalid-value', + // @ts-expect-error + reverification: 'invalid-value', }); expect(isAuthorized).toBe(false); }); - it('incorrect params for __experimental_reverification', async () => { + it('incorrect params for reverification', async () => { const session = new Session({ status: 'active', id: 'session_1', @@ -764,13 +765,14 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 123, + // @ts-expect-error + reverification: 123, }); expect(isAuthorized).toBe(false); }); - it('incorrect params for __experimental_reverification', async () => { + it('incorrect params for reverification', async () => { const session = new Session({ status: 'active', id: 'session_1', @@ -785,7 +787,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'first_factor', //@ts-expect-error afterMinutes: '10', @@ -813,7 +815,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'multi_factor', afterMinutes: 10, }, @@ -837,7 +839,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: { + reverification: { level: 'first_factor', afterMinutes: 10, }, @@ -861,7 +863,7 @@ describe('Session', () => { } as SessionJSON); const isAuthorized = session.checkAuthorization({ - __experimental_reverification: 'strict', + reverification: 'strict', }); expect(isAuthorized).toBe(true); diff --git a/packages/clerk-js/src/ui/Components.tsx b/packages/clerk-js/src/ui/Components.tsx index f12eac988c..81b8e93036 100644 --- a/packages/clerk-js/src/ui/Components.tsx +++ b/packages/clerk-js/src/ui/Components.tsx @@ -1,7 +1,7 @@ import { useSafeLayoutEffect } from '@clerk/shared/react'; import { createDeferredPromise } from '@clerk/shared/utils'; import type { - __experimental_UserVerificationProps, + __internal_UserVerificationProps, Appearance, Clerk, ClerkOptions, @@ -79,7 +79,7 @@ export type ComponentControls = { : T extends 'signUp' ? SignUpProps : T extends 'userVerification' - ? __experimental_UserVerificationProps + ? __internal_UserVerificationProps : T extends 'waitlist' ? WaitlistProps : UserProfileProps, @@ -125,7 +125,7 @@ interface ComponentsState { signInModal: null | SignInProps; signUpModal: null | SignUpProps; userProfileModal: null | UserProfileProps; - userVerificationModal: null | __experimental_UserVerificationProps; + userVerificationModal: null | __internal_UserVerificationProps; organizationProfileModal: null | OrganizationProfileProps; createOrganizationModal: null | CreateOrganizationProps; blankCaptchaModal: null; diff --git a/packages/clerk-js/src/ui/common/RemoveResourceForm.tsx b/packages/clerk-js/src/ui/common/RemoveResourceForm.tsx index 1959fe6ad8..52268fb43f 100644 --- a/packages/clerk-js/src/ui/common/RemoveResourceForm.tsx +++ b/packages/clerk-js/src/ui/common/RemoveResourceForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification } from '@clerk/shared/react'; +import { useReverification } from '@clerk/shared/react'; import { localizationKeys, Text } from '../customizables'; import type { FormProps } from '../elements'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx index 3d57b8b32c..5d0f238163 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useSession, useUser } from '@clerk/shared/react'; +import { useReverification, useSession, useUser } from '@clerk/shared/react'; import type { SessionWithActivitiesResource } from '@clerk/types'; import { Badge, Col, descriptors, Flex, Icon, localizationKeys, Text, useLocalizations } from '../../customizables'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx b/packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx index 3393e31e99..6aa4b8d646 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/AddAuthenticatorApp.tsx @@ -1,5 +1,5 @@ import { isClerkRuntimeError } from '@clerk/shared/error'; -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { TOTPResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx index 9845cf6bf1..d1fdbf607d 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsMenu.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { OAuthProvider, OAuthStrategy } from '@clerk/types'; import { appendModalState } from '../../../utils'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx index ab61bcd687..7843ece13a 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { ExternalAccountResource, OAuthProvider, OAuthScope, OAuthStrategy } from '@clerk/types'; import { appendModalState } from '../../../utils'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx index edbe4b8244..5a90cfadd9 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/DeleteUserForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useClerk, useUser } from '@clerk/shared/react'; +import { useClerk, useReverification, useUser } from '@clerk/shared/react'; import { useSignOutContext } from '../../contexts'; import { Col, localizationKeys, Text, useLocalizations } from '../../customizables'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx index 4c7e0bf44e..9eced5436a 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/EmailForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { EmailAddressResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx index 4f9cac0c06..a7a7f7e58b 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreateForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { BackupCodeResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx index 7dc1762ddd..68d75a0a98 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeScreen.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { PhoneNumberResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx b/packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx index 4059a396a1..940a6b2ae2 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PasskeySection.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useClerk, useUser } from '@clerk/shared/react'; +import { useClerk, useReverification, useUser } from '@clerk/shared/react'; import type { PasskeyResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx index 8b9b22a5fc..6834d0b773 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PasswordForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useSession, useUser } from '@clerk/shared/react'; +import { useReverification, useSession, useUser } from '@clerk/shared/react'; import type { UserResource } from '@clerk/types'; import { useRef } from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx index 6b1baeb9ef..77a60012ad 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PhoneForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import type { PhoneNumberResource, UserResource } from '@clerk/types'; import React from 'react'; diff --git a/packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx b/packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx index fc4876ded1..a052638465 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UsernameForm.tsx @@ -1,4 +1,4 @@ -import { __experimental_useReverification as useReverification, useUser } from '@clerk/shared/react'; +import { useReverification, useUser } from '@clerk/shared/react'; import { useEnvironment } from '../../contexts'; import { localizationKeys } from '../../customizables'; diff --git a/packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx b/packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx index 4699d6e34d..28e0fabfd8 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/AlternativeMethods.tsx @@ -1,4 +1,4 @@ -import type { __experimental_SessionVerificationFirstFactor, SignInFactor } from '@clerk/types'; +import type { SessionVerificationFirstFactor, SignInFactor } from '@clerk/types'; import React from 'react'; import type { LocalizationKey } from '../../customizables'; @@ -29,24 +29,18 @@ const AlternativeMethodsList = (props: AlternativeMethodListProps) => { const { onBackLinkClick, onHavingTroubleClick, onFactorSelected } = props; const card = useCardState(); const { data } = useUserVerificationSession(); - const { firstPartyFactors, hasAnyStrategy } = useAlternativeStrategies<__experimental_SessionVerificationFirstFactor>( - { - filterOutFactor: props?.currentFactor, - supportedFirstFactors: data!.supportedFirstFactors, - }, - ); + const { firstPartyFactors, hasAnyStrategy } = useAlternativeStrategies({ + filterOutFactor: props?.currentFactor, + supportedFirstFactors: data?.supportedFirstFactors, + }); return ( - - + + {card.error} {/*TODO: extract main in its own component */} @@ -93,11 +87,9 @@ const AlternativeMethodsList = (props: AlternativeMethodListProps) => { - + @@ -107,24 +99,24 @@ const AlternativeMethodsList = (props: AlternativeMethodListProps) => { ); }; -export function getButtonLabel(factor: __experimental_SessionVerificationFirstFactor): LocalizationKey { +export function getButtonLabel(factor: SessionVerificationFirstFactor): LocalizationKey { switch (factor.strategy) { case 'email_code': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__emailCode', { + return localizationKeys('userVerification.alternativeMethods.blockButton__emailCode', { identifier: formatSafeIdentifier(factor.safeIdentifier) || '', }); case 'phone_code': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__phoneCode', { + return localizationKeys('userVerification.alternativeMethods.blockButton__phoneCode', { identifier: formatSafeIdentifier(factor.safeIdentifier) || '', }); case 'password': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__password'); + return localizationKeys('userVerification.alternativeMethods.blockButton__password'); default: throw `Invalid sign in strategy: "${(factor as any).strategy}"`; } } -export function getButtonIcon(factor: __experimental_SessionVerificationFirstFactor) { +export function getButtonIcon(factor: SessionVerificationFirstFactor) { const icons = { email_code: Email, phone_code: ChatAltIcon, diff --git a/packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx b/packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx index 92a9f706bb..a6c020deba 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/HavingTrouble.tsx @@ -7,8 +7,8 @@ export const HavingTrouble = (props: PropsOfComponent) => { return ( ); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx index c9091fd9fc..94290e5585 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneCodeForm.tsx @@ -38,14 +38,14 @@ export const UVFactorOneCodeForm = (props: UVFactorOneCodeFormProps) => { const prepare = () => { void session! - .__experimental_prepareFirstFactorVerification(props.factor) + .prepareFirstFactorVerification(props.factor) .then(() => props.onFactorPrepare()) .catch(err => handleError(err, [], card.setError)); }; const action: VerificationCodeCardProps['onCodeEntryFinishedAction'] = (code, resolve, reject) => { session! - .__experimental_attemptFirstFactorVerification({ strategy: props.factor.strategy, code }) + .attemptFirstFactorVerification({ strategy: props.factor.strategy, code }) .then(async res => { await resolve(); return handleVerificationResponse(res); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx index ca72283043..c1f02b13ca 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOneEmailCodeCard.tsx @@ -11,10 +11,10 @@ export const UVFactorOneEmailCodeCard = (props: UVFactorOneEmailCodeCardProps) = ); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx index 9ba5c0b778..e18ae2b754 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorOnePhoneCodeCard.tsx @@ -11,10 +11,10 @@ export const UVFactorOnePhoneCodeCard = (props: UVFactorOnePhoneCodeCardProps) = ); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx index 5ec8ea0297..9c4971ccde 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoAlternativeMethods.tsx @@ -1,4 +1,4 @@ -import type { __experimental_SessionVerificationSecondFactor } from '@clerk/types'; +import type { SessionVerificationSecondFactor } from '@clerk/types'; import React from 'react'; import type { LocalizationKey } from '../../customizables'; @@ -10,8 +10,8 @@ import { HavingTrouble } from './HavingTrouble'; export type AlternativeMethodsProps = { onBackLinkClick: React.MouseEventHandler | undefined; - onFactorSelected: (factor: __experimental_SessionVerificationSecondFactor) => void; - supportedSecondFactors: __experimental_SessionVerificationSecondFactor[] | null; + onFactorSelected: (factor: SessionVerificationSecondFactor) => void; + supportedSecondFactors: SessionVerificationSecondFactor[] | null; }; export const UVFactorTwoAlternativeMethods = (props: AlternativeMethodsProps) => { @@ -41,12 +41,8 @@ const AlternativeMethodsList = (props: AlternativeMethodsProps & { onHavingTroub - - + + {card.error} {/*TODO: extract main in its own component */} @@ -80,11 +76,9 @@ const AlternativeMethodsList = (props: AlternativeMethodsProps & { onHavingTroub - + @@ -94,16 +88,16 @@ const AlternativeMethodsList = (props: AlternativeMethodsProps & { onHavingTroub ); }; -export function getButtonLabel(factor: __experimental_SessionVerificationSecondFactor): LocalizationKey { +export function getButtonLabel(factor: SessionVerificationSecondFactor): LocalizationKey { switch (factor.strategy) { case 'phone_code': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__phoneCode', { + return localizationKeys('userVerification.alternativeMethods.blockButton__phoneCode', { identifier: formatSafeIdentifier(factor.safeIdentifier) || '', }); case 'totp': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__totp'); + return localizationKeys('userVerification.alternativeMethods.blockButton__totp'); case 'backup_code': - return localizationKeys('__experimental_userVerification.alternativeMethods.blockButton__backupCode'); + return localizationKeys('userVerification.alternativeMethods.blockButton__backupCode'); default: throw `Invalid verification strategy: "${(factor as any).strategy}"`; } diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx index d414981b93..bfc99a2e77 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoBackupCodeCard.tsx @@ -25,7 +25,7 @@ export const UVFactorTwoBackupCodeCard = (props: UVFactorTwoBackupCodeCardProps) const handleBackupCodeSubmit: React.FormEventHandler = e => { e.preventDefault(); return session! - .__experimental_attemptSecondFactorVerification({ strategy: 'backup_code', code: codeControl.value }) + .attemptSecondFactorVerification({ strategy: 'backup_code', code: codeControl.value }) .then(handleVerificationResponse) .catch(err => handleError(err, [codeControl], card.setError)); }; @@ -34,10 +34,8 @@ export const UVFactorTwoBackupCodeCard = (props: UVFactorTwoBackupCodeCardProps) - - + + {card.error} void; - prepare?: () => Promise<__experimental_SessionVerificationResource>; + prepare?: () => Promise; }; type SignInFactorTwoCodeFormProps = UVFactorTwoCodeCard & { @@ -45,7 +45,7 @@ export const UVFactorTwoCodeForm = (props: SignInFactorTwoCodeFormProps) => { const action: VerificationCodeCardProps['onCodeEntryFinishedAction'] = (code, resolve, reject) => { session! - .__experimental_attemptSecondFactorVerification({ strategy: props.factor.strategy, code }) + .attemptSecondFactorVerification({ strategy: props.factor.strategy, code }) .then(async res => { await resolve(); return handleVerificationResponse(res); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx index 162c3c2107..10c89df3e0 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UVFactorTwoPhoneCodeCard.tsx @@ -12,17 +12,17 @@ export const UVFactorTwoPhoneCodeCard = (props: UVFactorTwoPhoneCodeCardProps) = const prepare = () => { const { phoneNumberId, strategy } = props.factor; - return session!.__experimental_prepareSecondFactorVerification({ phoneNumberId, strategy }); + return session!.prepareSecondFactorVerification({ phoneNumberId, strategy }); }; return ( diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx index 964468342e..908e5f08cc 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOne.tsx @@ -77,9 +77,9 @@ export function _UserVerificationFactorOne(): JSX.Element | null { if (!currentFactor) { return ( ); diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx index 1345a853a1..667e5fce97 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorOnePassword.tsx @@ -30,7 +30,7 @@ export function UserVerificationFactorOnePasswordCard(props: UserVerificationFac const handlePasswordSubmit: React.FormEventHandler = async e => { e.preventDefault(); return session - ?.__experimental_attemptFirstFactorVerification({ + ?.attemptFirstFactorVerification({ strategy: 'password', password: passwordControl.value, }) @@ -47,8 +47,8 @@ export function UserVerificationFactorOnePasswordCard(props: UserVerificationFac - - + + {card.error} diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx index f2fb1af64d..efccbc8996 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwo.tsx @@ -1,4 +1,4 @@ -import type { __experimental_SessionVerificationSecondFactor, SignInFactor } from '@clerk/types'; +import type { SessionVerificationResource, SessionVerificationSecondFactor, SignInFactor } from '@clerk/types'; import React, { useEffect } from 'react'; import { LoadingCard, withCardStateProvider } from '../../elements'; @@ -24,13 +24,13 @@ const factorKey = (factor: SignInFactor | null | undefined) => { export function _UserVerificationFactorTwo(): JSX.Element { const { navigate } = useRouter(); const { data } = useUserVerificationSession(); - const sessionVerification = data!; + const sessionVerification = data as SessionVerificationResource; const availableFactors = sessionVerification.supportedSecondFactors; const lastPreparedFactorKeyRef = React.useRef(''); - const [currentFactor, setCurrentFactor] = React.useState<__experimental_SessionVerificationSecondFactor | null>( - () => determineStartingSignInSecondFactor(availableFactors) as __experimental_SessionVerificationSecondFactor, + const [currentFactor, setCurrentFactor] = React.useState( + () => determineStartingSignInSecondFactor(availableFactors) as SessionVerificationSecondFactor, ); const [showAllStrategies, setShowAllStrategies] = React.useState(!currentFactor); const toggleAllStrategies = () => setShowAllStrategies(s => !s); @@ -39,7 +39,7 @@ export function _UserVerificationFactorTwo(): JSX.Element { lastPreparedFactorKeyRef.current = factorKey(currentFactor); }; - const selectFactor = (factor: __experimental_SessionVerificationSecondFactor) => { + const selectFactor = (factor: SessionVerificationSecondFactor) => { setCurrentFactor(factor); toggleAllStrategies(); }; diff --git a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx index 906049eed6..0cf2ca1065 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/UserVerificationFactorTwoTOTP.tsx @@ -11,9 +11,9 @@ export function UserVerificationFactorTwoTOTP(props: UVFactorTwoTOTPCardProps): ); diff --git a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx b/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx index 5fc18ffb96..389f008a17 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorOne.test.tsx @@ -20,7 +20,7 @@ describe('UserVerificationFactorOne', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', supportedFirstFactors: [{ strategy: 'password' }], }); @@ -38,11 +38,11 @@ describe('UserVerificationFactorOne', () => { f.withUser({ username: 'clerkuser' }); f.withPreferredSignInStrategy({ strategy: 'otp' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', supportedFirstFactors: [{ strategy: 'password' }, { strategy: 'email_code' }], }); - fixtures.session?.__experimental_prepareFirstFactorVerification.mockResolvedValue({}); + fixtures.session?.prepareFirstFactorVerification.mockResolvedValue({}); const { getByLabelText, getByText } = render(, { wrapper }); await waitFor(() => { @@ -50,7 +50,7 @@ describe('UserVerificationFactorOne', () => { getByLabelText(/Enter verification code/i); }); - expect(fixtures.session?.__experimental_prepareFirstFactorVerification).toHaveBeenCalledTimes(1); + expect(fixtures.session?.prepareFirstFactorVerification).toHaveBeenCalledTimes(1); }); it('renders the component for with strategy:phone_code', async () => { @@ -58,11 +58,11 @@ describe('UserVerificationFactorOne', () => { f.withUser({ username: 'clerkuser' }); f.withPreferredSignInStrategy({ strategy: 'otp' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', supportedFirstFactors: [{ strategy: 'password' }, { strategy: 'phone_code' }], }); - fixtures.session?.__experimental_prepareFirstFactorVerification.mockResolvedValue({}); + fixtures.session?.prepareFirstFactorVerification.mockResolvedValue({}); const { getByLabelText, getByText } = render(, { wrapper }); await waitFor(() => { @@ -70,7 +70,7 @@ describe('UserVerificationFactorOne', () => { getByLabelText(/Enter verification code/i); }); - expect(fixtures.session?.__experimental_prepareFirstFactorVerification).toHaveBeenCalledTimes(1); + expect(fixtures.session?.prepareFirstFactorVerification).toHaveBeenCalledTimes(1); }); describe('Submitting', () => { @@ -78,15 +78,15 @@ describe('UserVerificationFactorOne', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', supportedFirstFactors: [{ strategy: 'password' }], }); - fixtures.session?.__experimental_attemptFirstFactorVerification.mockResolvedValue({ + fixtures.session?.attemptFirstFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedFirstFactors: [{ strategy: 'password' }], }); - fixtures.session?.__experimental_prepareSecondFactorVerification.mockResolvedValue({ + fixtures.session?.prepareSecondFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedFirstFactors: [{ strategy: 'password' }], }); @@ -97,7 +97,7 @@ describe('UserVerificationFactorOne', () => { await userEvent.type(getByLabelText(/^password/i), 'testtest'); await userEvent.click(getByText('Continue')); - expect(fixtures.session?.__experimental_attemptFirstFactorVerification).toHaveBeenCalledWith({ + expect(fixtures.session?.attemptFirstFactorVerification).toHaveBeenCalledWith({ strategy: 'password', password: 'testtest', }); @@ -109,11 +109,11 @@ describe('UserVerificationFactorOne', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', supportedFirstFactors: [{ strategy: 'password' }], }); - fixtures.session?.__experimental_attemptFirstFactorVerification.mockResolvedValue({ + fixtures.session?.attemptFirstFactorVerification.mockResolvedValue({ status: 'complete', session: { id: '123', @@ -130,7 +130,7 @@ describe('UserVerificationFactorOne', () => { await waitFor(() => { expect(fixtures.clerk.setActive).toHaveBeenCalled(); }); - expect(fixtures.session?.__experimental_attemptFirstFactorVerification).toHaveBeenCalledTimes(1); + expect(fixtures.session?.attemptFirstFactorVerification).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx b/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx index 5449844774..4e6d7ece1e 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/__tests__/UVFactorTwo.test.tsx @@ -20,12 +20,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], }); - fixtures.session?.__experimental_prepareSecondFactorVerification.mockResolvedValue({ + fixtures.session?.prepareSecondFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], }); @@ -43,12 +43,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'totp' }], }); - fixtures.session?.__experimental_prepareSecondFactorVerification.mockResolvedValue({ + fixtures.session?.prepareSecondFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'totp' }], }); @@ -65,12 +65,12 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'backup_code' }], }); - fixtures.session?.__experimental_prepareSecondFactorVerification.mockResolvedValue({ + fixtures.session?.prepareSecondFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'backup_code' }], }); @@ -88,7 +88,7 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_first_factor', }); render(, { wrapper }); @@ -102,17 +102,17 @@ describe('UserVerificationFactorTwo', () => { const { wrapper, fixtures } = await createFixtures(f => { f.withUser({ username: 'clerkuser' }); }); - fixtures.session?.__experimental_startVerification.mockResolvedValue({ + fixtures.session?.startVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], }); - fixtures.session?.__experimental_prepareSecondFactorVerification.mockResolvedValue({ + fixtures.session?.prepareSecondFactorVerification.mockResolvedValue({ status: 'needs_second_factor', supportedSecondFactors: [{ strategy: 'phone_code' }], }); - fixtures.session?.__experimental_attemptSecondFactorVerification.mockResolvedValue({ + fixtures.session?.attemptSecondFactorVerification.mockResolvedValue({ status: 'complete', supportedSecondFactors: [], session: { diff --git a/packages/clerk-js/src/ui/components/UserVerification/index.tsx b/packages/clerk-js/src/ui/components/UserVerification/index.tsx index 964487cdef..f00cd57fae 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/index.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/index.tsx @@ -1,4 +1,4 @@ -import type { __experimental_UserVerificationModalProps, __experimental_UserVerificationProps } from '@clerk/types'; +import type { __internal_UserVerificationModalProps, __internal_UserVerificationProps } from '@clerk/types'; import React, { useEffect } from 'react'; import { UserVerificationContext, withCoreSessionSwitchGuard } from '../../contexts'; @@ -31,10 +31,10 @@ function UserVerificationRoutes(): JSX.Element { UserVerificationRoutes.displayName = 'UserVerification'; -const UserVerification: React.ComponentType<__experimental_UserVerificationProps> = +const UserVerification: React.ComponentType<__internal_UserVerificationProps> = withCoreSessionSwitchGuard(UserVerificationRoutes); -const UserVerificationModal = (props: __experimental_UserVerificationModalProps): JSX.Element => { +const UserVerificationModal = (props: __internal_UserVerificationModalProps): JSX.Element => { return ( { const { navigate } = useRouter(); const handleVerificationResponse = useCallback( - async (sessionVerification: __experimental_SessionVerificationResource) => { + async (sessionVerification: SessionVerificationResource) => { setCache({ data: sessionVerification, isLoading: false, diff --git a/packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx b/packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx index aa5fee307b..a32c8d88ed 100644 --- a/packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx +++ b/packages/clerk-js/src/ui/components/UserVerification/useUserVerificationSession.tsx @@ -1,5 +1,5 @@ import { useSession } from '@clerk/shared/react'; -import type { __experimental_SessionVerificationLevel } from '@clerk/types'; +import type { SessionVerificationLevel } from '@clerk/types'; import { useMemo } from 'react'; import { useUserVerification } from '../../contexts'; @@ -12,7 +12,7 @@ const useUserVerificationSessionKey = () => { () => ({ level: level || 'second_factor', - }) satisfies { level: __experimental_SessionVerificationLevel }, + }) satisfies { level: SessionVerificationLevel }, [level], ); }; @@ -20,7 +20,7 @@ const useUserVerificationSessionKey = () => { const useUserVerificationSession = () => { const { session } = useSession(); const key = useUserVerificationSessionKey(); - const data = useFetch(session ? session.__experimental_startVerification : undefined, key, { + const data = useFetch(session ? session.startVerification : undefined, key, { throttleTime: 300, }); diff --git a/packages/clerk-js/src/ui/types.ts b/packages/clerk-js/src/ui/types.ts index 366358c2d7..d9af51adce 100644 --- a/packages/clerk-js/src/ui/types.ts +++ b/packages/clerk-js/src/ui/types.ts @@ -1,5 +1,5 @@ import type { - __experimental_UserVerificationProps, + __internal_UserVerificationProps, CreateOrganizationProps, GoogleOneTapProps, OrganizationListProps, @@ -23,7 +23,7 @@ export type { CreateOrganizationProps, OrganizationListProps, WaitlistProps, - __experimental_UserVerificationProps, + __internal_UserVerificationProps, }; export type AvailableComponentProps = @@ -36,7 +36,7 @@ export type AvailableComponentProps = | CreateOrganizationProps | OrganizationListProps | WaitlistProps - | __experimental_UserVerificationProps; + | __internal_UserVerificationProps; type ComponentMode = 'modal' | 'mounted'; @@ -45,7 +45,7 @@ export type SignInCtx = SignInProps & { mode?: ComponentMode; }; -export type UserVerificationCtx = __experimental_UserVerificationProps & { +export type UserVerificationCtx = __internal_UserVerificationProps & { componentName: 'UserVerification'; mode?: ComponentMode; }; diff --git a/packages/clerk-js/src/utils/memoizeStateListenerCallback.ts b/packages/clerk-js/src/utils/memoizeStateListenerCallback.ts index a48efc4839..a021cb343f 100644 --- a/packages/clerk-js/src/utils/memoizeStateListenerCallback.ts +++ b/packages/clerk-js/src/utils/memoizeStateListenerCallback.ts @@ -51,8 +51,8 @@ function userMembershipsChanged(prev: UserResource, next: UserResource): boolean } function sessionFVAChanged(prev: SessionResource, next: SessionResource): boolean { - const prevFVA = prev.__experimental_factorVerificationAge; - const nextFVA = next.__experimental_factorVerificationAge; + const prevFVA = prev.factorVerificationAge; + const nextFVA = next.factorVerificationAge; if (prevFVA !== null && nextFVA !== null) { return prevFVA[0] !== nextFVA[0] || prevFVA[1] !== nextFVA[1]; } diff --git a/packages/localizations/src/ar-SA.ts b/packages/localizations/src/ar-SA.ts index 14339709d0..9d9d1dadd2 100644 --- a/packages/localizations/src/ar-SA.ts +++ b/packages/localizations/src/ar-SA.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const arSA: LocalizationResource = { locale: 'ar-SA', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'الرجوع', badge__default: 'الأفتراضي', badge__otherImpersonatorDevice: 'جهاز منتحل آخر', @@ -901,6 +846,61 @@ export const arSA: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/be-BY.ts b/packages/localizations/src/be-BY.ts index 8cc8c9749b..71a4c2cd87 100644 --- a/packages/localizations/src/be-BY.ts +++ b/packages/localizations/src/be-BY.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const beBY: LocalizationResource = { locale: 'be-BY', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Назад', badge__default: 'Па-змаўчанні', badge__otherImpersonatorDevice: 'Іншая прылада', @@ -914,6 +859,61 @@ export const beBY: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/bg-BG.ts b/packages/localizations/src/bg-BG.ts index 7f4dd3176d..11a58948ca 100644 --- a/packages/localizations/src/bg-BG.ts +++ b/packages/localizations/src/bg-BG.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const bgBG: LocalizationResource = { locale: 'bg-BG', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Назад', badge__default: 'По подразбиране', badge__otherImpersonatorDevice: 'Друго устройство за имитация', @@ -908,6 +853,61 @@ export const bgBG: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/cs-CZ.ts b/packages/localizations/src/cs-CZ.ts index 26e92e8a5d..6e88a20bc6 100644 --- a/packages/localizations/src/cs-CZ.ts +++ b/packages/localizations/src/cs-CZ.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const csCZ: LocalizationResource = { locale: 'cs-CZ', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Zpět', badge__default: 'Výchozí', badge__otherImpersonatorDevice: 'Jiné zařízení představitele', @@ -904,6 +849,61 @@ export const csCZ: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/da-DK.ts b/packages/localizations/src/da-DK.ts index 916db9b035..c20c6ae784 100644 --- a/packages/localizations/src/da-DK.ts +++ b/packages/localizations/src/da-DK.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const daDK: LocalizationResource = { locale: 'da-DK', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Tilbage', badge__default: 'Standard', badge__otherImpersonatorDevice: 'Anden enhed som efterligner', @@ -906,6 +851,61 @@ export const daDK: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/de-DE.ts b/packages/localizations/src/de-DE.ts index a8b48707be..25e8c9eba8 100644 --- a/packages/localizations/src/de-DE.ts +++ b/packages/localizations/src/de-DE.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const deDE: LocalizationResource = { locale: 'de-DE', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Zurück', badge__default: 'Standard', badge__otherImpersonatorDevice: 'Anderes Imitationsgerät', @@ -921,6 +866,61 @@ export const deDE: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/el-GR.ts b/packages/localizations/src/el-GR.ts index 1ac50d81a5..9e72864537 100644 --- a/packages/localizations/src/el-GR.ts +++ b/packages/localizations/src/el-GR.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const elGR: LocalizationResource = { locale: 'el-GR', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Πίσω', badge__default: 'Προεπιλογή', badge__otherImpersonatorDevice: 'Άλλη συσκευή υποδυόμενου', @@ -916,6 +861,61 @@ export const elGR: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/en-US.ts b/packages/localizations/src/en-US.ts index 4775dfd6cf..c5e383b269 100644 --- a/packages/localizations/src/en-US.ts +++ b/packages/localizations/src/en-US.ts @@ -2,62 +2,6 @@ import type { LocalizationResource } from '@clerk/types'; export const enUS: LocalizationResource = { locale: 'en-US', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'Get help', - actionText: 'Don’t have any of these?', - blockButton__backupCode: 'Use a backup code', - blockButton__emailCode: 'Email code to {{identifier}}', - blockButton__password: 'Continue with your password', - blockButton__phoneCode: 'Send SMS code to {{identifier}}', - blockButton__totp: 'Use your authenticator app', - getHelp: { - blockButton__emailSupport: 'Email support', - content: - 'If you have trouble verifying your account, email us and we will work with you to restore access as soon as possible.', - title: 'Get help', - }, - subtitle: 'Facing issues? You can use any of these methods for verification.', - title: 'Use another method', - }, - backupCodeMfa: { - subtitle: 'Your backup code is the one you got when setting up two-step authentication.', - title: 'Enter a backup code', - }, - emailCode: { - formTitle: 'Verification code', - resendButton: "Didn't receive a code? Resend", - subtitle: 'to continue to {{applicationName}}', - title: 'Check your email', - }, - noAvailableMethods: { - message: "Cannot proceed with verification. There's no available authentication factor.", - subtitle: 'An error occurred', - title: 'Cannot verify your account', - }, - password: { - actionLink: 'Use another method', - subtitle: 'Enter the password associated with your account', - title: 'Enter your password', - }, - phoneCode: { - formTitle: 'Verification code', - resendButton: "Didn't receive a code? Resend", - subtitle: 'to continue to {{applicationName}}', - title: 'Check your phone', - }, - phoneCodeMfa: { - formTitle: 'Verification code', - resendButton: "Didn't receive a code? Resend", - subtitle: 'To continue, please enter the verification code sent to your phone', - title: 'Check your phone', - }, - totpMfa: { - formTitle: 'Verification code', - subtitle: 'To continue, please enter the verification code generated by your authenticator app', - title: 'Two-step verification', - }, - }, backButton: 'Back', badge__default: 'Default', badge__otherImpersonatorDevice: 'Other impersonator device', @@ -902,6 +846,62 @@ export const enUS: LocalizationResource = { web3WalletButtonsBlockButton: '{{provider|titleize}}', }, }, + userVerification: { + alternativeMethods: { + actionLink: 'Get help', + actionText: 'Don’t have any of these?', + blockButton__backupCode: 'Use a backup code', + blockButton__emailCode: 'Email code to {{identifier}}', + blockButton__password: 'Continue with your password', + blockButton__phoneCode: 'Send SMS code to {{identifier}}', + blockButton__totp: 'Use your authenticator app', + getHelp: { + blockButton__emailSupport: 'Email support', + content: + 'If you have trouble verifying your account, email us and we will work with you to restore access as soon as possible.', + title: 'Get help', + }, + subtitle: 'Facing issues? You can use any of these methods for verification.', + title: 'Use another method', + }, + backupCodeMfa: { + subtitle: 'Your backup code is the one you got when setting up two-step authentication.', + title: 'Enter a backup code', + }, + emailCode: { + formTitle: 'Verification code', + resendButton: "Didn't receive a code? Resend", + subtitle: 'to continue to {{applicationName}}', + title: 'Check your email', + }, + noAvailableMethods: { + message: "Cannot proceed with verification. There's no available authentication factor.", + subtitle: 'An error occurred', + title: 'Cannot verify your account', + }, + password: { + actionLink: 'Use another method', + subtitle: 'Enter the password associated with your account', + title: 'Enter your password', + }, + phoneCode: { + formTitle: 'Verification code', + resendButton: "Didn't receive a code? Resend", + subtitle: 'to continue to {{applicationName}}', + title: 'Check your phone', + }, + phoneCodeMfa: { + formTitle: 'Verification code', + resendButton: "Didn't receive a code? Resend", + subtitle: 'To continue, please enter the verification code sent to your phone', + title: 'Check your phone', + }, + totpMfa: { + formTitle: 'Verification code', + subtitle: 'To continue, please enter the verification code generated by your authenticator app', + title: 'Two-step verification', + }, + }, waitlist: { start: { actionLink: 'Sign in', diff --git a/packages/localizations/src/es-ES.ts b/packages/localizations/src/es-ES.ts index b621c74641..ae186a8c00 100644 --- a/packages/localizations/src/es-ES.ts +++ b/packages/localizations/src/es-ES.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const esES: LocalizationResource = { locale: 'es-ES', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Atrás', badge__default: 'Por defecto', badge__otherImpersonatorDevice: 'Otro dispositivo de imitación', @@ -912,6 +857,61 @@ export const esES: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/es-MX.ts b/packages/localizations/src/es-MX.ts index f208064746..ed57cd161e 100644 --- a/packages/localizations/src/es-MX.ts +++ b/packages/localizations/src/es-MX.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const esMX: LocalizationResource = { locale: 'es-MX', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Atrás', badge__default: 'Por defecto', badge__otherImpersonatorDevice: 'Otro dispositivo de imitación', @@ -914,6 +859,61 @@ export const esMX: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/fi-FI.ts b/packages/localizations/src/fi-FI.ts index a09fa89bf2..e107f1ffe2 100644 --- a/packages/localizations/src/fi-FI.ts +++ b/packages/localizations/src/fi-FI.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const fiFI: LocalizationResource = { locale: 'fi-FI', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Takaisin', badge__default: 'Oletus', badge__otherImpersonatorDevice: 'Toinen jäljitelty laite', @@ -910,6 +855,61 @@ export const fiFI: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/fr-FR.ts b/packages/localizations/src/fr-FR.ts index 0d772633ca..97524a2fe5 100644 --- a/packages/localizations/src/fr-FR.ts +++ b/packages/localizations/src/fr-FR.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const frFR: LocalizationResource = { locale: 'fr-FR', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Retour', badge__default: 'Défaut', badge__otherImpersonatorDevice: "Autre dispositif d'imitation", @@ -914,6 +859,61 @@ export const frFR: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/he-IL.ts b/packages/localizations/src/he-IL.ts index 75d3a8b5e1..fd614dba13 100644 --- a/packages/localizations/src/he-IL.ts +++ b/packages/localizations/src/he-IL.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const heIL: LocalizationResource = { locale: 'he-IL', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'השג עזרה', - actionText: 'אין לך אף אחד מאלה?', - blockButton__backupCode: 'השתמש בקוד גיבוי', - blockButton__emailCode: 'קוד אימייל ל {{identifier}}', - blockButton__password: 'המשך עם הסיסמה שלך', - blockButton__phoneCode: 'שלח קוד SMS ל {{identifier}}', - blockButton__totp: 'השתמש באפליקציית האימות שלך', - getHelp: { - blockButton__emailSupport: 'תמיכה באימייל', - content: 'אם יש לך בעיה באימות חשבונך, שלח לנו אימייל ואנחנו ניצור איתך קשר על מנת לשחזר את הגישה בהקדם האפשרי', - title: 'השג עזרה', - }, - subtitle: 'נתקלת בבעיות? אתה יכול להשתמש בכל אחת מהשיטות הללו עבור אימות', - title: 'השתמש בשיטה אחרת', - }, - backupCodeMfa: { - subtitle: 'קוד הגיבוי שלך הוא הקוד שקיבלת כאשר הגדרת את האימות הדו-שלבי', - title: 'הכנס את קוד הגיבוי', - }, - emailCode: { - formTitle: 'קוד אימות', - resendButton: 'לא קיבלת קוד? שלח שוב', - subtitle: 'המשך ל {{applicationName}}', - title: 'בדוק את האימייל שלך', - }, - noAvailableMethods: { - message: 'לא ניתן להמשיך עם האימות. אין גורם אימות זמין', - subtitle: 'קרתה תקלה', - title: 'לא ניתן לאמת את חשבונך', - }, - password: { - actionLink: 'השתמש בשיטה אחרת', - subtitle: 'הכנס את הסיסמה המקושרת עם חשבונך', - title: 'הכנס סיסמה', - }, - phoneCode: { - formTitle: 'קוד אימות', - resendButton: 'לא קיבלת קוד? שלח שוב', - subtitle: 'להמשך ל {{applicationName}}', - title: 'בדוק את הטלפון שלך', - }, - phoneCodeMfa: { - formTitle: 'קוד אימות', - resendButton: 'לא קיבלת קוד? שלח שוב', - subtitle: 'להמשך, אנא הכנס את קוד האימות שנשלח לטלפון שלך', - title: 'בדוק את הטלפון שלך', - }, - totpMfa: { - formTitle: 'קוד אימות', - subtitle: 'להמשך, אנא הכנס את קוד האימות שנוצר על ידי אפליקציית האימות שלך', - title: 'אימות דו-שלבי', - }, - }, backButton: 'חזור', badge__default: 'ברירת מחדל', badge__otherImpersonatorDevice: 'מכשיר מחקה אחר', @@ -888,6 +833,61 @@ export const heIL: LocalizationResource = { web3WalletButtonsBlockButton: '{{provider|titleize}}', }, }, + userVerification: { + alternativeMethods: { + actionLink: 'השג עזרה', + actionText: 'אין לך אף אחד מאלה?', + blockButton__backupCode: 'השתמש בקוד גיבוי', + blockButton__emailCode: 'קוד אימייל ל {{identifier}}', + blockButton__password: 'המשך עם הסיסמה שלך', + blockButton__phoneCode: 'שלח קוד SMS ל {{identifier}}', + blockButton__totp: 'השתמש באפליקציית האימות שלך', + getHelp: { + blockButton__emailSupport: 'תמיכה באימייל', + content: 'אם יש לך בעיה באימות חשבונך, שלח לנו אימייל ואנחנו ניצור איתך קשר על מנת לשחזר את הגישה בהקדם האפשרי', + title: 'השג עזרה', + }, + subtitle: 'נתקלת בבעיות? אתה יכול להשתמש בכל אחת מהשיטות הללו עבור אימות', + title: 'השתמש בשיטה אחרת', + }, + backupCodeMfa: { + subtitle: 'קוד הגיבוי שלך הוא הקוד שקיבלת כאשר הגדרת את האימות הדו-שלבי', + title: 'הכנס את קוד הגיבוי', + }, + emailCode: { + formTitle: 'קוד אימות', + resendButton: 'לא קיבלת קוד? שלח שוב', + subtitle: 'המשך ל {{applicationName}}', + title: 'בדוק את האימייל שלך', + }, + noAvailableMethods: { + message: 'לא ניתן להמשיך עם האימות. אין גורם אימות זמין', + subtitle: 'קרתה תקלה', + title: 'לא ניתן לאמת את חשבונך', + }, + password: { + actionLink: 'השתמש בשיטה אחרת', + subtitle: 'הכנס את הסיסמה המקושרת עם חשבונך', + title: 'הכנס סיסמה', + }, + phoneCode: { + formTitle: 'קוד אימות', + resendButton: 'לא קיבלת קוד? שלח שוב', + subtitle: 'להמשך ל {{applicationName}}', + title: 'בדוק את הטלפון שלך', + }, + phoneCodeMfa: { + formTitle: 'קוד אימות', + resendButton: 'לא קיבלת קוד? שלח שוב', + subtitle: 'להמשך, אנא הכנס את קוד האימות שנשלח לטלפון שלך', + title: 'בדוק את הטלפון שלך', + }, + totpMfa: { + formTitle: 'קוד אימות', + subtitle: 'להמשך, אנא הכנס את קוד האימות שנוצר על ידי אפליקציית האימות שלך', + title: 'אימות דו-שלבי', + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/hr-HR.ts b/packages/localizations/src/hr-HR.ts index 736244d1d8..b2f1bfbfa5 100644 --- a/packages/localizations/src/hr-HR.ts +++ b/packages/localizations/src/hr-HR.ts @@ -2,7 +2,7 @@ import type { LocalizationResource } from '@clerk/types'; export const hrHR: LocalizationResource = { locale: 'hr-HR', - __experimental_userVerification: { + userVerification: { alternativeMethods: { actionLink: 'Zatražite pomoć', actionText: 'Nemate ništa od ovoga?', diff --git a/packages/localizations/src/hu-HU.ts b/packages/localizations/src/hu-HU.ts index 1d54e4b419..62bfff86ac 100644 --- a/packages/localizations/src/hu-HU.ts +++ b/packages/localizations/src/hu-HU.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const huHU: LocalizationResource = { locale: 'hu-HU', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Vissza', badge__default: 'Alapértelmezett', badge__otherImpersonatorDevice: 'Másik megszemélyesítő eszköz', @@ -911,6 +856,61 @@ export const huHU: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/is-IS.ts b/packages/localizations/src/is-IS.ts index 5340dd1cd0..a13b8e4937 100644 --- a/packages/localizations/src/is-IS.ts +++ b/packages/localizations/src/is-IS.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const isIS: LocalizationResource = { locale: 'is-IS', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Til baka', badge__default: 'Sjálfgefið', badge__otherImpersonatorDevice: 'Önnur tæki sem herma eftir', @@ -914,6 +859,61 @@ export const isIS: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/it-IT.ts b/packages/localizations/src/it-IT.ts index f6b9d6fecc..04c893098d 100644 --- a/packages/localizations/src/it-IT.ts +++ b/packages/localizations/src/it-IT.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const itIT: LocalizationResource = { locale: 'it-IT', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Indietro', badge__default: 'Predefinito', badge__otherImpersonatorDevice: 'Altro dispositivo impersonato', @@ -910,6 +855,61 @@ export const itIT: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/ja-JP.ts b/packages/localizations/src/ja-JP.ts index 8d874cd52c..e21428045e 100644 --- a/packages/localizations/src/ja-JP.ts +++ b/packages/localizations/src/ja-JP.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const jaJP: LocalizationResource = { locale: 'ja-JP', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: '戻る', badge__default: 'デフォルト', badge__otherImpersonatorDevice: '他の模倣者デバイス', @@ -903,6 +848,61 @@ export const jaJP: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/ko-KR.ts b/packages/localizations/src/ko-KR.ts index db9c329bd0..8284300471 100644 --- a/packages/localizations/src/ko-KR.ts +++ b/packages/localizations/src/ko-KR.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const koKR: LocalizationResource = { locale: 'ko-KR', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: '돌아가기', badge__default: '기본값', badge__otherImpersonatorDevice: '기타 사칭 장치', @@ -894,6 +839,61 @@ export const koKR: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/mn-MN.ts b/packages/localizations/src/mn-MN.ts index 6063b5b0df..e3c686dfed 100644 --- a/packages/localizations/src/mn-MN.ts +++ b/packages/localizations/src/mn-MN.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const mnMN: LocalizationResource = { locale: 'mn-MN', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Буцах', badge__default: 'Анхдагч', badge__otherImpersonatorDevice: 'Бусад дуурайгч төхөөрөмж', @@ -909,6 +854,61 @@ export const mnMN: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/nb-NO.ts b/packages/localizations/src/nb-NO.ts index 4be9bf3455..f9ba465ce6 100644 --- a/packages/localizations/src/nb-NO.ts +++ b/packages/localizations/src/nb-NO.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const nbNO: LocalizationResource = { locale: 'nb-NO', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Tilbake', badge__default: 'Standard', badge__otherImpersonatorDevice: 'Annen imitators enhet', @@ -908,6 +853,61 @@ export const nbNO: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/nl-NL.ts b/packages/localizations/src/nl-NL.ts index adea79d9c5..62bc31bd29 100644 --- a/packages/localizations/src/nl-NL.ts +++ b/packages/localizations/src/nl-NL.ts @@ -14,62 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const nlNL: LocalizationResource = { locale: 'nl-NL', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'Krijg hulp', - actionText: 'Heb je geen van deze?', - blockButton__backupCode: 'Backupcode gebruiken', - blockButton__emailCode: 'Email code naar {{identifier}}', - blockButton__password: 'Doorgaan met je wachtwoord', - blockButton__phoneCode: 'Verzend SMS code naar {{identifier}}', - blockButton__totp: 'Use your authenticator app', - getHelp: { - blockButton__emailSupport: 'Email ondersteuning', - content: - 'Als je moeite hebt om je account te verifiëren, email ons en we zullen met je werken om toegang te herstellen zo snel mogelijk.', - title: 'Krijg hulp', - }, - subtitle: 'Problemen? Je kunt een van deze methoden gebruiken voor verificatie.', - title: 'Gebruik een andere methode', - }, - backupCodeMfa: { - subtitle: 'Je backupcode is de code die je kreeg bij het installeren van tweestapsverificatie.', - title: 'Backupcode invoeren', - }, - emailCode: { - formTitle: 'Verificatiecode', - resendButton: 'Niet ontvangen? Opnieuw verzenden', - subtitle: 'om door te gaan naar {{applicationName}}', - title: 'Controleer je email', - }, - noAvailableMethods: { - message: 'Kan niet verder gaan met verificatie. Er is geen beschikbare verificatiefactor.', - subtitle: 'Er is een fout opgetreden', - title: 'Kan je account niet verifiëren', - }, - password: { - actionLink: 'Gebruik een andere methode', - subtitle: 'Voer het wachtwoord in dat bij je account hoort', - title: 'Voer je wachtwoord in', - }, - phoneCode: { - formTitle: 'Verificatiecode', - resendButton: 'Niet ontvangen? Opnieuw verzenden', - subtitle: 'om door te gaan naar {{applicationName}}', - title: 'Controleer je telefoon', - }, - phoneCodeMfa: { - formTitle: 'Verificatiecode', - resendButton: 'Niet ontvangen? Opnieuw verzenden', - subtitle: 'om door te gaan naar {{applicationName}}', - title: 'Controleer je telefoon', - }, - totpMfa: { - formTitle: 'Verificatiecode', - subtitle: 'om door te gaan naar {{applicationName}}', - title: 'Tweestapsverificatie', - }, - }, backButton: 'Terug', badge__default: 'Standaard', badge__otherImpersonatorDevice: 'Ander impersonatie apparaat', @@ -905,6 +849,62 @@ export const nlNL: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: 'Krijg hulp', + actionText: 'Heb je geen van deze?', + blockButton__backupCode: 'Backupcode gebruiken', + blockButton__emailCode: 'Email code naar {{identifier}}', + blockButton__password: 'Doorgaan met je wachtwoord', + blockButton__phoneCode: 'Verzend SMS code naar {{identifier}}', + blockButton__totp: 'Use your authenticator app', + getHelp: { + blockButton__emailSupport: 'Email ondersteuning', + content: + 'Als je moeite hebt om je account te verifiëren, email ons en we zullen met je werken om toegang te herstellen zo snel mogelijk.', + title: 'Krijg hulp', + }, + subtitle: 'Problemen? Je kunt een van deze methoden gebruiken voor verificatie.', + title: 'Gebruik een andere methode', + }, + backupCodeMfa: { + subtitle: 'Je backupcode is de code die je kreeg bij het installeren van tweestapsverificatie.', + title: 'Backupcode invoeren', + }, + emailCode: { + formTitle: 'Verificatiecode', + resendButton: 'Niet ontvangen? Opnieuw verzenden', + subtitle: 'om door te gaan naar {{applicationName}}', + title: 'Controleer je email', + }, + noAvailableMethods: { + message: 'Kan niet verder gaan met verificatie. Er is geen beschikbare verificatiefactor.', + subtitle: 'Er is een fout opgetreden', + title: 'Kan je account niet verifiëren', + }, + password: { + actionLink: 'Gebruik een andere methode', + subtitle: 'Voer het wachtwoord in dat bij je account hoort', + title: 'Voer je wachtwoord in', + }, + phoneCode: { + formTitle: 'Verificatiecode', + resendButton: 'Niet ontvangen? Opnieuw verzenden', + subtitle: 'om door te gaan naar {{applicationName}}', + title: 'Controleer je telefoon', + }, + phoneCodeMfa: { + formTitle: 'Verificatiecode', + resendButton: 'Niet ontvangen? Opnieuw verzenden', + subtitle: 'om door te gaan naar {{applicationName}}', + title: 'Controleer je telefoon', + }, + totpMfa: { + formTitle: 'Verificatiecode', + subtitle: 'om door te gaan naar {{applicationName}}', + title: 'Tweestapsverificatie', + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/pl-PL.ts b/packages/localizations/src/pl-PL.ts index 59b3c48d95..ed8d1a9218 100644 --- a/packages/localizations/src/pl-PL.ts +++ b/packages/localizations/src/pl-PL.ts @@ -14,62 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const plPL: LocalizationResource = { locale: 'pl-PL', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'Uzyskaj pomoc', - actionText: 'Nie używasz żadnej z tych metod?', - blockButton__backupCode: 'Użyj kodu zapasowego', - blockButton__emailCode: 'Wyślij kod e-mailem do {{identifier}}', - blockButton__password: 'Zaloguj się za pomocą hasła', - blockButton__phoneCode: 'Wyślij kod SMS-em do {{identifier}}', - blockButton__totp: 'Użyj aplikacji uwierzytelniającej', - getHelp: { - blockButton__emailSupport: 'Skontaktuj się z pomocą', - content: - 'Jeśli masz problem z weryfikacją konta, wyślij do nas e-mail, a postaramy się jak najszybciej przywrócić dostęp.', - title: 'Uzyskaj wsparcie', - }, - subtitle: 'Masz problem? Możesz użyć dowolnej z tych metod weryfikacji.', - title: 'Użyj innej metody', - }, - backupCodeMfa: { - subtitle: 'Twój kod zapasowy to ten, który otrzymałeś podczas konfigurowania uwierzytelniania dwuetapowego.', - title: 'Wprowadź kod zapasowy', - }, - emailCode: { - formTitle: 'Kod weryfikacyjny', - resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', - subtitle: 'aby kontynuować w {{applicationName}}', - title: 'Sprawdź swoją pocztę e-mail', - }, - noAvailableMethods: { - message: 'Nie można kontynuować weryfikacji. Brak dostępnych czynników uwierzytelniania.', - subtitle: 'Wystąpił błąd', - title: 'Nie możemy zweryfikować twojego konta', - }, - password: { - actionLink: 'Użyj innej metody', - subtitle: 'Wprowadź hasło powiązane z twoim kontem', - title: 'Wprowadź swoje hasło', - }, - phoneCode: { - formTitle: 'Kod weryfikacyjny', - resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', - subtitle: 'aby kontynuować w {{applicationName}}', - title: 'Sprawdź swój telefon', - }, - phoneCodeMfa: { - formTitle: 'Kod weryfikacyjny', - resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', - subtitle: 'Aby kontynuować, wprowadź kod weryfikacyjny wysłany na twój telefon', - title: 'Sprawdź swój telefon', - }, - totpMfa: { - formTitle: 'Kod weryfikacyjny', - subtitle: 'Aby kontynuować, wprowadź kod weryfikacyjny wygenerowany przez swoją aplikację uwierzytelniającą', - title: 'Weryfikacja dwuetapowa', - }, - }, backButton: 'Powrót', badge__default: 'Domyślny', badge__otherImpersonatorDevice: 'Inne urządzenie osobiste', @@ -907,6 +851,62 @@ export const plPL: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: 'Uzyskaj pomoc', + actionText: 'Nie używasz żadnej z tych metod?', + blockButton__backupCode: 'Użyj kodu zapasowego', + blockButton__emailCode: 'Wyślij kod e-mailem do {{identifier}}', + blockButton__password: 'Zaloguj się za pomocą hasła', + blockButton__phoneCode: 'Wyślij kod SMS-em do {{identifier}}', + blockButton__totp: 'Użyj aplikacji uwierzytelniającej', + getHelp: { + blockButton__emailSupport: 'Skontaktuj się z pomocą', + content: + 'Jeśli masz problem z weryfikacją konta, wyślij do nas e-mail, a postaramy się jak najszybciej przywrócić dostęp.', + title: 'Uzyskaj wsparcie', + }, + subtitle: 'Masz problem? Możesz użyć dowolnej z tych metod weryfikacji.', + title: 'Użyj innej metody', + }, + backupCodeMfa: { + subtitle: 'Twój kod zapasowy to ten, który otrzymałeś podczas konfigurowania uwierzytelniania dwuetapowego.', + title: 'Wprowadź kod zapasowy', + }, + emailCode: { + formTitle: 'Kod weryfikacyjny', + resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', + subtitle: 'aby kontynuować w {{applicationName}}', + title: 'Sprawdź swoją pocztę e-mail', + }, + noAvailableMethods: { + message: 'Nie można kontynuować weryfikacji. Brak dostępnych czynników uwierzytelniania.', + subtitle: 'Wystąpił błąd', + title: 'Nie możemy zweryfikować twojego konta', + }, + password: { + actionLink: 'Użyj innej metody', + subtitle: 'Wprowadź hasło powiązane z twoim kontem', + title: 'Wprowadź swoje hasło', + }, + phoneCode: { + formTitle: 'Kod weryfikacyjny', + resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', + subtitle: 'aby kontynuować w {{applicationName}}', + title: 'Sprawdź swój telefon', + }, + phoneCodeMfa: { + formTitle: 'Kod weryfikacyjny', + resendButton: 'Nie otrzymałeś kodu? Wyślij ponownie', + subtitle: 'Aby kontynuować, wprowadź kod weryfikacyjny wysłany na twój telefon', + title: 'Sprawdź swój telefon', + }, + totpMfa: { + formTitle: 'Kod weryfikacyjny', + subtitle: 'Aby kontynuować, wprowadź kod weryfikacyjny wygenerowany przez swoją aplikację uwierzytelniającą', + title: 'Weryfikacja dwuetapowa', + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/pt-BR.ts b/packages/localizations/src/pt-BR.ts index 6c5be5442e..a60edcd061 100644 --- a/packages/localizations/src/pt-BR.ts +++ b/packages/localizations/src/pt-BR.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const ptBR: LocalizationResource = { locale: 'pt-BR', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Voltar', badge__default: 'Padrão', badge__otherImpersonatorDevice: 'Personificar outro dispositivo', @@ -912,6 +857,61 @@ export const ptBR: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/pt-PT.ts b/packages/localizations/src/pt-PT.ts index 9dd30c63b2..55bc045557 100644 --- a/packages/localizations/src/pt-PT.ts +++ b/packages/localizations/src/pt-PT.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const ptPT: LocalizationResource = { locale: 'pt-PT', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Voltar', badge__default: 'Padrão', badge__otherImpersonatorDevice: 'Personificar outro dispositivo', @@ -905,6 +850,61 @@ export const ptPT: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/ro-RO.ts b/packages/localizations/src/ro-RO.ts index bf78cb0be3..ec14a0ed84 100644 --- a/packages/localizations/src/ro-RO.ts +++ b/packages/localizations/src/ro-RO.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const roRO: LocalizationResource = { locale: 'ro-RO', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Înapoi', badge__default: 'Implicit', badge__otherImpersonatorDevice: 'Alt dispozitiv de imitație', @@ -916,6 +861,61 @@ export const roRO: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/ru-RU.ts b/packages/localizations/src/ru-RU.ts index 96a47e8e67..07564c9a27 100644 --- a/packages/localizations/src/ru-RU.ts +++ b/packages/localizations/src/ru-RU.ts @@ -14,62 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const ruRU: LocalizationResource = { locale: 'ru-RU', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'Получить помощь', - actionText: 'У вас нет ничего из этого?', - blockButton__backupCode: 'Использовать резервный код', - blockButton__emailCode: 'Отправить код на {{identifier}}', - blockButton__password: 'Продолжить с вашим паролем', - blockButton__phoneCode: 'Отправить SMS код на {{identifier}}', - blockButton__totp: 'Использовать приложение аутентификации', - getHelp: { - blockButton__emailSupport: 'Написать в поддержку', - content: - 'Если у вас возникли проблемы с проверкой учетной записи, напишите нам, и мы вместе с вами восстановим доступ как можно скорее.', - title: 'Получить помощь', - }, - subtitle: 'Столкнулись с проблемами? Вы можете использовать любой из этих методов для верификации', - title: 'Использовать другой метод', - }, - backupCodeMfa: { - subtitle: 'Ваш резервный код - это код, который вы получили при настройке двухфакторной аутентификации.', - title: 'Введите резервный код', - }, - emailCode: { - formTitle: 'Верификационный код', - resendButton: 'Не получили код? Отправить повторно', - subtitle: 'для продолжения {{applicationName}}', - title: 'Проверьте вашу почту', - }, - noAvailableMethods: { - message: 'Невозможно продолжить верификацию. Нет доступного фактора аутентификации.', - subtitle: 'Произошла ошибка', - title: 'Невозможно подтвердить учетную запись', - }, - password: { - actionLink: 'Используйте другой метод', - subtitle: 'Введите пароль, связанный с вашей учетной записью', - title: 'Введите ваш пароль', - }, - phoneCode: { - formTitle: 'Верификационный код', - resendButton: 'Не получили код? Отправить повторно', - subtitle: 'для продолжения {{applicationName}}', - title: 'Проверьте ваш телефон', - }, - phoneCodeMfa: { - formTitle: 'Верификационный код', - resendButton: 'Не получили код? Отправить повторно', - subtitle: 'Для продолжения, введите верификационный код, отправленный на ваш телефон', - title: 'Проверьте ваш телефон', - }, - totpMfa: { - formTitle: 'Верификационный код', - subtitle: 'Чтобы продолжить, введите верификационный код, сгенерированный вашим приложением-аутентификатором', - title: 'Двухфакторная верификация', - }, - }, backButton: 'Назад', badge__default: 'По-умолчанию', badge__otherImpersonatorDevice: 'Другое устройство', @@ -925,6 +869,62 @@ export const ruRU: LocalizationResource = { web3WalletButtonsBlockButton: '{{provider|titleize}}', }, }, + userVerification: { + alternativeMethods: { + actionLink: 'Получить помощь', + actionText: 'У вас нет ничего из этого?', + blockButton__backupCode: 'Использовать резервный код', + blockButton__emailCode: 'Отправить код на {{identifier}}', + blockButton__password: 'Продолжить с вашим паролем', + blockButton__phoneCode: 'Отправить SMS код на {{identifier}}', + blockButton__totp: 'Использовать приложение аутентификации', + getHelp: { + blockButton__emailSupport: 'Написать в поддержку', + content: + 'Если у вас возникли проблемы с проверкой учетной записи, напишите нам, и мы вместе с вами восстановим доступ как можно скорее.', + title: 'Получить помощь', + }, + subtitle: 'Столкнулись с проблемами? Вы можете использовать любой из этих методов для верификации', + title: 'Использовать другой метод', + }, + backupCodeMfa: { + subtitle: 'Ваш резервный код - это код, который вы получили при настройке двухфакторной аутентификации.', + title: 'Введите резервный код', + }, + emailCode: { + formTitle: 'Верификационный код', + resendButton: 'Не получили код? Отправить повторно', + subtitle: 'для продолжения {{applicationName}}', + title: 'Проверьте вашу почту', + }, + noAvailableMethods: { + message: 'Невозможно продолжить верификацию. Нет доступного фактора аутентификации.', + subtitle: 'Произошла ошибка', + title: 'Невозможно подтвердить учетную запись', + }, + password: { + actionLink: 'Используйте другой метод', + subtitle: 'Введите пароль, связанный с вашей учетной записью', + title: 'Введите ваш пароль', + }, + phoneCode: { + formTitle: 'Верификационный код', + resendButton: 'Не получили код? Отправить повторно', + subtitle: 'для продолжения {{applicationName}}', + title: 'Проверьте ваш телефон', + }, + phoneCodeMfa: { + formTitle: 'Верификационный код', + resendButton: 'Не получили код? Отправить повторно', + subtitle: 'Для продолжения, введите верификационный код, отправленный на ваш телефон', + title: 'Проверьте ваш телефон', + }, + totpMfa: { + formTitle: 'Верификационный код', + subtitle: 'Чтобы продолжить, введите верификационный код, сгенерированный вашим приложением-аутентификатором', + title: 'Двухфакторная верификация', + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/sk-SK.ts b/packages/localizations/src/sk-SK.ts index edd8f5e9fe..317f0452f7 100644 --- a/packages/localizations/src/sk-SK.ts +++ b/packages/localizations/src/sk-SK.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const skSK: LocalizationResource = { locale: 'sk-SK', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Späť', badge__default: 'Predvolené', badge__otherImpersonatorDevice: 'Iné zariadenie zástupcu', @@ -904,6 +849,61 @@ export const skSK: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/sr-RS.ts b/packages/localizations/src/sr-RS.ts index f27e526102..c72650de0e 100644 --- a/packages/localizations/src/sr-RS.ts +++ b/packages/localizations/src/sr-RS.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const srRS: LocalizationResource = { locale: 'sr-RS', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Nazad', badge__default: 'Podrazumevano', badge__otherImpersonatorDevice: 'Drugi uređaj koji se predstavlja', @@ -907,6 +852,61 @@ export const srRS: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/sv-SE.ts b/packages/localizations/src/sv-SE.ts index cde0f91ac2..e5e660b1e7 100644 --- a/packages/localizations/src/sv-SE.ts +++ b/packages/localizations/src/sv-SE.ts @@ -14,62 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const svSE: LocalizationResource = { locale: 'sv-SE', - __experimental_userVerification: { - alternativeMethods: { - actionLink: 'Få hjälp', - actionText: 'Har du inget av dessa?', - blockButton__backupCode: 'Använd en reservkod', - blockButton__emailCode: 'Skicka kod via e-post till {{identifier}}', - blockButton__password: 'Fortsätt med ditt lösenord', - blockButton__phoneCode: 'Skicka SMS-kod till {{identifier}}', - blockButton__totp: 'Använd din autentiseringsapp', - getHelp: { - blockButton__emailSupport: 'E-posta support', - content: - 'Om du har problem med att verifiera ditt konto, maila oss så hjälper vi dig att återställa åtkomsten så snart som möjligt.', - title: 'Få hjälp', - }, - subtitle: 'Har du problem? Du kan använda någon av dessa metoder för verifiering.', - title: 'Använd en annan metod', - }, - backupCodeMfa: { - subtitle: 'Din reservkod är den du fick när du ställde in tvåstegsverifiering.', - title: 'Ange en reservkod', - }, - emailCode: { - formTitle: 'Verifieringskod', - resendButton: 'Fick du ingen kod? Skicka igen', - subtitle: 'för att fortsätta till {{applicationName}}', - title: 'Kontrollera din e-post', - }, - noAvailableMethods: { - message: 'Kan inte fortsätta med verifieringen. Det finns ingen tillgänglig autentiseringsfaktor.', - subtitle: 'Ett fel inträffade', - title: 'Kan inte verifiera ditt konto', - }, - password: { - actionLink: 'Använd en annan metod', - subtitle: 'Ange lösenordet som är kopplat till ditt konto', - title: 'Ange ditt lösenord', - }, - phoneCode: { - formTitle: 'Verifieringskod', - resendButton: 'Fick du ingen kod? Skicka igen', - subtitle: 'för att fortsätta till {{applicationName}}', - title: 'Kontrollera din telefon', - }, - phoneCodeMfa: { - formTitle: 'Verifieringskod', - resendButton: 'Fick du ingen kod? Skicka igen', - subtitle: 'För att fortsätta, vänligen ange verifieringskoden som skickats till din telefon', - title: 'Kontrollera din telefon', - }, - totpMfa: { - formTitle: 'Verifieringskod', - subtitle: 'För att fortsätta, vänligen ange verifieringskoden som genererats av din autentiseringsapp', - title: 'Tvåstegsverifiering', - }, - }, backButton: 'Tillbaka', badge__default: 'Standard', badge__otherImpersonatorDevice: 'Annans imitatörenhet', @@ -909,6 +853,62 @@ export const svSE: LocalizationResource = { web3WalletButtonsBlockButton: '{{provider|titleize}}', }, }, + userVerification: { + alternativeMethods: { + actionLink: 'Få hjälp', + actionText: 'Har du inget av dessa?', + blockButton__backupCode: 'Använd en reservkod', + blockButton__emailCode: 'Skicka kod via e-post till {{identifier}}', + blockButton__password: 'Fortsätt med ditt lösenord', + blockButton__phoneCode: 'Skicka SMS-kod till {{identifier}}', + blockButton__totp: 'Använd din autentiseringsapp', + getHelp: { + blockButton__emailSupport: 'E-posta support', + content: + 'Om du har problem med att verifiera ditt konto, maila oss så hjälper vi dig att återställa åtkomsten så snart som möjligt.', + title: 'Få hjälp', + }, + subtitle: 'Har du problem? Du kan använda någon av dessa metoder för verifiering.', + title: 'Använd en annan metod', + }, + backupCodeMfa: { + subtitle: 'Din reservkod är den du fick när du ställde in tvåstegsverifiering.', + title: 'Ange en reservkod', + }, + emailCode: { + formTitle: 'Verifieringskod', + resendButton: 'Fick du ingen kod? Skicka igen', + subtitle: 'för att fortsätta till {{applicationName}}', + title: 'Kontrollera din e-post', + }, + noAvailableMethods: { + message: 'Kan inte fortsätta med verifieringen. Det finns ingen tillgänglig autentiseringsfaktor.', + subtitle: 'Ett fel inträffade', + title: 'Kan inte verifiera ditt konto', + }, + password: { + actionLink: 'Använd en annan metod', + subtitle: 'Ange lösenordet som är kopplat till ditt konto', + title: 'Ange ditt lösenord', + }, + phoneCode: { + formTitle: 'Verifieringskod', + resendButton: 'Fick du ingen kod? Skicka igen', + subtitle: 'för att fortsätta till {{applicationName}}', + title: 'Kontrollera din telefon', + }, + phoneCodeMfa: { + formTitle: 'Verifieringskod', + resendButton: 'Fick du ingen kod? Skicka igen', + subtitle: 'För att fortsätta, vänligen ange verifieringskoden som skickats till din telefon', + title: 'Kontrollera din telefon', + }, + totpMfa: { + formTitle: 'Verifieringskod', + subtitle: 'För att fortsätta, vänligen ange verifieringskoden som genererats av din autentiseringsapp', + title: 'Tvåstegsverifiering', + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/th-TH.ts b/packages/localizations/src/th-TH.ts index a5b92f23b8..3f4230e502 100644 --- a/packages/localizations/src/th-TH.ts +++ b/packages/localizations/src/th-TH.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const thTH: LocalizationResource = { locale: 'th-TH', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'กลับ', badge__default: 'ค่าเริ่มต้น', badge__otherImpersonatorDevice: 'อุปกรณ์ปลอมตัวอื่น', @@ -899,6 +844,61 @@ export const thTH: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/tr-TR.ts b/packages/localizations/src/tr-TR.ts index 60e3d2d17a..4369d4a5b7 100644 --- a/packages/localizations/src/tr-TR.ts +++ b/packages/localizations/src/tr-TR.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const trTR: LocalizationResource = { locale: 'tr-TR', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Geri', badge__default: 'Varsayılan', badge__otherImpersonatorDevice: 'Diğer taklitçi cihaz', @@ -909,6 +854,61 @@ export const trTR: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/uk-UA.ts b/packages/localizations/src/uk-UA.ts index 73ac9ed74e..f635b55b8f 100644 --- a/packages/localizations/src/uk-UA.ts +++ b/packages/localizations/src/uk-UA.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const ukUA: LocalizationResource = { locale: 'uk-UA', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Назад', badge__default: 'За замовчуванням', badge__otherImpersonatorDevice: 'Інший пристрій-двійник', @@ -905,6 +850,61 @@ export const ukUA: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/vi-VN.ts b/packages/localizations/src/vi-VN.ts index 421c311f63..5291cfcbc8 100644 --- a/packages/localizations/src/vi-VN.ts +++ b/packages/localizations/src/vi-VN.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const viVN: LocalizationResource = { locale: 'vi-VN', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: 'Quay lại', badge__default: 'Mặc định', badge__otherImpersonatorDevice: 'Thiết bị nhân danh khác', @@ -905,6 +850,61 @@ export const viVN: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/zh-CN.ts b/packages/localizations/src/zh-CN.ts index 5fba3e89c6..d9286a15c4 100644 --- a/packages/localizations/src/zh-CN.ts +++ b/packages/localizations/src/zh-CN.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const zhCN: LocalizationResource = { locale: 'zh-CN', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: '返回', badge__default: '默认', badge__otherImpersonatorDevice: '其他模拟器设备', @@ -879,6 +824,61 @@ export const zhCN: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/localizations/src/zh-TW.ts b/packages/localizations/src/zh-TW.ts index 8ced64c75b..0161ba13bc 100644 --- a/packages/localizations/src/zh-TW.ts +++ b/packages/localizations/src/zh-TW.ts @@ -14,61 +14,6 @@ import type { LocalizationResource } from '@clerk/types'; export const zhTW: LocalizationResource = { locale: 'zh-TW', - __experimental_userVerification: { - alternativeMethods: { - actionLink: undefined, - actionText: undefined, - blockButton__backupCode: undefined, - blockButton__emailCode: undefined, - blockButton__password: undefined, - blockButton__phoneCode: undefined, - blockButton__totp: undefined, - getHelp: { - blockButton__emailSupport: undefined, - content: undefined, - title: undefined, - }, - subtitle: undefined, - title: undefined, - }, - backupCodeMfa: { - subtitle: undefined, - title: undefined, - }, - emailCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - noAvailableMethods: { - message: undefined, - subtitle: undefined, - title: undefined, - }, - password: { - actionLink: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCode: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - phoneCodeMfa: { - formTitle: undefined, - resendButton: undefined, - subtitle: undefined, - title: undefined, - }, - totpMfa: { - formTitle: undefined, - subtitle: undefined, - title: undefined, - }, - }, backButton: '返回', badge__default: '默認', badge__otherImpersonatorDevice: '其他模擬器設備', @@ -889,6 +834,61 @@ export const zhTW: LocalizationResource = { web3WalletButtonsBlockButton: undefined, }, }, + userVerification: { + alternativeMethods: { + actionLink: undefined, + actionText: undefined, + blockButton__backupCode: undefined, + blockButton__emailCode: undefined, + blockButton__password: undefined, + blockButton__phoneCode: undefined, + blockButton__totp: undefined, + getHelp: { + blockButton__emailSupport: undefined, + content: undefined, + title: undefined, + }, + subtitle: undefined, + title: undefined, + }, + backupCodeMfa: { + subtitle: undefined, + title: undefined, + }, + emailCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + noAvailableMethods: { + message: undefined, + subtitle: undefined, + title: undefined, + }, + password: { + actionLink: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCode: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + phoneCodeMfa: { + formTitle: undefined, + resendButton: undefined, + subtitle: undefined, + title: undefined, + }, + totpMfa: { + formTitle: undefined, + subtitle: undefined, + title: undefined, + }, + }, waitlist: { start: { actionLink: undefined, diff --git a/packages/nextjs/src/client-boundary/hooks.ts b/packages/nextjs/src/client-boundary/hooks.ts index 3ef5c09f78..41b0d8a008 100644 --- a/packages/nextjs/src/client-boundary/hooks.ts +++ b/packages/nextjs/src/client-boundary/hooks.ts @@ -10,7 +10,7 @@ export { useSignIn, useSignUp, useUser, - __experimental_useReverification, + useReverification, } from '@clerk/clerk-react'; export { diff --git a/packages/nextjs/src/index.ts b/packages/nextjs/src/index.ts index 394648ae6e..4000aeccea 100644 --- a/packages/nextjs/src/index.ts +++ b/packages/nextjs/src/index.ts @@ -49,7 +49,7 @@ export { useSignIn, useSignUp, useUser, - __experimental_useReverification, + useReverification, } from './client-boundary/hooks'; /** diff --git a/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap b/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap index 77a73c8403..a891300708 100644 --- a/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/nextjs/src/server/__tests__/__snapshots__/exports.test.ts.snap @@ -2,8 +2,6 @@ exports[`/server public exports > should not include a breaking change 1`] = ` [ - "__experimental_reverificationError", - "__experimental_reverificationErrorResponse", "auth", "buildClerkProps", "clerkClient", @@ -12,6 +10,8 @@ exports[`/server public exports > should not include a breaking change 1`] = ` "createRouteMatcher", "currentUser", "getAuth", + "reverificationError", + "reverificationErrorResponse", "verifyToken", ] `; diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts index 686f72d0d7..d1fd9b1192 100644 --- a/packages/nextjs/src/server/index.ts +++ b/packages/nextjs/src/server/index.ts @@ -67,7 +67,4 @@ export type { /** * Utilities for reverification */ -export { - __experimental_reverificationErrorResponse, - __experimental_reverificationError, -} from '@clerk/backend/internal'; +export { reverificationErrorResponse, reverificationError } from '@clerk/backend/internal'; diff --git a/packages/react/src/contexts/AuthContext.ts b/packages/react/src/contexts/AuthContext.ts index db59ac0fe7..02d3919620 100644 --- a/packages/react/src/contexts/AuthContext.ts +++ b/packages/react/src/contexts/AuthContext.ts @@ -9,7 +9,7 @@ export type AuthContextValue = { orgRole: OrganizationCustomRoleKey | null | undefined; orgSlug: string | null | undefined; orgPermissions: OrganizationCustomPermissionKey[] | null | undefined; - __experimental_factorVerificationAge: [number, number] | null; + factorVerificationAge: [number, number] | null; }; export const [AuthContext, useAuthContext] = createContextAndHook('AuthContext'); diff --git a/packages/react/src/contexts/ClerkContextProvider.tsx b/packages/react/src/contexts/ClerkContextProvider.tsx index 13d8933943..2c83c4bae5 100644 --- a/packages/react/src/contexts/ClerkContextProvider.tsx +++ b/packages/react/src/contexts/ClerkContextProvider.tsx @@ -46,7 +46,7 @@ export function ClerkContextProvider(props: ClerkContextProvider): JSX.Element | orgRole, orgSlug, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, } = derivedState; const authCtx = React.useMemo(() => { @@ -58,10 +58,10 @@ export function ClerkContextProvider(props: ClerkContextProvider): JSX.Element | orgRole, orgSlug, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, }; return { value }; - }, [sessionId, userId, actor, orgId, orgRole, orgSlug, __experimental_factorVerificationAge]); + }, [sessionId, userId, actor, orgId, orgRole, orgSlug, factorVerificationAge]); const sessionCtx = React.useMemo(() => ({ value: session }), [sessionId, session]); const userCtx = React.useMemo(() => ({ value: user }), [userId, user]); const organizationCtx = React.useMemo(() => { diff --git a/packages/react/src/hooks/__tests__/useAuth.test.ts b/packages/react/src/hooks/__tests__/useAuth.test.ts index 4fae6bf32b..b7a29cdbd4 100644 --- a/packages/react/src/hooks/__tests__/useAuth.test.ts +++ b/packages/react/src/hooks/__tests__/useAuth.test.ts @@ -25,7 +25,7 @@ describe('useAuth type tests', () => { expectTypeOf({ role: 'org:admin', permission: 'some-perm' }).not.toMatchTypeOf(); }); - it('has with role and assurance is allowed', () => { + it('has with role and re-verification is allowed', () => { expectTypeOf({ role: 'org:admin', __experimental_reverification: { @@ -35,10 +35,10 @@ describe('useAuth type tests', () => { } as const).toMatchTypeOf(); }); - it('has with permission and reverification is allowed', () => { + it('has with permission and re-verification is allowed', () => { expectTypeOf({ permission: 'org:edit:posts', - __experimental_reverification: { + reverification: { level: 'first_factor', afterMinutes: 10, }, @@ -47,7 +47,7 @@ describe('useAuth type tests', () => { it('has({reverification: {level, maxAge}}) is allowed', () => { expectTypeOf({ - __experimental_reverification: { + reverification: { level: 'first_factor', afterMinutes: 10, }, @@ -56,7 +56,7 @@ describe('useAuth type tests', () => { it('reverification with other values as maxAge should throw', () => { expectTypeOf({ - __experimental_reverification: { + reverification: { level: 'first_factor', afterMinutes: '10', }, @@ -65,37 +65,37 @@ describe('useAuth type tests', () => { it('veryStrict reverification is allowed', () => { expectTypeOf({ - __experimental_reverification: 'strict_mfa', + reverification: 'strict_mfa', } as const).toMatchTypeOf(); }); it('strict reverification is allowed', () => { expectTypeOf({ - __experimental_reverification: 'strict', + reverification: 'strict', } as const).toMatchTypeOf(); }); it('moderate reverification is allowed', () => { expectTypeOf({ - __experimental_reverification: 'moderate', + reverification: 'moderate', } as const).toMatchTypeOf(); }); it('lax reverification is allowed', () => { expectTypeOf({ - __experimental_reverification: 'lax', + reverification: 'lax', } as const).toMatchTypeOf(); }); it('random reverification is not allowed', () => { expectTypeOf({ - __experimental_reverification: 'random', + reverification: 'random', } as const).not.toMatchTypeOf(); }); it('reverification with other strings as level should throw', () => { expectTypeOf({ - __experimental_reverification: { + reverification: { level: 'some-factor', afterMinutes: 10, }, @@ -104,7 +104,7 @@ describe('useAuth type tests', () => { it('reverification with number as level should throw', () => { expectTypeOf({ - __experimental_reverification: { + reverification: { level: 2, afterMinutes: 10, }, diff --git a/packages/react/src/hooks/index.ts b/packages/react/src/hooks/index.ts index 788a84b1e2..5a6cb60cb6 100644 --- a/packages/react/src/hooks/index.ts +++ b/packages/react/src/hooks/index.ts @@ -9,5 +9,5 @@ export { useSessionList, useUser, useSession, - __experimental_useReverification, + useReverification, } from '@clerk/shared/react'; diff --git a/packages/react/src/hooks/useAuth.ts b/packages/react/src/hooks/useAuth.ts index bb883908c7..d666c50d23 100644 --- a/packages/react/src/hooks/useAuth.ts +++ b/packages/react/src/hooks/useAuth.ts @@ -67,8 +67,7 @@ export const useAuth: UseAuth = (initialAuthState = {}) => { setAuthState(authContext); }, [authContext]); - const { sessionId, userId, actor, orgId, orgRole, orgSlug, orgPermissions, __experimental_factorVerificationAge } = - authState; + const { sessionId, userId, actor, orgId, orgRole, orgSlug, orgPermissions, factorVerificationAge } = authState; const isomorphicClerk = useIsomorphicClerkContext(); const getToken: GetToken = useCallback(createGetToken(isomorphicClerk), [isomorphicClerk]); @@ -84,7 +83,7 @@ export const useAuth: UseAuth = (initialAuthState = {}) => { getToken, signOut, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, }); }; @@ -100,7 +99,7 @@ export function useDerivedAuth(authObject: any): UseAuthReturn { signOut, getToken, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, } = authObject ?? {}; const derivedHas = useCallback( @@ -113,10 +112,10 @@ export function useDerivedAuth(authObject: any): UseAuthReturn { orgId, orgRole, orgPermissions, - __experimental_factorVerificationAge, + factorVerificationAge, })(params); }, - [userId, __experimental_factorVerificationAge, orgId, orgRole, orgPermissions], + [userId, factorVerificationAge, orgId, orgRole, orgPermissions], ); if (sessionId === undefined && userId === undefined) { diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index cabf975d4c..cd2aba4524 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -3,8 +3,8 @@ import { loadClerkJsScript } from '@clerk/shared/loadClerkJsScript'; import type { TelemetryCollector } from '@clerk/shared/telemetry'; import { handleValueOrFn } from '@clerk/shared/utils'; import type { - __experimental_UserVerificationModalProps, - __experimental_UserVerificationProps, + __internal_UserVerificationModalProps, + __internal_UserVerificationProps, ActiveSessionResource, AuthenticateWithCoinbaseWalletParams, AuthenticateWithGoogleOneTapParams, @@ -178,7 +178,7 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { private readonly Clerk: ClerkProp; private clerkjs: BrowserClerk | HeadlessBrowserClerk | null = null; private preopenOneTap?: null | GoogleOneTapProps = null; - private preopenUserVerification?: null | __experimental_UserVerificationProps = null; + private preopenUserVerification?: null | __internal_UserVerificationProps = null; private preopenSignIn?: null | SignInProps = null; private preopenSignUp?: null | SignUpProps = null; private preopenUserProfile?: null | UserProfileProps = null; @@ -542,7 +542,7 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { } if (this.preopenUserVerification !== null) { - clerkjs.__experimental_openUserVerification(this.preopenUserVerification); + clerkjs.__internal_openUserVerification(this.preopenUserVerification); } if (this.preopenOneTap !== null) { @@ -688,17 +688,17 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { } }; - __experimental_openUserVerification = (props?: __experimental_UserVerificationModalProps): void => { + __internal_openUserVerification = (props?: __internal_UserVerificationModalProps): void => { if (this.clerkjs && this.#loaded) { - this.clerkjs.__experimental_openUserVerification(props); + this.clerkjs.__internal_openUserVerification(props); } else { this.preopenUserVerification = props; } }; - __experimental_closeUserVerification = (): void => { + __internal_closeUserVerification = (): void => { if (this.clerkjs && this.#loaded) { - this.clerkjs.__experimental_closeUserVerification(); + this.clerkjs.__internal_closeUserVerification(); } else { this.preopenUserVerification = null; } diff --git a/packages/shared/src/authorization-errors.ts b/packages/shared/src/authorization-errors.ts index a94010bebb..bedcf8c386 100644 --- a/packages/shared/src/authorization-errors.ts +++ b/packages/shared/src/authorization-errors.ts @@ -1,4 +1,4 @@ -import type { __experimental_ReverificationConfig } from '@clerk/types'; +import type { ReverificationConfig } from '@clerk/types'; type ClerkError = { clerk_error: T; @@ -13,7 +13,7 @@ type ReverificationError = } & M >; -const __experimental_reverificationError = ( +const reverificationError = ( missingConfig?: MC, ): ReverificationError<{ metadata: { @@ -29,14 +29,12 @@ const __experimental_reverificationError = ) => - new Response(JSON.stringify(__experimental_reverificationError(...args)), { +const reverificationErrorResponse = (...args: Parameters) => + new Response(JSON.stringify(reverificationError(...args)), { status: 403, }); -const __experimental_isReverificationHint = ( - result: any, -): result is ReturnType => { +const isReverificationHint = (result: any): result is ReturnType => { return ( result && typeof result === 'object' && @@ -46,8 +44,4 @@ const __experimental_isReverificationHint = ( ); }; -export { - __experimental_reverificationError, - __experimental_reverificationErrorResponse, - __experimental_isReverificationHint, -}; +export { reverificationError, reverificationErrorResponse, isReverificationHint }; diff --git a/packages/shared/src/authorization.ts b/packages/shared/src/authorization.ts index 489067bbfb..f09d5129fe 100644 --- a/packages/shared/src/authorization.ts +++ b/packages/shared/src/authorization.ts @@ -1,22 +1,19 @@ import type { - __experimental_ReverificationConfig, - __experimental_SessionVerificationLevel, - __experimental_SessionVerificationTypes, CheckAuthorizationWithCustomPermissions, OrganizationCustomPermissionKey, OrganizationCustomRoleKey, + ReverificationConfig, + SessionVerificationLevel, + SessionVerificationTypes, } from '@clerk/types'; -type TypesToConfig = Record< - __experimental_SessionVerificationTypes, - Exclude<__experimental_ReverificationConfig, __experimental_SessionVerificationTypes> ->; +type TypesToConfig = Record>; type AuthorizationOptions = { userId: string | null | undefined; orgId: string | null | undefined; orgRole: string | null | undefined; orgPermissions: string[] | null | undefined; - __experimental_factorVerificationAge: [number, number] | null; + factorVerificationAge: [number, number] | null; }; type CheckOrgAuthorization = ( @@ -26,9 +23,9 @@ type CheckOrgAuthorization = ( type CheckStepUpAuthorization = ( params: { - __experimental_reverification?: __experimental_ReverificationConfig; + reverification?: ReverificationConfig; }, - { __experimental_factorVerificationAge }: AuthorizationOptions, + { factorVerificationAge }: AuthorizationOptions, ) => boolean | null; const TYPES_TO_OBJECTS: TypesToConfig = { @@ -50,13 +47,9 @@ const TYPES_TO_OBJECTS: TypesToConfig = { }, }; -const ALLOWED_LEVELS = new Set<__experimental_SessionVerificationLevel>([ - 'first_factor', - 'second_factor', - 'multi_factor', -]); +const ALLOWED_LEVELS = new Set(['first_factor', 'second_factor', 'multi_factor']); -const ALLOWED_TYPES = new Set<__experimental_SessionVerificationTypes>(['strict_mfa', 'strict', 'moderate', 'lax']); +const ALLOWED_TYPES = new Set(['strict_mfa', 'strict', 'moderate', 'lax']); // Helper functions const isValidMaxAge = (maxAge: any) => typeof maxAge === 'number' && maxAge > 0; @@ -86,8 +79,8 @@ const checkOrgAuthorization: CheckOrgAuthorization = (params, options) => { return null; }; -const validateReverificationConfig = (config: __experimental_ReverificationConfig | undefined) => { - const convertConfigToObject = (config: __experimental_ReverificationConfig) => { +const validateReverificationConfig = (config: ReverificationConfig | undefined) => { + const convertConfigToObject = (config: ReverificationConfig) => { if (typeof config === 'string') { return TYPES_TO_OBJECTS[config]; } @@ -111,18 +104,18 @@ const validateReverificationConfig = (config: __experimental_ReverificationConfi * Handles different verification levels (first factor, second factor, multi-factor). * @returns null, if requirements or verification data are missing. */ -const checkStepUpAuthorization: CheckStepUpAuthorization = (params, { __experimental_factorVerificationAge }) => { - if (!params.__experimental_reverification || !__experimental_factorVerificationAge) { +const checkStepUpAuthorization: CheckStepUpAuthorization = (params, { factorVerificationAge }) => { + if (!params.reverification || !factorVerificationAge) { return null; } - const isValidReverification = validateReverificationConfig(params.__experimental_reverification); + const isValidReverification = validateReverificationConfig(params.reverification); if (!isValidReverification) { return null; } const { level, afterMinutes } = isValidReverification(); - const [factor1Age, factor2Age] = __experimental_factorVerificationAge; + const [factor1Age, factor2Age] = factorVerificationAge; // -1 indicates the factor group (1fa,2fa) is not enabled // -1 for 1fa is not a valid scenario, but we need to make sure we handle it properly diff --git a/packages/shared/src/deriveState.ts b/packages/shared/src/deriveState.ts index 03a51356b6..771c804083 100644 --- a/packages/shared/src/deriveState.ts +++ b/packages/shared/src/deriveState.ts @@ -29,7 +29,7 @@ const deriveFromSsrInitialState = (initialState: InitialState) => { const orgPermissions = initialState.orgPermissions as OrganizationCustomPermissionKey[]; const orgSlug = initialState.orgSlug; const actor = initialState.actor; - const __experimental_factorVerificationAge = initialState.__experimental_factorVerificationAge; + const factorVerificationAge = initialState.factorVerificationAge; return { userId, @@ -42,7 +42,7 @@ const deriveFromSsrInitialState = (initialState: InitialState) => { orgPermissions, orgSlug, actor, - __experimental_factorVerificationAge, + factorVerificationAge, }; }; @@ -51,9 +51,7 @@ const deriveFromClientSideState = (state: Resources) => { const user = state.user; const sessionId: string | null | undefined = state.session ? state.session.id : state.session; const session = state.session; - const __experimental_factorVerificationAge: [number, number] | null = state.session - ? state.session.__experimental_factorVerificationAge - : null; + const factorVerificationAge: [number, number] | null = state.session ? state.session.factorVerificationAge : null; const actor = session?.actor; const organization = state.organization; const orgId: string | null | undefined = state.organization ? state.organization.id : state.organization; @@ -75,6 +73,6 @@ const deriveFromClientSideState = (state: Resources) => { orgSlug, orgPermissions, actor, - __experimental_factorVerificationAge, + factorVerificationAge, }; }; diff --git a/packages/shared/src/react/__tests__/useReverification.test.ts b/packages/shared/src/react/__tests__/useReverification.test.ts index 113ea3ee51..6100b505cf 100644 --- a/packages/shared/src/react/__tests__/useReverification.test.ts +++ b/packages/shared/src/react/__tests__/useReverification.test.ts @@ -1,7 +1,7 @@ import { expectTypeOf } from 'expect-type'; -import { __experimental_reverificationError } from '../../authorization-errors'; -import type { __experimental_useReverification as useReverification } from '../hooks/useReverification'; +import { reverificationError } from '../../authorization-errors'; +import type { useReverification } from '../hooks/useReverification'; type ExcludeClerkError = T extends { clerk_error: any } ? never : T; @@ -14,7 +14,7 @@ const fetcher = async (key: string, options: { id: string }) => { const fetcherWithHelper = async (key: string, options: { id: string }) => { if (key == 'a') { - return __experimental_reverificationError(); + return reverificationError(); } return { diff --git a/packages/shared/src/react/hooks/index.ts b/packages/shared/src/react/hooks/index.ts index 61665439f8..e9d80343a6 100644 --- a/packages/shared/src/react/hooks/index.ts +++ b/packages/shared/src/react/hooks/index.ts @@ -7,4 +7,4 @@ export { useSessionList } from './useSessionList'; export { useUser } from './useUser'; export { useClerk } from './useClerk'; export { useDeepEqualMemo, isDeeplyEqual } from './useDeepEqualMemo'; -export { __experimental_useReverification } from './useReverification'; +export { useReverification } from './useReverification'; diff --git a/packages/shared/src/react/hooks/useReverification.ts b/packages/shared/src/react/hooks/useReverification.ts index 7efb0d844e..61bf6fd3a9 100644 --- a/packages/shared/src/react/hooks/useReverification.ts +++ b/packages/shared/src/react/hooks/useReverification.ts @@ -2,15 +2,13 @@ import type { Clerk } from '@clerk/types'; import { useMemo, useRef } from 'react'; import { validateReverificationConfig } from '../../authorization'; -import { __experimental_isReverificationHint, __experimental_reverificationError } from '../../authorization-errors'; +import { isReverificationHint, reverificationError } from '../../authorization-errors'; import { ClerkRuntimeError, isClerkAPIResponseError, isClerkRuntimeError } from '../../error'; import { createDeferredPromise } from '../../utils/createDeferredPromise'; import { useClerk } from './useClerk'; import { useSafeLayoutEffect } from './useSafeLayoutEffect'; -async function resolveResult( - result: Promise | T, -): Promise> { +async function resolveResult(result: Promise | T): Promise> { try { const r = await result; if (r instanceof Response) { @@ -20,7 +18,7 @@ async function resolveResult( } catch (e) { // Treat fapi assurance as an assurance hint if (isClerkAPIResponseError(e) && e.errors.find(({ code }) => code == 'session_step_up_verification_required')) { - return __experimental_reverificationError(); + return reverificationError(); } // rethrow @@ -36,7 +34,7 @@ type UseReverificationOptions = { }; type CreateReverificationHandlerParams = UseReverificationOptions & { - openUIComponent: Clerk['__experimental_openUserVerification']; + openUIComponent: Clerk['__internal_openUserVerification']; }; function createReverificationHandler(params: CreateReverificationHandlerParams) { @@ -48,7 +46,7 @@ function createReverificationHandler(params: CreateReverificationHandlerParams) return (async (...args: Parameters) => { let result = await resolveResult(fetcher(...args)); - if (__experimental_isReverificationHint(result)) { + if (isReverificationHint(result)) { /** * Create a promise */ @@ -127,21 +125,21 @@ type UseReverificationResult< * return * } */ -function __experimental_useReverification< +function useReverification< Fetcher extends (...args: any[]) => Promise | undefined, Options extends UseReverificationOptions, >(fetcher: Fetcher, options?: Options): UseReverificationResult { - const { __experimental_openUserVerification } = useClerk(); + const { __internal_openUserVerification } = useClerk(); const fetcherRef = useRef(fetcher); const optionsRef = useRef(options); const handleReverification = useMemo(() => { const handler = createReverificationHandler({ - openUIComponent: __experimental_openUserVerification, + openUIComponent: __internal_openUserVerification, ...optionsRef.current, })(fetcherRef.current); return [handler] as const; - }, [__experimental_openUserVerification, fetcherRef.current, optionsRef.current]); + }, [__internal_openUserVerification, fetcherRef.current, optionsRef.current]); // Keep fetcher and options ref in sync useSafeLayoutEffect(() => { @@ -152,4 +150,4 @@ function __experimental_useReverification< return handleReverification; } -export { __experimental_useReverification }; +export { useReverification }; diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index 3450c49b22..eee17db904 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -35,7 +35,7 @@ import type { } from './redirects'; import type { ClerkHostRouter } from './router'; import type { ActiveSessionResource } from './session'; -import type { __experimental_SessionVerificationLevel } from './sessionVerification'; +import type { SessionVerificationLevel } from './sessionVerification'; import type { SignInResource } from './signIn'; import type { SignUpResource } from './signUp'; import type { Web3Strategy } from './strategies'; @@ -165,16 +165,14 @@ export interface Clerk { /** * Opens the Clerk UserVerification component in a modal. - * @experimantal This API is still under active development and may change at any moment. * @param props Optional user verification configuration parameters. */ - __experimental_openUserVerification: (props?: __experimental_UserVerificationModalProps) => void; + __internal_openUserVerification: (props?: __internal_UserVerificationModalProps) => void; /** * Closes the Clerk user verification modal. - * @experimantal This API is still under active development and may change at any moment. */ - __experimental_closeUserVerification: () => void; + __internal_closeUserVerification: () => void; /** * Opens the Google One Tap component. @@ -919,10 +917,7 @@ interface TransferableOption { export type SignInModalProps = WithoutRouting; -/** - * @experimantal - */ -export type __experimental_UserVerificationProps = RoutingOptions & { +export type __internal_UserVerificationProps = RoutingOptions & { /** * Non-awaitable callback for when verification is completed successfully */ @@ -938,7 +933,7 @@ export type __experimental_UserVerificationProps = RoutingOptions & { * When `multiFactor` is used, the user will be prompt for a first factor flow followed by a second factor flow. * @default `'secondFactor'` */ - level?: __experimental_SessionVerificationLevel; + level?: SessionVerificationLevel; /** * Customisation options to fully match the Clerk components to your own brand. @@ -948,7 +943,7 @@ export type __experimental_UserVerificationProps = RoutingOptions & { appearance?: UserVerificationTheme; }; -export type __experimental_UserVerificationModalProps = WithoutRouting<__experimental_UserVerificationProps>; +export type __internal_UserVerificationModalProps = WithoutRouting<__internal_UserVerificationProps>; type GoogleOneTapRedirectUrlProps = SignInForceRedirectUrl & SignUpForceRedirectUrl; diff --git a/packages/types/src/json.ts b/packages/types/src/json.ts index 152ed6dd08..397e5f2ee4 100644 --- a/packages/types/src/json.ts +++ b/packages/types/src/json.ts @@ -13,10 +13,7 @@ import type { OrganizationSettingsJSON } from './organizationSettings'; import type { OrganizationSuggestionStatus } from './organizationSuggestion'; import type { SamlIdpSlug } from './saml'; import type { SessionStatus } from './session'; -import type { - __experimental_SessionVerificationLevel, - __experimental_SessionVerificationStatus, -} from './sessionVerification'; +import type { SessionVerificationLevel, SessionVerificationStatus } from './sessionVerification'; import type { SignInFirstFactor, SignInJSON, SignInSecondFactor } from './signIn'; import type { SignUpField, SignUpIdentificationField, SignUpStatus } from './signUp'; import type { BoxShadow, Color, EmUnit, FontWeight, HexColor } from './theme'; @@ -126,13 +123,13 @@ export interface SessionJSON extends ClerkResourceJSON { updated_at: number; } -export interface __experimental_SessionVerificationJSON extends ClerkResourceJSON { +export interface SessionVerificationJSON extends ClerkResourceJSON { object: 'session_verification'; - status: __experimental_SessionVerificationStatus; + status: SessionVerificationStatus; first_factor_verification: VerificationJSON | null; session: SessionJSON; second_factor_verification: VerificationJSON | null; - level: __experimental_SessionVerificationLevel; + level: SessionVerificationLevel; supported_first_factors: SignInFirstFactorJSON[] | null; supported_second_factors: SignInSecondFactorJSON[] | null; } diff --git a/packages/types/src/localization.ts b/packages/types/src/localization.ts index 14f008942b..6e4708884c 100644 --- a/packages/types/src/localization.ts +++ b/packages/types/src/localization.ts @@ -305,7 +305,7 @@ type _LocalizationResource = { action__signOutAll: LocalizationValue; }; }; - __experimental_userVerification: { + userVerification: { password: { title: LocalizationValue; subtitle: LocalizationValue; diff --git a/packages/types/src/session.ts b/packages/types/src/session.ts index d401e56316..e9635e1912 100644 --- a/packages/types/src/session.ts +++ b/packages/types/src/session.ts @@ -16,9 +16,9 @@ import type { } from './organizationMembership'; import type { ClerkResource } from './resource'; import type { - __experimental_ReverificationConfig, - __experimental_SessionVerificationLevel, - __experimental_SessionVerificationResource, + ReverificationConfig, + SessionVerificationLevel, + SessionVerificationResource, } from './sessionVerification'; import type { TokenResource } from './token'; import type { UserResource } from './user'; @@ -28,7 +28,11 @@ export type CheckAuthorizationFn = (isAuthorizedParams: Params) => boole export type CheckAuthorizationWithCustomPermissions = CheckAuthorizationFn; -export type CheckAuthorizationParamsWithCustomPermissions = ( +type WithReverification = T & { + reverification?: ReverificationConfig; +}; + +export type CheckAuthorizationParamsWithCustomPermissions = WithReverification< | { role: OrganizationCustomRoleKey; permission?: never; @@ -38,13 +42,11 @@ export type CheckAuthorizationParamsWithCustomPermissions = ( permission: OrganizationCustomPermissionKey; } | { role?: never; permission?: never } -) & { - __experimental_reverification?: __experimental_ReverificationConfig; -}; +>; export type CheckAuthorization = CheckAuthorizationFn; -type CheckAuthorizationParams = ( +type CheckAuthorizationParams = WithReverification< | { role: OrganizationCustomRoleKey; permission?: never; @@ -57,9 +59,7 @@ type CheckAuthorizationParams = ( role?: never; permission?: never; } -) & { - __experimental_reverification?: __experimental_ReverificationConfig; -}; +>; export interface SessionResource extends ClerkResource { id: string; @@ -70,9 +70,8 @@ export interface SessionResource extends ClerkResource { * Factor Verification Age * Each item represents the minutes that have passed since the last time a first or second factor were verified. * [fistFactorAge, secondFactorAge] - * @experimental This API is experimental and may change at any moment. */ - __experimental_factorVerificationAge: [number, number] | null; + factorVerificationAge: [number, number] | null; lastActiveToken: TokenResource | null; lastActiveOrganizationId: string | null; lastActiveAt: Date; @@ -88,21 +87,19 @@ export interface SessionResource extends ClerkResource { createdAt: Date; updatedAt: Date; - __experimental_startVerification: ( - params: __experimental_SessionVerifyCreateParams, - ) => Promise<__experimental_SessionVerificationResource>; - __experimental_prepareFirstFactorVerification: ( - factor: __experimental_SessionVerifyPrepareFirstFactorParams, - ) => Promise<__experimental_SessionVerificationResource>; - __experimental_attemptFirstFactorVerification: ( - attemptFactor: __experimental_SessionVerifyAttemptFirstFactorParams, - ) => Promise<__experimental_SessionVerificationResource>; - __experimental_prepareSecondFactorVerification: ( - params: __experimental_SessionVerifyPrepareSecondFactorParams, - ) => Promise<__experimental_SessionVerificationResource>; - __experimental_attemptSecondFactorVerification: ( - params: __experimental_SessionVerifyAttemptSecondFactorParams, - ) => Promise<__experimental_SessionVerificationResource>; + startVerification: (params: SessionVerifyCreateParams) => Promise; + prepareFirstFactorVerification: ( + factor: SessionVerifyPrepareFirstFactorParams, + ) => Promise; + attemptFirstFactorVerification: ( + attemptFactor: SessionVerifyAttemptFirstFactorParams, + ) => Promise; + prepareSecondFactorVerification: ( + params: SessionVerifyPrepareSecondFactorParams, + ) => Promise; + attemptSecondFactorVerification: ( + params: SessionVerifyAttemptSecondFactorParams, + ) => Promise; } export interface ActiveSessionResource extends SessionResource { @@ -152,15 +149,12 @@ export type GetTokenOptions = { }; export type GetToken = (options?: GetTokenOptions) => Promise; -export type __experimental_SessionVerifyCreateParams = { - level: __experimental_SessionVerificationLevel; +export type SessionVerifyCreateParams = { + level: SessionVerificationLevel; }; -export type __experimental_SessionVerifyPrepareFirstFactorParams = EmailCodeConfig | PhoneCodeConfig; -export type __experimental_SessionVerifyAttemptFirstFactorParams = - | EmailCodeAttempt - | PhoneCodeAttempt - | PasswordAttempt; +export type SessionVerifyPrepareFirstFactorParams = EmailCodeConfig | PhoneCodeConfig; +export type SessionVerifyAttemptFirstFactorParams = EmailCodeAttempt | PhoneCodeAttempt | PasswordAttempt; -export type __experimental_SessionVerifyPrepareSecondFactorParams = PhoneCodeSecondFactorConfig; -export type __experimental_SessionVerifyAttemptSecondFactorParams = PhoneCodeAttempt | TOTPAttempt | BackupCodeAttempt; +export type SessionVerifyPrepareSecondFactorParams = PhoneCodeSecondFactorConfig; +export type SessionVerifyAttemptSecondFactorParams = PhoneCodeAttempt | TOTPAttempt | BackupCodeAttempt; diff --git a/packages/types/src/sessionVerification.ts b/packages/types/src/sessionVerification.ts index 71a6b68fb7..c5ebdbaa0b 100644 --- a/packages/types/src/sessionVerification.ts +++ b/packages/types/src/sessionVerification.ts @@ -3,29 +3,29 @@ import type { ClerkResource } from './resource'; import type { SessionResource } from './session'; import type { VerificationResource } from './verification'; -export interface __experimental_SessionVerificationResource extends ClerkResource { - status: __experimental_SessionVerificationStatus; - level: __experimental_SessionVerificationLevel; +export interface SessionVerificationResource extends ClerkResource { + status: SessionVerificationStatus; + level: SessionVerificationLevel; session: SessionResource; firstFactorVerification: VerificationResource; secondFactorVerification: VerificationResource; - supportedFirstFactors: __experimental_SessionVerificationFirstFactor[] | null; - supportedSecondFactors: __experimental_SessionVerificationSecondFactor[] | null; + supportedFirstFactors: SessionVerificationFirstFactor[] | null; + supportedSecondFactors: SessionVerificationSecondFactor[] | null; } -export type __experimental_SessionVerificationStatus = 'needs_first_factor' | 'needs_second_factor' | 'complete'; +export type SessionVerificationStatus = 'needs_first_factor' | 'needs_second_factor' | 'complete'; -export type __experimental_SessionVerificationTypes = 'strict_mfa' | 'strict' | 'moderate' | 'lax'; +export type SessionVerificationTypes = 'strict_mfa' | 'strict' | 'moderate' | 'lax'; -export type __experimental_ReverificationConfig = - | __experimental_SessionVerificationTypes +export type ReverificationConfig = + | SessionVerificationTypes | { - level: __experimental_SessionVerificationLevel; - afterMinutes: __experimental_SessionVerificationAfterMinutes; + level: SessionVerificationLevel; + afterMinutes: SessionVerificationAfterMinutes; }; -export type __experimental_SessionVerificationLevel = 'first_factor' | 'second_factor' | 'multi_factor'; -export type __experimental_SessionVerificationAfterMinutes = number; +export type SessionVerificationLevel = 'first_factor' | 'second_factor' | 'multi_factor'; +export type SessionVerificationAfterMinutes = number; -export type __experimental_SessionVerificationFirstFactor = EmailCodeFactor | PhoneCodeFactor | PasswordFactor; -export type __experimental_SessionVerificationSecondFactor = PhoneCodeFactor | TOTPFactor | BackupCodeFactor; +export type SessionVerificationFirstFactor = EmailCodeFactor | PhoneCodeFactor | PasswordFactor; +export type SessionVerificationSecondFactor = PhoneCodeFactor | TOTPFactor | BackupCodeFactor; diff --git a/packages/types/src/ssr.ts b/packages/types/src/ssr.ts index 0f7773aa08..d9928337b4 100644 --- a/packages/types/src/ssr.ts +++ b/packages/types/src/ssr.ts @@ -20,5 +20,5 @@ export type InitialState = Serializable<{ orgSlug: string | undefined; orgPermissions: OrganizationCustomPermissionKey[] | undefined; organization: OrganizationResource | undefined; - __experimental_factorVerificationAge: [number, number]; + factorVerificationAge: [number, number]; }>;