diff options
Diffstat (limited to 'src/lib/url.ts')
| -rw-r--r-- | src/lib/url.ts | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/url.ts b/src/lib/url.ts new file mode 100644 index 0000000..f6772fe --- /dev/null +++ b/src/lib/url.ts @@ -0,0 +1,49 @@ +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; + } +} |