summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/request/node_modules/qs/lib/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/request/node_modules/qs/lib/utils.js')
-rwxr-xr-xdeps/npm/node_modules/request/node_modules/qs/lib/utils.js133
1 files changed, 133 insertions, 0 deletions
diff --git a/deps/npm/node_modules/request/node_modules/qs/lib/utils.js b/deps/npm/node_modules/request/node_modules/qs/lib/utils.js
new file mode 100755
index 0000000000..3f5c149d50
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/qs/lib/utils.js
@@ -0,0 +1,133 @@
+// Load modules
+
+
+// Declare internals
+
+var internals = {};
+
+
+exports.arrayToObject = function (source) {
+
+ var obj = {};
+ for (var i = 0, il = source.length; i < il; ++i) {
+ if (typeof source[i] !== 'undefined') {
+
+ obj[i] = source[i];
+ }
+ }
+
+ return obj;
+};
+
+
+exports.clone = function (source) {
+
+ if (typeof source !== 'object' ||
+ source === null) {
+
+ return source;
+ }
+
+ if (Buffer.isBuffer(source)) {
+ return source.toString();
+ }
+
+ var obj = Array.isArray(source) ? [] : {};
+ for (var i in source) {
+ if (source.hasOwnProperty(i)) {
+ obj[i] = exports.clone(source[i]);
+ }
+ }
+
+ return obj;
+};
+
+
+exports.merge = function (target, source) {
+
+ if (!source) {
+ return target;
+ }
+
+ var obj = exports.clone(target);
+
+ if (Array.isArray(source)) {
+ for (var i = 0, il = source.length; i < il; ++i) {
+ if (typeof source[i] !== 'undefined') {
+ if (typeof obj[i] === 'object') {
+ obj[i] = exports.merge(obj[i], source[i]);
+ }
+ else {
+ obj[i] = source[i];
+ }
+ }
+ }
+
+ return obj;
+ }
+
+ if (Array.isArray(obj)) {
+ obj = exports.arrayToObject(obj);
+ }
+
+ var keys = Object.keys(source);
+ for (var k = 0, kl = keys.length; k < kl; ++k) {
+ var key = keys[k];
+ var value = source[key];
+
+ if (value &&
+ typeof value === 'object') {
+
+ if (!obj[key]) {
+ obj[key] = exports.clone(value);
+ }
+ else {
+ obj[key] = exports.merge(obj[key], value);
+ }
+ }
+ else {
+ obj[key] = value;
+ }
+ }
+
+ return obj;
+};
+
+
+exports.decode = function (str) {
+
+ try {
+ return decodeURIComponent(str.replace(/\+/g, ' '));
+ } catch (e) {
+ return str;
+ }
+};
+
+
+exports.compact = function (obj) {
+
+ if (typeof obj !== 'object' || obj === null) {
+ return obj;
+ }
+
+ var compacted = {};
+
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ if (Array.isArray(obj[key])) {
+ compacted[key] = [];
+
+ for (var i = 0, l = obj[key].length; i < l; i++) {
+ if (typeof obj[key][i] !== 'undefined') {
+ compacted[key].push(obj[key][i]);
+ }
+ }
+ }
+ else {
+ compacted[key] = exports.compact(obj[key]);
+ }
+ }
+ }
+
+ return compacted;
+};