qs 6.12.3 → 6.13.1
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 -0
- package/CHANGELOG.md +16 -0
- package/README.md +13 -2
- package/dist/qs.js +4 -4
- package/lib/parse.js +12 -6
- package/lib/stringify.js +11 -6
- package/lib/utils.js +7 -4
- package/package.json +8 -7
- package/test/parse.js +130 -13
- package/test/stringify.js +19 -11
- package/test/utils.js +14 -0
package/.eslintrc
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## **6.13.1**
|
|
2
|
+
[Fix] `stringify`: avoid a crash when a `filter` key is `null`
|
|
3
|
+
[Fix] `utils.merge`: functions should not be stringified into keys
|
|
4
|
+
[Fix] `parse`: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset
|
|
5
|
+
[Fix] `stringify`: ensure a non-string `filter` does not crash
|
|
6
|
+
[Refactor] use `__proto__` syntax instead of `Object.create` for null objects
|
|
7
|
+
[Refactor] misc cleanup
|
|
8
|
+
[Tests] `utils.merge`: add some coverage
|
|
9
|
+
[Tests] fix a test case
|
|
10
|
+
[actions] split out node 10-20, and 20+
|
|
11
|
+
[Dev Deps] update `es-value-fixtures`, `mock-property`, `object-inspect`, `tape`
|
|
12
|
+
|
|
13
|
+
## **6.13.0**
|
|
14
|
+
- [New] `parse`: add `strictDepth` option (#511)
|
|
15
|
+
- [Tests] use `npm audit` instead of `aud`
|
|
16
|
+
|
|
1
17
|
## **6.12.3**
|
|
2
18
|
- [Fix] `parse`: properly account for `strictNullHandling` when `allowEmptyArrays`
|
|
3
19
|
- [meta] fix changelog indentation
|
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ assert.deepEqual(qs.parse('foo[bar]=baz'), {
|
|
|
49
49
|
});
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
When using the `plainObjects` option the parsed value is returned as a null object, created via `
|
|
52
|
+
When using the `plainObjects` option the parsed value is returned as a null object, created via `{ __proto__: null }` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like:
|
|
53
53
|
|
|
54
54
|
```javascript
|
|
55
55
|
var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true });
|
|
@@ -115,7 +115,18 @@ var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
|
|
|
115
115
|
assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } });
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
You can configure **qs** to throw an error when parsing nested input beyond this depth using the `strictDepth` option (defaulted to false):
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
try {
|
|
122
|
+
qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true });
|
|
123
|
+
} catch (err) {
|
|
124
|
+
assert(err instanceof RangeError);
|
|
125
|
+
assert.strictEqual(err.message, 'Input depth exceeded depth option of 1 and strictDepth is true');
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. The strictDepth option adds a layer of protection by throwing an error when the limit is exceeded, allowing you to catch and handle such cases.
|
|
119
130
|
|
|
120
131
|
For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option:
|
|
121
132
|
|
package/dist/qs.js
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"use strict";var stringify=require(4),parse=require(3),formats=require(1);module.exports={formats:formats,parse:parse,stringify:stringify};
|
|
6
6
|
|
|
7
7
|
},{"1":1,"3":3,"4":4}],3:[function(require,module,exports){
|
|
8
|
-
"use strict";var utils=require(5),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:utils.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},parseArrayValue=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},a=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i,o=t.parameterLimit===1/0?void 0:t.parameterLimit,l=a.split(t.delimiter,o),s=-1,n=t.charset;if(t.charsetSentinel)for(i=0;i<l.length;++i)0===l[i].indexOf("utf8=")&&(l[i]===charsetSentinel?n="utf-8":l[i]===isoSentinel&&(n="iso-8859-1"),s=i,i=l.length);for(i=0;i<l.length;++i)if(i!==s){var p,c,d=l[i],u=d.indexOf("]="),
|
|
8
|
+
"use strict";var utils=require(5),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:utils.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},parseArrayValue=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},a=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;a=a.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i,o=t.parameterLimit===1/0?void 0:t.parameterLimit,l=a.split(t.delimiter,o),s=-1,n=t.charset;if(t.charsetSentinel)for(i=0;i<l.length;++i)0===l[i].indexOf("utf8=")&&(l[i]===charsetSentinel?n="utf-8":l[i]===isoSentinel&&(n="iso-8859-1"),s=i,i=l.length);for(i=0;i<l.length;++i)if(i!==s){var p,c,d=l[i],u=d.indexOf("]="),f=-1===u?d.indexOf("="):u+1;-1===f?(p=t.decoder(d,defaults.decoder,n,"key"),c=t.strictNullHandling?null:""):(p=t.decoder(d.slice(0,f),defaults.decoder,n,"key"),c=utils.maybeMap(parseArrayValue(d.slice(f+1),t),(function(e){return t.decoder(e,defaults.decoder,n,"value")}))),c&&t.interpretNumericEntities&&"iso-8859-1"===n&&(c=interpretNumericEntities(String(c))),d.indexOf("[]=")>-1&&(c=isArray(c)?[c]:c);var y=has.call(r,p);y&&"combine"===t.duplicates?r[p]=utils.combine(r[p],c):y&&"last"!==t.duplicates||(r[p]=c)}return r},parseObject=function(e,t,r,a){for(var i=a?t:parseArrayValue(t,r),o=e.length-1;o>=0;--o){var l,s=e[o];if("[]"===s&&r.parseArrays)l=r.allowEmptyArrays&&(""===i||r.strictNullHandling&&null===i)?[]:[].concat(i);else{l=r.plainObjects?{__proto__:null}:{};var n="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,p=r.decodeDotInKeys?n.replace(/%2E/g,"."):n,c=parseInt(p,10);r.parseArrays||""!==p?!isNaN(c)&&s!==p&&String(c)===p&&c>=0&&r.parseArrays&&c<=r.arrayLimit?(l=[])[c]=i:"__proto__"!==p&&(l[p]=i):l={0:i}}i=l}return i},parseKeys=function parseQueryStringKeys(e,t,r,a){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(i),s=l?i.slice(0,l.index):i,n=[];if(s){if(!r.plainObjects&&has.call(Object.prototype,s)&&!r.allowPrototypes)return;n.push(s)}for(var p=0;r.depth>0&&null!==(l=o.exec(i))&&p<r.depth;){if(p+=1,!r.plainObjects&&has.call(Object.prototype,l[1].slice(1,-1))&&!r.allowPrototypes)return;n.push(l[1])}if(l){if(!0===r.strictDepth)throw new RangeError("Input depth exceeded depth option of "+r.depth+" and strictDepth is true");n.push("["+i.slice(l.index)+"]")}return parseObject(n,t,r,a)}},normalizeParseOptions=function normalizeParseOptions(e){if(!e)return defaults;if(void 0!==e.allowEmptyArrays&&"boolean"!=typeof e.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==e.decodeDotInKeys&&"boolean"!=typeof e.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?defaults.charset:e.charset,r=void 0===e.duplicates?defaults.duplicates:e.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===e.allowDots?!0===e.decodeDotInKeys||defaults.allowDots:!!e.allowDots,allowEmptyArrays:"boolean"==typeof e.allowEmptyArrays?!!e.allowEmptyArrays:defaults.allowEmptyArrays,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:defaults.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:defaults.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:defaults.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:defaults.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:defaults.comma,decodeDotInKeys:"boolean"==typeof e.decodeDotInKeys?e.decodeDotInKeys:defaults.decodeDotInKeys,decoder:"function"==typeof e.decoder?e.decoder:defaults.decoder,delimiter:"string"==typeof e.delimiter||utils.isRegExp(e.delimiter)?e.delimiter:defaults.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:defaults.depth,duplicates:r,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:defaults.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:defaults.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:defaults.plainObjects,strictDepth:"boolean"==typeof e.strictDepth?!!e.strictDepth:defaults.strictDepth,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:defaults.strictNullHandling}};module.exports=function(e,t){var r=normalizeParseOptions(t);if(""===e||null==e)return r.plainObjects?{__proto__:null}:{};for(var a="string"==typeof e?parseValues(e,r):e,i=r.plainObjects?{__proto__:null}:{},o=Object.keys(a),l=0;l<o.length;++l){var s=o[l],n=parseKeys(s,a[s],r,"string"==typeof e);i=utils.merge(i,n,r)}return!0===r.allowSparse?i:utils.compact(i)};
|
|
9
9
|
|
|
10
10
|
},{"5":5}],4:[function(require,module,exports){
|
|
11
|
-
"use strict";var getSideChannel=require(29),utils=require(5),formats=require(1),has=Object.prototype.hasOwnProperty,arrayPrefixGenerators={brackets:function brackets(e){return e+"[]"},comma:"comma",indices:function indices(e,r){return e+"["+r+"]"},repeat:function repeat(e){return e}},isArray=Array.isArray,push=Array.prototype.push,pushToArray=function(e,r){push.apply(e,isArray(r)?r:[r])},toISO=Date.prototype.toISOString,defaultFormat=formats.default,defaults={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:utils.encode,encodeValuesOnly:!1,format:defaultFormat,formatter:formats.formatters[defaultFormat],indices:!1,serializeDate:function serializeDate(e){return toISO.call(e)},skipNulls:!1,strictNullHandling:!1},isNonNullishPrimitive=function isNonNullishPrimitive(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e},sentinel={},stringify=function stringify(e,r,t,o,a,n,i,l,s,f,u,d,y,c,p,m,h,v){for(var
|
|
11
|
+
"use strict";var getSideChannel=require(29),utils=require(5),formats=require(1),has=Object.prototype.hasOwnProperty,arrayPrefixGenerators={brackets:function brackets(e){return e+"[]"},comma:"comma",indices:function indices(e,r){return e+"["+r+"]"},repeat:function repeat(e){return e}},isArray=Array.isArray,push=Array.prototype.push,pushToArray=function(e,r){push.apply(e,isArray(r)?r:[r])},toISO=Date.prototype.toISOString,defaultFormat=formats.default,defaults={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,commaRoundTrip:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:utils.encode,encodeValuesOnly:!1,filter:void 0,format:defaultFormat,formatter:formats.formatters[defaultFormat],indices:!1,serializeDate:function serializeDate(e){return toISO.call(e)},skipNulls:!1,strictNullHandling:!1},isNonNullishPrimitive=function isNonNullishPrimitive(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e},sentinel={},stringify=function stringify(e,r,t,o,a,n,i,l,s,f,u,d,y,c,p,m,h,v){for(var g=e,w=v,b=0,A=!1;void 0!==(w=w.get(sentinel))&&!A;){var D=w.get(e);if(b+=1,void 0!==D){if(D===b)throw new RangeError("Cyclic object value");A=!0}void 0===w.get(sentinel)&&(b=0)}if("function"==typeof f?g=f(r,g):g instanceof Date?g=y(g):"comma"===t&&isArray(g)&&(g=utils.maybeMap(g,(function(e){return e instanceof Date?y(e):e}))),null===g){if(n)return s&&!m?s(r,defaults.encoder,h,"key",c):r;g=""}if(isNonNullishPrimitive(g)||utils.isBuffer(g))return s?[p(m?r:s(r,defaults.encoder,h,"key",c))+"="+p(s(g,defaults.encoder,h,"value",c))]:[p(r)+"="+p(String(g))];var S,E=[];if(void 0===g)return E;if("comma"===t&&isArray(g))m&&s&&(g=utils.maybeMap(g,s)),S=[{value:g.length>0?g.join(",")||null:void 0}];else if(isArray(f))S=f;else{var N=Object.keys(g);S=u?N.sort(u):N}var T=l?String(r).replace(/\./g,"%2E"):String(r),O=o&&isArray(g)&&1===g.length?T+"[]":T;if(a&&isArray(g)&&0===g.length)return O+"[]";for(var k=0;k<S.length;++k){var I=S[k],P="object"==typeof I&&I&&void 0!==I.value?I.value:g[I];if(!i||null!==P){var x=d&&l?String(I).replace(/\./g,"%2E"):String(I),z=isArray(g)?"function"==typeof t?t(O,x):O:O+(d?"."+x:"["+x+"]");v.set(e,b);var K=getSideChannel();K.set(sentinel,v),pushToArray(E,stringify(P,z,t,o,a,n,i,l,"comma"===t&&m&&isArray(g)?null:s,f,u,d,y,c,p,m,h,K))}}return E},normalizeStringifyOptions=function normalizeStringifyOptions(e){if(!e)return defaults;if(void 0!==e.allowEmptyArrays&&"boolean"!=typeof e.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==e.encodeDotInKeys&&"boolean"!=typeof e.encodeDotInKeys)throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var r=e.charset||defaults.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=formats.default;if(void 0!==e.format){if(!has.call(formats.formatters,e.format))throw new TypeError("Unknown format option provided.");t=e.format}var o,a=formats.formatters[t],n=defaults.filter;if(("function"==typeof e.filter||isArray(e.filter))&&(n=e.filter),o=e.arrayFormat in arrayPrefixGenerators?e.arrayFormat:"indices"in e?e.indices?"indices":"repeat":defaults.arrayFormat,"commaRoundTrip"in e&&"boolean"!=typeof e.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var i=void 0===e.allowDots?!0===e.encodeDotInKeys||defaults.allowDots:!!e.allowDots;return{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:defaults.addQueryPrefix,allowDots:i,allowEmptyArrays:"boolean"==typeof e.allowEmptyArrays?!!e.allowEmptyArrays:defaults.allowEmptyArrays,arrayFormat:o,charset:r,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:defaults.charsetSentinel,commaRoundTrip:!!e.commaRoundTrip,delimiter:void 0===e.delimiter?defaults.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:defaults.encode,encodeDotInKeys:"boolean"==typeof e.encodeDotInKeys?e.encodeDotInKeys:defaults.encodeDotInKeys,encoder:"function"==typeof e.encoder?e.encoder:defaults.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:defaults.encodeValuesOnly,filter:n,format:t,formatter:a,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:defaults.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:defaults.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:defaults.strictNullHandling}};module.exports=function(e,r){var t,o=e,a=normalizeStringifyOptions(r);"function"==typeof a.filter?o=(0,a.filter)("",o):isArray(a.filter)&&(t=a.filter);var n=[];if("object"!=typeof o||null===o)return"";var i=arrayPrefixGenerators[a.arrayFormat],l="comma"===i&&a.commaRoundTrip;t||(t=Object.keys(o)),a.sort&&t.sort(a.sort);for(var s=getSideChannel(),f=0;f<t.length;++f){var u=t[f],d=o[u];a.skipNulls&&null===d||pushToArray(n,stringify(d,u,i,l,a.allowEmptyArrays,a.strictNullHandling,a.skipNulls,a.encodeDotInKeys,a.encode?a.encoder:null,a.filter,a.sort,a.allowDots,a.serializeDate,a.format,a.formatter,a.encodeValuesOnly,a.charset,s))}var y=n.join(a.delimiter),c=!0===a.addQueryPrefix?"?":"";return a.charsetSentinel&&("iso-8859-1"===a.charset?c+="utf8=%26%2310003%3B&":c+="utf8=%E2%9C%93&"),y.length>0?c+y:""};
|
|
12
12
|
|
|
13
13
|
},{"1":1,"29":29,"5":5}],5:[function(require,module,exports){
|
|
14
|
-
"use strict";var formats=require(1),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,hexTable=function(){for(var e=[],r=0;r<256;++r)e.push("%"+((r<16?"0":"")+r.toString(16)).toUpperCase());return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n<t.length;++n)void 0!==t[n]&&o.push(t[n]);r.obj[r.prop]=o}}},arrayToObject=function arrayToObject(e,r){for(var t=r&&r.plainObjects?
|
|
14
|
+
"use strict";var formats=require(1),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,hexTable=function(){for(var e=[],r=0;r<256;++r)e.push("%"+((r<16?"0":"")+r.toString(16)).toUpperCase());return e}(),compactQueue=function compactQueue(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(isArray(t)){for(var o=[],n=0;n<t.length;++n)void 0!==t[n]&&o.push(t[n]);r.obj[r.prop]=o}}},arrayToObject=function arrayToObject(e,r){for(var t=r&&r.plainObjects?{__proto__:null}:{},o=0;o<e.length;++o)void 0!==e[o]&&(t[o]=e[o]);return t},merge=function merge(e,r,t){if(!r)return e;if("object"!=typeof r&&"function"!=typeof r){if(isArray(e))e.push(r);else{if(!e||"object"!=typeof e)return[e,r];(t&&(t.plainObjects||t.allowPrototypes)||!has.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e)return[e].concat(r);var o=e;return isArray(e)&&!isArray(r)&&(o=arrayToObject(e,t)),isArray(e)&&isArray(r)?(r.forEach((function(r,o){if(has.call(e,o)){var n=e[o];n&&"object"==typeof n&&r&&"object"==typeof r?e[o]=merge(n,r,t):e.push(r)}else e[o]=r})),e):Object.keys(r).reduce((function(e,o){var n=r[o];return has.call(e,o)?e[o]=merge(e[o],n,t):e[o]=n,e}),o)},assign=function assignSingleSource(e,r){return Object.keys(r).reduce((function(e,t){return e[t]=r[t],e}),e)},decode=function(e,r,t){var o=e.replace(/\+/g," ");if("iso-8859-1"===t)return o.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(o)}catch(e){return o}},limit=1024,encode=function encode(e,r,t,o,n){if(0===e.length)return e;var a=e;if("symbol"==typeof e?a=Symbol.prototype.toString.call(e):"string"!=typeof e&&(a=String(e)),"iso-8859-1"===t)return escape(a).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var c="",i=0;i<a.length;i+=limit){for(var u=a.length>=limit?a.slice(i,i+limit):a,p=[],f=0;f<u.length;++f){var s=u.charCodeAt(f);45===s||46===s||95===s||126===s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||n===formats.RFC1738&&(40===s||41===s)?p[p.length]=u.charAt(f):s<128?p[p.length]=hexTable[s]:s<2048?p[p.length]=hexTable[192|s>>6]+hexTable[128|63&s]:s<55296||s>=57344?p[p.length]=hexTable[224|s>>12]+hexTable[128|s>>6&63]+hexTable[128|63&s]:(f+=1,s=65536+((1023&s)<<10|1023&u.charCodeAt(f)),p[p.length]=hexTable[240|s>>18]+hexTable[128|s>>12&63]+hexTable[128|s>>6&63]+hexTable[128|63&s])}c+=p.join("")}return c},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],o=0;o<r.length;++o)for(var n=r[o],a=n.obj[n.prop],c=Object.keys(a),i=0;i<c.length;++i){var u=c[i],p=a[u];"object"==typeof p&&null!==p&&-1===t.indexOf(p)&&(r.push({obj:a,prop:u}),t.push(p))}return compactQueue(r),e},isRegExp=function isRegExp(e){return"[object RegExp]"===Object.prototype.toString.call(e)},isBuffer=function isBuffer(e){return!(!e||"object"!=typeof e||!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e)))},combine=function combine(e,r){return[].concat(e,r)},maybeMap=function maybeMap(e,r){if(isArray(e)){for(var t=[],o=0;o<e.length;o+=1)t.push(r(e[o]));return t}return r(e)};module.exports={/* common-shake removed: arrayToObject:arrayToObject *//* common-shake removed: assign:assign */combine:combine,compact:compact,decode:decode,encode:encode,isBuffer:isBuffer,isRegExp:isRegExp,maybeMap:maybeMap,merge:merge};
|
|
15
15
|
|
|
16
16
|
},{"1":1}],29:[function(require,module,exports){
|
|
17
17
|
"use strict";var GetIntrinsic=require(20),callBound=require(7),inspect=require(27),$TypeError=require(16),$WeakMap=GetIntrinsic("%WeakMap%",!0),$Map=GetIntrinsic("%Map%",!0),$weakMapGet=callBound("WeakMap.prototype.get",!0),$weakMapSet=callBound("WeakMap.prototype.set",!0),$weakMapHas=callBound("WeakMap.prototype.has",!0),$mapGet=callBound("Map.prototype.get",!0),$mapSet=callBound("Map.prototype.set",!0),$mapHas=callBound("Map.prototype.has",!0),listGetNode=function(e,t){for(var n,a=e;null!==(n=a.next);a=n)if(n.key===t)return a.next=n.next,n.next=e.next,e.next=n,n},listGet=function(e,t){var n=listGetNode(e,t);return n&&n.value},listSet=function(e,t,n){var a=listGetNode(e,t);a?a.value=n:e.next={key:t,next:e.next,value:n}},listHas=function(e,t){return!!listGetNode(e,t)};module.exports=function getSideChannel(){var e,t,n,a={assert:function(e){if(!a.has(e))throw new $TypeError("Side channel does not contain "+inspect(e))},get:function(a){if($WeakMap&&a&&("object"==typeof a||"function"==typeof a)){if(e)return $weakMapGet(e,a)}else if($Map){if(t)return $mapGet(t,a)}else if(n)return listGet(n,a)},has:function(a){if($WeakMap&&a&&("object"==typeof a||"function"==typeof a)){if(e)return $weakMapHas(e,a)}else if($Map){if(t)return $mapHas(t,a)}else if(n)return listHas(n,a);return!1},set:function(a,r){$WeakMap&&a&&("object"==typeof a||"function"==typeof a)?(e||(e=new $WeakMap),$weakMapSet(e,a,r)):$Map?(t||(t=new $Map),$mapSet(t,a,r)):(n||(n={key:{},next:null}),listSet(n,a,r))}};return a};
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
|
|
84
84
|
},{}],27:[function(require,module,exports){
|
|
85
85
|
(function (global){(function (){
|
|
86
|
-
var hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function addNumericSeparator(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null;function wrapQuotes(t,e,r){var n="double"===(r.quoteStyle||e)?'"':"'";return n+t+n}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&"single"!==o.quoteStyle&&"double"!==o.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var f=nameOf(t),s=arrObjKeys(t,inspect);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(s.length>0?" { "+$join.call(s,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b<g.length;b++)S+=" "+g[b].name+"="+wrapQuotes(quote(g[b].value),"double",o);return S+=">",t.childNodes&&t.childNodes.length&&(S+="..."),S+"</"+$toLowerCase.call(String(t.nodeName))+">"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}function isMap(t){if(!mapSize||!t||"object"!=typeof t)return!1;try{mapSize.call(t);try{setSize.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}function isWeakMap(t){if(!weakMapHas||!t||"object"!=typeof t)return!1;try{weakMapHas.call(t,weakMapHas);try{weakSetHas.call(t,weakSetHas)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}function isWeakRef(t){if(!weakRefDeref||!t||"object"!=typeof t)return!1;try{return weakRefDeref.call(t),!0}catch(t){}return!1}function isSet(t){if(!setSize||!t||"object"!=typeof t)return!1;try{setSize.call(t);try{mapSize.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}function isWeakSet(t){if(!weakSetHas||!t||"object"!=typeof t)return!1;try{weakSetHas.call(t,weakSetHas);try{weakMapHas.call(t,weakMapHas)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}function isElement(t){return!(!t||"object"!=typeof t)&&("undefined"!=typeof HTMLElement&&t instanceof HTMLElement||"string"==typeof t.nodeName&&"function"==typeof t.getAttribute)}function inspectString(t,e){if(t.length>e.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}return wrapQuotes($replace.call($replace.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e<t.length;e++)if(indexOf(t[e],"\n")>=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o<t.length;o++)n[o]=has(t,o)?e(t[o],t):""}var i,a="function"==typeof gOPS?gOPS(t):[];if(hasShammedSymbols){i={};for(var c=0;c<a.length;c++)i["$"+a[c]]=a[c]}for(var l in t)has(t,l)&&(r&&String(Number(l))===l&&l<t.length||hasShammedSymbols&&i["$"+l]instanceof Symbol||($test.call(/[^\w$]/,l)?n.push(e(l,t)+": "+e(t[l],t)):n.push(l+": "+e(t[l],t))));if("function"==typeof gOPS)for(var p=0;p<a.length;p++)isEnumerable.call(t,a[p])&&n.push("["+e(a[p])+"]: "+e(t[a[p]],t));return n}
|
|
86
|
+
var hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function addNumericSeparator(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||$test.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-$floor(-t):$floor(t);if(n!==t){var o=String(n),i=$slice.call(e,o.length+1);return $replace.call(o,r,"$&_")+"."+$replace.call($replace.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,r,"$&_")}var utilInspect=require(6),inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,quotes={__proto__:null,double:'"',single:"'"},quoteREs={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function wrapQuotes(t,e,r){var n=r.quoteStyle||e,o=quotes[n];return o+t+o}function quote(t){return $replace.call(String(t),/"/g,""")}function isArray(t){return!("[object Array]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isDate(t){return!("[object Date]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isRegExp(t){return!("[object RegExp]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isError(t){return!("[object Error]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isString(t){return!("[object String]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isNumber(t){return!("[object Number]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isBoolean(t){return!("[object Boolean]"!==toStr(t)||toStringTag&&"object"==typeof t&&toStringTag in t)}function isSymbol(t){if(hasShammedSymbols)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!symToString)return!1;try{return symToString.call(t),!0}catch(t){}return!1}function isBigInt(t){if(!t||"object"!=typeof t||!bigIntValueOf)return!1;try{return bigIntValueOf.call(t),!0}catch(t){}return!1}module.exports=function inspect_(t,e,r,n){var o=e||{};if(has(o,"quoteStyle")&&!has(quotes,o.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var i=!has(o,"customInspect")||o.customInspect;if("boolean"!=typeof i&&"symbol"!==i)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?addNumericSeparator(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?addNumericSeparator(t,l):l}var p=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=p&&p>0&&"object"==typeof t)return isArray(t)?"[Array]":"[Object]";var u=getIndent(o,r);if(void 0===n)n=[];else if(indexOf(n,t)>=0)return"[Circular]";function inspect(t,e,i){if(e&&(n=$arrSlice.call(n)).push(e),i){var a={depth:o.depth};return has(o,"quoteStyle")&&(a.quoteStyle=o.quoteStyle),inspect_(t,a,r+1,n)}return inspect_(t,o,r+1,n)}if("function"==typeof t&&!isRegExp(t)){var s=nameOf(t),f=arrObjKeys(t,inspect);return"[Function"+(s?": "+s:" (anonymous)")+"]"+(f.length>0?" { "+$join.call(f,", ")+" }":"")}if(isSymbol(t)){var y=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?y:markBoxed(y)}if(isElement(t)){for(var S="<"+$toLowerCase.call(String(t.nodeName)),g=t.attributes||[],b=0;b<g.length;b++)S+=" "+g[b].name+"="+wrapQuotes(quote(g[b].value),"double",o);return S+=">",t.childNodes&&t.childNodes.length&&(S+="..."),S+"</"+$toLowerCase.call(String(t.nodeName))+">"}if(isArray(t)){if(0===t.length)return"[]";var m=arrObjKeys(t,inspect);return u&&!singleLineValues(m)?"["+indentedJoin(m,u)+"]":"[ "+$join.call(m,", ")+" ]"}if(isError(t)){var h=arrObjKeys(t,inspect);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===h.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(h,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+inspect(t.cause),h),", ")+" }"}if("object"==typeof t&&i){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:p-r});if("symbol"!==i&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var d=[];return mapForEach&&mapForEach.call(t,(function(e,r){d.push(inspect(r,t,!0)+" => "+inspect(e,t))})),collectionOf("Map",mapSize.call(t),d,u)}if(isSet(t)){var j=[];return setForEach&&setForEach.call(t,(function(e){j.push(inspect(e,t))})),collectionOf("Set",setSize.call(t),j,u)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(inspect(Number(t)));if(isBigInt(t))return markBoxed(inspect(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(inspect(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&t===globalThis||"undefined"!=typeof global&&t===global)return"{ [object globalThis] }";if(!isDate(t)&&!isRegExp(t)){var O=arrObjKeys(t,inspect),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",k=!w&&toStringTag&&Object(t)===t&&toStringTag in t?$slice.call(toStr(t),8,-1):$?"Object":"",v=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||$?"["+$join.call($concat.call([],k||[],$||[]),": ")+"] ":"");return 0===O.length?v+"{}":u?v+"{"+indentedJoin(O,u)+"}":v+"{ "+$join.call(O,", ")+" }"}return String(t)};var hasOwn=Object.prototype.hasOwnProperty||function(t){return t in this};function has(t,e){return hasOwn.call(t,e)}function toStr(t){return objectToString.call(t)}function nameOf(t){if(t.name)return t.name;var e=$match.call(functionToString.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}function isMap(t){if(!mapSize||!t||"object"!=typeof t)return!1;try{mapSize.call(t);try{setSize.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}function isWeakMap(t){if(!weakMapHas||!t||"object"!=typeof t)return!1;try{weakMapHas.call(t,weakMapHas);try{weakSetHas.call(t,weakSetHas)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}function isWeakRef(t){if(!weakRefDeref||!t||"object"!=typeof t)return!1;try{return weakRefDeref.call(t),!0}catch(t){}return!1}function isSet(t){if(!setSize||!t||"object"!=typeof t)return!1;try{setSize.call(t);try{mapSize.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}function isWeakSet(t){if(!weakSetHas||!t||"object"!=typeof t)return!1;try{weakSetHas.call(t,weakSetHas);try{weakMapHas.call(t,weakMapHas)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}function isElement(t){return!(!t||"object"!=typeof t)&&("undefined"!=typeof HTMLElement&&t instanceof HTMLElement||"string"==typeof t.nodeName&&"function"==typeof t.getAttribute)}function inspectString(t,e){if(t.length>e.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString($slice.call(t,0,e.maxStringLength),e)+n}var o=quoteREs[e.quoteStyle||"single"];return o.lastIndex=0,wrapQuotes($replace.call($replace.call(t,o,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",e)}function lowbyte(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(t){return"Object("+t+")"}function weakCollectionOf(t){return t+" { ? }"}function collectionOf(t,e,r,n){return t+" ("+e+") {"+(n?indentedJoin(r,n):$join.call(r,", "))+"}"}function singleLineValues(t){for(var e=0;e<t.length;e++)if(indexOf(t[e],"\n")>=0)return!1;return!0}function getIndent(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=$join.call(Array(t.indent+1)," ")}return{base:r,prev:$join.call(Array(e+1),r)}}function indentedJoin(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+$join.call(t,","+r)+"\n"+e.prev}function arrObjKeys(t,e){var r=isArray(t),n=[];if(r){n.length=t.length;for(var o=0;o<t.length;o++)n[o]=has(t,o)?e(t[o],t):""}var i,a="function"==typeof gOPS?gOPS(t):[];if(hasShammedSymbols){i={};for(var c=0;c<a.length;c++)i["$"+a[c]]=a[c]}for(var l in t)has(t,l)&&(r&&String(Number(l))===l&&l<t.length||hasShammedSymbols&&i["$"+l]instanceof Symbol||($test.call(/[^\w$]/,l)?n.push(e(l,t)+": "+e(t[l],t)):n.push(l+": "+e(t[l],t))));if("function"==typeof gOPS)for(var p=0;p<a.length;p++)isEnumerable.call(t,a[p])&&n.push("["+e(a[p])+"]: "+e(t[a[p]],t));return n}
|
|
87
87
|
|
|
88
88
|
}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
|
89
89
|
},{"6":6}]},{},[2])(2)
|
package/lib/parse.js
CHANGED
|
@@ -24,6 +24,7 @@ var defaults = {
|
|
|
24
24
|
parameterLimit: 1000,
|
|
25
25
|
parseArrays: true,
|
|
26
26
|
plainObjects: false,
|
|
27
|
+
strictDepth: false,
|
|
27
28
|
strictNullHandling: false
|
|
28
29
|
};
|
|
29
30
|
|
|
@@ -85,7 +86,8 @@ var parseValues = function parseQueryStringValues(str, options) {
|
|
|
85
86
|
var bracketEqualsPos = part.indexOf(']=');
|
|
86
87
|
var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
|
|
87
88
|
|
|
88
|
-
var key
|
|
89
|
+
var key;
|
|
90
|
+
var val;
|
|
89
91
|
if (pos === -1) {
|
|
90
92
|
key = options.decoder(part, defaults.decoder, charset, 'key');
|
|
91
93
|
val = options.strictNullHandling ? null : '';
|
|
@@ -100,7 +102,7 @@ var parseValues = function parseQueryStringValues(str, options) {
|
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
|
|
103
|
-
val = interpretNumericEntities(val);
|
|
105
|
+
val = interpretNumericEntities(String(val));
|
|
104
106
|
}
|
|
105
107
|
|
|
106
108
|
if (part.indexOf('[]=') > -1) {
|
|
@@ -130,7 +132,7 @@ var parseObject = function (chain, val, options, valuesParsed) {
|
|
|
130
132
|
? []
|
|
131
133
|
: [].concat(leaf);
|
|
132
134
|
} else {
|
|
133
|
-
obj = options.plainObjects ?
|
|
135
|
+
obj = options.plainObjects ? { __proto__: null } : {};
|
|
134
136
|
var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
|
|
135
137
|
var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;
|
|
136
138
|
var index = parseInt(decodedRoot, 10);
|
|
@@ -201,9 +203,12 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesPars
|
|
|
201
203
|
keys.push(segment[1]);
|
|
202
204
|
}
|
|
203
205
|
|
|
204
|
-
// If there's a remainder, just add whatever is left
|
|
206
|
+
// If there's a remainder, check strictDepth option for throw, else just add whatever is left
|
|
205
207
|
|
|
206
208
|
if (segment) {
|
|
209
|
+
if (options.strictDepth === true) {
|
|
210
|
+
throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');
|
|
211
|
+
}
|
|
207
212
|
keys.push('[' + key.slice(segment.index) + ']');
|
|
208
213
|
}
|
|
209
214
|
|
|
@@ -260,6 +265,7 @@ var normalizeParseOptions = function normalizeParseOptions(opts) {
|
|
|
260
265
|
parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
|
|
261
266
|
parseArrays: opts.parseArrays !== false,
|
|
262
267
|
plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
|
|
268
|
+
strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,
|
|
263
269
|
strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
|
|
264
270
|
};
|
|
265
271
|
};
|
|
@@ -268,11 +274,11 @@ module.exports = function (str, opts) {
|
|
|
268
274
|
var options = normalizeParseOptions(opts);
|
|
269
275
|
|
|
270
276
|
if (str === '' || str === null || typeof str === 'undefined') {
|
|
271
|
-
return options.plainObjects ?
|
|
277
|
+
return options.plainObjects ? { __proto__: null } : {};
|
|
272
278
|
}
|
|
273
279
|
|
|
274
280
|
var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
|
|
275
|
-
var obj = options.plainObjects ?
|
|
281
|
+
var obj = options.plainObjects ? { __proto__: null } : {};
|
|
276
282
|
|
|
277
283
|
// Iterate over the keys and setup the new object
|
|
278
284
|
|
package/lib/stringify.js
CHANGED
|
@@ -34,11 +34,13 @@ var defaults = {
|
|
|
34
34
|
arrayFormat: 'indices',
|
|
35
35
|
charset: 'utf-8',
|
|
36
36
|
charsetSentinel: false,
|
|
37
|
+
commaRoundTrip: false,
|
|
37
38
|
delimiter: '&',
|
|
38
39
|
encode: true,
|
|
39
40
|
encodeDotInKeys: false,
|
|
40
41
|
encoder: utils.encode,
|
|
41
42
|
encodeValuesOnly: false,
|
|
43
|
+
filter: void undefined,
|
|
42
44
|
format: defaultFormat,
|
|
43
45
|
formatter: formats.formatters[defaultFormat],
|
|
44
46
|
// deprecated
|
|
@@ -150,7 +152,7 @@ var stringify = function stringify(
|
|
|
150
152
|
objKeys = sort ? keys.sort(sort) : keys;
|
|
151
153
|
}
|
|
152
154
|
|
|
153
|
-
var encodedPrefix = encodeDotInKeys ? prefix.replace(/\./g, '%2E') : prefix;
|
|
155
|
+
var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix);
|
|
154
156
|
|
|
155
157
|
var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;
|
|
156
158
|
|
|
@@ -160,13 +162,15 @@ var stringify = function stringify(
|
|
|
160
162
|
|
|
161
163
|
for (var j = 0; j < objKeys.length; ++j) {
|
|
162
164
|
var key = objKeys[j];
|
|
163
|
-
var value = typeof key === 'object' && typeof key.value !== 'undefined'
|
|
165
|
+
var value = typeof key === 'object' && key && typeof key.value !== 'undefined'
|
|
166
|
+
? key.value
|
|
167
|
+
: obj[key];
|
|
164
168
|
|
|
165
169
|
if (skipNulls && value === null) {
|
|
166
170
|
continue;
|
|
167
171
|
}
|
|
168
172
|
|
|
169
|
-
var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\./g, '%2E') : key;
|
|
173
|
+
var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key);
|
|
170
174
|
var keyPrefix = isArray(obj)
|
|
171
175
|
? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix
|
|
172
176
|
: adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');
|
|
@@ -257,7 +261,7 @@ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
|
|
|
257
261
|
arrayFormat: arrayFormat,
|
|
258
262
|
charset: charset,
|
|
259
263
|
charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
|
|
260
|
-
commaRoundTrip: opts.commaRoundTrip,
|
|
264
|
+
commaRoundTrip: !!opts.commaRoundTrip,
|
|
261
265
|
delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
|
|
262
266
|
encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
|
|
263
267
|
encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,
|
|
@@ -308,12 +312,13 @@ module.exports = function (object, opts) {
|
|
|
308
312
|
var sideChannel = getSideChannel();
|
|
309
313
|
for (var i = 0; i < objKeys.length; ++i) {
|
|
310
314
|
var key = objKeys[i];
|
|
315
|
+
var value = obj[key];
|
|
311
316
|
|
|
312
|
-
if (options.skipNulls &&
|
|
317
|
+
if (options.skipNulls && value === null) {
|
|
313
318
|
continue;
|
|
314
319
|
}
|
|
315
320
|
pushToArray(keys, stringify(
|
|
316
|
-
|
|
321
|
+
value,
|
|
317
322
|
key,
|
|
318
323
|
generateArrayPrefix,
|
|
319
324
|
commaRoundTrip,
|
package/lib/utils.js
CHANGED
|
@@ -34,7 +34,7 @@ var compactQueue = function compactQueue(queue) {
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
var arrayToObject = function arrayToObject(source, options) {
|
|
37
|
-
var obj = options && options.plainObjects ?
|
|
37
|
+
var obj = options && options.plainObjects ? { __proto__: null } : {};
|
|
38
38
|
for (var i = 0; i < source.length; ++i) {
|
|
39
39
|
if (typeof source[i] !== 'undefined') {
|
|
40
40
|
obj[i] = source[i];
|
|
@@ -50,11 +50,14 @@ var merge = function merge(target, source, options) {
|
|
|
50
50
|
return target;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
if (typeof source !== 'object') {
|
|
53
|
+
if (typeof source !== 'object' && typeof source !== 'function') {
|
|
54
54
|
if (isArray(target)) {
|
|
55
55
|
target.push(source);
|
|
56
56
|
} else if (target && typeof target === 'object') {
|
|
57
|
-
if (
|
|
57
|
+
if (
|
|
58
|
+
(options && (options.plainObjects || options.allowPrototypes))
|
|
59
|
+
|| !has.call(Object.prototype, source)
|
|
60
|
+
) {
|
|
58
61
|
target[source] = true;
|
|
59
62
|
}
|
|
60
63
|
} else {
|
|
@@ -108,7 +111,7 @@ var assign = function assignSingleSource(target, source) {
|
|
|
108
111
|
}, target);
|
|
109
112
|
};
|
|
110
113
|
|
|
111
|
-
var decode = function (str,
|
|
114
|
+
var decode = function (str, defaultDecoder, charset) {
|
|
112
115
|
var strWithoutPlus = str.replace(/\+/g, ' ');
|
|
113
116
|
if (charset === 'iso-8859-1') {
|
|
114
117
|
// unescape never throws, no try...catch needed:
|
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
|
+
"version": "6.13.1",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/ljharb/qs.git"
|
|
@@ -37,32 +37,33 @@
|
|
|
37
37
|
"@browserify/envify": "^6.0.0",
|
|
38
38
|
"@browserify/uglifyify": "^6.0.0",
|
|
39
39
|
"@ljharb/eslint-config": "^21.1.1",
|
|
40
|
-
"aud": "^2.0.4",
|
|
41
40
|
"browserify": "^16.5.2",
|
|
42
41
|
"bundle-collapser": "^1.4.0",
|
|
43
42
|
"common-shakeify": "~1.0.0",
|
|
44
43
|
"eclint": "^2.8.1",
|
|
45
|
-
"es-value-fixtures": "^1.
|
|
44
|
+
"es-value-fixtures": "^1.5.0",
|
|
46
45
|
"eslint": "=8.8.0",
|
|
47
46
|
"evalmd": "^0.0.19",
|
|
48
47
|
"for-each": "^0.3.3",
|
|
49
48
|
"glob": "=10.3.7",
|
|
49
|
+
"has-bigints": "^1.0.2",
|
|
50
50
|
"has-override-mistake": "^1.0.1",
|
|
51
51
|
"has-property-descriptors": "^1.0.2",
|
|
52
|
+
"has-proto": "^1.0.3",
|
|
52
53
|
"has-symbols": "^1.0.3",
|
|
53
54
|
"iconv-lite": "^0.5.1",
|
|
54
55
|
"in-publish": "^2.0.1",
|
|
55
56
|
"jackspeak": "=2.1.1",
|
|
56
57
|
"mkdirp": "^0.5.5",
|
|
57
|
-
"mock-property": "^1.0
|
|
58
|
+
"mock-property": "^1.1.0",
|
|
58
59
|
"module-deps": "^6.2.3",
|
|
59
60
|
"npmignore": "^0.3.1",
|
|
60
61
|
"nyc": "^10.3.2",
|
|
61
|
-
"object-inspect": "^1.13.
|
|
62
|
+
"object-inspect": "^1.13.3",
|
|
62
63
|
"qs-iconv": "^1.0.4",
|
|
63
64
|
"safe-publish-latest": "^2.0.0",
|
|
64
65
|
"safer-buffer": "^2.1.2",
|
|
65
|
-
"tape": "^5.
|
|
66
|
+
"tape": "^5.9.0",
|
|
66
67
|
"unassertify": "^3.0.1"
|
|
67
68
|
},
|
|
68
69
|
"scripts": {
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
"pretest": "npm run --silent readme && npm run --silent lint",
|
|
73
74
|
"test": "npm run tests-only",
|
|
74
75
|
"tests-only": "nyc tape 'test/**/*.js'",
|
|
75
|
-
"posttest": "
|
|
76
|
+
"posttest": "npx npm@'>=10.2' audit --production",
|
|
76
77
|
"readme": "evalmd README.md",
|
|
77
78
|
"postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)",
|
|
78
79
|
"lint": "eslint --ext=js,mjs .",
|
package/test/parse.js
CHANGED
|
@@ -9,6 +9,7 @@ var SaferBuffer = require('safer-buffer').Buffer;
|
|
|
9
9
|
var v = require('es-value-fixtures');
|
|
10
10
|
var inspect = require('object-inspect');
|
|
11
11
|
var emptyTestCases = require('./empty-keys-cases').emptyTestCases;
|
|
12
|
+
var hasProto = require('has-proto')();
|
|
12
13
|
|
|
13
14
|
var qs = require('../');
|
|
14
15
|
var utils = require('../lib/utils');
|
|
@@ -691,9 +692,8 @@ test('parse()', function (t) {
|
|
|
691
692
|
st.end();
|
|
692
693
|
});
|
|
693
694
|
|
|
694
|
-
t.test('parses null objects correctly', { skip: !
|
|
695
|
-
var a =
|
|
696
|
-
a.b = 'c';
|
|
695
|
+
t.test('parses null objects correctly', { skip: !hasProto }, function (st) {
|
|
696
|
+
var a = { __proto__: null, b: 'c' };
|
|
697
697
|
|
|
698
698
|
st.deepEqual(qs.parse(a), { b: 'c' });
|
|
699
699
|
var result = qs.parse({ a: a });
|
|
@@ -870,17 +870,25 @@ test('parse()', function (t) {
|
|
|
870
870
|
st.end();
|
|
871
871
|
});
|
|
872
872
|
|
|
873
|
-
t.test('can return null objects', { skip: !
|
|
874
|
-
var expected =
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
873
|
+
t.test('can return null objects', { skip: !hasProto }, function (st) {
|
|
874
|
+
var expected = {
|
|
875
|
+
__proto__: null,
|
|
876
|
+
a: {
|
|
877
|
+
__proto__: null,
|
|
878
|
+
b: 'c',
|
|
879
|
+
hasOwnProperty: 'd'
|
|
880
|
+
}
|
|
881
|
+
};
|
|
878
882
|
st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
|
|
879
|
-
st.deepEqual(qs.parse(null, { plainObjects: true }),
|
|
880
|
-
var expectedArray =
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
883
|
+
st.deepEqual(qs.parse(null, { plainObjects: true }), { __proto__: null });
|
|
884
|
+
var expectedArray = {
|
|
885
|
+
__proto__: null,
|
|
886
|
+
a: {
|
|
887
|
+
__proto__: null,
|
|
888
|
+
0: 'b',
|
|
889
|
+
c: 'd'
|
|
890
|
+
}
|
|
891
|
+
};
|
|
884
892
|
st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
|
|
885
893
|
st.end();
|
|
886
894
|
});
|
|
@@ -998,6 +1006,15 @@ test('parse()', function (t) {
|
|
|
998
1006
|
st.end();
|
|
999
1007
|
});
|
|
1000
1008
|
|
|
1009
|
+
t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) {
|
|
1010
|
+
st.deepEqual(
|
|
1011
|
+
qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }),
|
|
1012
|
+
{ b: '', a: ['1,☺'] }
|
|
1013
|
+
);
|
|
1014
|
+
|
|
1015
|
+
st.end();
|
|
1016
|
+
});
|
|
1017
|
+
|
|
1001
1018
|
t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
|
|
1002
1019
|
st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
|
|
1003
1020
|
st.end();
|
|
@@ -1068,3 +1085,103 @@ test('`duplicates` option', function (t) {
|
|
|
1068
1085
|
|
|
1069
1086
|
t.end();
|
|
1070
1087
|
});
|
|
1088
|
+
|
|
1089
|
+
test('qs strictDepth option - throw cases', function (t) {
|
|
1090
|
+
t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) {
|
|
1091
|
+
st['throws'](
|
|
1092
|
+
function () {
|
|
1093
|
+
qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true });
|
|
1094
|
+
},
|
|
1095
|
+
RangeError,
|
|
1096
|
+
'Should throw RangeError'
|
|
1097
|
+
);
|
|
1098
|
+
st.end();
|
|
1099
|
+
});
|
|
1100
|
+
|
|
1101
|
+
t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) {
|
|
1102
|
+
st['throws'](
|
|
1103
|
+
function () {
|
|
1104
|
+
qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true });
|
|
1105
|
+
},
|
|
1106
|
+
RangeError,
|
|
1107
|
+
'Should throw RangeError'
|
|
1108
|
+
);
|
|
1109
|
+
st.end();
|
|
1110
|
+
});
|
|
1111
|
+
|
|
1112
|
+
t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) {
|
|
1113
|
+
st['throws'](
|
|
1114
|
+
function () {
|
|
1115
|
+
qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true });
|
|
1116
|
+
},
|
|
1117
|
+
RangeError,
|
|
1118
|
+
'Should throw RangeError'
|
|
1119
|
+
);
|
|
1120
|
+
st.end();
|
|
1121
|
+
});
|
|
1122
|
+
|
|
1123
|
+
t.test('throws an exception for different types of values with strictDepth: true', function (st) {
|
|
1124
|
+
st['throws'](
|
|
1125
|
+
function () {
|
|
1126
|
+
qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true });
|
|
1127
|
+
},
|
|
1128
|
+
RangeError,
|
|
1129
|
+
'Should throw RangeError'
|
|
1130
|
+
);
|
|
1131
|
+
st.end();
|
|
1132
|
+
});
|
|
1133
|
+
|
|
1134
|
+
});
|
|
1135
|
+
|
|
1136
|
+
test('qs strictDepth option - non-throw cases', function (t) {
|
|
1137
|
+
t.test('when depth is 0 and strictDepth true, do not throw', function (st) {
|
|
1138
|
+
st.doesNotThrow(
|
|
1139
|
+
function () {
|
|
1140
|
+
qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true });
|
|
1141
|
+
},
|
|
1142
|
+
RangeError,
|
|
1143
|
+
'Should not throw RangeError'
|
|
1144
|
+
);
|
|
1145
|
+
st.end();
|
|
1146
|
+
});
|
|
1147
|
+
|
|
1148
|
+
t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) {
|
|
1149
|
+
st.doesNotThrow(
|
|
1150
|
+
function () {
|
|
1151
|
+
var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true });
|
|
1152
|
+
st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
|
|
1153
|
+
}
|
|
1154
|
+
);
|
|
1155
|
+
st.end();
|
|
1156
|
+
});
|
|
1157
|
+
|
|
1158
|
+
t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) {
|
|
1159
|
+
st.doesNotThrow(
|
|
1160
|
+
function () {
|
|
1161
|
+
var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
|
|
1162
|
+
st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'Should parse with depth limit');
|
|
1163
|
+
}
|
|
1164
|
+
);
|
|
1165
|
+
st.end();
|
|
1166
|
+
});
|
|
1167
|
+
|
|
1168
|
+
t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) {
|
|
1169
|
+
st.doesNotThrow(
|
|
1170
|
+
function () {
|
|
1171
|
+
var result = qs.parse('a[b]=c', { depth: 1 });
|
|
1172
|
+
st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
|
|
1173
|
+
}
|
|
1174
|
+
);
|
|
1175
|
+
st.end();
|
|
1176
|
+
});
|
|
1177
|
+
|
|
1178
|
+
t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) {
|
|
1179
|
+
st.doesNotThrow(
|
|
1180
|
+
function () {
|
|
1181
|
+
var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true });
|
|
1182
|
+
st.deepEqual(result, { a: { b: { c: 'd' } } }, 'Should parse correctly');
|
|
1183
|
+
}
|
|
1184
|
+
);
|
|
1185
|
+
st.end();
|
|
1186
|
+
});
|
|
1187
|
+
});
|
package/test/stringify.js
CHANGED
|
@@ -8,7 +8,8 @@ var SaferBuffer = require('safer-buffer').Buffer;
|
|
|
8
8
|
var hasSymbols = require('has-symbols');
|
|
9
9
|
var mockProperty = require('mock-property');
|
|
10
10
|
var emptyTestCases = require('./empty-keys-cases').emptyTestCases;
|
|
11
|
-
var
|
|
11
|
+
var hasProto = require('has-proto')();
|
|
12
|
+
var hasBigInt = require('has-bigints')();
|
|
12
13
|
|
|
13
14
|
test('stringify()', function (t) {
|
|
14
15
|
t.test('stringifies a querystring object', function (st) {
|
|
@@ -650,10 +651,8 @@ test('stringify()', function (t) {
|
|
|
650
651
|
st.end();
|
|
651
652
|
});
|
|
652
653
|
|
|
653
|
-
t.test('stringifies a null object', { skip: !
|
|
654
|
-
|
|
655
|
-
obj.a = 'b';
|
|
656
|
-
st.equal(qs.stringify(obj), 'a=b');
|
|
654
|
+
t.test('stringifies a null object', { skip: !hasProto }, function (st) {
|
|
655
|
+
st.equal(qs.stringify({ __proto__: null, a: 'b' }), 'a=b');
|
|
657
656
|
st.end();
|
|
658
657
|
});
|
|
659
658
|
|
|
@@ -665,11 +664,8 @@ test('stringify()', function (t) {
|
|
|
665
664
|
st.end();
|
|
666
665
|
});
|
|
667
666
|
|
|
668
|
-
t.test('stringifies an object with a null object as a child', { skip: !
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
obj.a.b = 'c';
|
|
672
|
-
st.equal(qs.stringify(obj), 'a%5Bb%5D=c');
|
|
667
|
+
t.test('stringifies an object with a null object as a child', { skip: !hasProto }, function (st) {
|
|
668
|
+
st.equal(qs.stringify({ a: { __proto__: null, b: 'c' } }), 'a%5Bb%5D=c');
|
|
673
669
|
st.end();
|
|
674
670
|
});
|
|
675
671
|
|
|
@@ -1254,7 +1250,7 @@ test('stringify()', function (t) {
|
|
|
1254
1250
|
};
|
|
1255
1251
|
|
|
1256
1252
|
st.equal(
|
|
1257
|
-
qs.stringify(obj, { arrayFormat: '
|
|
1253
|
+
qs.stringify(obj, { arrayFormat: 'brackets', charset: 'utf-8' }),
|
|
1258
1254
|
'foo=' + expected.join('')
|
|
1259
1255
|
);
|
|
1260
1256
|
|
|
@@ -1295,4 +1291,16 @@ test('stringifies empty keys', function (t) {
|
|
|
1295
1291
|
|
|
1296
1292
|
st.end();
|
|
1297
1293
|
});
|
|
1294
|
+
|
|
1295
|
+
t.test('stringifies non-string keys', function (st) {
|
|
1296
|
+
var actual = qs.stringify({ a: 'b', 'false': {} }, {
|
|
1297
|
+
filter: ['a', false, null],
|
|
1298
|
+
allowDots: true,
|
|
1299
|
+
encodeDotInKeys: true
|
|
1300
|
+
});
|
|
1301
|
+
|
|
1302
|
+
st.equal(actual, 'a=b', 'stringifies correctly');
|
|
1303
|
+
|
|
1304
|
+
st.end();
|
|
1305
|
+
});
|
|
1298
1306
|
});
|
package/test/utils.js
CHANGED
|
@@ -28,6 +28,20 @@ test('merge()', function (t) {
|
|
|
28
28
|
var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar');
|
|
29
29
|
t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true });
|
|
30
30
|
|
|
31
|
+
var func = function f() {};
|
|
32
|
+
t.deepEqual(
|
|
33
|
+
utils.merge(func, { foo: 'bar' }),
|
|
34
|
+
[func, { foo: 'bar' }],
|
|
35
|
+
'functions can not be merged into'
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
func.bar = 'baz';
|
|
39
|
+
t.deepEqual(
|
|
40
|
+
utils.merge({ foo: 'bar' }, func),
|
|
41
|
+
{ foo: 'bar', bar: 'baz' },
|
|
42
|
+
'functions can be merge sources'
|
|
43
|
+
);
|
|
44
|
+
|
|
31
45
|
t.test(
|
|
32
46
|
'avoids invoking array setters unnecessarily',
|
|
33
47
|
{ skip: typeof Object.defineProperty !== 'function' },
|