+11
-0
@@ -0,1 +1,12 @@ | ||
| ## **6.15.3** | ||
| - [Fix] `parse`: enforce `throwOnLimitExceeded` for cumulative array growth via `combine`/`merge` | ||
| - [Fix] `utils`: respect encoding of surrogate pairs across chunks (#559) | ||
| - [Robustness] `parse`: throw the `arrayLimit` error before splitting oversized comma values | ||
| - [Robustness] `utils.merge` / `utils.assign`: avoid invoking `__proto__` setter when copying own properties | ||
| - [Robustness] `utils`: enforce `arrayLimit` consistently across `merge`'s array paths | ||
| - [Perf] `utils`: make `compact` O(n) via a side-channel visited-set instead of `Array.indexOf` | ||
| - [Deps] update `side-channel` | ||
| - [Dev Deps] update `eslint`, `mock-property`, `tape` | ||
| - [Tests] `parse`: characterize current lenient handling of unbalanced bracket keys (#558) | ||
| ## **6.15.2** | ||
@@ -2,0 +13,0 @@ - [Fix] `stringify`: skip null/undefined entries in `arrayFormat: 'comma'` + `encodeValuesOnly` instead of crashing in `encoder` |
+17
-17
@@ -8,3 +8,3 @@ (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){ | ||
| },{"1":1,"3":3,"4":4}],3:[function(require,module,exports){ | ||
| "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,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},parseArrayValue=function(e,t,r){if(e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1)return e.split(",");if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var a=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,t.throwOnLimitExceeded&&void 0!==a?a+1:a);if(t.throwOnLimitExceeded&&void 0!==a&&o.length>a)throw new RangeError("Parameter limit exceeded. Only "+a+" parameter"+(1===a?"":"s")+" allowed.");var l,n=-1,s=t.charset;if(t.charsetSentinel)for(l=0;l<o.length;++l)0===o[l].indexOf("utf8=")&&(o[l]===charsetSentinel?s="utf-8":o[l]===isoSentinel&&(s="iso-8859-1"),n=l,l=o.length);for(l=0;l<o.length;++l)if(l!==n){var d,c,p=o[l],u=p.indexOf("]="),y=-1===u?p.indexOf("="):u+1;if(-1===y?(d=t.decoder(p,defaults.decoder,s,"key"),c=t.strictNullHandling?null:""):null!==(d=t.decoder(p.slice(0,y),defaults.decoder,s,"key"))&&(c=utils.maybeMap(parseArrayValue(p.slice(y+1),t,isArray(r[d])?r[d].length:0),function(e){return t.decoder(e,defaults.decoder,s,"value")})),c&&t.interpretNumericEntities&&"iso-8859-1"===s&&(c=interpretNumericEntities(String(c))),p.indexOf("[]=")>-1&&(c=isArray(c)?[c]:c),t.comma&&isArray(c)&&c.length>t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");c=utils.combine([],c,t.arrayLimit,t.plainObjects)}if(null!==d){var f=has.call(r,d);f&&("combine"===t.duplicates||p.indexOf("[]=")>-1)?r[d]=utils.combine(r[d],c,t.arrayLimit,t.plainObjects):f&&"last"!==t.duplicates||(r[d]=c)}}return r},parseObject=function(e,t,r,i){var a=0;if(e.length>0&&"[]"===e[e.length-1]){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var l=i?t:parseArrayValue(t,r,a),n=e.length-1;n>=0;--n){var s,d=e[n];if("[]"===d&&r.parseArrays)s=utils.isOverflow(l)?l:r.allowEmptyArrays&&(""===l||r.strictNullHandling&&null===l)?[]:utils.combine([],l,r.arrayLimit,r.plainObjects);else{s=r.plainObjects?{__proto__:null}:{};var c="["===d.charAt(0)&&"]"===d.charAt(d.length-1)?d.slice(1,-1):d,p=r.decodeDotInKeys?c.replace(/%2E/g,"."):c,u=parseInt(p,10),y=!isNaN(u)&&d!==p&&String(u)===p&&u>=0&&r.parseArrays;if(r.parseArrays||""!==p)if(y&&u<r.arrayLimit)(s=[])[u]=l;else{if(y&&r.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+r.arrayLimit+" element"+(1===r.arrayLimit?"":"s")+" allowed in an array.");y?(s[u]=l,utils.markOverflow(s,u)):"__proto__"!==p&&(s[p]=l)}else s={0:l}}l=s}return l},splitKeyIntoSegments=function splitKeyIntoSegments(e,t){var r=t.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e;if(t.depth<=0){if(!t.plainObjects&&has.call(Object.prototype,r)&&!t.allowPrototypes)return;return[r]}var i=[],a=r.indexOf("["),o=a>=0?r.slice(0,a):r;if(o){if(!t.plainObjects&&has.call(Object.prototype,o)&&!t.allowPrototypes)return;i[i.length]=o}for(var l=r.length,n=a,s=0;n>=0&&s<t.depth;){for(var d=1,c=n+1,p=-1;c<l&&p<0;){var u=r.charCodeAt(c);91===u?d+=1:93===u&&0==(d-=1)&&(p=c),c+=1}if(p<0)return i[i.length]="["+r.slice(n)+"]",i;var y=r.slice(n,p+1),f=y.slice(1,-1);if(!t.plainObjects&&has.call(Object.prototype,f)&&!t.allowPrototypes)return;i[i.length]=y,s+=1,n=r.indexOf("[",p+1)}if(n>=0){if(!0===t.strictDepth)throw new RangeError("Input depth exceeded depth option of "+t.depth+" and strictDepth is true");i[i.length]="["+r.slice(n)+"]"}return i},parseKeys=function parseQueryStringKeys(e,t,r,i){if(e){var a=splitKeyIntoSegments(e,r);if(a)return parseObject(a,t,r,i)}},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");if(void 0!==e.throwOnLimitExceeded&&"boolean"!=typeof e.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");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,strictMerge:"boolean"==typeof e.strictMerge?!!e.strictMerge:defaults.strictMerge,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:defaults.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof e.throwOnLimitExceeded&&e.throwOnLimitExceeded}};module.exports=function(e,t){var r=normalizeParseOptions(t);if(""===e||null==e)return r.plainObjects?{__proto__:null}:{};for(var i="string"==typeof e?parseValues(e,r):e,a=r.plainObjects?{__proto__:null}:{},o=Object.keys(i),l=0;l<o.length;++l){var n=o[l],s=parseKeys(n,i[n],r,"string"==typeof e);a=utils.merge(a,s,r)}return!0===r.allowSparse?a:utils.compact(a)}; | ||
| "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,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},parseArrayValue=function(e,t,r,i){if(e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1){if(i&&t.throwOnLimitExceeded)for(var a=0,o=e.indexOf(",");o>-1;){if((a+=1)>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");o=e.indexOf(",",o+1)}return e.split(",")}if(t.throwOnLimitExceeded&&r>=t.arrayLimit)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function parseQueryStringValues(e,t){var r={__proto__:null},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var a=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,t.throwOnLimitExceeded&&void 0!==a?a+1:a);if(t.throwOnLimitExceeded&&void 0!==a&&o.length>a)throw new RangeError("Parameter limit exceeded. Only "+a+" parameter"+(1===a?"":"s")+" allowed.");var l,n=-1,s=t.charset;if(t.charsetSentinel)for(l=0;l<o.length;++l)0===o[l].indexOf("utf8=")&&(o[l]===charsetSentinel?s="utf-8":o[l]===isoSentinel&&(s="iso-8859-1"),n=l,l=o.length);for(l=0;l<o.length;++l)if(l!==n){var d,c,p=o[l],u=p.indexOf("]="),y=-1===u?p.indexOf("="):u+1;if(-1===y?(d=t.decoder(p,defaults.decoder,s,"key"),c=t.strictNullHandling?null:""):null!==(d=t.decoder(p.slice(0,y),defaults.decoder,s,"key"))&&(c=utils.maybeMap(parseArrayValue(p.slice(y+1),t,isArray(r[d])?r[d].length:0,-1===p.indexOf("[]=")),function(e){return t.decoder(e,defaults.decoder,s,"value")})),c&&t.interpretNumericEntities&&"iso-8859-1"===s&&(c=interpretNumericEntities(String(c))),p.indexOf("[]=")>-1&&(c=isArray(c)?[c]:c),t.comma&&isArray(c)&&c.length>t.arrayLimit&&(c=utils.combine([],c,t.arrayLimit,t.plainObjects,t.throwOnLimitExceeded)),null!==d){var f=has.call(r,d);f&&("combine"===t.duplicates||p.indexOf("[]=")>-1)?r[d]=utils.combine(r[d],c,t.arrayLimit,t.plainObjects,t.throwOnLimitExceeded):f&&"last"!==t.duplicates||(r[d]=c)}}return r},parseObject=function(e,t,r,i){var a=0;if(e.length>0&&"[]"===e[e.length-1]){var o=e.slice(0,-1).join("");a=Array.isArray(t)&&t[o]?t[o].length:0}for(var l=i?t:parseArrayValue(t,r,a),n=e.length-1;n>=0;--n){var s,d=e[n];if("[]"===d&&r.parseArrays)s=utils.isOverflow(l)?l:r.allowEmptyArrays&&(""===l||r.strictNullHandling&&null===l)?[]:utils.combine([],l,r.arrayLimit,r.plainObjects,r.throwOnLimitExceeded);else{s=r.plainObjects?{__proto__:null}:{};var c="["===d.charAt(0)&&"]"===d.charAt(d.length-1)?d.slice(1,-1):d,p=r.decodeDotInKeys?c.replace(/%2E/g,"."):c,u=parseInt(p,10),y=!isNaN(u)&&d!==p&&String(u)===p&&u>=0&&r.parseArrays;if(r.parseArrays||""!==p)if(y&&u<r.arrayLimit)(s=[])[u]=l;else{if(y&&r.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+r.arrayLimit+" element"+(1===r.arrayLimit?"":"s")+" allowed in an array.");y?(s[u]=l,utils.markOverflow(s,u)):"__proto__"!==p&&(s[p]=l)}else s={0:l}}l=s}return l},splitKeyIntoSegments=function splitKeyIntoSegments(e,t){var r=t.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e;if(t.depth<=0){if(!t.plainObjects&&has.call(Object.prototype,r)&&!t.allowPrototypes)return;return[r]}var i=[],a=r.indexOf("["),o=a>=0?r.slice(0,a):r;if(o){if(!t.plainObjects&&has.call(Object.prototype,o)&&!t.allowPrototypes)return;i[i.length]=o}for(var l=r.length,n=a,s=0;n>=0&&s<t.depth;){for(var d=1,c=n+1,p=-1;c<l&&p<0;){var u=r.charCodeAt(c);91===u?d+=1:93===u&&0==(d-=1)&&(p=c),c+=1}if(p<0)return i[i.length]="["+r.slice(n)+"]",i;var y=r.slice(n,p+1),f=y.slice(1,-1);if(!t.plainObjects&&has.call(Object.prototype,f)&&!t.allowPrototypes)return;i[i.length]=y,s+=1,n=r.indexOf("[",p+1)}if(n>=0){if(!0===t.strictDepth)throw new RangeError("Input depth exceeded depth option of "+t.depth+" and strictDepth is true");i[i.length]="["+r.slice(n)+"]"}return i},parseKeys=function parseQueryStringKeys(e,t,r,i){if(e){var a=splitKeyIntoSegments(e,r);if(a)return parseObject(a,t,r,i)}},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");if(void 0!==e.throwOnLimitExceeded&&"boolean"!=typeof e.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");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,strictMerge:"boolean"==typeof e.strictMerge?!!e.strictMerge:defaults.strictMerge,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:defaults.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof e.throwOnLimitExceeded&&e.throwOnLimitExceeded}};module.exports=function(e,t){var r=normalizeParseOptions(t);if(""===e||null==e)return r.plainObjects?{__proto__:null}:{};for(var i="string"==typeof e?parseValues(e,r):e,a=r.plainObjects?{__proto__:null}:{},o=Object.keys(i),l=0;l<o.length;++l){var n=o[l],s=parseKeys(n,i[n],r,"string"==typeof e);a=utils.merge(a,s,r)}return!0===r.allowSparse?a:utils.compact(a)}; | ||
@@ -15,9 +15,12 @@ },{"5":5}],4:[function(require,module,exports){ | ||
| },{"1":1,"46":46,"5":5}],5:[function(require,module,exports){ | ||
| "use strict";var formats=require(1),getSideChannel=require(46),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,overflowChannel=getSideChannel(),markOverflow=function markOverflow(e,r){return overflowChannel.set(e,r),e},isOverflow=function isOverflow(e){return overflowChannel.has(e)},getMaxIndex=function getMaxIndex(e){return overflowChannel.get(e)},setMaxIndex=function setMaxIndex(e,r){overflowChannel.set(e,r)},hexTable=function(){for(var e=[],r=0;r<256;++r)e[e.length]="%"+((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 n=[],o=0;o<t.length;++o)void 0!==t[o]&&(n[n.length]=t[o]);r.obj[r.prop]=n}}},arrayToObject=function arrayToObject(e,r){for(var t=r&&r.plainObjects?{__proto__:null}:{},n=0;n<e.length;++n)void 0!==e[n]&&(t[n]=e[n]);return t},merge=function merge(e,r,t){if(!r)return e;if("object"!=typeof r&&"function"!=typeof r){if(isArray(e)){var n=e.length;if(t&&"number"==typeof t.arrayLimit&&n>t.arrayLimit)return markOverflow(arrayToObject(e.concat(r),t),n);e[n]=r}else{if(!e||"object"!=typeof e)return[e,r];if(isOverflow(e)){var o=getMaxIndex(e)+1;e[o]=r,setMaxIndex(e,o)}else{if(t&&t.strictMerge)return[e,r];(t&&(t.plainObjects||t.allowPrototypes)||!has.call(Object.prototype,r))&&(e[r]=!0)}}return e}if(!e||"object"!=typeof e){if(isOverflow(r)){for(var a=Object.keys(r),i=t&&t.plainObjects?{__proto__:null,0:e}:{0:e},c=0;c<a.length;c++)i[parseInt(a[c],10)+1]=r[a[c]];return markOverflow(i,getMaxIndex(r)+1)}var l=[e].concat(r);return t&&"number"==typeof t.arrayLimit&&l.length>t.arrayLimit?markOverflow(arrayToObject(l,t),l.length-1):l}var f=e;return isArray(e)&&!isArray(r)&&(f=arrayToObject(e,t)),isArray(e)&&isArray(r)?(r.forEach(function(r,n){if(has.call(e,n)){var o=e[n];o&&"object"==typeof o&&r&&"object"==typeof r?e[n]=merge(o,r,t):e[e.length]=r}else e[n]=r}),e):Object.keys(r).reduce(function(e,n){var o=r[n];if(has.call(e,n)?e[n]=merge(e[n],o,t):e[n]=o,isOverflow(r)&&!isOverflow(e)&&markOverflow(e,getMaxIndex(r)),isOverflow(e)){var a=parseInt(n,10);String(a)===n&&a>=0&&a>getMaxIndex(e)&&setMaxIndex(e,a)}return e},f)},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 n=e.replace(/\+/g," ");if("iso-8859-1"===t)return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch(e){return n}},limit=1024,encode=function encode(e,r,t,n,o){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 i="",c=0;c<a.length;c+=limit){for(var l=a.length>=limit?a.slice(c,c+limit):a,f=[],s=0;s<l.length;++s){var u=l.charCodeAt(s);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||o===formats.RFC1738&&(40===u||41===u)?f[f.length]=l.charAt(s):u<128?f[f.length]=hexTable[u]:u<2048?f[f.length]=hexTable[192|u>>6]+hexTable[128|63&u]:u<55296||u>=57344?f[f.length]=hexTable[224|u>>12]+hexTable[128|u>>6&63]+hexTable[128|63&u]:(s+=1,u=65536+((1023&u)<<10|1023&l.charCodeAt(s)),f[f.length]=hexTable[240|u>>18]+hexTable[128|u>>12&63]+hexTable[128|u>>6&63]+hexTable[128|63&u])}i+=f.join("")}return i},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],n=0;n<r.length;++n)for(var o=r[n],a=o.obj[o.prop],i=Object.keys(a),c=0;c<i.length;++c){var l=i[c],f=a[l];"object"==typeof f&&null!==f&&-1===t.indexOf(f)&&(r[r.length]={obj:a,prop:l},t[t.length]=f)}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,t,n){if(isOverflow(e)){var o=getMaxIndex(e)+1;return e[o]=r,setMaxIndex(e,o),e}var a=[].concat(e,r);return a.length>t?markOverflow(arrayToObject(a,{plainObjects:n}),a.length-1):a},maybeMap=function maybeMap(e,r){if(isArray(e)){for(var t=[],n=0;n<e.length;n+=1)t[t.length]=r(e[n]);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,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge}; | ||
| "use strict";var formats=require(1),getSideChannel=require(46),defineProperty=require(14),has=Object.prototype.hasOwnProperty,isArray=Array.isArray,overflowChannel=getSideChannel(),markOverflow=function markOverflow(e,r){return overflowChannel.set(e,r),e},isOverflow=function isOverflow(e){return overflowChannel.has(e)},getMaxIndex=function getMaxIndex(e){return overflowChannel.get(e)},setMaxIndex=function setMaxIndex(e,r){overflowChannel.set(e,r)},hexTable=function(){for(var e=[],r=0;r<256;++r)e[e.length]="%"+((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 n=[],a=0;a<t.length;++a)void 0!==t[a]&&(n[n.length]=t[a]);r.obj[r.prop]=n}}},arrayToObject=function arrayToObject(e,r){for(var t=r&&r.plainObjects?{__proto__:null}:{},n=0;n<e.length;++n)void 0!==e[n]&&(t[n]=e[n]);return t},setProperty=function setProperty(e,r,t){"__proto__"===r&&defineProperty?defineProperty(e,r,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[r]=t},merge=function merge(e,r,t){if(!r)return e;if("object"!=typeof r&&"function"!=typeof r){if(isArray(e)){var n=e.length;if(t&&"number"==typeof t.arrayLimit&&n>=t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return markOverflow(arrayToObject(e.concat(r),t),n)}e[n]=r}else{if(!e||"object"!=typeof e)return[e,r];if(isOverflow(e)){var a=getMaxIndex(e)+1;e[a]=r,setMaxIndex(e,a)}else{if(t&&t.strictMerge)return[e,r];(t&&(t.plainObjects||t.allowPrototypes)||!has.call(Object.prototype,r))&&(e[r]=!0)}}return e}if(!e||"object"!=typeof e){if(isOverflow(r)){for(var o=Object.keys(r),i=t&&t.plainObjects?{__proto__:null,0:e}:{0:e},l=0;l<o.length;l++)i[parseInt(o[l],10)+1]=r[o[l]];return markOverflow(i,getMaxIndex(r)+1)}var c=[e].concat(r);if(t&&"number"==typeof t.arrayLimit&&c.length>t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return markOverflow(arrayToObject(c,t),c.length-1)}return c}var f=e;if(isArray(e)&&!isArray(r)&&(f=arrayToObject(e,t)),isArray(e)&&isArray(r)){if(r.forEach(function(r,n){if(has.call(e,n)){var a=e[n];a&&"object"==typeof a&&r&&"object"==typeof r?e[n]=merge(a,r,t):e[e.length]=r}else e[n]=r}),t&&"number"==typeof t.arrayLimit&&e.length>t.arrayLimit){if(t.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+t.arrayLimit+" element"+(1===t.arrayLimit?"":"s")+" allowed in an array.");return markOverflow(arrayToObject(e,t),e.length-1)}return e}return Object.keys(r).reduce(function(e,n){var a=r[n];if(has.call(e,n)?setProperty(e,n,merge(e[n],a,t)):setProperty(e,n,a),isOverflow(r)&&!isOverflow(e)&&markOverflow(e,getMaxIndex(r)),isOverflow(e)){var o=parseInt(n,10);String(o)===n&&o>=0&&o>getMaxIndex(e)&&setMaxIndex(e,o)}return e},f)},assign=function assignSingleSource(e,r){return Object.keys(r).reduce(function(e,t){return setProperty(e,t,r[t]),e},e)},decode=function(e,r,t){var n=e.replace(/\+/g," ");if("iso-8859-1"===t)return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch(e){return n}},limit=1024,encode=function encode(e,r,t,n,a){if(0===e.length)return e;var o=e;if("symbol"==typeof e?o=Symbol.prototype.toString.call(e):"string"!=typeof e&&(o=String(e)),"iso-8859-1"===t)return escape(o).replace(/%u[0-9a-f]{4}/gi,function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"});for(var i="",l=0;l<o.length;l+=limit){var c=o.length>=limit?o.slice(l,l+limit):o;if(l+limit<o.length){var f=c.charCodeAt(c.length-1);f>=55296&&f<=56319&&(c=c.slice(0,-1),l-=1)}for(var s=[],u=0;u<c.length;++u){var y=c.charCodeAt(u);45===y||46===y||95===y||126===y||y>=48&&y<=57||y>=65&&y<=90||y>=97&&y<=122||a===formats.RFC1738&&(40===y||41===y)?s[s.length]=c.charAt(u):y<128?s[s.length]=hexTable[y]:y<2048?s[s.length]=hexTable[192|y>>6]+hexTable[128|63&y]:y<55296||y>=57344?s[s.length]=hexTable[224|y>>12]+hexTable[128|y>>6&63]+hexTable[128|63&y]:(u+=1,y=65536+((1023&y)<<10|1023&c.charCodeAt(u)),s[s.length]=hexTable[240|y>>18]+hexTable[128|y>>12&63]+hexTable[128|y>>6&63]+hexTable[128|63&y])}i+=s.join("")}return i},compact=function compact(e){for(var r=[{obj:{o:e},prop:"o"}],t=getSideChannel(),n=0;n<r.length;++n)for(var a=r[n],o=a.obj[a.prop],i=Object.keys(o),l=0;l<i.length;++l){var c=i[l],f=o[c];"object"!=typeof f||null===f||t.has(f)||(r[r.length]={obj:o,prop:c},t.set(f,!0))}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,t,n,a){if(isOverflow(e)){if(a)throw new RangeError("Array limit exceeded. Only "+t+" element"+(1===t?"":"s")+" allowed in an array.");var o=getMaxIndex(e)+1;return e[o]=r,setMaxIndex(e,o),e}var i=[].concat(e,r);if(i.length>t){if(a)throw new RangeError("Array limit exceeded. Only "+t+" element"+(1===t?"":"s")+" allowed in an array.");return markOverflow(arrayToObject(i,{plainObjects:n}),i.length-1)}return i},maybeMap=function maybeMap(e,r){if(isArray(e)){for(var t=[],n=0;n<e.length;n+=1)t[t.length]=r(e[n]);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,isOverflow:isOverflow,isRegExp:isRegExp,markOverflow:markOverflow,maybeMap:maybeMap,merge:merge}; | ||
| },{"1":1,"46":46}],46:[function(require,module,exports){ | ||
| "use strict";var $TypeError=require(20),inspect=require(42),getSideChannelList=require(43),getSideChannelMap=require(44),getSideChannelWeakMap=require(45),makeChannel=getSideChannelWeakMap||getSideChannelMap||getSideChannelList;module.exports=function getSideChannel(){var e,n={assert:function(e){if(!n.has(e))throw new $TypeError("Side channel does not contain "+inspect(e))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,t){e||(e=makeChannel()),e.set(n,t)}};return n}; | ||
| },{"1":1,"14":14,"46":46}],46:[function(require,module,exports){ | ||
| "use strict";var $TypeError=require(20),inspect=require(42),getSideChannelList=require(43),getSideChannelMap=require(44),getSideChannelWeakMap=require(45),makeChannel=getSideChannelWeakMap||getSideChannelMap||getSideChannelList;module.exports=function getSideChannel(){var e,n={assert:function(e){if(!n.has(e)){var t=e&&Object(e)===e?"the given object key":inspect(e);throw new $TypeError("Side channel does not contain "+t)}},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,t){e||(e=makeChannel()),e.set(n,t)}};return n}; | ||
| },{"20":20,"42":42,"43":43,"44":44,"45":45}],6:[function(require,module,exports){ | ||
| },{"20":20,"42":42,"43":43,"44":44,"45":45}],14:[function(require,module,exports){ | ||
| "use strict";var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; | ||
| },{}],6:[function(require,module,exports){ | ||
| },{}],7:[function(require,module,exports){ | ||
@@ -56,6 +59,3 @@ "use strict";var bind=require(24),$apply=require(8),$call=require(9),$reflectApply=require(11);module.exports=$reflectApply||bind.call($call,$apply); | ||
| },{"29":29}],14:[function(require,module,exports){ | ||
| "use strict";var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty; | ||
| },{}],15:[function(require,module,exports){ | ||
| },{"29":29}],15:[function(require,module,exports){ | ||
| "use strict";module.exports=EvalError; | ||
@@ -84,5 +84,8 @@ | ||
| },{}],35:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.floor; | ||
| },{}],37:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.max; | ||
| },{}],40:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.round; | ||
| },{}],34:[function(require,module,exports){ | ||
@@ -94,11 +97,8 @@ "use strict";module.exports=Math.abs; | ||
| },{}],40:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.round; | ||
| },{}],37:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.max; | ||
| },{}],39:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.pow; | ||
| },{}],35:[function(require,module,exports){ | ||
| "use strict";module.exports=Math.floor; | ||
| },{}],27:[function(require,module,exports){ | ||
@@ -105,0 +105,0 @@ "use strict";module.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null; |
+19
-8
@@ -39,4 +39,15 @@ 'use strict'; | ||
| var parseArrayValue = function (val, options, currentArrayLength) { | ||
| var parseArrayValue = function (val, options, currentArrayLength, isFlatArrayValue) { | ||
| if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { | ||
| if (isFlatArrayValue && options.throwOnLimitExceeded) { | ||
| var commaCount = 0; | ||
| var commaIndex = val.indexOf(','); | ||
| while (commaIndex > -1) { | ||
| commaCount += 1; | ||
| if (commaCount >= options.arrayLimit) { | ||
| throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| commaIndex = val.indexOf(',', commaIndex + 1); | ||
| } | ||
| } | ||
| return val.split(','); | ||
@@ -118,3 +129,4 @@ } | ||
| options, | ||
| isArray(obj[key]) ? obj[key].length : 0 | ||
| isArray(obj[key]) ? obj[key].length : 0, | ||
| part.indexOf('[]=') === -1 | ||
| ), | ||
@@ -137,6 +149,3 @@ function (encodedVal) { | ||
| if (options.comma && isArray(val) && val.length > options.arrayLimit) { | ||
| if (options.throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| val = utils.combine([], val, options.arrayLimit, options.plainObjects); | ||
| val = utils.combine([], val, options.arrayLimit, options.plainObjects, options.throwOnLimitExceeded); | ||
| } | ||
@@ -151,3 +160,4 @@ | ||
| options.arrayLimit, | ||
| options.plainObjects | ||
| options.plainObjects, | ||
| options.throwOnLimitExceeded | ||
| ); | ||
@@ -187,3 +197,4 @@ } else if (!existing || options.duplicates === 'last') { | ||
| options.arrayLimit, | ||
| options.plainObjects | ||
| options.plainObjects, | ||
| options.throwOnLimitExceeded | ||
| ); | ||
@@ -190,0 +201,0 @@ } |
+47
-8
@@ -5,2 +5,3 @@ 'use strict'; | ||
| var getSideChannel = require('side-channel'); | ||
| var defineProperty = require('es-define-property'); | ||
@@ -70,2 +71,15 @@ var has = Object.prototype.hasOwnProperty; | ||
| var setProperty = function setProperty(obj, key, value) { | ||
| if (key === '__proto__' && defineProperty) { | ||
| defineProperty(obj, key, { | ||
| configurable: true, | ||
| enumerable: true, | ||
| value: value, | ||
| writable: true | ||
| }); | ||
| } else { | ||
| obj[key] = value; | ||
| } | ||
| }; | ||
| var merge = function merge(target, source, options) { | ||
@@ -80,3 +94,6 @@ /* eslint no-param-reassign: 0 */ | ||
| var nextIndex = target.length; | ||
| if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) { | ||
| if (options && typeof options.arrayLimit === 'number' && nextIndex >= options.arrayLimit) { | ||
| if (options.throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| return markOverflow(arrayToObject(target.concat(source), options), nextIndex); | ||
@@ -121,2 +138,5 @@ } | ||
| if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) { | ||
| if (options.throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| return markOverflow(arrayToObject(combined, options), combined.length - 1); | ||
@@ -145,2 +165,8 @@ } | ||
| }); | ||
| if (options && typeof options.arrayLimit === 'number' && target.length > options.arrayLimit) { | ||
| if (options.throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| return markOverflow(arrayToObject(target, options), target.length - 1); | ||
| } | ||
| return target; | ||
@@ -153,5 +179,5 @@ } | ||
| if (has.call(acc, key)) { | ||
| acc[key] = merge(acc[key], value, options); | ||
| setProperty(acc, key, merge(acc[key], value, options)); | ||
| } else { | ||
| acc[key] = value; | ||
| setProperty(acc, key, value); | ||
| } | ||
@@ -175,3 +201,3 @@ | ||
| return Object.keys(source).reduce(function (acc, key) { | ||
| acc[key] = source[key]; | ||
| setProperty(acc, key, source[key]); | ||
| return acc; | ||
@@ -222,2 +248,9 @@ }, target); | ||
| var segment = string.length >= limit ? string.slice(j, j + limit) : string; | ||
| if (j + limit < string.length) { | ||
| var last = segment.charCodeAt(segment.length - 1); | ||
| if (last >= 0xD800 && last <= 0xDBFF) { | ||
| segment = segment.slice(0, -1); | ||
| j -= 1; | ||
| } | ||
| } | ||
| var arr = []; | ||
@@ -276,3 +309,3 @@ | ||
| var queue = [{ obj: { o: value }, prop: 'o' }]; | ||
| var refs = []; | ||
| var refs = getSideChannel(); | ||
@@ -287,5 +320,5 @@ for (var i = 0; i < queue.length; ++i) { | ||
| var val = obj[key]; | ||
| if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { | ||
| if (typeof val === 'object' && val !== null && !refs.has(val)) { | ||
| queue[queue.length] = { obj: obj, prop: key }; | ||
| refs[refs.length] = val; | ||
| refs.set(val, true); | ||
| } | ||
@@ -312,5 +345,8 @@ } | ||
| var combine = function combine(a, b, arrayLimit, plainObjects) { | ||
| var combine = function combine(a, b, arrayLimit, plainObjects, throwOnLimitExceeded) { | ||
| // If 'a' is already an overflow object, add to it | ||
| if (isOverflow(a)) { | ||
| if (throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + arrayLimit + ' element' + (arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| var newIndex = getMaxIndex(a) + 1; | ||
@@ -324,2 +360,5 @@ a[newIndex] = b; | ||
| if (result.length > arrayLimit) { | ||
| if (throwOnLimitExceeded) { | ||
| throw new RangeError('Array limit exceeded. Only ' + arrayLimit + ' element' + (arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); | ||
| } | ||
| return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1); | ||
@@ -326,0 +365,0 @@ } |
+6
-5
@@ -5,3 +5,3 @@ { | ||
| "homepage": "https://github.com/ljharb/qs", | ||
| "version": "6.15.2", | ||
| "version": "6.15.3", | ||
| "repository": { | ||
@@ -35,3 +35,4 @@ "type": "git", | ||
| "dependencies": { | ||
| "side-channel": "^1.1.0" | ||
| "es-define-property": "^1.0.1", | ||
| "side-channel": "^1.1.1" | ||
| }, | ||
@@ -47,3 +48,3 @@ "devDependencies": { | ||
| "es-value-fixtures": "^1.7.1", | ||
| "eslint": "^9.39.2", | ||
| "eslint": "^10.5.0", | ||
| "evalmd": "^0.0.19", | ||
@@ -62,3 +63,3 @@ "for-each": "^0.3.5", | ||
| "mkdirp": "^0.5.5", | ||
| "mock-property": "^1.1.0", | ||
| "mock-property": "^1.1.2", | ||
| "module-deps": "^6.2.3", | ||
@@ -71,3 +72,3 @@ "npmignore": "^0.3.5", | ||
| "safer-buffer": "^2.1.2", | ||
| "tape": "^5.9.0", | ||
| "tape": "^5.10.2", | ||
| "unassertify": "^3.0.1" | ||
@@ -74,0 +75,0 @@ }, |
+194
-0
@@ -68,2 +68,3 @@ 'use strict'; | ||
| st.equal(getCount, 2); | ||
| st.end(); | ||
@@ -82,2 +83,3 @@ } | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'adds primitive at next numeric index'); | ||
| s2t.end(); | ||
@@ -98,2 +100,3 @@ }); | ||
| s2t.deepEqual(merged, { foo: 'bar', baz: true }, 'adds primitive as key with value true'); | ||
| s2t.end(); | ||
@@ -116,2 +119,3 @@ }); | ||
| s2t.deepEqual(merged, { 0: 'c', 1: 'a', 2: 'b' }, 'creates object with primitive at 0, source values shifted'); | ||
| s2t.end(); | ||
@@ -126,2 +130,3 @@ }); | ||
| s2t.deepEqual(merged, { __proto__: null, 0: 'c', 1: 'a', 2: 'b' }, 'creates null-proto object with primitive at 0'); | ||
| s2t.end(); | ||
@@ -136,2 +141,3 @@ }); | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'shifts all source indices by 1'); | ||
| s2t.end(); | ||
@@ -144,2 +150,3 @@ }); | ||
| s2t.deepEqual(merged, ['a', { foo: 'bar' }], 'creates array with primitive and object'); | ||
| s2t.end(); | ||
@@ -153,2 +160,3 @@ }); | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'converts to overflow object with primitive appended'); | ||
| s2t.end(); | ||
@@ -161,5 +169,77 @@ }); | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c' }, 'converts to overflow object'); | ||
| s2t.end(); | ||
| }); | ||
| st.test('merges primitive into array at the arrayLimit boundary, consistently with combine', function (s2t) { | ||
| var merged = utils.merge(['a'], 'b', { arrayLimit: 1 }); | ||
| s2t.ok(utils.isOverflow(merged), 'result is marked as overflow at the boundary'); | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b' }, 'converts to overflow object instead of a length-2 array'); | ||
| s2t.end(); | ||
| }); | ||
| st.test('merges two arrays that exceed arrayLimit into an overflow object', function (s2t) { | ||
| var merged = utils.merge(['a'], ['b'], { arrayLimit: 1 }); | ||
| s2t.ok(utils.isOverflow(merged), 'result is marked as overflow'); | ||
| s2t.deepEqual(merged, { 0: 'a', 1: 'b' }, 'array-into-array merge enforces arrayLimit like combine'); | ||
| s2t.end(); | ||
| }); | ||
| st.test('throws at the arrayLimit boundary when merging a primitive into an array with throwOnLimitExceeded', function (s2t) { | ||
| s2t['throws']( | ||
| function () { utils.merge(['a'], 'b', { arrayLimit: 1, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 1 element allowed in an array.'), | ||
| 'throws when the resulting length would exceed arrayLimit' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.test('throws when merging two arrays past arrayLimit with throwOnLimitExceeded', function (s2t) { | ||
| s2t['throws']( | ||
| function () { utils.merge(['a'], ['b'], { arrayLimit: 1, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 1 element allowed in an array.'), | ||
| 'array-into-array merge throws rather than silently exceeding arrayLimit' | ||
| ); | ||
| s2t['throws']( | ||
| function () { utils.merge(['a', 'b', 'c'], ['d', 'e', 'f'], { arrayLimit: 2, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'), | ||
| 'uses the plural message when arrayLimit is not 1' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.test('throws instead of merging primitive into over-limit array when throwOnLimitExceeded is set', function (s2t) { | ||
| s2t['throws']( | ||
| function () { utils.merge(['a', 'b', 'c'], 'd', { arrayLimit: 1, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 1 element allowed in an array.'), | ||
| 'throws rather than converting to an overflow object' | ||
| ); | ||
| s2t['throws']( | ||
| function () { utils.merge(['a', 'b', 'c'], 'd', { arrayLimit: 2, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'), | ||
| 'uses the plural message when arrayLimit is not 1' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.test('throws instead of merging array into primitive when throwOnLimitExceeded is set', function (s2t) { | ||
| s2t['throws']( | ||
| function () { utils.merge('a', ['b', 'c'], { arrayLimit: 1, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 1 element allowed in an array.'), | ||
| 'throws rather than converting to an overflow object' | ||
| ); | ||
| s2t['throws']( | ||
| function () { utils.merge('a', ['b', 'c', 'd'], { arrayLimit: 2, throwOnLimitExceeded: true }); }, | ||
| new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'), | ||
| 'uses the plural message when arrayLimit is not 1' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.end(); | ||
@@ -286,2 +366,43 @@ }); | ||
| t.test('with throwOnLimitExceeded', function (st) { | ||
| st.test('throws when concatenation exceeds the limit', function (s2t) { | ||
| s2t['throws']( | ||
| function () { utils.combine(['a', 'b', 'c'], 'd', 3, false, true); }, | ||
| new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), | ||
| 'throws instead of converting to an overflow object' | ||
| ); | ||
| s2t['throws']( | ||
| function () { utils.combine([], 'a', 0, false, true); }, | ||
| new RangeError('Array limit exceeded. Only 0 elements allowed in an array.'), | ||
| 'throws with the correct count at arrayLimit 0' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.test('throws when adding to an existing overflow object', function (s2t) { | ||
| var overflow = utils.combine(['a', 'b'], 'c', 0, false); | ||
| s2t.ok(utils.isOverflow(overflow), 'initial object is marked as overflow'); | ||
| s2t['throws']( | ||
| function () { utils.combine(overflow, 'd', 0, false, true); }, | ||
| new RangeError('Array limit exceeded. Only 0 elements allowed in an array.'), | ||
| 'throws rather than appending to the overflow object' | ||
| ); | ||
| s2t['throws']( | ||
| function () { utils.combine(overflow, 'd', 1, false, true); }, | ||
| new RangeError('Array limit exceeded. Only 1 element allowed in an array.'), | ||
| 'uses the singular message at arrayLimit 1' | ||
| ); | ||
| s2t.end(); | ||
| }); | ||
| st.test('does not throw when within the limit', function (s2t) { | ||
| var combined = utils.combine(['a'], 'b', 5, false, true); | ||
| s2t.deepEqual(combined, ['a', 'b'], 'returns the array unchanged when under the limit'); | ||
| s2t.end(); | ||
| }); | ||
| st.end(); | ||
| }); | ||
| t.test('with existing overflow object', function (st) { | ||
@@ -385,3 +506,76 @@ st.test('adds to existing overflow object at next index', function (s2t) { | ||
| var boundary = ''; | ||
| var expected = ''; | ||
| for (var j = 0; j < 1023; j++) { | ||
| boundary += 'a'; | ||
| expected += 'a'; | ||
| } | ||
| boundary += '😀'; | ||
| expected += '%F0%9F%98%80'; | ||
| t.equal( | ||
| utils.encode(boundary), | ||
| expected, | ||
| 'encodes a surrogate pair split across long-string chunks' | ||
| ); | ||
| var laterBoundary = ''; | ||
| var laterExpected = ''; | ||
| for (var k = 0; k < 2047; k++) { | ||
| laterBoundary += 'a'; | ||
| laterExpected += 'a'; | ||
| } | ||
| laterBoundary += '😀'; | ||
| laterExpected += '%F0%9F%98%80'; | ||
| t.equal( | ||
| utils.encode(laterBoundary), | ||
| laterExpected, | ||
| 'encodes a surrogate pair split across a later chunk boundary' | ||
| ); | ||
| var twoPairs = ''; | ||
| for (k = 0; k < 1023; k++) { | ||
| twoPairs += 'a'; | ||
| } | ||
| twoPairs += '😀'; | ||
| for (k = 0; k < 1022; k++) { | ||
| twoPairs += 'b'; | ||
| } | ||
| twoPairs += '😀'; | ||
| t.equal( | ||
| (utils.encode(twoPairs).match(/%F0%9F%98%80/g) || []).length, | ||
| 2, | ||
| 'encodes two surrogate pairs each split across a chunk boundary' | ||
| ); | ||
| var roundTrip = ''; | ||
| for (k = 0; k < 1023; k++) { | ||
| roundTrip += 'a'; | ||
| } | ||
| roundTrip += '😀'; | ||
| t.equal( | ||
| decodeURIComponent(utils.encode(roundTrip)), | ||
| roundTrip, | ||
| 'a boundary-split surrogate pair round-trips through decodeURIComponent' | ||
| ); | ||
| var loneBoundary = ''; | ||
| var loneExpected = ''; | ||
| for (k = 0; k < 1023; k++) { | ||
| loneBoundary += 'a'; | ||
| loneExpected += 'a'; | ||
| } | ||
| loneBoundary += '\uD83DX'; | ||
| loneExpected += '%F0%9F%91%98'; | ||
| t.equal( | ||
| utils.encode(loneBoundary), | ||
| loneExpected, | ||
| 'a lone high surrogate at a chunk boundary encodes the same as mid-chunk' | ||
| ); | ||
| t.equal( | ||
| utils.encode('\x28\x29'), | ||
@@ -388,0 +582,0 @@ '%28%29', |
Sorry, the diff of this file is too big to display
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
346555
7.53%5004
8.92%2
100%74
1.37%+ Added
Updated