umami/src/lib/url.ts
2025-09-14 23:43:22 -07:00

49 lines
1,023 B
TypeScript

export function getQueryString(params: object = {}): string {
const searchParams = new URLSearchParams();
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined) {
searchParams.append(key, value);
}
});
return searchParams.toString();
}
export function buildPath(path: string, params: object = {}): string {
const queryString = getQueryString(params);
return queryString ? `${path}?${queryString}` : path;
}
export function safeDecodeURI(s: string | undefined | null): string | undefined | null {
if (s === undefined || s === null) {
return s;
}
try {
return decodeURI(s);
} catch {
return s;
}
}
export function safeDecodeURIComponent(s: string | undefined | null): string | undefined | null {
if (s === undefined || s === null) {
return s;
}
try {
return decodeURIComponent(s);
} catch {
return s;
}
}
export function isValidUrl(url: string) {
try {
new URL(url);
return true;
} catch {
return false;
}
}