diff options
author | Kat Marchán <kzm@zkat.tech> | 2018-07-18 13:55:52 -0700 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-07-29 14:16:56 +0200 |
commit | 5842366ae83a36065d626e3937ad8fc327efab30 (patch) | |
tree | 663eb6d493b00788d83d7a71fc2489adabd24527 /deps/npm/node_modules/qs/lib/utils.js | |
parent | 2aca0957f46af0be33368a1fcb398e63a35c46ef (diff) | |
download | android-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.js | 125 |
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 -}; |