qs 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +15 -36
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -37,7 +37,11 @@ var isArray = Array.isArray || function(arr) {
|
|
|
37
37
|
|
|
38
38
|
var objectKeys = Object.keys || function(obj) {
|
|
39
39
|
var ret = [];
|
|
40
|
-
for (var key in obj)
|
|
40
|
+
for (var key in obj) {
|
|
41
|
+
if (obj.hasOwnProperty(key)) {
|
|
42
|
+
ret.push(key);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
41
45
|
return ret;
|
|
42
46
|
};
|
|
43
47
|
|
|
@@ -62,16 +66,6 @@ var reduce = function(arr, fn, initial) {
|
|
|
62
66
|
return res;
|
|
63
67
|
};
|
|
64
68
|
|
|
65
|
-
/**
|
|
66
|
-
* Create a nullary object if possible
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
function createObject() {
|
|
70
|
-
return Object.create
|
|
71
|
-
? Object.create(null)
|
|
72
|
-
: {};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
69
|
/**
|
|
76
70
|
* Cache non-integer test regexp.
|
|
77
71
|
*/
|
|
@@ -79,8 +73,8 @@ function createObject() {
|
|
|
79
73
|
var isint = /^[0-9]+$/;
|
|
80
74
|
|
|
81
75
|
function promote(parent, key) {
|
|
82
|
-
if (parent[key].length == 0) return parent[key] =
|
|
83
|
-
var t =
|
|
76
|
+
if (parent[key].length == 0) return parent[key] = {}
|
|
77
|
+
var t = {};
|
|
84
78
|
for (var i in parent[key]) {
|
|
85
79
|
if (hasOwnProperty.call(parent[key], i)) {
|
|
86
80
|
t[i] = parent[key][i];
|
|
@@ -92,6 +86,10 @@ function promote(parent, key) {
|
|
|
92
86
|
|
|
93
87
|
function parse(parts, parent, key, val) {
|
|
94
88
|
var part = parts.shift();
|
|
89
|
+
|
|
90
|
+
// illegal
|
|
91
|
+
if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return;
|
|
92
|
+
|
|
95
93
|
// end
|
|
96
94
|
if (!part) {
|
|
97
95
|
if (isArray(parent[key])) {
|
|
@@ -140,7 +138,7 @@ function merge(parent, key, val){
|
|
|
140
138
|
// optimize
|
|
141
139
|
} else {
|
|
142
140
|
if (!isint.test(key) && isArray(parent.base)) {
|
|
143
|
-
var t =
|
|
141
|
+
var t = {};
|
|
144
142
|
for (var k in parent.base) t[k] = parent.base[k];
|
|
145
143
|
parent.base = t;
|
|
146
144
|
}
|
|
@@ -176,26 +174,6 @@ function compact(obj) {
|
|
|
176
174
|
return obj;
|
|
177
175
|
}
|
|
178
176
|
|
|
179
|
-
/**
|
|
180
|
-
* Restore Object.prototype.
|
|
181
|
-
* see pull-request #58
|
|
182
|
-
*/
|
|
183
|
-
|
|
184
|
-
function restoreProto(obj) {
|
|
185
|
-
if (!Object.create) return obj;
|
|
186
|
-
if (isArray(obj)) return obj;
|
|
187
|
-
if (obj && 'object' != typeof obj) return obj;
|
|
188
|
-
|
|
189
|
-
for (var key in obj) {
|
|
190
|
-
if (hasOwnProperty.call(obj, key)) {
|
|
191
|
-
obj[key] = restoreProto(obj[key]);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
obj.__proto__ = Object.prototype;
|
|
196
|
-
return obj;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
177
|
/**
|
|
200
178
|
* Parse the given obj.
|
|
201
179
|
*/
|
|
@@ -227,9 +205,9 @@ function parseString(str){
|
|
|
227
205
|
if ('' == key) return ret;
|
|
228
206
|
|
|
229
207
|
return merge(ret, decode(key), decode(val));
|
|
230
|
-
}, { base:
|
|
208
|
+
}, { base: {} }).base;
|
|
231
209
|
|
|
232
|
-
return
|
|
210
|
+
return compact(ret);
|
|
233
211
|
}
|
|
234
212
|
|
|
235
213
|
/**
|
|
@@ -341,6 +319,7 @@ function stringifyObject(obj, prefix) {
|
|
|
341
319
|
|
|
342
320
|
function set(obj, key, val) {
|
|
343
321
|
var v = obj[key];
|
|
322
|
+
if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return;
|
|
344
323
|
if (undefined === v) {
|
|
345
324
|
obj[key] = val;
|
|
346
325
|
} else if (isArray(v)) {
|