qs 6.5.1 → 6.5.2
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/.eslintrc +1 -1
- package/CHANGELOG.md +5 -0
- package/dist/qs.js +24 -13
- package/lib/utils.js +22 -11
- package/package.json +6 -5
- package/test/parse.js +3 -2
- package/test/stringify.js +4 -3
package/.eslintrc
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
## **6.5.2**
|
|
2
|
+
- [Fix] use `safer-buffer` instead of `Buffer` constructor
|
|
3
|
+
- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230)
|
|
4
|
+
- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify`
|
|
5
|
+
|
|
1
6
|
## **6.5.1**
|
|
2
7
|
- [Fix] Fix parsing & compacting very deep objects (#224)
|
|
3
8
|
- [Refactor] name utils functions
|
package/dist/qs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function e
|
|
1
|
+
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var replace = String.prototype.replace;
|
|
@@ -456,7 +456,7 @@ var compactQueue = function compactQueue(queue) {
|
|
|
456
456
|
return obj;
|
|
457
457
|
};
|
|
458
458
|
|
|
459
|
-
|
|
459
|
+
var arrayToObject = function arrayToObject(source, options) {
|
|
460
460
|
var obj = options && options.plainObjects ? Object.create(null) : {};
|
|
461
461
|
for (var i = 0; i < source.length; ++i) {
|
|
462
462
|
if (typeof source[i] !== 'undefined') {
|
|
@@ -467,7 +467,7 @@ exports.arrayToObject = function arrayToObject(source, options) {
|
|
|
467
467
|
return obj;
|
|
468
468
|
};
|
|
469
469
|
|
|
470
|
-
|
|
470
|
+
var merge = function merge(target, source, options) {
|
|
471
471
|
if (!source) {
|
|
472
472
|
return target;
|
|
473
473
|
}
|
|
@@ -492,14 +492,14 @@ exports.merge = function merge(target, source, options) {
|
|
|
492
492
|
|
|
493
493
|
var mergeTarget = target;
|
|
494
494
|
if (Array.isArray(target) && !Array.isArray(source)) {
|
|
495
|
-
mergeTarget =
|
|
495
|
+
mergeTarget = arrayToObject(target, options);
|
|
496
496
|
}
|
|
497
497
|
|
|
498
498
|
if (Array.isArray(target) && Array.isArray(source)) {
|
|
499
499
|
source.forEach(function (item, i) {
|
|
500
500
|
if (has.call(target, i)) {
|
|
501
501
|
if (target[i] && typeof target[i] === 'object') {
|
|
502
|
-
target[i] =
|
|
502
|
+
target[i] = merge(target[i], item, options);
|
|
503
503
|
} else {
|
|
504
504
|
target.push(item);
|
|
505
505
|
}
|
|
@@ -514,7 +514,7 @@ exports.merge = function merge(target, source, options) {
|
|
|
514
514
|
var value = source[key];
|
|
515
515
|
|
|
516
516
|
if (has.call(acc, key)) {
|
|
517
|
-
acc[key] =
|
|
517
|
+
acc[key] = merge(acc[key], value, options);
|
|
518
518
|
} else {
|
|
519
519
|
acc[key] = value;
|
|
520
520
|
}
|
|
@@ -522,14 +522,14 @@ exports.merge = function merge(target, source, options) {
|
|
|
522
522
|
}, mergeTarget);
|
|
523
523
|
};
|
|
524
524
|
|
|
525
|
-
|
|
525
|
+
var assign = function assignSingleSource(target, source) {
|
|
526
526
|
return Object.keys(source).reduce(function (acc, key) {
|
|
527
527
|
acc[key] = source[key];
|
|
528
528
|
return acc;
|
|
529
529
|
}, target);
|
|
530
530
|
};
|
|
531
531
|
|
|
532
|
-
|
|
532
|
+
var decode = function (str) {
|
|
533
533
|
try {
|
|
534
534
|
return decodeURIComponent(str.replace(/\+/g, ' '));
|
|
535
535
|
} catch (e) {
|
|
@@ -537,7 +537,7 @@ exports.decode = function (str) {
|
|
|
537
537
|
}
|
|
538
538
|
};
|
|
539
539
|
|
|
540
|
-
|
|
540
|
+
var encode = function encode(str) {
|
|
541
541
|
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
|
|
542
542
|
// It has been adapted here for stricter adherence to RFC 3986
|
|
543
543
|
if (str.length === 0) {
|
|
@@ -589,7 +589,7 @@ exports.encode = function encode(str) {
|
|
|
589
589
|
return out;
|
|
590
590
|
};
|
|
591
591
|
|
|
592
|
-
|
|
592
|
+
var compact = function compact(value) {
|
|
593
593
|
var queue = [{ obj: { o: value }, prop: 'o' }];
|
|
594
594
|
var refs = [];
|
|
595
595
|
|
|
@@ -611,11 +611,11 @@ exports.compact = function compact(value) {
|
|
|
611
611
|
return compactQueue(queue);
|
|
612
612
|
};
|
|
613
613
|
|
|
614
|
-
|
|
614
|
+
var isRegExp = function isRegExp(obj) {
|
|
615
615
|
return Object.prototype.toString.call(obj) === '[object RegExp]';
|
|
616
616
|
};
|
|
617
617
|
|
|
618
|
-
|
|
618
|
+
var isBuffer = function isBuffer(obj) {
|
|
619
619
|
if (obj === null || typeof obj === 'undefined') {
|
|
620
620
|
return false;
|
|
621
621
|
}
|
|
@@ -623,5 +623,16 @@ exports.isBuffer = function isBuffer(obj) {
|
|
|
623
623
|
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
|
|
624
624
|
};
|
|
625
625
|
|
|
626
|
+
module.exports = {
|
|
627
|
+
arrayToObject: arrayToObject,
|
|
628
|
+
assign: assign,
|
|
629
|
+
compact: compact,
|
|
630
|
+
decode: decode,
|
|
631
|
+
encode: encode,
|
|
632
|
+
isBuffer: isBuffer,
|
|
633
|
+
isRegExp: isRegExp,
|
|
634
|
+
merge: merge
|
|
635
|
+
};
|
|
636
|
+
|
|
626
637
|
},{}]},{},[2])(2)
|
|
627
|
-
});
|
|
638
|
+
});
|
package/lib/utils.js
CHANGED
|
@@ -34,7 +34,7 @@ var compactQueue = function compactQueue(queue) {
|
|
|
34
34
|
return obj;
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
var arrayToObject = function arrayToObject(source, options) {
|
|
38
38
|
var obj = options && options.plainObjects ? Object.create(null) : {};
|
|
39
39
|
for (var i = 0; i < source.length; ++i) {
|
|
40
40
|
if (typeof source[i] !== 'undefined') {
|
|
@@ -45,7 +45,7 @@ exports.arrayToObject = function arrayToObject(source, options) {
|
|
|
45
45
|
return obj;
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
var merge = function merge(target, source, options) {
|
|
49
49
|
if (!source) {
|
|
50
50
|
return target;
|
|
51
51
|
}
|
|
@@ -70,14 +70,14 @@ exports.merge = function merge(target, source, options) {
|
|
|
70
70
|
|
|
71
71
|
var mergeTarget = target;
|
|
72
72
|
if (Array.isArray(target) && !Array.isArray(source)) {
|
|
73
|
-
mergeTarget =
|
|
73
|
+
mergeTarget = arrayToObject(target, options);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
if (Array.isArray(target) && Array.isArray(source)) {
|
|
77
77
|
source.forEach(function (item, i) {
|
|
78
78
|
if (has.call(target, i)) {
|
|
79
79
|
if (target[i] && typeof target[i] === 'object') {
|
|
80
|
-
target[i] =
|
|
80
|
+
target[i] = merge(target[i], item, options);
|
|
81
81
|
} else {
|
|
82
82
|
target.push(item);
|
|
83
83
|
}
|
|
@@ -92,7 +92,7 @@ exports.merge = function merge(target, source, options) {
|
|
|
92
92
|
var value = source[key];
|
|
93
93
|
|
|
94
94
|
if (has.call(acc, key)) {
|
|
95
|
-
acc[key] =
|
|
95
|
+
acc[key] = merge(acc[key], value, options);
|
|
96
96
|
} else {
|
|
97
97
|
acc[key] = value;
|
|
98
98
|
}
|
|
@@ -100,14 +100,14 @@ exports.merge = function merge(target, source, options) {
|
|
|
100
100
|
}, mergeTarget);
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
var assign = function assignSingleSource(target, source) {
|
|
104
104
|
return Object.keys(source).reduce(function (acc, key) {
|
|
105
105
|
acc[key] = source[key];
|
|
106
106
|
return acc;
|
|
107
107
|
}, target);
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
var decode = function (str) {
|
|
111
111
|
try {
|
|
112
112
|
return decodeURIComponent(str.replace(/\+/g, ' '));
|
|
113
113
|
} catch (e) {
|
|
@@ -115,7 +115,7 @@ exports.decode = function (str) {
|
|
|
115
115
|
}
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
var encode = function encode(str) {
|
|
119
119
|
// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
|
|
120
120
|
// It has been adapted here for stricter adherence to RFC 3986
|
|
121
121
|
if (str.length === 0) {
|
|
@@ -167,7 +167,7 @@ exports.encode = function encode(str) {
|
|
|
167
167
|
return out;
|
|
168
168
|
};
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
var compact = function compact(value) {
|
|
171
171
|
var queue = [{ obj: { o: value }, prop: 'o' }];
|
|
172
172
|
var refs = [];
|
|
173
173
|
|
|
@@ -189,14 +189,25 @@ exports.compact = function compact(value) {
|
|
|
189
189
|
return compactQueue(queue);
|
|
190
190
|
};
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
var isRegExp = function isRegExp(obj) {
|
|
193
193
|
return Object.prototype.toString.call(obj) === '[object RegExp]';
|
|
194
194
|
};
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
var isBuffer = function isBuffer(obj) {
|
|
197
197
|
if (obj === null || typeof obj === 'undefined') {
|
|
198
198
|
return false;
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
|
|
202
202
|
};
|
|
203
|
+
|
|
204
|
+
module.exports = {
|
|
205
|
+
arrayToObject: arrayToObject,
|
|
206
|
+
assign: assign,
|
|
207
|
+
compact: compact,
|
|
208
|
+
decode: decode,
|
|
209
|
+
encode: encode,
|
|
210
|
+
isBuffer: isBuffer,
|
|
211
|
+
isRegExp: isRegExp,
|
|
212
|
+
merge: merge
|
|
213
|
+
};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "qs",
|
|
3
3
|
"description": "A querystring parser that supports nesting and arrays, with a depth limit",
|
|
4
4
|
"homepage": "https://github.com/ljharb/qs",
|
|
5
|
-
"version": "6.5.
|
|
5
|
+
"version": "6.5.2",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/ljharb/qs.git"
|
|
@@ -25,16 +25,17 @@
|
|
|
25
25
|
"dependencies": {},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@ljharb/eslint-config": "^12.2.1",
|
|
28
|
-
"browserify": "^
|
|
28
|
+
"browserify": "^16.2.0",
|
|
29
29
|
"covert": "^1.1.0",
|
|
30
30
|
"editorconfig-tools": "^0.1.1",
|
|
31
|
-
"eslint": "^4.
|
|
31
|
+
"eslint": "^4.19.1",
|
|
32
32
|
"evalmd": "^0.0.17",
|
|
33
|
-
"iconv-lite": "^0.4.
|
|
33
|
+
"iconv-lite": "^0.4.21",
|
|
34
34
|
"mkdirp": "^0.5.1",
|
|
35
35
|
"qs-iconv": "^1.0.4",
|
|
36
36
|
"safe-publish-latest": "^1.1.1",
|
|
37
|
-
"
|
|
37
|
+
"safer-buffer": "^2.1.2",
|
|
38
|
+
"tape": "^4.9.0"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
41
|
"prepublish": "safe-publish-latest && npm run dist",
|
package/test/parse.js
CHANGED
|
@@ -4,6 +4,7 @@ var test = require('tape');
|
|
|
4
4
|
var qs = require('../');
|
|
5
5
|
var utils = require('../lib/utils');
|
|
6
6
|
var iconv = require('iconv-lite');
|
|
7
|
+
var SaferBuffer = require('safer-buffer').Buffer;
|
|
7
8
|
|
|
8
9
|
test('parse()', function (t) {
|
|
9
10
|
t.test('parses a simple string', function (st) {
|
|
@@ -231,7 +232,7 @@ test('parse()', function (t) {
|
|
|
231
232
|
});
|
|
232
233
|
|
|
233
234
|
t.test('parses buffers correctly', function (st) {
|
|
234
|
-
var b =
|
|
235
|
+
var b = SaferBuffer.from('test');
|
|
235
236
|
st.deepEqual(qs.parse({ a: b }), { a: b });
|
|
236
237
|
st.end();
|
|
237
238
|
});
|
|
@@ -539,7 +540,7 @@ test('parse()', function (t) {
|
|
|
539
540
|
result.push(parseInt(parts[1], 16));
|
|
540
541
|
parts = reg.exec(str);
|
|
541
542
|
}
|
|
542
|
-
return iconv.decode(
|
|
543
|
+
return iconv.decode(SaferBuffer.from(result), 'shift_jis').toString();
|
|
543
544
|
}
|
|
544
545
|
}), { 県: '大阪府' });
|
|
545
546
|
st.end();
|
package/test/stringify.js
CHANGED
|
@@ -4,6 +4,7 @@ var test = require('tape');
|
|
|
4
4
|
var qs = require('../');
|
|
5
5
|
var utils = require('../lib/utils');
|
|
6
6
|
var iconv = require('iconv-lite');
|
|
7
|
+
var SaferBuffer = require('safer-buffer').Buffer;
|
|
7
8
|
|
|
8
9
|
test('stringify()', function (t) {
|
|
9
10
|
t.test('stringifies a querystring object', function (st) {
|
|
@@ -336,8 +337,8 @@ test('stringify()', function (t) {
|
|
|
336
337
|
});
|
|
337
338
|
|
|
338
339
|
t.test('stringifies buffer values', function (st) {
|
|
339
|
-
st.equal(qs.stringify({ a:
|
|
340
|
-
st.equal(qs.stringify({ a: { b:
|
|
340
|
+
st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test');
|
|
341
|
+
st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test');
|
|
341
342
|
st.end();
|
|
342
343
|
});
|
|
343
344
|
|
|
@@ -481,7 +482,7 @@ test('stringify()', function (t) {
|
|
|
481
482
|
});
|
|
482
483
|
|
|
483
484
|
t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) {
|
|
484
|
-
st.equal(qs.stringify({ a:
|
|
485
|
+
st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, {
|
|
485
486
|
encoder: function (buffer) {
|
|
486
487
|
if (typeof buffer === 'string') {
|
|
487
488
|
return buffer;
|