{"version":3,"file":"queryParams-Dlt0oVDg.mjs","names":[],"sources":["../../src/internal/clerk-js/queryParams.ts"],"sourcesContent":["import type { EmailLinkErrorCodeStatus } from '../../error';\nimport { CLERK_NETLIFY_CACHE_BUST_PARAM } from '../../netlifyCacheHandler';\nimport { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from './constants';\n\nconst _ClerkQueryParams = [\n  '__clerk_status',\n  '__clerk_created_session',\n  '__clerk_invitation_token',\n  '__clerk_ticket',\n  '__clerk_modal_state',\n  '__clerk_handshake',\n  '__clerk_handshake_nonce',\n  '__clerk_help',\n  CLERK_NETLIFY_CACHE_BUST_PARAM,\n  CLERK_SYNCED,\n  CLERK_SATELLITE_URL,\n  CLERK_SUFFIXED_COOKIES,\n] as const;\n\ntype ClerkQueryParam = (typeof _ClerkQueryParams)[number];\n\n/**\n * Used for email link verification\n */\nexport type VerifyTokenStatus = 'verified' | (typeof EmailLinkErrorCodeStatus)[keyof typeof EmailLinkErrorCodeStatus];\n\n/**\n * Used for instance invitations and organization invitations\n */\ntype TicketStatus = 'sign_in' | 'sign_up' | 'complete';\n\ntype ClerkQueryParamsToValuesMap = {\n  __clerk_status: TicketStatus | VerifyTokenStatus;\n} & Record<(typeof _ClerkQueryParams)[number], string>;\n\n/**\n *\n */\nexport function getClerkQueryParam<T extends ClerkQueryParam>(param: T): ClerkQueryParamsToValuesMap[T] | null {\n  const val = new URL(window.location.href).searchParams.get(param);\n  return val ? (val as ClerkQueryParamsToValuesMap[T]) : null;\n}\n\n/**\n *\n */\nexport function removeClerkQueryParam<T extends ClerkQueryParam>(param: T) {\n  const url = new URL(window.location.href);\n  if (url.searchParams.has(param)) {\n    url.searchParams.delete(param);\n    window.history.replaceState(window.history.state, '', url);\n  }\n  return;\n}\n\n/**\n * Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.\n * This is useful when navigating between pages while preserving Clerk-specific query parameters.\n *\n * @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.\n * @returns A URLSearchParams object containing the forwarded Clerk parameters\n */\nexport function forwardClerkQueryParams(params?: URLSearchParams): URLSearchParams {\n  const currentSearchParams = new URLSearchParams(window.location.search);\n  const newParams = params || new URLSearchParams();\n\n  for (const param of _ClerkQueryParams) {\n    const value = currentSearchParams.get(param);\n    if (value) {\n      newParams.set(param, value);\n    }\n  }\n\n  return newParams;\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAqBD,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,MAAM;AACjE,QAAO,MAAO,MAAyC;;;;;AAMzD,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,KAAI,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,MAAI,aAAa,OAAO,MAAM;AAC9B,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;;;;;;;;;;AAY9D,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,OAAO;CACvE,MAAM,YAAY,UAAU,IAAI,iBAAiB;AAEjD,MAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,MAAM;AAC5C,MAAI,MACF,WAAU,IAAI,OAAO,MAAM;;AAI/B,QAAO"}