@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
55 lines (53 loc) • 1.77 kB
JavaScript
import { CLERK_NETLIFY_CACHE_BUST_PARAM } from "../../netlifyCacheHandler.mjs";
import { CLERK_SATELLITE_URL, CLERK_SUFFIXED_COOKIES, CLERK_SYNCED } from "./constants.mjs";
//#region src/internal/clerk-js/queryParams.ts
const _ClerkQueryParams = [
"__clerk_status",
"__clerk_created_session",
"__clerk_invitation_token",
"__clerk_ticket",
"__clerk_modal_state",
"__clerk_handshake",
"__clerk_handshake_nonce",
"__clerk_help",
CLERK_NETLIFY_CACHE_BUST_PARAM,
CLERK_SYNCED,
CLERK_SATELLITE_URL,
CLERK_SUFFIXED_COOKIES
];
/**
*
*/
function getClerkQueryParam(param) {
const val = new URL(window.location.href).searchParams.get(param);
return val ? val : null;
}
/**
*
*/
function removeClerkQueryParam(param) {
const url = new URL(window.location.href);
if (url.searchParams.has(param)) {
url.searchParams.delete(param);
window.history.replaceState(window.history.state, "", url);
}
}
/**
* Extracts and forwards Clerk query parameters from the current URL to a new URLSearchParams object.
* This is useful when navigating between pages while preserving Clerk-specific query parameters.
*
* @param params - Optional URLSearchParams object to add the parameters to. If not provided, a new one will be created.
* @returns A URLSearchParams object containing the forwarded Clerk parameters
*/
function forwardClerkQueryParams(params) {
const currentSearchParams = new URLSearchParams(window.location.search);
const newParams = params || new URLSearchParams();
for (const param of _ClerkQueryParams) {
const value = currentSearchParams.get(param);
if (value) newParams.set(param, value);
}
return newParams;
}
//#endregion
export { forwardClerkQueryParams, getClerkQueryParam, removeClerkQueryParam };
//# sourceMappingURL=queryParams.mjs.map