{"version":3,"sources":["../src/common/constants.ts","../src/common/setup.ts","../src/common/errors.ts","../src/common/helpers-utils.ts"],"sourcesContent":["export const TESTING_TOKEN_PARAM = '__clerk_testing_token';\n","import { createClerkClient } from '@clerk/backend';\nimport { isProductionFromSecretKey, parsePublishableKey } from '@clerk/shared/keys';\nimport dotenv from 'dotenv';\n\nimport type { ClerkSetupOptions, ClerkSetupReturn } from './types';\n\nexport const fetchEnvVars = async (options?: ClerkSetupOptions): Promise<ClerkSetupReturn> => {\n  const log = (msg: string) => {\n    if (options?.debug) {\n      console.log(`Clerk: ${msg}`);\n    }\n  };\n\n  log('Setting up Clerk...');\n  dotenv.config({ path: ['.env.local', '.env'] });\n\n  const publishableKey =\n    options?.publishableKey ||\n    process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ||\n    process.env.VITE_CLERK_PUBLISHABLE_KEY ||\n    process.env.CLERK_PUBLISHABLE_KEY ||\n    process.env.REACT_APP_CLERK_PUBLISHABLE_KEY ||\n    process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY;\n\n  const secretKey = process.env.CLERK_SECRET_KEY;\n  let testingToken = process.env.CLERK_TESTING_TOKEN;\n\n  if (!publishableKey) {\n    throw new Error('You need to set the CLERK_PUBLISHABLE_KEY environment variable.');\n  }\n\n  if (!secretKey && !testingToken) {\n    throw new Error('You need to set the CLERK_SECRET_KEY or the CLERK_TESTING_TOKEN environment variable.');\n  }\n\n  if (secretKey && !testingToken) {\n    if (isProductionFromSecretKey(secretKey)) {\n      throw new Error(\n        'You are using a secret key from a production instance, but Testing Tokens only work in development instances.',\n      );\n    }\n\n    log('Fetching testing token from Clerk Backend API...');\n\n    try {\n      const apiUrl = process.env.CLERK_API_URL;\n      const clerkClient = createClerkClient({ secretKey, apiUrl });\n      const tokenData = await clerkClient.testingTokens.createTestingToken();\n      testingToken = tokenData.token;\n    } catch (err) {\n      console.error('Failed to fetch testing token from Clerk API.');\n      throw err;\n    }\n  }\n\n  return {\n    CLERK_FAPI: options?.frontendApiUrl || parsePublishableKey(publishableKey)?.frontendApi,\n    CLERK_TESTING_TOKEN: testingToken,\n  };\n};\n","export const ERROR_MISSING_FRONTEND_API_URL =\n  'The Clerk Frontend API URL is required to bypass bot protection. ' +\n  'Make sure the clerkSetup function is called during your global setup before setupClerkTestingToken is called.';\n","import type { EmailCodeFactor, PhoneCodeFactor, SignInFirstFactor } from '@clerk/types';\n\nimport type { SignInHelperParams } from './types';\n\n// This function is serialized and executed in the browser context\nexport const signInHelper = async ({ signInParams, windowObject }: SignInHelperParams) => {\n  try {\n    const w = windowObject || window;\n    if (!w.Clerk.client) {\n      return;\n    }\n    const signIn = w.Clerk.client.signIn;\n    if (signInParams.strategy === 'password') {\n      const res = await signIn.create(signInParams);\n      await w.Clerk.setActive({\n        session: res.createdSessionId,\n      });\n    } else {\n      // Assert that the identifier is a test email or phone number\n      if (signInParams.strategy === 'phone_code' && !signInParams.identifier.includes('+155555501')) {\n        throw new Error(\n          `Phone number should be a test phone number.\\n\n       Example: +15555550100.\\n\n       Learn more here: https://clerk.com/docs/testing/test-emails-and-phones#phone-numbers`,\n        );\n      }\n      if (signInParams.strategy === 'email_code' && !signInParams.identifier.includes('+clerk_test')) {\n        throw new Error(\n          `Email should be a test email.\\n\n       Any email with the +clerk_test subaddress is a test email address.\\n\n       Learn more here: https://clerk.com/docs/testing/test-emails-and-phones#email-addresses`,\n        );\n      }\n\n      // Sign in with code (email_code or phone_code)\n      const { supportedFirstFactors } = await signIn.create({\n        identifier: signInParams.identifier,\n      });\n      const codeFactorFn =\n        signInParams.strategy === 'phone_code'\n          ? (factor: SignInFirstFactor): factor is PhoneCodeFactor => factor.strategy === 'phone_code'\n          : (factor: SignInFirstFactor): factor is EmailCodeFactor => factor.strategy === 'email_code';\n      const codeFactor = supportedFirstFactors?.find(codeFactorFn);\n      if (codeFactor) {\n        const prepareParams =\n          signInParams.strategy === 'phone_code'\n            ? { strategy: signInParams.strategy, phoneNumberId: (codeFactor as PhoneCodeFactor).phoneNumberId }\n            : { strategy: signInParams.strategy, emailAddressId: (codeFactor as EmailCodeFactor).emailAddressId };\n\n        await signIn.prepareFirstFactor(prepareParams);\n        const signInAttempt = await signIn.attemptFirstFactor({\n          strategy: signInParams.strategy,\n          code: '424242',\n        });\n\n        if (signInAttempt.status === 'complete') {\n          await w.Clerk.setActive({ session: signInAttempt.createdSessionId });\n        } else {\n          throw new Error(`Status is ${signInAttempt.status}`);\n        }\n      } else {\n        throw new Error(`${signInParams.strategy} is not enabled.`);\n      }\n    }\n  } catch (err: any) {\n    throw new Error(`Clerk: Failed to sign in: ${err?.message}`);\n  }\n};\n"],"mappings":"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","names":["TESTING_TOKEN_PARAM","createClerkClient","isProductionFromSecretKey","parsePublishableKey","dotenv","fetchEnvVars","options","log","msg","publishableKey","secretKey","testingToken","apiUrl","err","ERROR_MISSING_FRONTEND_API_URL","signInHelper","signInParams","windowObject","w","signIn","res","supportedFirstFactors","codeFactorFn","factor","codeFactor","prepareParams","signInAttempt","err"]}