@clerk/elements 0.18.0 → 0.18.1-canary.v8506fdd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Router,
3
+ removeOptionalCatchAllSegment,
3
4
  useClerkRouter,
4
- usePathnameWithoutCatchAll,
5
5
  useVirtualRouter
6
- } from "../../chunk-CVLZDETC.mjs";
6
+ } from "../../chunk-ORV6AAIP.mjs";
7
7
  import {
8
8
  CAPTCHA_ELEMENT_ID,
9
9
  ClerkElementsError,
@@ -1422,8 +1422,11 @@ function SignUpRoot({
1422
1422
  }) {
1423
1423
  var _a;
1424
1424
  const clerk = useClerk();
1425
- const inferredPath = usePathnameWithoutCatchAll();
1425
+ const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();
1426
+ const pathname = router.pathname();
1427
+ const inferredPath = removeOptionalCatchAllSegment(pathname);
1426
1428
  const path = pathProp || inferredPath || SIGN_UP_DEFAULT_BASE_PATH;
1429
+ const isRootPath = path === pathname;
1427
1430
  (_a = clerk.telemetry) == null ? void 0 : _a.record(
1428
1431
  eventComponentMounted("Elements_SignUpRoot", {
1429
1432
  exampleMode,
@@ -1432,8 +1435,6 @@ function SignUpRoot({
1432
1435
  routing
1433
1436
  })
1434
1437
  );
1435
- const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();
1436
- const isRootPath = path === router.pathname();
1437
1438
  return /* @__PURE__ */ jsx(
1438
1439
  Router,
1439
1440
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/react/sign-up/index.ts","../../../src/react/sign-up/root.tsx","../../../src/internals/machines/sign-up/continue.machine.ts","../../../src/internals/machines/sign-up/utils/fields-to-params.ts","../../../src/internals/machines/sign-up/router.machine.ts","../../../src/internals/machines/sign-up/start.machine.ts","../../../src/internals/machines/sign-up/verification.machine.ts","../../../src/internals/machines/sign-up/verification.types.ts","../../../src/react/sign-up/action/action.tsx","../../../src/react/sign-up/action/navigate.tsx","../../../src/react/sign-up/action/resend.tsx","../../../src/react/sign-up/captcha.tsx"],"sourcesContent":["// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { SignUpRoot as SignUp, SignUpRoot as Root } from './root';\nexport { SignUpStep as Step } from './step';\nexport { SignUpAction as Action } from './action';\nexport { SignUpStrategy as Strategy } from './verifications';\nexport { SignUpCaptcha as Captcha } from './captcha';\n","import { useClerk } from '@clerk/shared/react';\nimport { useClerkHostRouter } from '@clerk/shared/router';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport { useEffect } from 'react';\nimport { createActor } from 'xstate';\n\nimport { ROUTING, SIGN_IN_DEFAULT_BASE_PATH, SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context';\nimport type { SignUpRouterInitEvent } from '~/internals/machines/sign-up';\nimport { SignUpRouterMachine } from '~/internals/machines/sign-up';\nimport { inspect } from '~/internals/utils/inspector';\nimport { Router, useClerkRouter, useVirtualRouter } from '~/react/router';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nimport { Form } from '../common/form';\nimport { usePathnameWithoutCatchAll } from '../utils/path-inference/next';\n\ntype SignUpFlowProviderProps = {\n children: React.ReactNode;\n exampleMode?: boolean;\n /**\n * Fallback markup to render while Clerk is loading\n */\n fallback?: React.ReactNode;\n isRootPath: boolean;\n};\n\nconst actor = createActor(SignUpRouterMachine, { inspect });\nactor.start();\n\nfunction SignUpFlowProvider({ children, exampleMode, fallback, isRootPath }: SignUpFlowProviderProps) {\n const clerk = useClerk();\n const router = useClerkRouter();\n const formRef = useFormStore();\n const isReady = useSelector(actor, state => state.value !== 'Idle');\n\n useEffect(() => {\n if (!clerk || !router) {\n return;\n }\n\n const cb = () => {\n const evt: SignUpRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signInPath: SIGN_IN_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\n }\n\n // Ensure that the latest instantiated formRef is attached to the router\n if (formRef && actor.getSnapshot().can({ type: 'RESET.STEP' })) {\n actor.send({\n type: 'FORM.ATTACH',\n formRef,\n });\n }\n };\n\n if ('addOnLoaded' in clerk) {\n // @ts-expect-error - addOnLoaded doesn't exist on the clerk type, but it does on IsomorphicClerk, which can be hit when Elements is used standalone\n clerk.addOnLoaded(cb);\n } else {\n cb();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignUpRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignUpRouterCtx.Provider>\n );\n}\n\nexport type SignUpRootProps = Omit<SignUpFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-up route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-up`\n */\n path?: string;\n /**\n * If you want to render Clerk Elements in e.g. a modal, use the `virtual` routing mode.\n */\n routing?: ROUTING;\n};\n\n/**\n * Root component for the sign-up flow. It sets up providers and state management for its children.\n * Must wrap all sign-up related components.\n *\n * @param {string} path - The root path the sign-up flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-up` for example.\n * @param {React.ReactNode} fallback - Fallback markup to render while Clerk is loading. Default: `null`\n * @param {string} routing - If you want to render Clerk Elements in e.g. a modal, use the `'virtual'` routing mode. Default: `'path'`\n *\n * @example\n * import * as SignUp from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp.Root>\n * </SignUp.Root>\n * )\n */\nexport function SignUpRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignUpRootProps): JSX.Element | null {\n const clerk = useClerk();\n const inferredPath = usePathnameWithoutCatchAll();\n const path = pathProp || inferredPath || SIGN_UP_DEFAULT_BASE_PATH;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignUpRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();\n const isRootPath = path === router.pathname();\n\n return (\n <Router\n basePath={path}\n router={router}\n >\n <FormStoreProvider>\n <SignUpFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignUpFlowProvider>\n </FormStoreProvider>\n </Router>\n );\n}\n","import { snakeToCamel } from '@clerk/shared/underscore';\nimport type { SignUpResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, not, or, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport type { FormDefaultValues, FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignUpContinueSchema } from './continue.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignUpContinueMachine = typeof SignUpContinueMachine;\n\nexport const SignUpContinueMachineId = 'SignUpContinue';\n\nexport const SignUpContinueMachine = setup({\n actors: {\n attempt: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const params = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.update(params);\n },\n ),\n },\n actions: {\n setFormErrors: ({ context, event }) => {\n assertActorEventError(event);\n context.formRef.send({\n type: 'ERRORS.SET',\n error: event.error,\n });\n },\n markFormAsProgressive: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const missing = signUp.missingFields.map(snakeToCamel);\n const optional = signUp.optionalFields.map(snakeToCamel);\n const required = signUp.requiredFields.map(snakeToCamel);\n\n const progressiveFieldValues: FormDefaultValues = new Map();\n\n for (const key of required.concat(optional) as (keyof SignUpResource)[]) {\n if (key in signUp) {\n // @ts-expect-error - TS doesn't understand that key is a valid key of SignUpResource\n progressiveFieldValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'MARK_AS_PROGRESSIVE',\n missing,\n optional,\n required,\n defaultValues: progressiveFieldValues,\n });\n },\n unmarkFormAsProgressive: ({ context }) => context.formRef.send({ type: 'UNMARK_AS_PROGRESSIVE' }),\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n },\n guards: {\n isStatusMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasMetPreviousMissingRequirements: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const fields = context.formRef.getSnapshot().context.fields;\n const signUpMissingFields = signUp.missingFields.map(snakeToCamel);\n const missingFields = Array.from(context.formRef.getSnapshot().context.fields.keys()).filter(key => {\n return !signUpMissingFields.includes(key) && !fields.get(key)?.value && !fields.get(key)?.checked;\n });\n\n return missingFields.length === 0;\n },\n },\n types: {} as SignUpContinueSchema,\n}).createMachine({\n id: SignUpContinueMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'continue',\n }),\n entry: 'markFormAsProgressive',\n onDone: {\n actions: 'unmarkFormAsProgressive',\n },\n initial: 'Pending',\n states: {\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: or(['hasMetPreviousMissingRequirements', not('isStatusMissingRequirements')]),\n target: 'Attempting',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import type { SignUpCreateParams, SignUpUpdateParams } from '@clerk/types';\n\nimport type { FormFields } from '~/internals/machines/form';\n\nconst SignUpAdditionalKeys = [\n 'firstName',\n 'lastName',\n 'emailAddress',\n 'username',\n 'password',\n 'phoneNumber',\n '__experimental_legalAccepted',\n] as const;\n\ntype SignUpAdditionalKeys = (typeof SignUpAdditionalKeys)[number];\n\nconst signUpKeys = new Set<SignUpAdditionalKeys>(SignUpAdditionalKeys);\n\nfunction isSignUpParam<T extends SignUpAdditionalKeys>(key: string): key is T {\n return signUpKeys.has(key as T);\n}\n\nexport function fieldsToSignUpParams<T extends SignUpCreateParams | SignUpUpdateParams>(\n fields: FormFields,\n): Pick<T, SignUpAdditionalKeys> {\n const params: SignUpUpdateParams = {};\n\n fields.forEach(({ value, checked, type }, key) => {\n if (isSignUpParam(key) && value !== undefined && type !== 'checkbox') {\n // @ts-expect-error - Type is not narrowed to string\n params[key] = value as string;\n }\n\n if (isSignUpParam(key) && checked !== undefined && type === 'checkbox') {\n // @ts-expect-error - Type is not narrowed to boolean\n params[key] = checked as boolean;\n }\n });\n\n return params;\n}\n","import { joinURL } from '@clerk/shared/url';\nimport type { SignUpStatus, VerificationStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SIGN_UP_MODES,\n SSO_CALLBACK_PATH_ROUTE,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport { ThirdPartyMachine, ThirdPartyMachineId } from '~/internals/machines/third-party';\nimport { shouldUseVirtualRouting } from '~/internals/machines/utils/next';\n\nimport { SignUpContinueMachine } from './continue.machine';\nimport type {\n SignUpRouterContext,\n SignUpRouterEvents,\n SignUpRouterNextEvent,\n SignUpRouterSchema,\n} from './router.types';\nimport { SignUpStartMachine } from './start.machine';\nimport { SignUpVerificationMachine } from './verification.machine';\n\nexport const SignUpRouterMachineId = 'SignUpRouter';\nexport type TSignUpRouterMachine = typeof SignUpRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignUpRouterContext }, _params?: NonReducibleUnknown) =>\n context.router?.match(path) ?? false;\n\nconst needsStatus =\n (status: SignUpStatus) =>\n ({ context, event }: { context: SignUpRouterContext; event?: SignUpRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignUpRouterNextEvent)?.resource?.status === status || context.clerk?.client?.signUp?.status === status;\n\nexport const SignUpRouterMachine = setup({\n actors: {\n continueMachine: SignUpContinueMachine,\n startMachine: SignUpStartMachine,\n thirdPartyMachine: ThirdPartyMachine,\n verificationMachine: SignUpVerificationMachine,\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n logUnknownError: snapshot => console.error('Unknown error:', snapshot),\n navigateInternal: ({ context }, { path, force = false }: { path: string; force?: boolean }) => {\n if (!context.router) {\n return;\n }\n if (!force && shouldUseVirtualRouting()) {\n return;\n }\n if (context.exampleMode) {\n return;\n }\n\n const resolvedPath = joinURL(context.router.basePath, path);\n if (resolvedPath === context.router.pathname()) {\n return;\n }\n\n context.router.shallowPush(resolvedPath);\n },\n navigateExternal: ({ context }, { path }: { path: string }) => context.router?.push(path),\n raiseNext: raise({ type: 'NEXT' }),\n setActive: ({ context, event }, params?: { sessionId?: string; useLastActiveSession?: boolean }) => {\n if (context.exampleMode) {\n return;\n }\n\n const session =\n params?.sessionId ||\n (params?.useLastActiveSession && context.clerk.client.lastActiveSessionId) ||\n ((event as SignUpRouterNextEvent)?.resource || context.clerk.client.signUp).createdSessionId;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n });\n },\n delayedReset: raise({ type: 'RESET' }, { delay: 3000 }), // Reset machine after 3s delay.\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\n }),\n setFormOAuthErrors: ({ context }) => {\n const errorOrig = context.clerk.client.signIn.firstFactorVerification.error;\n\n if (!errorOrig) {\n return;\n }\n\n let error: ClerkElementsError;\n\n switch (errorOrig.code) {\n case ERROR_CODES.NOT_ALLOWED_TO_SIGN_UP:\n case ERROR_CODES.OAUTH_ACCESS_DENIED:\n case ERROR_CODES.NOT_ALLOWED_ACCESS:\n case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML:\n case ERROR_CODES.USER_LOCKED:\n error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage!);\n break;\n default:\n error = new ClerkElementsError(\n 'unable_to_complete',\n 'Unable to complete action at this time. If the problem persists please contact support.',\n );\n }\n\n context.formRef.send({\n type: 'ERRORS.SET',\n error,\n });\n },\n transfer: ({ context }) => context.router?.push(context.clerk.buildSignInUrl()),\n },\n guards: {\n areFieldsMissing: ({ context }) => context.clerk?.client?.signUp?.missingFields?.length > 0,\n areFieldsUnverified: ({ context }) => context.clerk?.client?.signUp?.unverifiedFields?.length > 0,\n\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signUp.status === null && context.clerk.client.lastActiveSessionId),\n hasCreatedSession: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.createdSession)),\n hasClerkStatus: ({ context }, params?: { status: VerificationStatus }) => {\n const value = context.router?.searchParams().get(SEARCH_PARAMS.status);\n if (!params) {\n return Boolean(value);\n }\n return value === params.status;\n },\n hasClerkTransfer: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.transfer)),\n hasResource: ({ context }) => Boolean(context.clerk.client.signUp),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isStatusAbandoned: needsStatus('abandoned'),\n isStatusComplete: ({ context, event }) => {\n const resource = (event as SignUpRouterNextEvent)?.resource;\n const signUp = context.clerk?.client?.signUp;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signUp?.status === 'complete' && Boolean(signUp?.createdSessionId))\n );\n },\n isStatusMissingRequirements: needsStatus('missing_requirements'),\n\n isLoggedIn: or(['isStatusComplete', ({ context }) => Boolean(context.clerk.user)]),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isRestricted: ({ context }) =>\n context.clerk?.__unstable__environment?.userSettings.signUp.mode === SIGN_UP_MODES.RESTRICTED,\n isRestrictedWithoutTicket: and(['isRestricted', not('hasTicket')]),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n isMissingRequiredFields: and(['isStatusMissingRequirements', 'areFieldsMissing']),\n isMissingRequiredUnverifiedFields: and(['isStatusMissingRequirements', 'areFieldsUnverified']),\n\n needsIdentifier: or(['statusNeedsIdentifier', isCurrentPath('/')]),\n needsContinue: and(['statusNeedsContinue', isCurrentPath('/continue')]),\n needsVerification: and(['statusNeedsVerification', isCurrentPath('/verify')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n\n statusNeedsIdentifier: or([not('hasResource'), 'isStatusAbandoned']),\n statusNeedsContinue: or(['isMissingRequiredFields']),\n statusNeedsVerification: or(['isMissingRequiredUnverifiedFields', and(['areFieldsMissing', 'hasClerkStatus'])]),\n },\n delays: {\n 'TIMEOUT.POLLING': 300_000, // 5 minutes\n },\n types: {} as SignUpRouterSchema,\n}).createMachine({\n id: SignUpRouterMachineId,\n // @ts-expect-error - Set in INIT event\n context: {},\n initial: 'Idle',\n on: {\n 'AUTHENTICATE.OAUTH': {\n actions: sendTo(ThirdPartyMachineId, ({ context, event }) => ({\n type: 'REDIRECT',\n params: {\n strategy: event.strategy,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n emailAddress: context.formRef.getSnapshot().context.fields.get('emailAddress')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'FORM.ATTACH': {\n description: 'Attach/re-attach the form to the router.',\n actions: enqueueActions(({ enqueue, event }) => {\n enqueue.assign({\n formRef: event.formRef,\n });\n\n // Reset the current step, to reset the form reference.\n enqueue.raise({ type: 'RESET.STEP' });\n }),\n },\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'NAVIGATE.START': '.Start',\n LOADING: {\n actions: assign(({ event }) => ({\n loading: {\n isLoading: event.isLoading,\n step: event.step,\n strategy: event.strategy,\n action: event.action,\n },\n })),\n },\n RESET: '.Idle',\n },\n states: {\n Idle: {\n on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n router: event.router,\n signInPath: event.signInPath || SIGN_IN_DEFAULT_BASE_PATH,\n loading: {\n isLoading: false,\n },\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n ticket:\n searchParams?.get(SEARCH_PARAMS.ticket) ||\n searchParams?.get(SEARCH_PARAMS.invitationToken) ||\n undefined,\n };\n }),\n target: 'Init',\n },\n },\n },\n Init: {\n entry: enqueueActions(({ context, enqueue, self }) => {\n if (!self.getSnapshot().children[ThirdPartyMachineId]) {\n enqueue.spawnChild('thirdPartyMachine', {\n id: ThirdPartyMachineId,\n systemId: ThirdPartyMachineId,\n input: {\n basePath: context.router?.basePath ?? SIGN_UP_DEFAULT_BASE_PATH,\n flow: 'signUp',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n }),\n },\n ],\n },\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsVerification',\n actions: { type: 'navigateInternal', params: { force: true, path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: or(['needsContinue', 'hasClerkTransfer']),\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'Continue',\n },\n {\n guard: 'isRestrictedWithoutTicket',\n target: 'Restricted',\n },\n {\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n ],\n },\n Start: {\n tags: ['step:start'],\n exit: 'clearFormErrors',\n invoke: {\n id: 'start',\n src: 'startMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n ticket: context.ticket,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n actions: enqueueActions(({ enqueue, context }) => {\n enqueue('clearFormErrors');\n enqueue.sendTo('start', { type: 'SET_FORM', formRef: context.formRef });\n }),\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: and(['hasTicket', 'statusNeedsContinue']),\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n reenter: true,\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Continue: {\n tags: ['step:continue'],\n invoke: {\n id: 'continue',\n src: 'continueMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Continue',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n ],\n },\n },\n Verification: {\n tags: ['step:verification'],\n invoke: {\n id: 'verification',\n src: 'verificationMachine',\n input: ({ context, self }) => ({\n attributes: context.clerk.__unstable__environment?.userSettings.attributes,\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n resource: context.clerk.client.signUp,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n always: [\n {\n guard: 'hasCreatedSession',\n actions: [\n ({ context }) => ({\n type: 'setActive',\n params: { sessionId: context.router?.searchParams().get(SEARCH_PARAMS.createdSession) },\n }),\n 'delayedReset',\n ],\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'verified' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'expired' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n },\n ],\n on: {\n 'RESET.STEP': {\n target: 'Verification',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n description: 'Handle a case where the user has already been authenticated via ClerkJS',\n guard: 'hasAuthenticatedViaClerkJS',\n actions: [{ type: 'setActive', params: { useLastActiveSession: true } }, 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n {\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n },\n ],\n },\n },\n Restricted: {\n tags: ['step:restricted'],\n on: {\n NEXT: 'Start',\n },\n },\n Error: {\n tags: ['step:error'],\n on: {\n NEXT: {\n target: 'Start',\n actions: 'clearFormErrors',\n },\n },\n },\n Hist: {\n type: 'history',\n exit: 'clearFormErrors',\n },\n },\n});\n","import type { SignUpResource, Web3Strategy } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { and, assertEvent, assign, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SetFormEvent } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { ThirdPartyMachine } from '~/internals/machines/third-party';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignUpStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignUpStartMachine = typeof SignUpStartMachine;\n\nexport const SignUpStartMachineId = 'SignUpStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\ntype PrefillFieldsKeys = keyof Pick<\n SignUpResource,\n 'username' | 'firstName' | 'lastName' | 'emailAddress' | 'phoneNumber'\n>;\nconst PREFILL_FIELDS: PrefillFieldsKeys[] = ['firstName', 'lastName', 'emailAddress', 'username', 'phoneNumber'];\n\nexport const SignUpStartMachine = setup({\n actors: {\n attempt: fromPromise<\n SignUpResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const fieldParams = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.create({ ...fieldParams, ...params });\n }),\n attemptWeb3: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbaseWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n thirdParty: ThirdPartyMachine,\n },\n actions: {\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n setFormRef: assign(({ event }) => {\n return {\n formRef: (event as unknown as SetFormEvent).formRef,\n };\n }),\n setFormDisabledTicketFields: enqueueActions(({ context, enqueue }) => {\n if (!context.ticket) {\n return;\n }\n\n const currentFields = context.formRef.getSnapshot().context.fields;\n\n for (const name of DISABLEABLE_FIELDS) {\n if (currentFields.has(name)) {\n enqueue.sendTo(context.formRef, { type: 'FIELD.DISABLE', field: { name } });\n }\n }\n }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n setDefaultFormValues: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n const prefilledDefaultValues = new Map();\n\n for (const key of PREFILL_FIELDS) {\n if (key in signUp) {\n prefilledDefaultValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'PREFILL_DEFAULT_VALUES',\n defaultValues: prefilledDefaultValues,\n });\n },\n },\n guards: {\n isMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignUpStartSchema,\n}).createMachine({\n id: SignUpStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n entry: 'setDefaultFormValues',\n initial: 'Init',\n on: {\n SET_FORM: {\n actions: 'setFormRef',\n },\n },\n states: {\n Init: {\n description:\n 'Handle ticket, if present; Else, default to Pending state. Per tickets, `Attempting` makes a `signUp.create` request allowing for an incomplete sign up to contain progressively filled fields on the Start step.',\n always: [\n {\n guard: and(['hasTicket', 'isMissingRequirements']),\n target: 'Pending',\n },\n {\n guard: 'hasTicket',\n target: 'Attempting',\n },\n {\n target: 'Pending',\n },\n ],\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n 'AUTHENTICATE.WEB3': {\n guard: not('isExampleMode'),\n target: 'AttemptingWeb3',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreate',\n src: 'attempt',\n input: ({ context }) => {\n // Standard fields\n const defaultParams = {\n fields: context.formRef.getSnapshot().context.fields,\n parent: context.parent,\n };\n\n // Handle ticket-specific flows\n const params: AttemptParams = context.ticket\n ? {\n strategy: 'ticket',\n ticket: context.ticket,\n }\n : {};\n\n return { ...defaultParams, params };\n },\n onDone: {\n actions: ['setFormDisabledTicketFields', 'sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormDisabledTicketFields', 'setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreateWeb3',\n src: 'attemptWeb3',\n input: ({ context, event }) => {\n assertEvent(event, 'AUTHENTICATE.WEB3');\n return {\n parent: context.parent,\n strategy: event.strategy,\n };\n },\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import { Poller } from '@clerk/shared/poller';\nimport type {\n AttemptVerificationParams,\n Attribute,\n PrepareVerificationParams,\n SignUpResource,\n SignUpVerifiableField,\n SignUpVerificationsResource,\n VerificationStrategy,\n} from '@clerk/types';\nimport type { Writable } from 'type-fest';\nimport { and, assign, enqueueActions, fromCallback, fromPromise, log, raise, sendParent, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_UP_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport {\n type SignUpVerificationContext,\n SignUpVerificationDelays,\n type SignUpVerificationEmailLinkFailedEvent,\n type SignUpVerificationEvents,\n type SignUpVerificationSchema,\n} from './verification.types';\n\nexport type SignUpVerificationsResourceKey = keyof SignUpVerificationsResource;\nexport type TSignUpVerificationMachine = typeof SignUpVerificationMachine;\n\nexport type StartSignUpEmailLinkFlowEvents = { type: 'STOP' };\nexport type StartSignUpEmailLinkFlowInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport const SignUpVerificationMachineId = 'SignUpVerification';\n\nconst shouldVerify = (field: SignUpVerifiableField, strategy?: VerificationStrategy) => {\n const guards: Writable<Parameters<typeof and<SignUpVerificationContext, SignUpVerificationEvents, any>>[0]> = [\n {\n type: 'isFieldUnverified',\n params: {\n field,\n },\n },\n ];\n\n if (strategy) {\n guards.push({\n type: 'isStrategyEnabled',\n params: {\n attribute: field,\n strategy,\n },\n });\n }\n\n return and(guards);\n};\n\nexport type PrepareVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<PrepareVerificationParams>;\nexport type AttemptVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<AttemptVerificationParams>;\n\nexport const SignUpVerificationMachine = setup({\n actors: {\n prepare: fromPromise<SignUpResource, PrepareVerificationInput>(({ input: { params, parent } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n if (params.strategy === 'email_link' && params.redirectUrl) {\n params.redirectUrl = clerk.buildUrlWithAuth(params.redirectUrl);\n }\n\n return clerk.client.signUp.prepareVerification(params);\n }),\n attempt: fromPromise<SignUpResource, AttemptVerificationInput>(async ({ input: { params, parent } }) =>\n parent.getSnapshot().context.clerk.client.signUp.attemptVerification(params),\n ),\n attemptEmailLinkVerification: fromCallback<StartSignUpEmailLinkFlowEvents, StartSignUpEmailLinkFlowInput>(\n ({ receive, sendBack, input: { parent } }) => {\n const { run, stop } = Poller();\n\n const clerk = parent.getSnapshot().context.clerk;\n\n void run(async () =>\n clerk.client.signUp\n .reload()\n .then(resource => {\n const signInStatus = resource.status;\n const verificationStatus = resource.verifications.emailAddress.status;\n\n // Short-circuit if the sign-up resource is already complete\n if (signInStatus === 'complete') {\n return sendBack({ type: 'EMAIL_LINK.VERIFIED', resource });\n }\n\n switch (verificationStatus) {\n case 'verified':\n case 'transferable':\n case 'expired': {\n sendBack({ type: `EMAIL_LINK.${verificationStatus.toUpperCase()}`, resource });\n break;\n }\n case 'failed': {\n sendBack({\n type: 'EMAIL_LINK.FAILED',\n error: new ClerkElementsError('email-link-verification-failed', 'Email verification failed'),\n resource,\n });\n break;\n }\n // case 'unverified':\n default:\n return;\n }\n\n stop();\n })\n .catch(error => {\n stop();\n new ClerkElementsRuntimeError(error);\n }),\n );\n\n receive(event => {\n if (event.type === 'STOP') {\n stop();\n }\n });\n\n return () => stop();\n },\n ),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 1,\n resendableAfter: context.resendableAfter > 1 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n isComplete: ({ context }) => context.resource.status === 'complete',\n isFieldUnverified: ({ context, event }, { field }: { field: SignUpVerifiableField }) => {\n let resource = context.resource;\n\n if (event?.type === 'NEXT' && event.resource) {\n resource = event.resource;\n }\n\n return resource.unverifiedFields.includes(field);\n },\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isStrategyEnabled: (\n { context },\n { attribute, strategy }: { attribute: Attribute; strategy: VerificationStrategy },\n ) => Boolean(context.attributes?.[attribute].verifications.includes(strategy)),\n shouldVerifyPhoneCode: shouldVerify('phone_number'),\n shouldVerifyEmailLink: shouldVerify('email_address', 'email_link'),\n shouldVerifyEmailCode: shouldVerify('email_address', 'email_code'),\n },\n delays: SignUpVerificationDelays,\n types: {} as SignUpVerificationSchema,\n}).createMachine({\n id: SignUpVerificationMachineId,\n initial: 'Init',\n context: ({ input }) => ({\n attributes: input.attributes,\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n loadingStep: 'verifications',\n formRef: input.formRef,\n parent: input.parent,\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n resource: input.resource,\n }),\n on: {\n NEXT: [\n {\n guard: 'isComplete',\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: '.PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: '.EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: '.EmailCode',\n },\n {\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n ],\n },\n states: {\n Init: {\n always: [\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: 'PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: 'EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: 'EmailCode',\n },\n {\n actions: sendParent(({ context }) => ({ type: 'NEXT', resource: context.resource })),\n },\n ],\n },\n EmailLink: {\n tags: ['verification:method:email', 'verification:category:link', 'verification:email_link'],\n initial: 'Preparing',\n on: {\n RETRY: '.Preparing',\n 'EMAIL_LINK.RESTART': {\n target: '.Attempting',\n reenter: true,\n },\n 'EMAIL_LINK.FAILED': {\n actions: [\n {\n type: 'setFormErrors',\n params: ({ event }: { event: SignUpVerificationEmailLinkFailedEvent }) => ({ error: event.error }),\n },\n assign({ resource: ({ event }) => event.resource }),\n ],\n target: '.Pending',\n },\n 'EMAIL_LINK.*': {\n actions: enqueueActions(({ enqueue, event }) => {\n if (event.type === 'EMAIL_LINK.RESTART') {\n return;\n }\n\n enqueue.assign({ resource: event.resource });\n enqueue.raise({ type: 'NEXT', resource: event.resource });\n }),\n },\n },\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailLinkVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_link',\n redirectUrl: `${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n },\n }),\n onDone: {\n target: 'Attempting',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n description: 'Placeholder for allowing resending of email link',\n tags: ['state:pending'],\n on: {\n NEXT: 'Preparing',\n },\n },\n Attempting: {\n tags: ['state:attempting'],\n invoke: {\n id: 'attemptEmailLinkVerification',\n src: 'attemptEmailLinkVerification',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n },\n after: {\n emailLinkTimeout: {\n description: 'Timeout after 5 minutes',\n target: 'Pending',\n actions: sendTo(({ context }) => context.formRef, {\n type: 'ERRORS.SET',\n error: new ClerkElementsError('verify-email-link-timeout', 'Email link verification timed out'),\n }),\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n },\n },\n EmailCode: {\n tags: ['verification:method:email', 'verification:category:code', 'verification:email_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailAddressCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyEmailCode',\n target: 'Pending',\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptEmailAddressCodeVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n PhoneCode: {\n tags: ['verification:method:phone', 'verification:category:code', 'verification:phone_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'preparePhoneCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyPhoneCode',\n target: 'Pending',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPhoneNumberVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n },\n});\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { Attributes, SignUpResource } from '@clerk/types';\nimport type { ActorRefFrom, DoneActorEvent, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignUpVerificationStateTags = 'state:preparing' | 'state:pending' | 'state:attempting' | 'state:loading';\n\nexport type SignUpVerificationVerificationCategoryTags = 'verification:category:code' | 'verification:category:link';\nexport type SignUpVerificationVerificationMethodTags = 'verification:method:email' | 'verification:method:phone';\nexport type SignUpVerificationVerificationTypeTags =\n | 'verification:email_link'\n | 'verification:email_code'\n | 'verification:phone_code';\n\nexport type SignUpVerificationVerificationTags =\n | SignUpVerificationVerificationCategoryTags\n | SignUpVerificationVerificationMethodTags\n | SignUpVerificationVerificationTypeTags;\n\nexport type SignUpVerificationTags = SignUpVerificationStateTags | SignUpVerificationVerificationTags;\nexport type SignUpVerificationFriendlyTags = 'code' | 'email_link' | 'email_code' | 'phone_code';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignUpVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignUpVerificationNextEvent = { type: 'NEXT'; resource?: SignUpResource };\nexport type SignUpVerificationRetryEvent = { type: 'RETRY' };\n\nexport type SignUpVerificationEmailLinkVerifiedEvent = { type: 'EMAIL_LINK.VERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkUnverifiedEvent = { type: 'EMAIL_LINK.UNVERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkExpiredEvent = { type: 'EMAIL_LINK.EXPIRED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkTransferrableEvent = {\n type: 'EMAIL_LINK.TRANSFERRABLE';\n resource: SignUpResource;\n};\nexport type SignUpVerificationEmailLinkRestartEvent = { type: 'EMAIL_LINK.RESTART' };\nexport type SignUpVerificationEmailLinkFailedEvent = {\n type: 'EMAIL_LINK.FAILED';\n resource: SignUpResource;\n error: Error;\n};\n\nexport type SignUpVerificationEmailLinkEvent =\n | SignUpVerificationEmailLinkVerifiedEvent\n | SignUpVerificationEmailLinkUnverifiedEvent\n | SignUpVerificationEmailLinkExpiredEvent\n | SignUpVerificationEmailLinkRestartEvent\n | SignUpVerificationEmailLinkFailedEvent;\n\nexport type SignUpVerificationEvents =\n | DoneActorEvent\n | ErrorActorEvent\n | SignUpVerificationRetryEvent\n | SignUpVerificationSubmitEvent\n | SignUpVerificationNextEvent\n | SignUpVerificationEmailLinkEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignUpVerificationInput = {\n attributes: Attributes | undefined;\n basePath?: string;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n resource: SignUpResource;\n};\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignUpVerificationDelays = {\n emailLinkTimeout: 300_000, // 5 minutes\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignUpVerificationDelays = keyof typeof SignUpVerificationDelays;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignUpVerificationContext {\n attributes: Attributes | undefined;\n basePath: string;\n resource: SignUpResource;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n resendable: boolean;\n resendableAfter: number;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignUpVerificationSchema {\n context: SignUpVerificationContext;\n delays: SignUpVerificationDelays;\n input: SignUpVerificationInput;\n events: SignUpVerificationEvents;\n tags: SignUpVerificationTags;\n}\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignUpNavigateProps } from './navigate';\nimport { SignUpNavigate } from './navigate';\nimport type { SignUpResendProps } from './resend';\nimport { SignUpResend } from './resend';\n\nexport type SignUpActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignUpNavigateProps['to'];\n resend?: never;\n submit?: never;\n } & Omit<SignUpNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; submit: true }\n | ({ navigate?: never; resend: true; submit?: never } & SignUpResendProps)\n );\n\n/**\n * Perform various actions during the sign-in process. This component is used to navigate between steps, submit the form, or resend a verification codes.\n *\n * @param {boolean} [submit] - If `true`, the action will submit the form.\n * @param {string} [navigate] - The name of the step to navigate to.\n * @param {boolean} [resend] - If `true`, the action will resend the verification code for the currently active strategy, if applicable.\n * @param {Function} [fallback] - Only used when `resend` is `true`. If provided, the fallback markup will be rendered before the resend delay has expired.\n *\n * @example\n * <SignUp.Action navigate=\"start\">Go Back</SignUp.Action>\n *\n * @example\n * <SignUp.Action submit>Sign Up</SignUp.Action>\n *\n * @example\n * <SignUp.Action resend>Resend</SignUp.Action>\n */\n\nexport const SignUpAction = React.forwardRef<React.ElementRef<'button'>, SignUpActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignUpNavigate;\n } else if (resend) {\n Comp = SignUpResend;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignUpAction.displayName = 'SignUpAction';\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nconst SIGN_UP_NAVIGATE_NAME = 'SignInNavigate';\nconst SignUpNavigationEventMap = {\n start: `NAVIGATE.START`,\n previous: `NAVIGATE.PREVIOUS`,\n} as const;\n\nexport type SignUpNavigateElementKey = keyof typeof SignUpNavigationEventMap;\n\nexport type SignUpNavigateElement = React.ElementRef<'button'>;\nexport type SignUpNavigateProps = {\n asChild?: boolean;\n to: SignUpNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-up flow.\n *\n * @param {SignUpNavigateElementKey} to - The step to navigate to.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <Navigate to=\"start\">\n * Start over...\n * </Navigate>\n */\nexport const SignUpNavigate = React.forwardRef<SignUpNavigateElement, SignUpNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignUpRouterCtx.useActorRef();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const type = SignUpNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignUp.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignUpNavigationEventMap).join(', ')}.`,\n );\n }\n }, [actorRef, to]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpNavigate.displayName = SIGN_UP_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignUpVerificationCtx } from '../verifications';\n\nexport type SignUpResendElement = React.ElementRef<'button'>;\nexport type SignUpResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignUpResendProps = {\n asChild?: boolean;\n children: React.ReactNode;\n /**\n * A fallback component to render when the resend action is not available.\n * This can be a React element or a function that receives the `resendableAfter` prop.\n */\n fallback?: React.ReactNode | ((props: SignUpResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_UP_RESEND_NAME = 'SignUpResend';\n\n/**\n * Resend verification codes during the sign-in process.\n * This component must be used within the <Step name=\"verifications\">.\n *\n * @note This component is not intended to be used directly. Instead, use the <Action resend> component.\n *\n * @example\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n */\nexport const SignUpResend = React.forwardRef<SignUpResendElement, SignUpResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error('The resend action must be used within <SignUp.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignUpResendFallbackProps = useSelector(\n ref,\n state => ({\n resendable: state.context.resendable,\n resendableAfter: state.context.resendableAfter,\n }),\n (a, b) => a.resendableAfter === b.resendableAfter && a.resendable === b.resendable,\n );\n\n if (fallback && !fallbackProps.resendable) {\n return typeof fallback === 'function' ? fallback(fallbackProps) : fallback;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n disabled={!fallbackProps.resendable}\n onClick={() => ref.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpResend.displayName = SIGN_UP_RESEND_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { CAPTCHA_ELEMENT_ID } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { SignUpStartCtx } from './start';\n\nexport type SignUpCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignUpCaptchaProps =\n | ({\n asChild: true;\n /* Must only be a self-closing element/component */\n children: React.ReactElement;\n } & CaptchaElementProps)\n | ({ asChild?: false; children?: undefined } & CaptchaElementProps);\n\n/**\n * The `<SignUp.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignUp.Step name=\"start\">` component.\n *\n * If utilizing the `asChild` prop, the component must be a self-closing element or component. Any children passed to the immediate child component of <SignUp.Captcha> will be ignored.\n *\n * @param {boolean} [asChild] - If true, `<Captcha />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha />\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha asChild>\n * <aside/>\n * </SignUp.Captcha>\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n */\n\nexport const SignUpCaptcha = React.forwardRef<SignUpCaptchaElement, SignUpCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const ref = SignUpStartCtx.useActorRef(true);\n\n if (!ref) {\n throw new ClerkElementsRuntimeError('<Captcha> must be used within the <SignUp.Step name=\"start\"> component.');\n }\n\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n id={CAPTCHA_ELEMENT_ID}\n {...rest}\n ref={forwardedRef}\n />\n );\n },\n);\n"],"mappings":"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","names":["and","assign","enqueueActions","log","not","or","raise","sendTo","setup","fromPromise","not","setup","setup","fromPromise","not","and","assign","enqueueActions","fromPromise","sendTo","setup","and","setup","fromPromise","assign","sendTo","enqueueActions","setup","sendTo","raise","assign","and","not","or","enqueueActions","log","React","jsx","Slot","useSelector","React","jsx","useSelector","Slot","jsx","Slot","React","jsx","Slot"]}
1
+ {"version":3,"sources":["../../../src/react/sign-up/index.ts","../../../src/react/sign-up/root.tsx","../../../src/internals/machines/sign-up/continue.machine.ts","../../../src/internals/machines/sign-up/utils/fields-to-params.ts","../../../src/internals/machines/sign-up/router.machine.ts","../../../src/internals/machines/sign-up/start.machine.ts","../../../src/internals/machines/sign-up/verification.machine.ts","../../../src/internals/machines/sign-up/verification.types.ts","../../../src/react/sign-up/action/action.tsx","../../../src/react/sign-up/action/navigate.tsx","../../../src/react/sign-up/action/resend.tsx","../../../src/react/sign-up/captcha.tsx"],"sourcesContent":["// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { SignUpRoot as SignUp, SignUpRoot as Root } from './root';\nexport { SignUpStep as Step } from './step';\nexport { SignUpAction as Action } from './action';\nexport { SignUpStrategy as Strategy } from './verifications';\nexport { SignUpCaptcha as Captcha } from './captcha';\n","import { useClerk } from '@clerk/shared/react';\nimport { useClerkHostRouter } from '@clerk/shared/router';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport { useEffect } from 'react';\nimport { createActor } from 'xstate';\n\nimport { ROUTING, SIGN_IN_DEFAULT_BASE_PATH, SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context';\nimport type { SignUpRouterInitEvent } from '~/internals/machines/sign-up';\nimport { SignUpRouterMachine } from '~/internals/machines/sign-up';\nimport { inspect } from '~/internals/utils/inspector';\nimport { Router, useClerkRouter, useVirtualRouter } from '~/react/router';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nimport { Form } from '../common/form';\nimport { removeOptionalCatchAllSegment } from '../utils/path-inference/utils';\n\ntype SignUpFlowProviderProps = {\n children: React.ReactNode;\n exampleMode?: boolean;\n /**\n * Fallback markup to render while Clerk is loading\n */\n fallback?: React.ReactNode;\n isRootPath: boolean;\n};\n\nconst actor = createActor(SignUpRouterMachine, { inspect });\nactor.start();\n\nfunction SignUpFlowProvider({ children, exampleMode, fallback, isRootPath }: SignUpFlowProviderProps) {\n const clerk = useClerk();\n const router = useClerkRouter();\n const formRef = useFormStore();\n const isReady = useSelector(actor, state => state.value !== 'Idle');\n\n useEffect(() => {\n if (!clerk || !router) {\n return;\n }\n\n const cb = () => {\n const evt: SignUpRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signInPath: SIGN_IN_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\n }\n\n // Ensure that the latest instantiated formRef is attached to the router\n if (formRef && actor.getSnapshot().can({ type: 'RESET.STEP' })) {\n actor.send({\n type: 'FORM.ATTACH',\n formRef,\n });\n }\n };\n\n if ('addOnLoaded' in clerk) {\n // @ts-expect-error - addOnLoaded doesn't exist on the clerk type, but it does on IsomorphicClerk, which can be hit when Elements is used standalone\n clerk.addOnLoaded(cb);\n } else {\n cb();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignUpRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignUpRouterCtx.Provider>\n );\n}\n\nexport type SignUpRootProps = Omit<SignUpFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-up route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-up`\n */\n path?: string;\n /**\n * If you want to render Clerk Elements in e.g. a modal, use the `virtual` routing mode.\n */\n routing?: ROUTING;\n};\n\n/**\n * Root component for the sign-up flow. It sets up providers and state management for its children.\n * Must wrap all sign-up related components.\n *\n * @param {string} path - The root path the sign-up flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-up` for example.\n * @param {React.ReactNode} fallback - Fallback markup to render while Clerk is loading. Default: `null`\n * @param {string} routing - If you want to render Clerk Elements in e.g. a modal, use the `'virtual'` routing mode. Default: `'path'`\n *\n * @example\n * import * as SignUp from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp.Root>\n * </SignUp.Root>\n * )\n */\nexport function SignUpRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignUpRootProps): JSX.Element | null {\n const clerk = useClerk();\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();\n const pathname = router.pathname();\n const inferredPath = removeOptionalCatchAllSegment(pathname);\n const path = pathProp || inferredPath || SIGN_UP_DEFAULT_BASE_PATH;\n const isRootPath = path === pathname;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignUpRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n return (\n <Router\n basePath={path}\n router={router}\n >\n <FormStoreProvider>\n <SignUpFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignUpFlowProvider>\n </FormStoreProvider>\n </Router>\n );\n}\n","import { snakeToCamel } from '@clerk/shared/underscore';\nimport type { SignUpResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, not, or, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport type { FormDefaultValues, FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignUpContinueSchema } from './continue.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignUpContinueMachine = typeof SignUpContinueMachine;\n\nexport const SignUpContinueMachineId = 'SignUpContinue';\n\nexport const SignUpContinueMachine = setup({\n actors: {\n attempt: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const params = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.update(params);\n },\n ),\n },\n actions: {\n setFormErrors: ({ context, event }) => {\n assertActorEventError(event);\n context.formRef.send({\n type: 'ERRORS.SET',\n error: event.error,\n });\n },\n markFormAsProgressive: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const missing = signUp.missingFields.map(snakeToCamel);\n const optional = signUp.optionalFields.map(snakeToCamel);\n const required = signUp.requiredFields.map(snakeToCamel);\n\n const progressiveFieldValues: FormDefaultValues = new Map();\n\n for (const key of required.concat(optional) as (keyof SignUpResource)[]) {\n if (key in signUp) {\n // @ts-expect-error - TS doesn't understand that key is a valid key of SignUpResource\n progressiveFieldValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'MARK_AS_PROGRESSIVE',\n missing,\n optional,\n required,\n defaultValues: progressiveFieldValues,\n });\n },\n unmarkFormAsProgressive: ({ context }) => context.formRef.send({ type: 'UNMARK_AS_PROGRESSIVE' }),\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n },\n guards: {\n isStatusMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasMetPreviousMissingRequirements: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const fields = context.formRef.getSnapshot().context.fields;\n const signUpMissingFields = signUp.missingFields.map(snakeToCamel);\n const missingFields = Array.from(context.formRef.getSnapshot().context.fields.keys()).filter(key => {\n return !signUpMissingFields.includes(key) && !fields.get(key)?.value && !fields.get(key)?.checked;\n });\n\n return missingFields.length === 0;\n },\n },\n types: {} as SignUpContinueSchema,\n}).createMachine({\n id: SignUpContinueMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'continue',\n }),\n entry: 'markFormAsProgressive',\n onDone: {\n actions: 'unmarkFormAsProgressive',\n },\n initial: 'Pending',\n states: {\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: or(['hasMetPreviousMissingRequirements', not('isStatusMissingRequirements')]),\n target: 'Attempting',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import type { SignUpCreateParams, SignUpUpdateParams } from '@clerk/types';\n\nimport type { FormFields } from '~/internals/machines/form';\n\nconst SignUpAdditionalKeys = [\n 'firstName',\n 'lastName',\n 'emailAddress',\n 'username',\n 'password',\n 'phoneNumber',\n '__experimental_legalAccepted',\n] as const;\n\ntype SignUpAdditionalKeys = (typeof SignUpAdditionalKeys)[number];\n\nconst signUpKeys = new Set<SignUpAdditionalKeys>(SignUpAdditionalKeys);\n\nfunction isSignUpParam<T extends SignUpAdditionalKeys>(key: string): key is T {\n return signUpKeys.has(key as T);\n}\n\nexport function fieldsToSignUpParams<T extends SignUpCreateParams | SignUpUpdateParams>(\n fields: FormFields,\n): Pick<T, SignUpAdditionalKeys> {\n const params: SignUpUpdateParams = {};\n\n fields.forEach(({ value, checked, type }, key) => {\n if (isSignUpParam(key) && value !== undefined && type !== 'checkbox') {\n // @ts-expect-error - Type is not narrowed to string\n params[key] = value as string;\n }\n\n if (isSignUpParam(key) && checked !== undefined && type === 'checkbox') {\n // @ts-expect-error - Type is not narrowed to boolean\n params[key] = checked as boolean;\n }\n });\n\n return params;\n}\n","import { joinURL } from '@clerk/shared/url';\nimport type { SignUpStatus, VerificationStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SIGN_UP_MODES,\n SSO_CALLBACK_PATH_ROUTE,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport { ThirdPartyMachine, ThirdPartyMachineId } from '~/internals/machines/third-party';\nimport { shouldUseVirtualRouting } from '~/internals/machines/utils/next';\n\nimport { SignUpContinueMachine } from './continue.machine';\nimport type {\n SignUpRouterContext,\n SignUpRouterEvents,\n SignUpRouterNextEvent,\n SignUpRouterSchema,\n} from './router.types';\nimport { SignUpStartMachine } from './start.machine';\nimport { SignUpVerificationMachine } from './verification.machine';\n\nexport const SignUpRouterMachineId = 'SignUpRouter';\nexport type TSignUpRouterMachine = typeof SignUpRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignUpRouterContext }, _params?: NonReducibleUnknown) =>\n context.router?.match(path) ?? false;\n\nconst needsStatus =\n (status: SignUpStatus) =>\n ({ context, event }: { context: SignUpRouterContext; event?: SignUpRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignUpRouterNextEvent)?.resource?.status === status || context.clerk?.client?.signUp?.status === status;\n\nexport const SignUpRouterMachine = setup({\n actors: {\n continueMachine: SignUpContinueMachine,\n startMachine: SignUpStartMachine,\n thirdPartyMachine: ThirdPartyMachine,\n verificationMachine: SignUpVerificationMachine,\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n logUnknownError: snapshot => console.error('Unknown error:', snapshot),\n navigateInternal: ({ context }, { path, force = false }: { path: string; force?: boolean }) => {\n if (!context.router) {\n return;\n }\n if (!force && shouldUseVirtualRouting()) {\n return;\n }\n if (context.exampleMode) {\n return;\n }\n\n const resolvedPath = joinURL(context.router.basePath, path);\n if (resolvedPath === context.router.pathname()) {\n return;\n }\n\n context.router.shallowPush(resolvedPath);\n },\n navigateExternal: ({ context }, { path }: { path: string }) => context.router?.push(path),\n raiseNext: raise({ type: 'NEXT' }),\n setActive: ({ context, event }, params?: { sessionId?: string; useLastActiveSession?: boolean }) => {\n if (context.exampleMode) {\n return;\n }\n\n const session =\n params?.sessionId ||\n (params?.useLastActiveSession && context.clerk.client.lastActiveSessionId) ||\n ((event as SignUpRouterNextEvent)?.resource || context.clerk.client.signUp).createdSessionId;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n });\n },\n delayedReset: raise({ type: 'RESET' }, { delay: 3000 }), // Reset machine after 3s delay.\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\n }),\n setFormOAuthErrors: ({ context }) => {\n const errorOrig = context.clerk.client.signIn.firstFactorVerification.error;\n\n if (!errorOrig) {\n return;\n }\n\n let error: ClerkElementsError;\n\n switch (errorOrig.code) {\n case ERROR_CODES.NOT_ALLOWED_TO_SIGN_UP:\n case ERROR_CODES.OAUTH_ACCESS_DENIED:\n case ERROR_CODES.NOT_ALLOWED_ACCESS:\n case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML:\n case ERROR_CODES.USER_LOCKED:\n error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage!);\n break;\n default:\n error = new ClerkElementsError(\n 'unable_to_complete',\n 'Unable to complete action at this time. If the problem persists please contact support.',\n );\n }\n\n context.formRef.send({\n type: 'ERRORS.SET',\n error,\n });\n },\n transfer: ({ context }) => context.router?.push(context.clerk.buildSignInUrl()),\n },\n guards: {\n areFieldsMissing: ({ context }) => context.clerk?.client?.signUp?.missingFields?.length > 0,\n areFieldsUnverified: ({ context }) => context.clerk?.client?.signUp?.unverifiedFields?.length > 0,\n\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signUp.status === null && context.clerk.client.lastActiveSessionId),\n hasCreatedSession: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.createdSession)),\n hasClerkStatus: ({ context }, params?: { status: VerificationStatus }) => {\n const value = context.router?.searchParams().get(SEARCH_PARAMS.status);\n if (!params) {\n return Boolean(value);\n }\n return value === params.status;\n },\n hasClerkTransfer: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.transfer)),\n hasResource: ({ context }) => Boolean(context.clerk.client.signUp),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isStatusAbandoned: needsStatus('abandoned'),\n isStatusComplete: ({ context, event }) => {\n const resource = (event as SignUpRouterNextEvent)?.resource;\n const signUp = context.clerk?.client?.signUp;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signUp?.status === 'complete' && Boolean(signUp?.createdSessionId))\n );\n },\n isStatusMissingRequirements: needsStatus('missing_requirements'),\n\n isLoggedIn: or(['isStatusComplete', ({ context }) => Boolean(context.clerk.user)]),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isRestricted: ({ context }) =>\n context.clerk?.__unstable__environment?.userSettings.signUp.mode === SIGN_UP_MODES.RESTRICTED,\n isRestrictedWithoutTicket: and(['isRestricted', not('hasTicket')]),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n isMissingRequiredFields: and(['isStatusMissingRequirements', 'areFieldsMissing']),\n isMissingRequiredUnverifiedFields: and(['isStatusMissingRequirements', 'areFieldsUnverified']),\n\n needsIdentifier: or(['statusNeedsIdentifier', isCurrentPath('/')]),\n needsContinue: and(['statusNeedsContinue', isCurrentPath('/continue')]),\n needsVerification: and(['statusNeedsVerification', isCurrentPath('/verify')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n\n statusNeedsIdentifier: or([not('hasResource'), 'isStatusAbandoned']),\n statusNeedsContinue: or(['isMissingRequiredFields']),\n statusNeedsVerification: or(['isMissingRequiredUnverifiedFields', and(['areFieldsMissing', 'hasClerkStatus'])]),\n },\n delays: {\n 'TIMEOUT.POLLING': 300_000, // 5 minutes\n },\n types: {} as SignUpRouterSchema,\n}).createMachine({\n id: SignUpRouterMachineId,\n // @ts-expect-error - Set in INIT event\n context: {},\n initial: 'Idle',\n on: {\n 'AUTHENTICATE.OAUTH': {\n actions: sendTo(ThirdPartyMachineId, ({ context, event }) => ({\n type: 'REDIRECT',\n params: {\n strategy: event.strategy,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n emailAddress: context.formRef.getSnapshot().context.fields.get('emailAddress')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'FORM.ATTACH': {\n description: 'Attach/re-attach the form to the router.',\n actions: enqueueActions(({ enqueue, event }) => {\n enqueue.assign({\n formRef: event.formRef,\n });\n\n // Reset the current step, to reset the form reference.\n enqueue.raise({ type: 'RESET.STEP' });\n }),\n },\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'NAVIGATE.START': '.Start',\n LOADING: {\n actions: assign(({ event }) => ({\n loading: {\n isLoading: event.isLoading,\n step: event.step,\n strategy: event.strategy,\n action: event.action,\n },\n })),\n },\n RESET: '.Idle',\n },\n states: {\n Idle: {\n on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n router: event.router,\n signInPath: event.signInPath || SIGN_IN_DEFAULT_BASE_PATH,\n loading: {\n isLoading: false,\n },\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n ticket:\n searchParams?.get(SEARCH_PARAMS.ticket) ||\n searchParams?.get(SEARCH_PARAMS.invitationToken) ||\n undefined,\n };\n }),\n target: 'Init',\n },\n },\n },\n Init: {\n entry: enqueueActions(({ context, enqueue, self }) => {\n if (!self.getSnapshot().children[ThirdPartyMachineId]) {\n enqueue.spawnChild('thirdPartyMachine', {\n id: ThirdPartyMachineId,\n systemId: ThirdPartyMachineId,\n input: {\n basePath: context.router?.basePath ?? SIGN_UP_DEFAULT_BASE_PATH,\n flow: 'signUp',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n }),\n },\n ],\n },\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsVerification',\n actions: { type: 'navigateInternal', params: { force: true, path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: or(['needsContinue', 'hasClerkTransfer']),\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'Continue',\n },\n {\n guard: 'isRestrictedWithoutTicket',\n target: 'Restricted',\n },\n {\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n ],\n },\n Start: {\n tags: ['step:start'],\n exit: 'clearFormErrors',\n invoke: {\n id: 'start',\n src: 'startMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n ticket: context.ticket,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n actions: enqueueActions(({ enqueue, context }) => {\n enqueue('clearFormErrors');\n enqueue.sendTo('start', { type: 'SET_FORM', formRef: context.formRef });\n }),\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: and(['hasTicket', 'statusNeedsContinue']),\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n reenter: true,\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Continue: {\n tags: ['step:continue'],\n invoke: {\n id: 'continue',\n src: 'continueMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Continue',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n ],\n },\n },\n Verification: {\n tags: ['step:verification'],\n invoke: {\n id: 'verification',\n src: 'verificationMachine',\n input: ({ context, self }) => ({\n attributes: context.clerk.__unstable__environment?.userSettings.attributes,\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n resource: context.clerk.client.signUp,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n always: [\n {\n guard: 'hasCreatedSession',\n actions: [\n ({ context }) => ({\n type: 'setActive',\n params: { sessionId: context.router?.searchParams().get(SEARCH_PARAMS.createdSession) },\n }),\n 'delayedReset',\n ],\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'verified' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'expired' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n },\n ],\n on: {\n 'RESET.STEP': {\n target: 'Verification',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n description: 'Handle a case where the user has already been authenticated via ClerkJS',\n guard: 'hasAuthenticatedViaClerkJS',\n actions: [{ type: 'setActive', params: { useLastActiveSession: true } }, 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n {\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n },\n ],\n },\n },\n Restricted: {\n tags: ['step:restricted'],\n on: {\n NEXT: 'Start',\n },\n },\n Error: {\n tags: ['step:error'],\n on: {\n NEXT: {\n target: 'Start',\n actions: 'clearFormErrors',\n },\n },\n },\n Hist: {\n type: 'history',\n exit: 'clearFormErrors',\n },\n },\n});\n","import type { SignUpResource, Web3Strategy } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { and, assertEvent, assign, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SetFormEvent } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { ThirdPartyMachine } from '~/internals/machines/third-party';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignUpStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignUpStartMachine = typeof SignUpStartMachine;\n\nexport const SignUpStartMachineId = 'SignUpStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\ntype PrefillFieldsKeys = keyof Pick<\n SignUpResource,\n 'username' | 'firstName' | 'lastName' | 'emailAddress' | 'phoneNumber'\n>;\nconst PREFILL_FIELDS: PrefillFieldsKeys[] = ['firstName', 'lastName', 'emailAddress', 'username', 'phoneNumber'];\n\nexport const SignUpStartMachine = setup({\n actors: {\n attempt: fromPromise<\n SignUpResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const fieldParams = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.create({ ...fieldParams, ...params });\n }),\n attemptWeb3: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbaseWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n thirdParty: ThirdPartyMachine,\n },\n actions: {\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n setFormRef: assign(({ event }) => {\n return {\n formRef: (event as unknown as SetFormEvent).formRef,\n };\n }),\n setFormDisabledTicketFields: enqueueActions(({ context, enqueue }) => {\n if (!context.ticket) {\n return;\n }\n\n const currentFields = context.formRef.getSnapshot().context.fields;\n\n for (const name of DISABLEABLE_FIELDS) {\n if (currentFields.has(name)) {\n enqueue.sendTo(context.formRef, { type: 'FIELD.DISABLE', field: { name } });\n }\n }\n }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n setDefaultFormValues: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n const prefilledDefaultValues = new Map();\n\n for (const key of PREFILL_FIELDS) {\n if (key in signUp) {\n prefilledDefaultValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'PREFILL_DEFAULT_VALUES',\n defaultValues: prefilledDefaultValues,\n });\n },\n },\n guards: {\n isMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignUpStartSchema,\n}).createMachine({\n id: SignUpStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n entry: 'setDefaultFormValues',\n initial: 'Init',\n on: {\n SET_FORM: {\n actions: 'setFormRef',\n },\n },\n states: {\n Init: {\n description:\n 'Handle ticket, if present; Else, default to Pending state. Per tickets, `Attempting` makes a `signUp.create` request allowing for an incomplete sign up to contain progressively filled fields on the Start step.',\n always: [\n {\n guard: and(['hasTicket', 'isMissingRequirements']),\n target: 'Pending',\n },\n {\n guard: 'hasTicket',\n target: 'Attempting',\n },\n {\n target: 'Pending',\n },\n ],\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n 'AUTHENTICATE.WEB3': {\n guard: not('isExampleMode'),\n target: 'AttemptingWeb3',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreate',\n src: 'attempt',\n input: ({ context }) => {\n // Standard fields\n const defaultParams = {\n fields: context.formRef.getSnapshot().context.fields,\n parent: context.parent,\n };\n\n // Handle ticket-specific flows\n const params: AttemptParams = context.ticket\n ? {\n strategy: 'ticket',\n ticket: context.ticket,\n }\n : {};\n\n return { ...defaultParams, params };\n },\n onDone: {\n actions: ['setFormDisabledTicketFields', 'sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormDisabledTicketFields', 'setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreateWeb3',\n src: 'attemptWeb3',\n input: ({ context, event }) => {\n assertEvent(event, 'AUTHENTICATE.WEB3');\n return {\n parent: context.parent,\n strategy: event.strategy,\n };\n },\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import { Poller } from '@clerk/shared/poller';\nimport type {\n AttemptVerificationParams,\n Attribute,\n PrepareVerificationParams,\n SignUpResource,\n SignUpVerifiableField,\n SignUpVerificationsResource,\n VerificationStrategy,\n} from '@clerk/types';\nimport type { Writable } from 'type-fest';\nimport { and, assign, enqueueActions, fromCallback, fromPromise, log, raise, sendParent, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_UP_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport {\n type SignUpVerificationContext,\n SignUpVerificationDelays,\n type SignUpVerificationEmailLinkFailedEvent,\n type SignUpVerificationEvents,\n type SignUpVerificationSchema,\n} from './verification.types';\n\nexport type SignUpVerificationsResourceKey = keyof SignUpVerificationsResource;\nexport type TSignUpVerificationMachine = typeof SignUpVerificationMachine;\n\nexport type StartSignUpEmailLinkFlowEvents = { type: 'STOP' };\nexport type StartSignUpEmailLinkFlowInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport const SignUpVerificationMachineId = 'SignUpVerification';\n\nconst shouldVerify = (field: SignUpVerifiableField, strategy?: VerificationStrategy) => {\n const guards: Writable<Parameters<typeof and<SignUpVerificationContext, SignUpVerificationEvents, any>>[0]> = [\n {\n type: 'isFieldUnverified',\n params: {\n field,\n },\n },\n ];\n\n if (strategy) {\n guards.push({\n type: 'isStrategyEnabled',\n params: {\n attribute: field,\n strategy,\n },\n });\n }\n\n return and(guards);\n};\n\nexport type PrepareVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<PrepareVerificationParams>;\nexport type AttemptVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<AttemptVerificationParams>;\n\nexport const SignUpVerificationMachine = setup({\n actors: {\n prepare: fromPromise<SignUpResource, PrepareVerificationInput>(({ input: { params, parent } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n if (params.strategy === 'email_link' && params.redirectUrl) {\n params.redirectUrl = clerk.buildUrlWithAuth(params.redirectUrl);\n }\n\n return clerk.client.signUp.prepareVerification(params);\n }),\n attempt: fromPromise<SignUpResource, AttemptVerificationInput>(async ({ input: { params, parent } }) =>\n parent.getSnapshot().context.clerk.client.signUp.attemptVerification(params),\n ),\n attemptEmailLinkVerification: fromCallback<StartSignUpEmailLinkFlowEvents, StartSignUpEmailLinkFlowInput>(\n ({ receive, sendBack, input: { parent } }) => {\n const { run, stop } = Poller();\n\n const clerk = parent.getSnapshot().context.clerk;\n\n void run(async () =>\n clerk.client.signUp\n .reload()\n .then(resource => {\n const signInStatus = resource.status;\n const verificationStatus = resource.verifications.emailAddress.status;\n\n // Short-circuit if the sign-up resource is already complete\n if (signInStatus === 'complete') {\n return sendBack({ type: 'EMAIL_LINK.VERIFIED', resource });\n }\n\n switch (verificationStatus) {\n case 'verified':\n case 'transferable':\n case 'expired': {\n sendBack({ type: `EMAIL_LINK.${verificationStatus.toUpperCase()}`, resource });\n break;\n }\n case 'failed': {\n sendBack({\n type: 'EMAIL_LINK.FAILED',\n error: new ClerkElementsError('email-link-verification-failed', 'Email verification failed'),\n resource,\n });\n break;\n }\n // case 'unverified':\n default:\n return;\n }\n\n stop();\n })\n .catch(error => {\n stop();\n new ClerkElementsRuntimeError(error);\n }),\n );\n\n receive(event => {\n if (event.type === 'STOP') {\n stop();\n }\n });\n\n return () => stop();\n },\n ),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 1,\n resendableAfter: context.resendableAfter > 1 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n isComplete: ({ context }) => context.resource.status === 'complete',\n isFieldUnverified: ({ context, event }, { field }: { field: SignUpVerifiableField }) => {\n let resource = context.resource;\n\n if (event?.type === 'NEXT' && event.resource) {\n resource = event.resource;\n }\n\n return resource.unverifiedFields.includes(field);\n },\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isStrategyEnabled: (\n { context },\n { attribute, strategy }: { attribute: Attribute; strategy: VerificationStrategy },\n ) => Boolean(context.attributes?.[attribute].verifications.includes(strategy)),\n shouldVerifyPhoneCode: shouldVerify('phone_number'),\n shouldVerifyEmailLink: shouldVerify('email_address', 'email_link'),\n shouldVerifyEmailCode: shouldVerify('email_address', 'email_code'),\n },\n delays: SignUpVerificationDelays,\n types: {} as SignUpVerificationSchema,\n}).createMachine({\n id: SignUpVerificationMachineId,\n initial: 'Init',\n context: ({ input }) => ({\n attributes: input.attributes,\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n loadingStep: 'verifications',\n formRef: input.formRef,\n parent: input.parent,\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n resource: input.resource,\n }),\n on: {\n NEXT: [\n {\n guard: 'isComplete',\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: '.PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: '.EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: '.EmailCode',\n },\n {\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n ],\n },\n states: {\n Init: {\n always: [\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: 'PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: 'EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: 'EmailCode',\n },\n {\n actions: sendParent(({ context }) => ({ type: 'NEXT', resource: context.resource })),\n },\n ],\n },\n EmailLink: {\n tags: ['verification:method:email', 'verification:category:link', 'verification:email_link'],\n initial: 'Preparing',\n on: {\n RETRY: '.Preparing',\n 'EMAIL_LINK.RESTART': {\n target: '.Attempting',\n reenter: true,\n },\n 'EMAIL_LINK.FAILED': {\n actions: [\n {\n type: 'setFormErrors',\n params: ({ event }: { event: SignUpVerificationEmailLinkFailedEvent }) => ({ error: event.error }),\n },\n assign({ resource: ({ event }) => event.resource }),\n ],\n target: '.Pending',\n },\n 'EMAIL_LINK.*': {\n actions: enqueueActions(({ enqueue, event }) => {\n if (event.type === 'EMAIL_LINK.RESTART') {\n return;\n }\n\n enqueue.assign({ resource: event.resource });\n enqueue.raise({ type: 'NEXT', resource: event.resource });\n }),\n },\n },\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailLinkVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_link',\n redirectUrl: `${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n },\n }),\n onDone: {\n target: 'Attempting',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n description: 'Placeholder for allowing resending of email link',\n tags: ['state:pending'],\n on: {\n NEXT: 'Preparing',\n },\n },\n Attempting: {\n tags: ['state:attempting'],\n invoke: {\n id: 'attemptEmailLinkVerification',\n src: 'attemptEmailLinkVerification',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n },\n after: {\n emailLinkTimeout: {\n description: 'Timeout after 5 minutes',\n target: 'Pending',\n actions: sendTo(({ context }) => context.formRef, {\n type: 'ERRORS.SET',\n error: new ClerkElementsError('verify-email-link-timeout', 'Email link verification timed out'),\n }),\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n },\n },\n EmailCode: {\n tags: ['verification:method:email', 'verification:category:code', 'verification:email_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailAddressCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyEmailCode',\n target: 'Pending',\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptEmailAddressCodeVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n PhoneCode: {\n tags: ['verification:method:phone', 'verification:category:code', 'verification:phone_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'preparePhoneCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyPhoneCode',\n target: 'Pending',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPhoneNumberVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n },\n});\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { Attributes, SignUpResource } from '@clerk/types';\nimport type { ActorRefFrom, DoneActorEvent, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignUpVerificationStateTags = 'state:preparing' | 'state:pending' | 'state:attempting' | 'state:loading';\n\nexport type SignUpVerificationVerificationCategoryTags = 'verification:category:code' | 'verification:category:link';\nexport type SignUpVerificationVerificationMethodTags = 'verification:method:email' | 'verification:method:phone';\nexport type SignUpVerificationVerificationTypeTags =\n | 'verification:email_link'\n | 'verification:email_code'\n | 'verification:phone_code';\n\nexport type SignUpVerificationVerificationTags =\n | SignUpVerificationVerificationCategoryTags\n | SignUpVerificationVerificationMethodTags\n | SignUpVerificationVerificationTypeTags;\n\nexport type SignUpVerificationTags = SignUpVerificationStateTags | SignUpVerificationVerificationTags;\nexport type SignUpVerificationFriendlyTags = 'code' | 'email_link' | 'email_code' | 'phone_code';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignUpVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignUpVerificationNextEvent = { type: 'NEXT'; resource?: SignUpResource };\nexport type SignUpVerificationRetryEvent = { type: 'RETRY' };\n\nexport type SignUpVerificationEmailLinkVerifiedEvent = { type: 'EMAIL_LINK.VERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkUnverifiedEvent = { type: 'EMAIL_LINK.UNVERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkExpiredEvent = { type: 'EMAIL_LINK.EXPIRED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkTransferrableEvent = {\n type: 'EMAIL_LINK.TRANSFERRABLE';\n resource: SignUpResource;\n};\nexport type SignUpVerificationEmailLinkRestartEvent = { type: 'EMAIL_LINK.RESTART' };\nexport type SignUpVerificationEmailLinkFailedEvent = {\n type: 'EMAIL_LINK.FAILED';\n resource: SignUpResource;\n error: Error;\n};\n\nexport type SignUpVerificationEmailLinkEvent =\n | SignUpVerificationEmailLinkVerifiedEvent\n | SignUpVerificationEmailLinkUnverifiedEvent\n | SignUpVerificationEmailLinkExpiredEvent\n | SignUpVerificationEmailLinkRestartEvent\n | SignUpVerificationEmailLinkFailedEvent;\n\nexport type SignUpVerificationEvents =\n | DoneActorEvent\n | ErrorActorEvent\n | SignUpVerificationRetryEvent\n | SignUpVerificationSubmitEvent\n | SignUpVerificationNextEvent\n | SignUpVerificationEmailLinkEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignUpVerificationInput = {\n attributes: Attributes | undefined;\n basePath?: string;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n resource: SignUpResource;\n};\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignUpVerificationDelays = {\n emailLinkTimeout: 300_000, // 5 minutes\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignUpVerificationDelays = keyof typeof SignUpVerificationDelays;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignUpVerificationContext {\n attributes: Attributes | undefined;\n basePath: string;\n resource: SignUpResource;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n resendable: boolean;\n resendableAfter: number;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignUpVerificationSchema {\n context: SignUpVerificationContext;\n delays: SignUpVerificationDelays;\n input: SignUpVerificationInput;\n events: SignUpVerificationEvents;\n tags: SignUpVerificationTags;\n}\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignUpNavigateProps } from './navigate';\nimport { SignUpNavigate } from './navigate';\nimport type { SignUpResendProps } from './resend';\nimport { SignUpResend } from './resend';\n\nexport type SignUpActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignUpNavigateProps['to'];\n resend?: never;\n submit?: never;\n } & Omit<SignUpNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; submit: true }\n | ({ navigate?: never; resend: true; submit?: never } & SignUpResendProps)\n );\n\n/**\n * Perform various actions during the sign-in process. This component is used to navigate between steps, submit the form, or resend a verification codes.\n *\n * @param {boolean} [submit] - If `true`, the action will submit the form.\n * @param {string} [navigate] - The name of the step to navigate to.\n * @param {boolean} [resend] - If `true`, the action will resend the verification code for the currently active strategy, if applicable.\n * @param {Function} [fallback] - Only used when `resend` is `true`. If provided, the fallback markup will be rendered before the resend delay has expired.\n *\n * @example\n * <SignUp.Action navigate=\"start\">Go Back</SignUp.Action>\n *\n * @example\n * <SignUp.Action submit>Sign Up</SignUp.Action>\n *\n * @example\n * <SignUp.Action resend>Resend</SignUp.Action>\n */\n\nexport const SignUpAction = React.forwardRef<React.ElementRef<'button'>, SignUpActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignUpNavigate;\n } else if (resend) {\n Comp = SignUpResend;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignUpAction.displayName = 'SignUpAction';\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nconst SIGN_UP_NAVIGATE_NAME = 'SignInNavigate';\nconst SignUpNavigationEventMap = {\n start: `NAVIGATE.START`,\n previous: `NAVIGATE.PREVIOUS`,\n} as const;\n\nexport type SignUpNavigateElementKey = keyof typeof SignUpNavigationEventMap;\n\nexport type SignUpNavigateElement = React.ElementRef<'button'>;\nexport type SignUpNavigateProps = {\n asChild?: boolean;\n to: SignUpNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-up flow.\n *\n * @param {SignUpNavigateElementKey} to - The step to navigate to.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <Navigate to=\"start\">\n * Start over...\n * </Navigate>\n */\nexport const SignUpNavigate = React.forwardRef<SignUpNavigateElement, SignUpNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignUpRouterCtx.useActorRef();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const type = SignUpNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignUp.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignUpNavigationEventMap).join(', ')}.`,\n );\n }\n }, [actorRef, to]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpNavigate.displayName = SIGN_UP_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignUpVerificationCtx } from '../verifications';\n\nexport type SignUpResendElement = React.ElementRef<'button'>;\nexport type SignUpResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignUpResendProps = {\n asChild?: boolean;\n children: React.ReactNode;\n /**\n * A fallback component to render when the resend action is not available.\n * This can be a React element or a function that receives the `resendableAfter` prop.\n */\n fallback?: React.ReactNode | ((props: SignUpResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_UP_RESEND_NAME = 'SignUpResend';\n\n/**\n * Resend verification codes during the sign-in process.\n * This component must be used within the <Step name=\"verifications\">.\n *\n * @note This component is not intended to be used directly. Instead, use the <Action resend> component.\n *\n * @example\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n */\nexport const SignUpResend = React.forwardRef<SignUpResendElement, SignUpResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error('The resend action must be used within <SignUp.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignUpResendFallbackProps = useSelector(\n ref,\n state => ({\n resendable: state.context.resendable,\n resendableAfter: state.context.resendableAfter,\n }),\n (a, b) => a.resendableAfter === b.resendableAfter && a.resendable === b.resendable,\n );\n\n if (fallback && !fallbackProps.resendable) {\n return typeof fallback === 'function' ? fallback(fallbackProps) : fallback;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n disabled={!fallbackProps.resendable}\n onClick={() => ref.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpResend.displayName = SIGN_UP_RESEND_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { CAPTCHA_ELEMENT_ID } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { SignUpStartCtx } from './start';\n\nexport type SignUpCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignUpCaptchaProps =\n | ({\n asChild: true;\n /* Must only be a self-closing element/component */\n children: React.ReactElement;\n } & CaptchaElementProps)\n | ({ asChild?: false; children?: undefined } & CaptchaElementProps);\n\n/**\n * The `<SignUp.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignUp.Step name=\"start\">` component.\n *\n * If utilizing the `asChild` prop, the component must be a self-closing element or component. Any children passed to the immediate child component of <SignUp.Captcha> will be ignored.\n *\n * @param {boolean} [asChild] - If true, `<Captcha />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha />\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha asChild>\n * <aside/>\n * </SignUp.Captcha>\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n */\n\nexport const SignUpCaptcha = React.forwardRef<SignUpCaptchaElement, SignUpCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const ref = SignUpStartCtx.useActorRef(true);\n\n if (!ref) {\n throw new ClerkElementsRuntimeError('<Captcha> must be used within the <SignUp.Step name=\"start\"> component.');\n }\n\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n id={CAPTCHA_ELEMENT_ID}\n {...rest}\n ref={forwardedRef}\n />\n );\n },\n);\n"],"mappings":"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","names":["and","assign","enqueueActions","log","not","or","raise","sendTo","setup","fromPromise","not","setup","setup","fromPromise","not","and","assign","enqueueActions","fromPromise","sendTo","setup","and","setup","fromPromise","assign","sendTo","enqueueActions","setup","sendTo","raise","assign","and","not","or","enqueueActions","log","React","jsx","Slot","useSelector","React","jsx","useSelector","Slot","jsx","Slot","React","jsx","Slot"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/elements",
3
- "version": "0.18.0",
3
+ "version": "0.18.1-canary.v8506fdd",
4
4
  "description": "Clerk Elements",
5
5
  "keywords": [
6
6
  "clerk",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react/router/virtual.ts","../src/react/router/index.ts","../src/react/utils/path-inference/next.tsx","../src/react/utils/path-inference/utils.ts"],"sourcesContent":["'use client';\n\nimport type { ClerkHostRouter } from '@clerk/shared/router';\nimport { useSyncExternalStore } from 'react';\n\nconst DUMMY_ORIGIN = 'https://clerk.dummy';\n\n// TODO: introduce history stack?\nclass VirtualRouter implements ClerkHostRouter {\n readonly name = 'VirtualRouter';\n readonly mode = 'virtual';\n\n #url: URL;\n #listeners: Set<(url: URL) => void> = new Set();\n\n constructor(path?: string) {\n const origin = typeof window === 'undefined' ? DUMMY_ORIGIN : window.location.origin;\n\n this.#url = new URL(path ?? '/', origin);\n }\n\n push(path: string) {\n const newUrl = new URL(this.#url.toString());\n newUrl.pathname = path;\n\n this.#url = newUrl;\n this.emit();\n }\n\n replace(path: string) {\n this.push(path);\n }\n\n shallowPush(path: string) {\n this.push(path);\n }\n\n pathname() {\n return this.#url.pathname;\n }\n\n searchParams() {\n return this.#url.searchParams;\n }\n\n subscribe(listener: () => void) {\n this.#listeners.add(listener);\n\n return () => this.#listeners.delete(listener);\n }\n\n emit() {\n this.#listeners.forEach(listener => listener(this.#url));\n }\n\n getSnapshot() {\n return this.#url;\n }\n}\n\nconst virtualRouter = new VirtualRouter('/');\n\nexport const useVirtualRouter = (): ClerkHostRouter => {\n const url = useSyncExternalStore(\n virtualRouter.subscribe.bind(virtualRouter),\n virtualRouter.getSnapshot.bind(virtualRouter),\n );\n\n return {\n mode: virtualRouter.mode,\n name: virtualRouter.name,\n pathname: () => url.pathname,\n push: virtualRouter.push.bind(virtualRouter),\n replace: virtualRouter.replace.bind(virtualRouter),\n searchParams: () => url.searchParams,\n shallowPush: virtualRouter.shallowPush.bind(virtualRouter),\n };\n};\n","export { Route, Router, useClerkRouter } from '@clerk/shared/router';\nexport { useVirtualRouter } from './virtual';\n","import { useRouter } from 'next/compat/router';\nimport { useParams, usePathname } from 'next/navigation';\nimport React from 'react';\n\nimport { removeOptionalCatchAllSegment } from './utils';\n\n// Adapted from packages/nextjs/src/client-boundary/hooks/usePathnameWithoutCatchAll.tsx\n\n/**\n * This hook grabs the current pathname (both in pages and app router) and removes any (optional) catch all segments.\n * @example\n * 1. /user/[id]/profile/[[...rest]]/page.tsx\n * 2. /user/123/profile/security\n * 3. /user/123/profile\n * @returns The pathname without any catch all segments\n */\nexport const usePathnameWithoutCatchAll = () => {\n const pathRef = React.useRef<string>();\n\n /**\n * The compat version of useRouter returns null instead of throwing an error when used inside App router.\n * Use it to detect if the component is used inside pages or app router\n */\n const pagesRouter = useRouter();\n\n if (pagesRouter) {\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // The optional catch all route is included in the pathname in pages router. It starts with [[... and we can just remove it\n pathRef.current = removeOptionalCatchAllSegment(pagesRouter.pathname);\n return pathRef.current;\n }\n }\n\n /**\n * Get the pathname that includes any named or catch all params.\n * @example\n * /user/[id]/profile/[[...rest]]/page.tsx\n *\n * This filesystem route could give us the following pathname:\n * /user/123/profile/security\n * if the user navigates to the security section of the user profile\n */\n const pathname = usePathname() || '';\n const pathParts = pathname.split('/').filter(Boolean);\n /**\n * For /user/[id]/profile/[[...rest]]/page.tsx useParams will return { id: '123', rest: ['security'] }.\n * So catch all params are always arrays\n */\n const catchAllParams = Object.values(useParams() || {})\n .filter(v => Array.isArray(v))\n .flat(Infinity);\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // /user/123/profile/security should be transformed to /user/123/profile\n pathRef.current = `/${pathParts.slice(0, pathParts.length - catchAllParams.length).join('/')}`;\n return pathRef.current;\n }\n};\n","export function removeOptionalCatchAllSegment(pathname: string) {\n return pathname.replace(/\\/\\[\\[\\.\\.\\..*/, '');\n}\n"],"mappings":";;;;;;;AAGA,SAAS,4BAA4B;AAErC,IAAM,eAAe;AALrB;AAQA,IAAM,gBAAN,MAA+C;AAAA,EAO7C,YAAY,MAAe;AAN3B,SAAS,OAAO;AAChB,SAAS,OAAO;AAEhB;AACA,mCAAsC,oBAAI,IAAI;AAG5C,UAAM,SAAS,OAAO,WAAW,cAAc,eAAe,OAAO,SAAS;AAE9E,uBAAK,MAAO,IAAI,IAAI,sBAAQ,KAAK,MAAM;AAAA,EACzC;AAAA,EAEA,KAAK,MAAc;AACjB,UAAM,SAAS,IAAI,IAAI,mBAAK,MAAK,SAAS,CAAC;AAC3C,WAAO,WAAW;AAElB,uBAAK,MAAO;AACZ,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,QAAQ,MAAc;AACpB,SAAK,KAAK,IAAI;AAAA,EAChB;AAAA,EAEA,YAAY,MAAc;AACxB,SAAK,KAAK,IAAI;AAAA,EAChB;AAAA,EAEA,WAAW;AACT,WAAO,mBAAK,MAAK;AAAA,EACnB;AAAA,EAEA,eAAe;AACb,WAAO,mBAAK,MAAK;AAAA,EACnB;AAAA,EAEA,UAAU,UAAsB;AAC9B,uBAAK,YAAW,IAAI,QAAQ;AAE5B,WAAO,MAAM,mBAAK,YAAW,OAAO,QAAQ;AAAA,EAC9C;AAAA,EAEA,OAAO;AACL,uBAAK,YAAW,QAAQ,cAAY,SAAS,mBAAK,KAAI,CAAC;AAAA,EACzD;AAAA,EAEA,cAAc;AACZ,WAAO,mBAAK;AAAA,EACd;AACF;AA9CE;AACA;AA+CF,IAAM,gBAAgB,IAAI,cAAc,GAAG;AAEpC,IAAM,mBAAmB,MAAuB;AACrD,QAAM,MAAM;AAAA,IACV,cAAc,UAAU,KAAK,aAAa;AAAA,IAC1C,cAAc,YAAY,KAAK,aAAa;AAAA,EAC9C;AAEA,SAAO;AAAA,IACL,MAAM,cAAc;AAAA,IACpB,MAAM,cAAc;AAAA,IACpB,UAAU,MAAM,IAAI;AAAA,IACpB,MAAM,cAAc,KAAK,KAAK,aAAa;AAAA,IAC3C,SAAS,cAAc,QAAQ,KAAK,aAAa;AAAA,IACjD,cAAc,MAAM,IAAI;AAAA,IACxB,aAAa,cAAc,YAAY,KAAK,aAAa;AAAA,EAC3D;AACF;;;AC7EA,SAAS,OAAO,QAAQ,sBAAsB;;;ACA9C,SAAS,iBAAiB;AAC1B,SAAS,WAAW,mBAAmB;AACvC,OAAO,WAAW;;;ACFX,SAAS,8BAA8B,UAAkB;AAC9D,SAAO,SAAS,QAAQ,kBAAkB,EAAE;AAC9C;;;ADcO,IAAM,6BAA6B,MAAM;AAC9C,QAAM,UAAU,MAAM,OAAe;AAMrC,QAAM,cAAc,UAAU;AAE9B,MAAI,aAAa;AACf,QAAI,QAAQ,SAAS;AACnB,aAAO,QAAQ;AAAA,IACjB,OAAO;AAEL,cAAQ,UAAU,8BAA8B,YAAY,QAAQ;AACpE,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAWA,QAAM,WAAW,YAAY,KAAK;AAClC,QAAM,YAAY,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAKpD,QAAM,iBAAiB,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,EACnD,OAAO,OAAK,MAAM,QAAQ,CAAC,CAAC,EAC5B,KAAK,QAAQ;AAChB,MAAI,QAAQ,SAAS;AACnB,WAAO,QAAQ;AAAA,EACjB,OAAO;AAEL,YAAQ,UAAU,IAAI,UAAU,MAAM,GAAG,UAAU,SAAS,eAAe,MAAM,EAAE,KAAK,GAAG,CAAC;AAC5F,WAAO,QAAQ;AAAA,EACjB;AACF;","names":[]}