qs 0.6.2 → 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 +34 -20
- package/package.json +1 -6
package/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
|
|
2
1
|
/**
|
|
3
2
|
* Object#toString() ref for stringify().
|
|
4
3
|
*/
|
|
5
4
|
|
|
6
5
|
var toString = Object.prototype.toString;
|
|
7
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Object#hasOwnProperty ref
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
12
|
+
|
|
8
13
|
/**
|
|
9
14
|
* Array#indexOf shim.
|
|
10
15
|
*/
|
|
@@ -32,7 +37,11 @@ var isArray = Array.isArray || function(arr) {
|
|
|
32
37
|
|
|
33
38
|
var objectKeys = Object.keys || function(obj) {
|
|
34
39
|
var ret = [];
|
|
35
|
-
for (var key in obj)
|
|
40
|
+
for (var key in obj) {
|
|
41
|
+
if (obj.hasOwnProperty(key)) {
|
|
42
|
+
ret.push(key);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
36
45
|
return ret;
|
|
37
46
|
};
|
|
38
47
|
|
|
@@ -57,16 +66,6 @@ var reduce = function(arr, fn, initial) {
|
|
|
57
66
|
return res;
|
|
58
67
|
};
|
|
59
68
|
|
|
60
|
-
/**
|
|
61
|
-
* Create a nullary object if possible
|
|
62
|
-
*/
|
|
63
|
-
|
|
64
|
-
function createObject() {
|
|
65
|
-
return Object.create
|
|
66
|
-
? Object.create(null)
|
|
67
|
-
: {};
|
|
68
|
-
}
|
|
69
|
-
|
|
70
69
|
/**
|
|
71
70
|
* Cache non-integer test regexp.
|
|
72
71
|
*/
|
|
@@ -74,15 +73,23 @@ function createObject() {
|
|
|
74
73
|
var isint = /^[0-9]+$/;
|
|
75
74
|
|
|
76
75
|
function promote(parent, key) {
|
|
77
|
-
if (parent[key].length == 0) return parent[key] =
|
|
78
|
-
var t =
|
|
79
|
-
for (var i in parent[key])
|
|
76
|
+
if (parent[key].length == 0) return parent[key] = {}
|
|
77
|
+
var t = {};
|
|
78
|
+
for (var i in parent[key]) {
|
|
79
|
+
if (hasOwnProperty.call(parent[key], i)) {
|
|
80
|
+
t[i] = parent[key][i];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
80
83
|
parent[key] = t;
|
|
81
84
|
return t;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
function parse(parts, parent, key, val) {
|
|
85
88
|
var part = parts.shift();
|
|
89
|
+
|
|
90
|
+
// illegal
|
|
91
|
+
if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return;
|
|
92
|
+
|
|
86
93
|
// end
|
|
87
94
|
if (!part) {
|
|
88
95
|
if (isArray(parent[key])) {
|
|
@@ -131,7 +138,7 @@ function merge(parent, key, val){
|
|
|
131
138
|
// optimize
|
|
132
139
|
} else {
|
|
133
140
|
if (!isint.test(key) && isArray(parent.base)) {
|
|
134
|
-
var t =
|
|
141
|
+
var t = {};
|
|
135
142
|
for (var k in parent.base) t[k] = parent.base[k];
|
|
136
143
|
parent.base = t;
|
|
137
144
|
}
|
|
@@ -142,7 +149,7 @@ function merge(parent, key, val){
|
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
/**
|
|
145
|
-
* Compact sparse arrays
|
|
152
|
+
* Compact sparse arrays.
|
|
146
153
|
*/
|
|
147
154
|
|
|
148
155
|
function compact(obj) {
|
|
@@ -150,7 +157,13 @@ function compact(obj) {
|
|
|
150
157
|
|
|
151
158
|
if (isArray(obj)) {
|
|
152
159
|
var ret = [];
|
|
153
|
-
|
|
160
|
+
|
|
161
|
+
for (var i in obj) {
|
|
162
|
+
if (hasOwnProperty.call(obj, i)) {
|
|
163
|
+
ret.push(obj[i]);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
154
167
|
return ret;
|
|
155
168
|
}
|
|
156
169
|
|
|
@@ -161,13 +174,13 @@ function compact(obj) {
|
|
|
161
174
|
return obj;
|
|
162
175
|
}
|
|
163
176
|
|
|
164
|
-
|
|
165
177
|
/**
|
|
166
178
|
* Parse the given obj.
|
|
167
179
|
*/
|
|
168
180
|
|
|
169
181
|
function parseObject(obj){
|
|
170
182
|
var ret = { base: {} };
|
|
183
|
+
|
|
171
184
|
forEach(objectKeys(obj), function(name){
|
|
172
185
|
merge(ret, name, obj[name]);
|
|
173
186
|
});
|
|
@@ -192,7 +205,7 @@ function parseString(str){
|
|
|
192
205
|
if ('' == key) return ret;
|
|
193
206
|
|
|
194
207
|
return merge(ret, decode(key), decode(val));
|
|
195
|
-
}, { base:
|
|
208
|
+
}, { base: {} }).base;
|
|
196
209
|
|
|
197
210
|
return compact(ret);
|
|
198
211
|
}
|
|
@@ -306,6 +319,7 @@ function stringifyObject(obj, prefix) {
|
|
|
306
319
|
|
|
307
320
|
function set(obj, key, val) {
|
|
308
321
|
var v = obj[key];
|
|
322
|
+
if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return;
|
|
309
323
|
if (undefined === v) {
|
|
310
324
|
obj[key] = val;
|
|
311
325
|
} else if (isArray(v)) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qs",
|
|
3
3
|
"description": "querystring parser",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.6",
|
|
5
5
|
"keywords": ["query string", "parser", "component"],
|
|
6
6
|
"repository": {
|
|
7
7
|
"type" : "git",
|
|
@@ -14,11 +14,6 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"test": "make test"
|
|
16
16
|
},
|
|
17
|
-
"component": {
|
|
18
|
-
"scripts": {
|
|
19
|
-
"querystring": "querystring.js"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
17
|
"author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
|
|
23
18
|
"main": "index",
|
|
24
19
|
"engines": { "node": "*" }
|