Skip to content

Commit 4cd0032

Browse files
committed
v6.9.7
1 parent e799ba5 commit 4cd0032

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## **6.9.7**
2+
- [Fix] `parse`: ignore `__proto__` keys (#428)
3+
- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424)
4+
- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
5+
- [readme] remove travis badge; add github actions/codecov badges; update URLs
6+
- [Docs] add note and links for coercing primitive values (#408)
7+
- [Tests] clean up stringify tests slightly
8+
- [meta] fix README.md (#399)
9+
- Revert "[meta] ignore eclint transitive audit warning"
10+
- [actions] backport actions from main
11+
- [Dev Deps] backport updates from main
12+
113
## **6.9.6**
214
- [Fix] restore `dist` dir; mistakenly removed in d4f6c32
315

dist/qs.js

+16-6
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ var parseObject = function (chain, val, options, valuesParsed) {
174174
) {
175175
obj = [];
176176
obj[index] = leaf;
177-
} else {
177+
} else if (cleanRoot !== '__proto__') {
178178
obj[cleanRoot] = leaf;
179179
}
180180
}
@@ -316,6 +316,7 @@ var arrayPrefixGenerators = {
316316
};
317317

318318
var isArray = Array.isArray;
319+
var split = String.prototype.split;
319320
var push = Array.prototype.push;
320321
var pushToArray = function (arr, valueOrArray) {
321322
push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
@@ -393,6 +394,14 @@ var stringify = function stringify(
393394
if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
394395
if (encoder) {
395396
var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
397+
if (generateArrayPrefix === 'comma' && encodeValuesOnly) {
398+
var valuesArray = split.call(String(obj), ',');
399+
var valuesJoined = '';
400+
for (var i = 0; i < valuesArray.length; ++i) {
401+
valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
402+
}
403+
return [formatter(keyValue) + '=' + valuesJoined];
404+
}
396405
return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
397406
}
398407
return [formatter(prefix) + '=' + formatter(String(obj))];
@@ -407,17 +416,17 @@ var stringify = function stringify(
407416
var objKeys;
408417
if (generateArrayPrefix === 'comma' && isArray(obj)) {
409418
// we need to join elements in
410-
objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];
419+
objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
411420
} else if (isArray(filter)) {
412421
objKeys = filter;
413422
} else {
414423
var keys = Object.keys(obj);
415424
objKeys = sort ? keys.sort(sort) : keys;
416425
}
417426

418-
for (var i = 0; i < objKeys.length; ++i) {
419-
var key = objKeys[i];
420-
var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];
427+
for (var j = 0; j < objKeys.length; ++j) {
428+
var key = objKeys[j];
429+
var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
421430

422431
if (skipNulls && value === null) {
423432
continue;
@@ -453,7 +462,7 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
453462
return defaults;
454463
}
455464

456-
if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {
465+
if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
457466
throw new TypeError('Encoder has to be a function.');
458467
}
459468

@@ -755,6 +764,7 @@ var encode = function encode(str, defaultEncoder, charset, kind, format) {
755764

756765
i += 1;
757766
c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
767+
/* eslint operator-linebreak: [2, "before"] */
758768
out += hexTable[0xF0 | (c >> 18)]
759769
+ hexTable[0x80 | ((c >> 12) & 0x3F)]
760770
+ hexTable[0x80 | ((c >> 6) & 0x3F)]

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "qs",
33
"description": "A querystring parser that supports nesting and arrays, with a depth limit",
44
"homepage": "https://github.com/ljharb/qs",
5-
"version": "6.9.6",
5+
"version": "6.9.7",
66
"repository": {
77
"type": "git",
88
"url": "https://github.com/ljharb/qs.git"

0 commit comments

Comments
 (0)