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.
Files changed (2) hide show
  1. package/index.js +15 -36
  2. 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) ret.push(key);
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] = createObject();
83
- var t = createObject();
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 = createObject();
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: createObject() }).base;
208
+ }, { base: {} }).base;
231
209
 
232
- return restoreProto(compact(ret));
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)) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "qs",
3
3
  "description": "querystring parser",
4
- "version": "0.6.5",
4
+ "version": "0.6.6",
5
5
  "keywords": ["query string", "parser", "component"],
6
6
  "repository": {
7
7
  "type" : "git",