Skip to content

Commit 35f7ce5

Browse files
committed
Use arrayLimit: 0 instead of parseArrays: false for qs.parse
1 parent f7787d5 commit 35f7ce5

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/core/src/url.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function mergeDataIntoQueryString<T extends RequestPayload>(
6161
const url = new URL(href.toString(), typeof window === 'undefined' ? 'http://localhost' : window.location.toString())
6262

6363
if (hasDataForQueryString) {
64-
const parseOptions = { ignoreQueryPrefix: true, parseArrays: false }
64+
const parseOptions = { ignoreQueryPrefix: true, arrayLimit: 0 }
6565
url.search = qs.stringify(
6666
{ ...qs.parse(url.search, parseOptions), ...data },
6767
{

tests/core/url.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ test.describe('url.ts', () => {
2929
expect(data).toEqual({})
3030
})
3131

32+
test('merges new data into an existing query string with array values', () => {
33+
const [href, data] = mergeDataIntoQueryString('get', '/search?frameworks[]=react&frameworks[]=vue', {
34+
q: 'bar',
35+
})
36+
37+
expect(href).toBe('/search?frameworks[]=react&frameworks[]=vue&q=bar')
38+
expect(data).toEqual({})
39+
})
40+
41+
test('merges new data into an existing query string with array values using index notation', () => {
42+
const [href, data] = mergeDataIntoQueryString(
43+
'get',
44+
'/search?frameworks[0]=react&frameworks[1]=vue',
45+
{ q: 'bar' },
46+
'indices',
47+
)
48+
49+
expect(href).toBe('/search?frameworks[0]=react&frameworks[1]=vue&q=bar')
50+
expect(data).toEqual({})
51+
})
52+
3253
test('overwrites existing keys in the query string when they also exist in the data', () => {
3354
const [href, data] = mergeDataIntoQueryString('get', '/search?q=old', { q: 'new' })
3455

0 commit comments

Comments
 (0)