{"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"}