Skip to content

Commit 5aced6b

Browse files
committed
Implement serialize in params-serializer
1 parent 31d56a8 commit 5aced6b

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/lib/params-serializer.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,19 @@ export const paramsSerializer: CustomParamsSerializer = (params) => {
1515
)
1616
}
1717
for (const v of value) {
18-
throwIfUnserializable(name, v)
19-
searchParams.append(name, v)
18+
searchParams.append(name, serialize(name, v))
2019
}
2120
continue
2221
}
2322

24-
throwIfUnserializable(name, value)
25-
searchParams.set(name, value)
23+
searchParams.set(name, serialize(name, value))
2624
}
2725

2826
searchParams.sort()
2927
return searchParams.toString()
3028
}
3129

32-
const throwIfUnserializable = (k: string, v: unknown): void => {
30+
const serialize = (k: string, v: unknown): string => {
3331
if (v == null) {
3432
throw new UnserializableParamError(k, `is ${v} or contains ${v}`)
3533
}
@@ -44,6 +42,17 @@ const throwIfUnserializable = (k: string, v: unknown): void => {
4442
if (typeof v === 'object') {
4543
throw new UnserializableParamError(k, 'is an object or contains an object')
4644
}
45+
46+
if (typeof v === 'symbol') {
47+
throw new UnserializableParamError(k, 'is a symbol')
48+
}
49+
50+
if (typeof v === 'string') return v.toString()
51+
if (typeof v === 'number') return v.toString()
52+
if (typeof v === 'bigint') return v.toString()
53+
if (typeof v === 'boolean') return v.toString()
54+
55+
throw new UnserializableParamError(k, `is a ${typeof v}`)
4756
}
4857

4958
export class UnserializableParamError extends Error {

0 commit comments

Comments
 (0)