Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/qs/lib/stringify.js')
-rw-r--r--node_modules/qs/lib/stringify.js35
1 files changed, 28 insertions, 7 deletions
diff --git a/node_modules/qs/lib/stringify.js b/node_modules/qs/lib/stringify.js
index 7414284c5..6a73004c4 100644
--- a/node_modules/qs/lib/stringify.js
+++ b/node_modules/qs/lib/stringify.js
@@ -21,11 +21,13 @@ var internals = {
return prefix;
}
},
- strictNullHandling: false
+ strictNullHandling: false,
+ skipNulls: false,
+ encode: true
};
-internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) {
+internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter) {
if (typeof filter === 'function') {
obj = filter(prefix, obj);
@@ -38,7 +40,7 @@ internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHand
}
else if (obj === null) {
if (strictNullHandling) {
- return Utils.encode(prefix);
+ return encode ? Utils.encode(prefix) : prefix;
}
obj = '';
@@ -48,7 +50,10 @@ internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHand
typeof obj === 'number' ||
typeof obj === 'boolean') {
- return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
+ if (encode) {
+ return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
+ }
+ return [prefix + '=' + obj];
}
var values = [];
@@ -61,11 +66,17 @@ internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHand
for (var i = 0, il = objKeys.length; i < il; ++i) {
var key = objKeys[i];
+ if (skipNulls &&
+ obj[key] === null) {
+
+ continue;
+ }
+
if (Array.isArray(obj)) {
- values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter));
+ values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encode, filter));
}
else {
- values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter));
+ values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, skipNulls, encode, filter));
}
}
@@ -78,6 +89,8 @@ module.exports = function (obj, options) {
options = options || {};
var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
+ var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : internals.skipNulls;
+ var encode = typeof options.encode === 'boolean' ? options.encode : internals.encode;
var objKeys;
var filter;
if (typeof options.filter === 'function') {
@@ -112,9 +125,17 @@ module.exports = function (obj, options) {
if (!objKeys) {
objKeys = Object.keys(obj);
}
+
for (var i = 0, il = objKeys.length; i < il; ++i) {
var key = objKeys[i];
- keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter));
+
+ if (skipNulls &&
+ obj[key] === null) {
+
+ continue;
+ }
+
+ keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter));
}
return keys.join(delimiter);