diff --git a/base.js b/base.js index 7914110..07daf47 100644 --- a/base.js +++ b/base.js @@ -516,7 +516,7 @@ export function stringifyUrl(object, options) { const queryFromUrl = extract(object.url); const query = { - ...parse(queryFromUrl, {sort: false}), + ...parse(queryFromUrl, {sort: false, ...options}), ...object.query, }; diff --git a/package.json b/package.json index 452b3f7..90415c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "query-string", - "version": "9.2.0", + "version": "9.2.1", "description": "Parse and stringify URL query strings", "license": "MIT", "repository": "sindresorhus/query-string", diff --git a/test/stringify-url.js b/test/stringify-url.js index 706a272..a18474b 100644 --- a/test/stringify-url.js +++ b/test/stringify-url.js @@ -58,3 +58,26 @@ test('stringify URL from the result of `parseUrl` with query string that contain test('stringify URL without sorting existing query params', t => { t.is(queryString.stringifyUrl({url: 'https://foo.bar?C=3&A=1', query: {D: 4, B: 2}}, {sort: false}), 'https://foo.bar?C=3&A=1&D=4&B=2'); }); + +test('stringifyUrl uses parsing options when parsing existing query from url', t => { + const currentUrl = 'https://localhost:3000/?array[]=item1'; + + const result = queryString.stringifyUrl( + { + url: currentUrl, + query: { + array: [ + 'item1', + 'item2', + ], + }, + }, + { + arrayFormat: 'bracket', + skipEmptyString: true, + skipNull: true, + }, + ); + + t.is(result, 'https://localhost:3000/?array[]=item1&array[]=item2'); +});