{"version":3,"file":"queryParams.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;AACF;;;;AAqBA,SAAgB,mBAA8C,OAAiD;CAC7G,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK;CAChE,OAAO,MAAO,MAAyC;AACzD;;;;AAKA,SAAgB,sBAAiD,OAAU;CACzE,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;CACxC,IAAI,IAAI,aAAa,IAAI,KAAK,GAAG;EAC/B,IAAI,aAAa,OAAO,KAAK;EAC7B,OAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,GAAG;CAC3D;AAEF;;;;;;;;AASA,SAAgB,wBAAwB,QAA2C;CACjF,MAAM,sBAAsB,IAAI,gBAAgB,OAAO,SAAS,MAAM;CACtE,MAAM,YAAY,UAAU,IAAI,gBAAgB;CAEhD,KAAK,MAAM,SAAS,mBAAmB;EACrC,MAAM,QAAQ,oBAAoB,IAAI,KAAK;EAC3C,IAAI,OACF,UAAU,IAAI,OAAO,KAAK;CAE9B;CAEA,OAAO;AACT"}