step-node-agent 3.29.0 → 3.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/node_modules/body-parser/HISTORY.md +8 -0
  2. package/node_modules/body-parser/lib/types/urlencoded.js +2 -9
  3. package/node_modules/body-parser/package.json +9 -10
  4. package/node_modules/cookie/index.js +2 -1
  5. package/node_modules/cookie/package.json +1 -1
  6. package/node_modules/cookie-signature/History.md +5 -1
  7. package/node_modules/cookie-signature/index.js +6 -6
  8. package/node_modules/cookie-signature/package.json +2 -2
  9. package/node_modules/express/History.md +11 -0
  10. package/node_modules/express/package.json +17 -17
  11. package/node_modules/finalhandler/HISTORY.md +6 -0
  12. package/node_modules/finalhandler/package.json +3 -3
  13. package/node_modules/http-errors/HISTORY.md +6 -0
  14. package/node_modules/http-errors/index.js +4 -3
  15. package/node_modules/http-errors/package.json +12 -8
  16. package/node_modules/qs/.github/SECURITY.md +11 -0
  17. package/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  18. package/node_modules/qs/CHANGELOG.md +31 -0
  19. package/node_modules/qs/README.md +25 -1
  20. package/node_modules/qs/dist/qs.js +95 -44
  21. package/node_modules/qs/eslint.config.mjs +56 -0
  22. package/node_modules/qs/lib/parse.js +107 -43
  23. package/node_modules/qs/lib/stringify.js +11 -6
  24. package/node_modules/qs/lib/utils.js +61 -6
  25. package/node_modules/qs/package.json +15 -12
  26. package/node_modules/qs/test/parse.js +257 -31
  27. package/node_modules/qs/test/stringify.js +23 -11
  28. package/node_modules/qs/test/utils.js +245 -0
  29. package/node_modules/raw-body/package.json +5 -7
  30. package/node_modules/send/HISTORY.md +19 -7
  31. package/node_modules/send/package.json +6 -6
  32. package/node_modules/serve-static/HISTORY.md +6 -0
  33. package/node_modules/serve-static/package.json +2 -2
  34. package/node_modules/statuses/HISTORY.md +5 -0
  35. package/node_modules/statuses/README.md +3 -0
  36. package/node_modules/statuses/package.json +7 -7
  37. package/node_modules/yaml/browser/dist/compose/compose-collection.js +1 -1
  38. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +1 -1
  39. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +2 -2
  40. package/node_modules/yaml/browser/dist/errors.js +1 -1
  41. package/node_modules/yaml/browser/dist/nodes/Alias.js +1 -1
  42. package/node_modules/yaml/browser/dist/parse/parser.js +2 -2
  43. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +1 -1
  44. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +1 -1
  45. package/node_modules/yaml/dist/compose/compose-collection.js +1 -1
  46. package/node_modules/yaml/dist/compose/resolve-block-seq.js +1 -1
  47. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +2 -2
  48. package/node_modules/yaml/dist/errors.js +1 -1
  49. package/node_modules/yaml/dist/nodes/Alias.js +1 -1
  50. package/node_modules/yaml/dist/parse/parser.js +2 -2
  51. package/node_modules/yaml/dist/stringify/stringifyNumber.js +1 -1
  52. package/node_modules/yaml/dist/stringify/stringifyPair.js +1 -1
  53. package/node_modules/yaml/package.json +4 -4
  54. package/package.json +1 -1
  55. package/node_modules/body-parser/SECURITY.md +0 -25
  56. package/node_modules/cookie-signature/.npmignore +0 -4
  57. package/node_modules/qs/.eslintrc +0 -38
  58. package/node_modules/raw-body/HISTORY.md +0 -308
  59. package/node_modules/raw-body/SECURITY.md +0 -24
  60. package/node_modules/send/node_modules/encodeurl/HISTORY.md +0 -14
  61. package/node_modules/send/node_modules/encodeurl/LICENSE +0 -22
  62. package/node_modules/send/node_modules/encodeurl/README.md +0 -128
  63. package/node_modules/send/node_modules/encodeurl/index.js +0 -60
  64. package/node_modules/send/node_modules/encodeurl/package.json +0 -40
@@ -25,7 +25,8 @@ var defaults = {
25
25
  parseArrays: true,
26
26
  plainObjects: false,
27
27
  strictDepth: false,
28
- strictNullHandling: false
28
+ strictNullHandling: false,
29
+ throwOnLimitExceeded: false
29
30
  };
30
31
 
31
32
  var interpretNumericEntities = function (str) {
@@ -34,11 +35,15 @@ var interpretNumericEntities = function (str) {
34
35
  });
35
36
  };
36
37
 
37
- var parseArrayValue = function (val, options) {
38
+ var parseArrayValue = function (val, options, currentArrayLength) {
38
39
  if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
39
40
  return val.split(',');
40
41
  }
41
42
 
43
+ if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {
44
+ throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');
45
+ }
46
+
42
47
  return val;
43
48
  };
44
49
 
@@ -57,8 +62,17 @@ var parseValues = function parseQueryStringValues(str, options) {
57
62
 
58
63
  var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
59
64
  cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');
65
+
60
66
  var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
61
- var parts = cleanStr.split(options.delimiter, limit);
67
+ var parts = cleanStr.split(
68
+ options.delimiter,
69
+ options.throwOnLimitExceeded ? limit + 1 : limit
70
+ );
71
+
72
+ if (options.throwOnLimitExceeded && parts.length > limit) {
73
+ throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');
74
+ }
75
+
62
76
  var skipIndex = -1; // Keep track of where the utf8 sentinel was found
63
77
  var i;
64
78
 
@@ -86,33 +100,48 @@ var parseValues = function parseQueryStringValues(str, options) {
86
100
  var bracketEqualsPos = part.indexOf(']=');
87
101
  var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
88
102
 
89
- var key, val;
103
+ var key;
104
+ var val;
90
105
  if (pos === -1) {
91
106
  key = options.decoder(part, defaults.decoder, charset, 'key');
92
107
  val = options.strictNullHandling ? null : '';
93
108
  } else {
94
109
  key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
95
- val = utils.maybeMap(
96
- parseArrayValue(part.slice(pos + 1), options),
97
- function (encodedVal) {
98
- return options.decoder(encodedVal, defaults.decoder, charset, 'value');
99
- }
100
- );
110
+
111
+ if (key !== null) {
112
+ val = utils.maybeMap(
113
+ parseArrayValue(
114
+ part.slice(pos + 1),
115
+ options,
116
+ isArray(obj[key]) ? obj[key].length : 0
117
+ ),
118
+ function (encodedVal) {
119
+ return options.decoder(encodedVal, defaults.decoder, charset, 'value');
120
+ }
121
+ );
122
+ }
101
123
  }
102
124
 
103
125
  if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
104
- val = interpretNumericEntities(val);
126
+ val = interpretNumericEntities(String(val));
105
127
  }
106
128
 
107
129
  if (part.indexOf('[]=') > -1) {
108
130
  val = isArray(val) ? [val] : val;
109
131
  }
110
132
 
111
- var existing = has.call(obj, key);
112
- if (existing && options.duplicates === 'combine') {
113
- obj[key] = utils.combine(obj[key], val);
114
- } else if (!existing || options.duplicates === 'last') {
115
- obj[key] = val;
133
+ if (key !== null) {
134
+ var existing = has.call(obj, key);
135
+ if (existing && options.duplicates === 'combine') {
136
+ obj[key] = utils.combine(
137
+ obj[key],
138
+ val,
139
+ options.arrayLimit,
140
+ options.plainObjects
141
+ );
142
+ } else if (!existing || options.duplicates === 'last') {
143
+ obj[key] = val;
144
+ }
116
145
  }
117
146
  }
118
147
 
@@ -120,18 +149,34 @@ var parseValues = function parseQueryStringValues(str, options) {
120
149
  };
121
150
 
122
151
  var parseObject = function (chain, val, options, valuesParsed) {
123
- var leaf = valuesParsed ? val : parseArrayValue(val, options);
152
+ var currentArrayLength = 0;
153
+ if (chain.length > 0 && chain[chain.length - 1] === '[]') {
154
+ var parentKey = chain.slice(0, -1).join('');
155
+ currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;
156
+ }
157
+
158
+ var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);
124
159
 
125
160
  for (var i = chain.length - 1; i >= 0; --i) {
126
161
  var obj;
127
162
  var root = chain[i];
128
163
 
129
164
  if (root === '[]' && options.parseArrays) {
130
- obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))
131
- ? []
132
- : [].concat(leaf);
165
+ if (utils.isOverflow(leaf)) {
166
+ // leaf is already an overflow object, preserve it
167
+ obj = leaf;
168
+ } else {
169
+ obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))
170
+ ? []
171
+ : utils.combine(
172
+ [],
173
+ leaf,
174
+ options.arrayLimit,
175
+ options.plainObjects
176
+ );
177
+ }
133
178
  } else {
134
- obj = options.plainObjects ? Object.create(null) : {};
179
+ obj = options.plainObjects ? { __proto__: null } : {};
135
180
  var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
136
181
  var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;
137
182
  var index = parseInt(decodedRoot, 10);
@@ -157,29 +202,28 @@ var parseObject = function (chain, val, options, valuesParsed) {
157
202
  return leaf;
158
203
  };
159
204
 
160
- var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
161
- if (!givenKey) {
162
- return;
163
- }
164
-
165
- // Transform dot notation to bracket notation
205
+ var splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {
166
206
  var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
167
207
 
168
- // The regex chunks
208
+ if (options.depth <= 0) {
209
+ if (!options.plainObjects && has.call(Object.prototype, key)) {
210
+ if (!options.allowPrototypes) {
211
+ return;
212
+ }
213
+ }
214
+
215
+ return [key];
216
+ }
169
217
 
170
218
  var brackets = /(\[[^[\]]*])/;
171
219
  var child = /(\[[^[\]]*])/g;
172
220
 
173
- // Get the parent
174
-
175
- var segment = options.depth > 0 && brackets.exec(key);
221
+ var segment = brackets.exec(key);
176
222
  var parent = segment ? key.slice(0, segment.index) : key;
177
223
 
178
- // Stash the parent if it exists
179
-
180
224
  var keys = [];
225
+
181
226
  if (parent) {
182
- // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
183
227
  if (!options.plainObjects && has.call(Object.prototype, parent)) {
184
228
  if (!options.allowPrototypes) {
185
229
  return;
@@ -189,28 +233,42 @@ var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesPars
189
233
  keys.push(parent);
190
234
  }
191
235
 
192
- // Loop through children appending to the array until we hit depth
193
-
194
236
  var i = 0;
195
- while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
237
+ while ((segment = child.exec(key)) !== null && i < options.depth) {
196
238
  i += 1;
197
- if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
239
+
240
+ var segmentContent = segment[1].slice(1, -1);
241
+ if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {
198
242
  if (!options.allowPrototypes) {
199
243
  return;
200
244
  }
201
245
  }
246
+
202
247
  keys.push(segment[1]);
203
248
  }
204
249
 
205
- // If there's a remainder, check strictDepth option for throw, else just add whatever is left
206
-
207
250
  if (segment) {
208
251
  if (options.strictDepth === true) {
209
252
  throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');
210
253
  }
254
+
211
255
  keys.push('[' + key.slice(segment.index) + ']');
212
256
  }
213
257
 
258
+ return keys;
259
+ };
260
+
261
+ var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
262
+ if (!givenKey) {
263
+ return;
264
+ }
265
+
266
+ var keys = splitKeyIntoSegments(givenKey, options);
267
+
268
+ if (!keys) {
269
+ return;
270
+ }
271
+
214
272
  return parseObject(keys, val, options, valuesParsed);
215
273
  };
216
274
 
@@ -234,6 +292,11 @@ var normalizeParseOptions = function normalizeParseOptions(opts) {
234
292
  if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
235
293
  throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
236
294
  }
295
+
296
+ if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {
297
+ throw new TypeError('`throwOnLimitExceeded` option must be a boolean');
298
+ }
299
+
237
300
  var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
238
301
 
239
302
  var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;
@@ -265,7 +328,8 @@ var normalizeParseOptions = function normalizeParseOptions(opts) {
265
328
  parseArrays: opts.parseArrays !== false,
266
329
  plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
267
330
  strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,
268
- strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
331
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,
332
+ throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false
269
333
  };
270
334
  };
271
335
 
@@ -273,11 +337,11 @@ module.exports = function (str, opts) {
273
337
  var options = normalizeParseOptions(opts);
274
338
 
275
339
  if (str === '' || str === null || typeof str === 'undefined') {
276
- return options.plainObjects ? Object.create(null) : {};
340
+ return options.plainObjects ? { __proto__: null } : {};
277
341
  }
278
342
 
279
343
  var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
280
- var obj = options.plainObjects ? Object.create(null) : {};
344
+ var obj = options.plainObjects ? { __proto__: null } : {};
281
345
 
282
346
  // Iterate over the keys and setup the new object
283
347
 
@@ -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' ? key.value : obj[key];
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 && obj[key] === null) {
317
+ if (options.skipNulls && value === null) {
313
318
  continue;
314
319
  }
315
320
  pushToArray(keys, stringify(
316
- obj[key],
321
+ value,
317
322
  key,
318
323
  generateArrayPrefix,
319
324
  commaRoundTrip,
@@ -1,10 +1,32 @@
1
1
  'use strict';
2
2
 
3
3
  var formats = require('./formats');
4
+ var getSideChannel = require('side-channel');
4
5
 
5
6
  var has = Object.prototype.hasOwnProperty;
6
7
  var isArray = Array.isArray;
7
8
 
9
+ // Track objects created from arrayLimit overflow using side-channel
10
+ // Stores the current max numeric index for O(1) lookup
11
+ var overflowChannel = getSideChannel();
12
+
13
+ var markOverflow = function markOverflow(obj, maxIndex) {
14
+ overflowChannel.set(obj, maxIndex);
15
+ return obj;
16
+ };
17
+
18
+ var isOverflow = function isOverflow(obj) {
19
+ return overflowChannel.has(obj);
20
+ };
21
+
22
+ var getMaxIndex = function getMaxIndex(obj) {
23
+ return overflowChannel.get(obj);
24
+ };
25
+
26
+ var setMaxIndex = function setMaxIndex(obj, maxIndex) {
27
+ overflowChannel.set(obj, maxIndex);
28
+ };
29
+
8
30
  var hexTable = (function () {
9
31
  var array = [];
10
32
  for (var i = 0; i < 256; ++i) {
@@ -34,7 +56,7 @@ var compactQueue = function compactQueue(queue) {
34
56
  };
35
57
 
36
58
  var arrayToObject = function arrayToObject(source, options) {
37
- var obj = options && options.plainObjects ? Object.create(null) : {};
59
+ var obj = options && options.plainObjects ? { __proto__: null } : {};
38
60
  for (var i = 0; i < source.length; ++i) {
39
61
  if (typeof source[i] !== 'undefined') {
40
62
  obj[i] = source[i];
@@ -50,11 +72,19 @@ var merge = function merge(target, source, options) {
50
72
  return target;
51
73
  }
52
74
 
53
- if (typeof source !== 'object') {
75
+ if (typeof source !== 'object' && typeof source !== 'function') {
54
76
  if (isArray(target)) {
55
77
  target.push(source);
56
78
  } else if (target && typeof target === 'object') {
57
- if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
79
+ if (isOverflow(target)) {
80
+ // Add at next numeric index for overflow objects
81
+ var newIndex = getMaxIndex(target) + 1;
82
+ target[newIndex] = source;
83
+ setMaxIndex(target, newIndex);
84
+ } else if (
85
+ (options && (options.plainObjects || options.allowPrototypes))
86
+ || !has.call(Object.prototype, source)
87
+ ) {
58
88
  target[source] = true;
59
89
  }
60
90
  } else {
@@ -65,6 +95,18 @@ var merge = function merge(target, source, options) {
65
95
  }
66
96
 
67
97
  if (!target || typeof target !== 'object') {
98
+ if (isOverflow(source)) {
99
+ // Create new object with target at 0, source values shifted by 1
100
+ var sourceKeys = Object.keys(source);
101
+ var result = options && options.plainObjects
102
+ ? { __proto__: null, 0: target }
103
+ : { 0: target };
104
+ for (var m = 0; m < sourceKeys.length; m++) {
105
+ var oldKey = parseInt(sourceKeys[m], 10);
106
+ result[oldKey + 1] = source[sourceKeys[m]];
107
+ }
108
+ return markOverflow(result, getMaxIndex(source) + 1);
109
+ }
68
110
  return [target].concat(source);
69
111
  }
70
112
 
@@ -108,7 +150,7 @@ var assign = function assignSingleSource(target, source) {
108
150
  }, target);
109
151
  };
110
152
 
111
- var decode = function (str, decoder, charset) {
153
+ var decode = function (str, defaultDecoder, charset) {
112
154
  var strWithoutPlus = str.replace(/\+/g, ' ');
113
155
  if (charset === 'iso-8859-1') {
114
156
  // unescape never throws, no try...catch needed:
@@ -236,8 +278,20 @@ var isBuffer = function isBuffer(obj) {
236
278
  return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
237
279
  };
238
280
 
239
- var combine = function combine(a, b) {
240
- return [].concat(a, b);
281
+ var combine = function combine(a, b, arrayLimit, plainObjects) {
282
+ // If 'a' is already an overflow object, add to it
283
+ if (isOverflow(a)) {
284
+ var newIndex = getMaxIndex(a) + 1;
285
+ a[newIndex] = b;
286
+ setMaxIndex(a, newIndex);
287
+ return a;
288
+ }
289
+
290
+ var result = [].concat(a, b);
291
+ if (result.length > arrayLimit) {
292
+ return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);
293
+ }
294
+ return result;
241
295
  };
242
296
 
243
297
  var maybeMap = function maybeMap(val, fn) {
@@ -259,6 +313,7 @@ module.exports = {
259
313
  decode: decode,
260
314
  encode: encode,
261
315
  isBuffer: isBuffer,
316
+ isOverflow: isOverflow,
262
317
  isRegExp: isRegExp,
263
318
  maybeMap: maybeMap,
264
319
  merge: merge
@@ -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.13.0",
5
+ "version": "6.14.1",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/ljharb/qs.git"
@@ -31,37 +31,40 @@
31
31
  "node": ">=0.6"
32
32
  },
33
33
  "dependencies": {
34
- "side-channel": "^1.0.6"
34
+ "side-channel": "^1.1.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@browserify/envify": "^6.0.0",
38
38
  "@browserify/uglifyify": "^6.0.0",
39
- "@ljharb/eslint-config": "^21.1.1",
39
+ "@ljharb/eslint-config": "^22.1.3",
40
40
  "browserify": "^16.5.2",
41
41
  "bundle-collapser": "^1.4.0",
42
42
  "common-shakeify": "~1.0.0",
43
43
  "eclint": "^2.8.1",
44
- "es-value-fixtures": "^1.4.2",
45
- "eslint": "=8.8.0",
44
+ "es-value-fixtures": "^1.7.1",
45
+ "eslint": "^9.39.2",
46
46
  "evalmd": "^0.0.19",
47
- "for-each": "^0.3.3",
47
+ "for-each": "^0.3.5",
48
48
  "glob": "=10.3.7",
49
+ "has-bigints": "^1.1.0",
49
50
  "has-override-mistake": "^1.0.1",
50
51
  "has-property-descriptors": "^1.0.2",
51
- "has-symbols": "^1.0.3",
52
+ "has-proto": "^1.2.0",
53
+ "has-symbols": "^1.1.0",
52
54
  "iconv-lite": "^0.5.1",
53
55
  "in-publish": "^2.0.1",
54
56
  "jackspeak": "=2.1.1",
57
+ "jiti": "^0.0.0",
55
58
  "mkdirp": "^0.5.5",
56
- "mock-property": "^1.0.3",
59
+ "mock-property": "^1.1.0",
57
60
  "module-deps": "^6.2.3",
58
- "npmignore": "^0.3.1",
61
+ "npmignore": "^0.3.5",
59
62
  "nyc": "^10.3.2",
60
- "object-inspect": "^1.13.2",
63
+ "object-inspect": "^1.13.4",
61
64
  "qs-iconv": "^1.0.4",
62
65
  "safe-publish-latest": "^2.0.0",
63
66
  "safer-buffer": "^2.1.2",
64
- "tape": "^5.8.1",
67
+ "tape": "^5.9.0",
65
68
  "unassertify": "^3.0.1"
66
69
  },
67
70
  "scripts": {
@@ -74,7 +77,7 @@
74
77
  "posttest": "npx npm@'>=10.2' audit --production",
75
78
  "readme": "evalmd README.md",
76
79
  "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)",
77
- "lint": "eslint --ext=js,mjs .",
80
+ "lint": "eslint .",
78
81
  "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js"
79
82
  },
80
83
  "license": "BSD-3-Clause",