Skip to content

Commit 5166bd1

Browse files
committed
remove query-string and use parseUrl directly
1 parent 60e203c commit 5166bd1

File tree

4 files changed

+18
-91
lines changed

4 files changed

+18
-91
lines changed

package-lock.json

+3-85
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
"jest": "^26.6.3",
7171
"next": "^13.5.1",
7272
"prettier": "^2.2.1",
73-
"query-string": "^9.0.0",
7473
"react": "^18.2.0",
7574
"react-dom": "^18.2.0",
7675
"react-test-renderer": "^18.2.0",

src/MemoryRouter.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,9 @@ export class MemoryRouter extends BaseRouter {
211211
*/
212212
function parseUrlToCompleteUrl(url: Url, currentPathname: string): UrlObjectComplete {
213213
const parsedUrl = typeof url === "object" ? url : parseUrl(url);
214-
const query = parsedUrl.search ? objectifyQueryString(parsedUrl.search) : parsedUrl.query ?? {};
214+
215+
const queryFromSearch = parsedUrl.search ? objectifyQueryString(parsedUrl.search) : undefined;
216+
const query = queryFromSearch ?? parsedUrl.query ?? {};
215217

216218
return {
217219
pathname: normalizeTrailingSlash(parsedUrl.pathname ?? currentPathname),

src/urls.ts

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { NextRouter } from "next/router";
22
import type { UrlObject } from "./MemoryRouter";
3-
import queryString from "querystring";
43

54
export function parseUrl(url: string): UrlObject {
65
const base = "https://base.com"; // base can be anything
@@ -18,8 +17,17 @@ export function parseUrl(url: string): UrlObject {
1817
};
1918
}
2019
export function stringifyQueryString(query: NextRouter["query"]): string {
21-
return queryString.stringify(query);
20+
const params = new URLSearchParams();
21+
Object.keys(query).forEach((key) => {
22+
const values = query[key];
23+
for (const value of Array.isArray(values) ? values : [values]) {
24+
params.append(key, value!);
25+
}
26+
});
27+
return params.toString();
2228
}
23-
export function objectifyQueryString(query: string): NextRouter["query"] {
24-
return queryString.parse(query);
29+
export function objectifyQueryString(query: string): NextRouter["query"] | undefined {
30+
const parsedUrl = parseUrl(`?${query}`);
31+
32+
return parsedUrl.query;
2533
}

0 commit comments

Comments
 (0)