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.
- package/node_modules/body-parser/HISTORY.md +8 -0
- package/node_modules/body-parser/lib/types/urlencoded.js +2 -9
- package/node_modules/body-parser/package.json +9 -10
- package/node_modules/cookie/index.js +2 -1
- package/node_modules/cookie/package.json +1 -1
- package/node_modules/cookie-signature/History.md +5 -1
- package/node_modules/cookie-signature/index.js +6 -6
- package/node_modules/cookie-signature/package.json +2 -2
- package/node_modules/express/History.md +11 -0
- package/node_modules/express/package.json +17 -17
- package/node_modules/finalhandler/HISTORY.md +6 -0
- package/node_modules/finalhandler/package.json +3 -3
- package/node_modules/http-errors/HISTORY.md +6 -0
- package/node_modules/http-errors/index.js +4 -3
- package/node_modules/http-errors/package.json +12 -8
- package/node_modules/qs/.github/SECURITY.md +11 -0
- package/node_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/node_modules/qs/CHANGELOG.md +31 -0
- package/node_modules/qs/README.md +25 -1
- package/node_modules/qs/dist/qs.js +95 -44
- package/node_modules/qs/eslint.config.mjs +56 -0
- package/node_modules/qs/lib/parse.js +107 -43
- package/node_modules/qs/lib/stringify.js +11 -6
- package/node_modules/qs/lib/utils.js +61 -6
- package/node_modules/qs/package.json +15 -12
- package/node_modules/qs/test/parse.js +257 -31
- package/node_modules/qs/test/stringify.js +23 -11
- package/node_modules/qs/test/utils.js +245 -0
- package/node_modules/raw-body/package.json +5 -7
- package/node_modules/send/HISTORY.md +19 -7
- package/node_modules/send/package.json +6 -6
- package/node_modules/serve-static/HISTORY.md +6 -0
- package/node_modules/serve-static/package.json +2 -2
- package/node_modules/statuses/HISTORY.md +5 -0
- package/node_modules/statuses/README.md +3 -0
- package/node_modules/statuses/package.json +7 -7
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +1 -1
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +1 -1
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +2 -2
- package/node_modules/yaml/browser/dist/errors.js +1 -1
- package/node_modules/yaml/browser/dist/nodes/Alias.js +1 -1
- package/node_modules/yaml/browser/dist/parse/parser.js +2 -2
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +1 -1
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +1 -1
- package/node_modules/yaml/dist/compose/compose-collection.js +1 -1
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +1 -1
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +2 -2
- package/node_modules/yaml/dist/errors.js +1 -1
- package/node_modules/yaml/dist/nodes/Alias.js +1 -1
- package/node_modules/yaml/dist/parse/parser.js +2 -2
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +1 -1
- package/node_modules/yaml/dist/stringify/stringifyPair.js +1 -1
- package/node_modules/yaml/package.json +4 -4
- package/package.json +1 -1
- package/node_modules/body-parser/SECURITY.md +0 -25
- package/node_modules/cookie-signature/.npmignore +0 -4
- package/node_modules/qs/.eslintrc +0 -38
- package/node_modules/raw-body/HISTORY.md +0 -308
- package/node_modules/raw-body/SECURITY.md +0 -24
- package/node_modules/send/node_modules/encodeurl/HISTORY.md +0 -14
- package/node_modules/send/node_modules/encodeurl/LICENSE +0 -22
- package/node_modules/send/node_modules/encodeurl/README.md +0 -128
- package/node_modules/send/node_modules/encodeurl/index.js +0 -60
- 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(
|
|
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
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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 ?
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
237
|
+
while ((segment = child.exec(key)) !== null && i < options.depth) {
|
|
196
238
|
i += 1;
|
|
197
|
-
|
|
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 ?
|
|
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 ?
|
|
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'
|
|
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,
|
|
@@ -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 ?
|
|
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 ((
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
|
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": "^
|
|
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.
|
|
45
|
-
"eslint": "
|
|
44
|
+
"es-value-fixtures": "^1.7.1",
|
|
45
|
+
"eslint": "^9.39.2",
|
|
46
46
|
"evalmd": "^0.0.19",
|
|
47
|
-
"for-each": "^0.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-
|
|
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
|
|
59
|
+
"mock-property": "^1.1.0",
|
|
57
60
|
"module-deps": "^6.2.3",
|
|
58
|
-
"npmignore": "^0.3.
|
|
61
|
+
"npmignore": "^0.3.5",
|
|
59
62
|
"nyc": "^10.3.2",
|
|
60
|
-
"object-inspect": "^1.13.
|
|
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.
|
|
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
|
|
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",
|