Skip to content

Commit 997afbb

Browse files
fix: reduce URL usage and fix tests
1 parent cc714ee commit 997afbb

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/path.ts

+18-7
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,15 @@ export function withBase(input = "", base = ""): string {
7676
* Returns the URL with the given query parameters. If a query parameter is undefined, it is omitted.
7777
*/
7878
export function withQuery(input: string, query: QueryObject): string {
79-
const url = new URL(input, "http://localhost");
80-
const searchParams = new URLSearchParams(url.search);
79+
let url: URL | undefined;
80+
let searchParams: URLSearchParams;
81+
82+
if (input.includes("?")) {
83+
url = new URL(input, "http://localhost");
84+
searchParams = new URLSearchParams(url.search);
85+
} else {
86+
searchParams = new URLSearchParams();
87+
}
8188

8289
for (const [key, value] of Object.entries(query)) {
8390
if (value === undefined) {
@@ -97,12 +104,16 @@ export function withQuery(input: string, query: QueryObject): string {
97104
}
98105
}
99106

100-
url.search = searchParams.toString();
101-
let urlWithQuery = url.toString();
107+
const queryString = searchParams.toString();
102108

103-
if (urlWithQuery.startsWith("http://localhost")) {
104-
urlWithQuery = urlWithQuery.slice(16);
109+
if (url) {
110+
url.search = queryString;
111+
let urlWithQuery = url.toString();
112+
if (urlWithQuery.startsWith("http://localhost")) {
113+
urlWithQuery = urlWithQuery.slice(16);
114+
}
115+
return urlWithQuery;
105116
}
106117

107-
return urlWithQuery;
118+
return queryString ? `${input}?${queryString}` : input;
108119
}

0 commit comments

Comments
 (0)