socketioMEANseed/server/node_modules/qs/lib/utils.js
server/node_modules/qs/lib/utils.jsRaw
1// Load modules
2
3
4// Declare internals
5
6var internals = {};
7
8
9exports.arrayToObject = function (source) {
10
11 var obj = {};
12 for (var i = 0, il = source.length; i < il; ++i) {
13 if (typeof source[i] !== 'undefined') {
14
15 obj[i] = source[i];
16 }
17 }
18
19 return obj;
20};
21
22
23exports.merge = function (target, source) {
24
25 if (!source) {
26 return target;
27 }
28
29 if (typeof source !== 'object') {
30 if (Array.isArray(target)) {
31 target.push(source);
32 }
33 else {
34 target[source] = true;
35 }
36
37 return target;
38 }
39
40 if (typeof target !== 'object') {
41 target = [target].concat(source);
42 return target;
43 }
44
45 if (Array.isArray(target) &&
46 !Array.isArray(source)) {
47
48 target = exports.arrayToObject(target);
49 }
50
51 var keys = Object.keys(source);
52 for (var k = 0, kl = keys.length; k < kl; ++k) {
53 var key = keys[k];
54 var value = source[key];
55
56 if (!target[key]) {
57 target[key] = value;
58 }
59 else {
60 target[key] = exports.merge(target[key], value);
61 }
62 }
63
64 return target;
65};
66
67
68exports.decode = function (str) {
69
70 try {
71 return decodeURIComponent(str.replace(/\+/g, ' '));
72 } catch (e) {
73 return str;
74 }
75};
76
77
78exports.compact = function (obj, refs) {
79
80 if (typeof obj !== 'object' ||
81 obj === null) {
82
83 return obj;
84 }
85
86 refs = refs || [];
87 var lookup = refs.indexOf(obj);
88 if (lookup !== -1) {
89 return refs[lookup];
90 }
91
92 refs.push(obj);
93
94 if (Array.isArray(obj)) {
95 var compacted = [];
96
97 for (var i = 0, l = obj.length; i < l; ++i) {
98 if (typeof obj[i] !== 'undefined') {
99 compacted.push(obj[i]);
100 }
101 }
102
103 return compacted;
104 }
105
106 var keys = Object.keys(obj);
107 for (var i = 0, il = keys.length; i < il; ++i) {
108 var key = keys[i];
109 obj[key] = exports.compact(obj[key], refs);
110 }
111
112 return obj;
113};
114
115
116exports.isRegExp = function (obj) {
117 return Object.prototype.toString.call(obj) === '[object RegExp]';
118};
119
120
121exports.isBuffer = function (obj) {
122
123 if (obj === null ||
124 typeof obj === 'undefined') {
125
126 return false;
127 }
128
129 return !!(obj.constructor &&
130 obj.constructor.isBuffer &&
131 obj.constructor.isBuffer(obj));
132};