Fix license issues
[sdnc/oam.git] / dgbuilder / dgeflows / node_modules / body-parser / node_modules / qs / lib / utils.js
1 // Load modules
2
3
4 // Declare internals
5
6 var internals = {};
7
8
9 exports.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
23 exports.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
68 exports.decode = function (str) {
69
70     try {
71         return decodeURIComponent(str.replace(/\+/g, ' '));
72     } catch (e) {
73         return str;
74     }
75 };
76
77
78 exports.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, il = obj.length; i < il; ++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 (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
116 exports.isRegExp = function (obj) {
117     return Object.prototype.toString.call(obj) === '[object RegExp]';
118 };
119
120
121 exports.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 };