src / utils / url.ts
export function normalizeUrl(input: string, baseUrl?: string): string {
try {
const url = baseUrl ? new URL(input, baseUrl) : new URL(input);
url.hash = "";
url.searchParams.delete("fbclid");
url.searchParams.delete("gclid");
url.searchParams.delete("igshid");
url.searchParams.delete("mc_cid");
url.searchParams.delete("mc_eid");
url.searchParams.delete("mkt_tok");
for (const key of [...url.searchParams.keys()]) {
if (key.startsWith("utm_")) {
url.searchParams.delete(key);
}
}
return url.toString();
} catch {
return input.trim().toLowerCase();
}
}
export function resolveHref(href: string, baseUrl: string): string | null {
try {
return normalizeUrl(href, baseUrl);
} catch {
return null;
}
}
src / utils / url.ts
export function normalizeUrl(input: string, baseUrl?: string): string {
try {
const url = baseUrl ? new URL(input, baseUrl) : new URL(input);
url.hash = "";
url.searchParams.delete("fbclid");
url.searchParams.delete("gclid");
url.searchParams.delete("igshid");
url.searchParams.delete("mc_cid");
url.searchParams.delete("mc_eid");
url.searchParams.delete("mkt_tok");
for (const key of [...url.searchParams.keys()]) {
if (key.startsWith("utm_")) {
url.searchParams.delete(key);
}
}
return url.toString();
} catch {
return input.trim().toLowerCase();
}
}
export function resolveHref(href: string, baseUrl: string): string | null {
try {
return normalizeUrl(href, baseUrl);
} catch {
return null;
}
}