diff --git a/packages/platform/src/Url.ts b/packages/platform/src/Url.ts index bb9304536e8..97995d1479a 100644 --- a/packages/platform/src/Url.ts +++ b/packages/platform/src/Url.ts @@ -257,7 +257,7 @@ export const setUrlParams: { (url: URL, urlParams: UrlParams.UrlParams): URL } = dual(2, (url: URL, searchParams: UrlParams.UrlParams) => mutate(url, (url) => { - url.search = UrlParams.toString(searchParams) + url.search = UrlParams.toPercentEncoded(searchParams) })) /** @@ -320,5 +320,5 @@ export const modifyUrlParams: { } = dual(2, (url: URL, f: (urlParams: UrlParams.UrlParams) => UrlParams.UrlParams) => mutate(url, (url) => { const params = f(UrlParams.fromInput(url.searchParams)) - url.search = UrlParams.toString(params) + url.search = UrlParams.toPercentEncoded(params) })) diff --git a/packages/platform/src/UrlParams.ts b/packages/platform/src/UrlParams.ts index 0ca908180f8..25567eb5072 100644 --- a/packages/platform/src/UrlParams.ts +++ b/packages/platform/src/UrlParams.ts @@ -229,6 +229,15 @@ export const makeUrl = (url: string, params: UrlParams, hash: Option.Option new URLSearchParams(self as any).toString() +/** + * @since 1.0.0 + * @category conversions + */ +export const toPercentEncoded = (self: UrlParams): string => + self.map(([key, value]) => + `${encodeURIComponent(key)}=${encodeURIComponent(value)}` + ).join("&") + const baseUrl = (): string | undefined => { if ( "location" in globalThis &&