summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/qs/lib/utils.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@zkat.tech>2018-07-18 13:55:52 -0700
committerMichaël Zasso <targos@protonmail.com>2018-07-29 14:16:56 +0200
commit5842366ae83a36065d626e3937ad8fc327efab30 (patch)
tree663eb6d493b00788d83d7a71fc2489adabd24527 /deps/npm/node_modules/qs/lib/utils.js
parent2aca0957f46af0be33368a1fcb398e63a35c46ef (diff)
downloadandroid-node-v8-5842366ae83a36065d626e3937ad8fc327efab30.tar.gz
android-node-v8-5842366ae83a36065d626e3937ad8fc327efab30.tar.bz2
android-node-v8-5842366ae83a36065d626e3937ad8fc327efab30.zip
deps: upgrade npm to 6.2.0
PR-URL: https://github.com/nodejs/node/pull/21592 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/npm/node_modules/qs/lib/utils.js')
-rw-r--r--deps/npm/node_modules/qs/lib/utils.js125
1 files changed, 47 insertions, 78 deletions
diff --git a/deps/npm/node_modules/qs/lib/utils.js b/deps/npm/node_modules/qs/lib/utils.js
index 8775a3270c..b214332376 100644
--- a/deps/npm/node_modules/qs/lib/utils.js
+++ b/deps/npm/node_modules/qs/lib/utils.js
@@ -11,30 +11,7 @@ var hexTable = (function () {
return array;
}());
-var compactQueue = function compactQueue(queue) {
- var obj;
-
- while (queue.length) {
- var item = queue.pop();
- obj = item.obj[item.prop];
-
- if (Array.isArray(obj)) {
- var compacted = [];
-
- for (var j = 0; j < obj.length; ++j) {
- if (typeof obj[j] !== 'undefined') {
- compacted.push(obj[j]);
- }
- }
-
- item.obj[item.prop] = compacted;
- }
- }
-
- return obj;
-};
-
-var arrayToObject = function arrayToObject(source, options) {
+exports.arrayToObject = function (source, options) {
var obj = options && options.plainObjects ? Object.create(null) : {};
for (var i = 0; i < source.length; ++i) {
if (typeof source[i] !== 'undefined') {
@@ -45,7 +22,7 @@ var arrayToObject = function arrayToObject(source, options) {
return obj;
};
-var merge = function merge(target, source, options) {
+exports.merge = function (target, source, options) {
if (!source) {
return target;
}
@@ -70,14 +47,14 @@ var merge = function merge(target, source, options) {
var mergeTarget = target;
if (Array.isArray(target) && !Array.isArray(source)) {
- mergeTarget = arrayToObject(target, options);
+ mergeTarget = exports.arrayToObject(target, options);
}
if (Array.isArray(target) && Array.isArray(source)) {
source.forEach(function (item, i) {
if (has.call(target, i)) {
if (target[i] && typeof target[i] === 'object') {
- target[i] = merge(target[i], item, options);
+ target[i] = exports.merge(target[i], item, options);
} else {
target.push(item);
}
@@ -91,8 +68,8 @@ var merge = function merge(target, source, options) {
return Object.keys(source).reduce(function (acc, key) {
var value = source[key];
- if (has.call(acc, key)) {
- acc[key] = merge(acc[key], value, options);
+ if (Object.prototype.hasOwnProperty.call(acc, key)) {
+ acc[key] = exports.merge(acc[key], value, options);
} else {
acc[key] = value;
}
@@ -100,14 +77,7 @@ var merge = function merge(target, source, options) {
}, mergeTarget);
};
-var assign = function assignSingleSource(target, source) {
- return Object.keys(source).reduce(function (acc, key) {
- acc[key] = source[key];
- return acc;
- }, target);
-};
-
-var decode = function (str) {
+exports.decode = function (str) {
try {
return decodeURIComponent(str.replace(/\+/g, ' '));
} catch (e) {
@@ -115,7 +85,7 @@ var decode = function (str) {
}
};
-var encode = function encode(str) {
+exports.encode = function (str) {
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
// It has been adapted here for stricter adherence to RFC 3986
if (str.length === 0) {
@@ -129,13 +99,13 @@ var encode = function encode(str) {
var c = string.charCodeAt(i);
if (
- c === 0x2D // -
- || c === 0x2E // .
- || c === 0x5F // _
- || c === 0x7E // ~
- || (c >= 0x30 && c <= 0x39) // 0-9
- || (c >= 0x41 && c <= 0x5A) // a-z
- || (c >= 0x61 && c <= 0x7A) // A-Z
+ c === 0x2D || // -
+ c === 0x2E || // .
+ c === 0x5F || // _
+ c === 0x7E || // ~
+ (c >= 0x30 && c <= 0x39) || // 0-9
+ (c >= 0x41 && c <= 0x5A) || // a-z
+ (c >= 0x61 && c <= 0x7A) // A-Z
) {
out += string.charAt(i);
continue;
@@ -158,56 +128,55 @@ var encode = function encode(str) {
i += 1;
c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
- out += hexTable[0xF0 | (c >> 18)]
- + hexTable[0x80 | ((c >> 12) & 0x3F)]
- + hexTable[0x80 | ((c >> 6) & 0x3F)]
- + hexTable[0x80 | (c & 0x3F)];
+ out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]; // eslint-disable-line max-len
}
return out;
};
-var compact = function compact(value) {
- var queue = [{ obj: { o: value }, prop: 'o' }];
- var refs = [];
-
- for (var i = 0; i < queue.length; ++i) {
- var item = queue[i];
- var obj = item.obj[item.prop];
-
- var keys = Object.keys(obj);
- for (var j = 0; j < keys.length; ++j) {
- var key = keys[j];
- var val = obj[key];
- if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
- queue.push({ obj: obj, prop: key });
- refs.push(val);
+exports.compact = function (obj, references) {
+ if (typeof obj !== 'object' || obj === null) {
+ return obj;
+ }
+
+ var refs = references || [];
+ var lookup = refs.indexOf(obj);
+ if (lookup !== -1) {
+ return refs[lookup];
+ }
+
+ refs.push(obj);
+
+ if (Array.isArray(obj)) {
+ var compacted = [];
+
+ for (var i = 0; i < obj.length; ++i) {
+ if (obj[i] && typeof obj[i] === 'object') {
+ compacted.push(exports.compact(obj[i], refs));
+ } else if (typeof obj[i] !== 'undefined') {
+ compacted.push(obj[i]);
}
}
+
+ return compacted;
}
- return compactQueue(queue);
+ var keys = Object.keys(obj);
+ keys.forEach(function (key) {
+ obj[key] = exports.compact(obj[key], refs);
+ });
+
+ return obj;
};
-var isRegExp = function isRegExp(obj) {
+exports.isRegExp = function (obj) {
return Object.prototype.toString.call(obj) === '[object RegExp]';
};
-var isBuffer = function isBuffer(obj) {
+exports.isBuffer = function (obj) {
if (obj === null || typeof obj === 'undefined') {
return false;
}
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
};
-
-module.exports = {
- arrayToObject: arrayToObject,
- assign: assign,
- compact: compact,
- decode: decode,
- encode: encode,
- isBuffer: isBuffer,
- isRegExp: isRegExp,
- merge: merge
-};