UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

1 lines • 3.75 kB
{"version":3,"file":"completeSignUpFlow.mjs","names":[],"sources":["../../../src/internal/clerk-js/completeSignUpFlow.ts"],"sourcesContent":["import type { SignUpResource } from '../../types';\nimport { forwardClerkQueryParams, removeClerkQueryParam } from './queryParams';\n\ntype CompleteSignUpFlowProps = {\n signUp: SignUpResource;\n verifyEmailPath?: string;\n verifyPhonePath?: string;\n protectCheckPath?: string;\n continuePath?: string;\n navigate: (to: string, options?: { searchParams?: URLSearchParams }) => Promise<unknown>;\n handleComplete?: () => Promise<void>;\n redirectUrl?: string;\n redirectUrlComplete?: string;\n oidcPrompt?: string;\n};\n\nexport const completeSignUpFlow = ({\n signUp,\n verifyEmailPath,\n verifyPhonePath,\n protectCheckPath,\n continuePath,\n navigate,\n handleComplete,\n redirectUrl,\n redirectUrlComplete,\n oidcPrompt,\n}: CompleteSignUpFlowProps): Promise<unknown> | undefined => {\n if (signUp.status === 'complete') {\n removeClerkQueryParam('__clerk_ticket');\n removeClerkQueryParam('__clerk_invitation_token');\n return handleComplete && handleComplete();\n } else if (signUp.status === 'missing_requirements') {\n // The protect_check field is the authoritative gating signal. Sign-up also surfaces it\n // via a missing_fields entry; treat either as equivalent.\n //\n // This runs before the enterprise SSO hand-off below, which is the order\n // `navigateToNextStepSignUp` already uses: both fields can be missing at once, and handing\n // the sign-up to the identity provider first defers the challenge until the round trip is\n // over. Resolving it here returns to this function with only the hand-off left to do.\n const isProtectGated = !!signUp.protectCheck || signUp.missingFields.some(mf => mf === 'protect_check');\n if (isProtectGated && protectCheckPath) {\n return navigate(protectCheckPath, { searchParams: forwardClerkQueryParams() });\n }\n\n if (signUp.missingFields.some(mf => mf === 'enterprise_sso')) {\n if (!redirectUrl || !redirectUrlComplete) {\n throw new Error(\n 'completeSignUpFlow: `redirectUrl` and `redirectUrlComplete` are required to continue a sign-up that is missing `enterprise_sso`.',\n );\n }\n\n return signUp.authenticateWithRedirect({\n strategy: 'enterprise_sso',\n redirectUrl,\n redirectUrlComplete,\n continueSignUp: true,\n oidcPrompt,\n });\n }\n\n const params = forwardClerkQueryParams();\n\n if (signUp.unverifiedFields?.includes('email_address') && verifyEmailPath) {\n return navigate(verifyEmailPath, { searchParams: params });\n }\n if (signUp.unverifiedFields?.includes('phone_number') && verifyPhonePath) {\n return navigate(verifyPhonePath, { searchParams: params });\n }\n\n if (continuePath) {\n return navigate(continuePath, { searchParams: params });\n }\n }\n return;\n};\n"],"mappings":";;;AAgBA,MAAa,sBAAsB,EACjC,QACA,iBACA,iBACA,kBACA,cACA,UACA,gBACA,aACA,qBACA,iBAC2D;CAC3D,IAAI,OAAO,WAAW,YAAY;EAChC,sBAAsB,gBAAgB;EACtC,sBAAsB,0BAA0B;EAChD,OAAO,kBAAkB,eAAe;CAC1C,OAAO,IAAI,OAAO,WAAW,wBAAwB;EASnD,KADuB,CAAC,CAAC,OAAO,gBAAgB,OAAO,cAAc,MAAK,OAAM,OAAO,eAAe,MAChF,kBACpB,OAAO,SAAS,kBAAkB,EAAE,cAAc,wBAAwB,EAAE,CAAC;EAG/E,IAAI,OAAO,cAAc,MAAK,OAAM,OAAO,gBAAgB,GAAG;GAC5D,IAAI,CAAC,eAAe,CAAC,qBACnB,MAAM,IAAI,MACR,kIACF;GAGF,OAAO,OAAO,yBAAyB;IACrC,UAAU;IACV;IACA;IACA,gBAAgB;IAChB;GACF,CAAC;EACH;EAEA,MAAM,SAAS,wBAAwB;EAEvC,IAAI,OAAO,kBAAkB,SAAS,eAAe,KAAK,iBACxD,OAAO,SAAS,iBAAiB,EAAE,cAAc,OAAO,CAAC;EAE3D,IAAI,OAAO,kBAAkB,SAAS,cAAc,KAAK,iBACvD,OAAO,SAAS,iBAAiB,EAAE,cAAc,OAAO,CAAC;EAG3D,IAAI,cACF,OAAO,SAAS,cAAc,EAAE,cAAc,OAAO,CAAC;CAE1D;AAEF"}