Comparing version 6.10.5 to 6.11.0
@@ -0,1 +1,5 @@ | ||
## **6.11.0 | ||
- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442) | ||
- [readme] fix version badge | ||
## **6.10.5** | ||
@@ -2,0 +6,0 @@ - [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434) |
@@ -65,2 +65,3 @@ 'use strict'; | ||
generateArrayPrefix, | ||
commaRoundTrip, | ||
strictNullHandling, | ||
@@ -130,3 +131,3 @@ skipNulls, | ||
} | ||
return [formatter(keyValue) + (isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined]; | ||
return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined]; | ||
} | ||
@@ -155,3 +156,3 @@ return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; | ||
var adjustedPrefix = generateArrayPrefix === 'comma' && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix; | ||
var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix; | ||
@@ -177,2 +178,3 @@ for (var j = 0; j < objKeys.length; ++j) { | ||
generateArrayPrefix, | ||
commaRoundTrip, | ||
strictNullHandling, | ||
@@ -274,2 +276,6 @@ skipNulls, | ||
var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; | ||
if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { | ||
throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); | ||
} | ||
var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip; | ||
@@ -295,2 +301,3 @@ if (!objKeys) { | ||
generateArrayPrefix, | ||
commaRoundTrip, | ||
options.strictNullHandling, | ||
@@ -297,0 +304,0 @@ options.skipNulls, |
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://github.com/ljharb/qs", | ||
"version": "6.10.5", | ||
"version": "6.11.0", | ||
"repository": { | ||
@@ -8,0 +8,0 @@ "type": "git", |
@@ -1,2 +0,2 @@ | ||
# qs <sup>[![Version Badge][2]][1]</sup> | ||
# qs <sup>[![Version Badge][npm-version-svg]][package-url]</sup> | ||
@@ -405,2 +405,4 @@ [![github actions][actions-image]][actions-url] | ||
Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse. | ||
When objects are stringified, by default they use bracket notation: | ||
@@ -407,0 +409,0 @@ |
@@ -147,3 +147,4 @@ 'use strict'; | ||
s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c'); | ||
s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a[]=c'); // so it parses back as an array | ||
s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); | ||
s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array | ||
s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c'); | ||
@@ -383,3 +384,4 @@ | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b[]=&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c'); | ||
// with strictNullHandling | ||
@@ -389,3 +391,4 @@ st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b[]&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c'); | ||
st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c'); | ||
// with skipNulls | ||
@@ -718,2 +721,14 @@ st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c'); | ||
), | ||
'a=' + date.getTime(), | ||
'works with arrayFormat comma' | ||
); | ||
st.equal( | ||
qs.stringify( | ||
{ a: [date] }, | ||
{ | ||
serializeDate: function (d) { return d.getTime(); }, | ||
arrayFormat: 'comma', | ||
commaRoundTrip: true | ||
} | ||
), | ||
'a%5B%5D=' + date.getTime(), | ||
@@ -720,0 +735,0 @@ 'works with arrayFormat comma' |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
229455
4148
0
626