{"version":3,"file":"sessionTasks.mjs","names":["INTERNAL_SESSION_TASK_ROUTE_BY_KEY: Record<SessionTask['key'], string>"],"sources":["../../../../src/internal/clerk-js/sessionTasks.ts"],"sourcesContent":["import { logger } from '../../logger';\nimport type { ClerkOptions, SessionResource, SessionTask, SetActiveParams } from '../../types';\nimport { forwardClerkQueryParams } from './queryParams';\nimport { buildURL } from './url';\n\n/**\n * @internal\n */\nexport const INTERNAL_SESSION_TASK_ROUTE_BY_KEY: Record<SessionTask['key'], string> = {\n  'choose-organization': 'choose-organization',\n  'reset-password': 'reset-password',\n  'setup-mfa': 'setup-mfa',\n} as const;\n\n/**\n * @internal\n */\nexport const getTaskEndpoint = (task: SessionTask) => `/tasks/${INTERNAL_SESSION_TASK_ROUTE_BY_KEY[task.key]}`;\n\n/**\n * @internal\n */\nexport function buildTaskUrl(task: SessionTask, opts: Pick<Parameters<typeof buildURL>[0], 'base'>) {\n  const params = forwardClerkQueryParams();\n\n  return buildURL(\n    {\n      base: opts.base,\n      hashPath: getTaskEndpoint(task),\n      searchParams: params,\n    },\n    { stringify: true },\n  );\n}\n\n/**\n * @internal\n */\nexport function navigateIfTaskExists(\n  session: SessionResource,\n  {\n    navigate,\n    baseUrl,\n  }: {\n    navigate: (to: string) => Promise<unknown>;\n    baseUrl: string;\n  },\n) {\n  const currentTask = session.currentTask;\n  if (!currentTask) {\n    return;\n  }\n\n  return navigate(buildTaskUrl(currentTask, { base: baseUrl }));\n}\n\nexport function warnMissingPendingTaskHandlers(options: Record<string, unknown>) {\n  const taskOptions = ['taskUrls', 'navigate'] as Array<\n    keyof (Pick<SetActiveParams, 'navigate'> & Pick<ClerkOptions, 'taskUrls'>)\n  >;\n\n  const hasAtLeastOneOption = Object.keys(options).some(option => taskOptions.includes(option as any));\n  if (hasAtLeastOneOption) {\n    return;\n  }\n\n  // TODO - Link to after-auth docs once it gets released\n  logger.warnOnce(\n    `Clerk: Session has pending tasks but no handling is configured. To handle pending tasks, provide either \"taskUrls\" for navigation to custom URLs or \"navigate\" for programmatic navigation. Without these options, users may get stuck on incomplete flows.`,\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAQA,MAAaA,qCAAyE;CACpF,uBAAuB;CACvB,kBAAkB;CAClB,aAAa;CACd;;;;AAKD,MAAa,mBAAmB,SAAsB,UAAU,mCAAmC,KAAK;;;;AAKxG,SAAgB,aAAa,MAAmB,MAAoD;CAClG,MAAM,SAAS,yBAAyB;AAExC,QAAO,SACL;EACE,MAAM,KAAK;EACX,UAAU,gBAAgB,KAAK;EAC/B,cAAc;EACf,EACD,EAAE,WAAW,MAAM,CACpB;;;;;AAMH,SAAgB,qBACd,SACA,EACE,UACA,WAKF;CACA,MAAM,cAAc,QAAQ;AAC5B,KAAI,CAAC,YACH;AAGF,QAAO,SAAS,aAAa,aAAa,EAAE,MAAM,SAAS,CAAC,CAAC;;AAG/D,SAAgB,+BAA+B,SAAkC;CAC/E,MAAM,cAAc,CAAC,YAAY,WAAW;AAK5C,KAD4B,OAAO,KAAK,QAAQ,CAAC,MAAK,WAAU,YAAY,SAAS,OAAc,CAAC,CAElG;AAIF,QAAO,SACL,8PACD"}