query-string 7.1.3 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base.d.ts +561 -0
- package/base.js +517 -0
- package/index.d.ts +16 -563
- package/index.js +1 -482
- package/license +1 -1
- package/package.json +22 -11
- package/readme.md +33 -48
package/index.js
CHANGED
|
@@ -1,482 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const strictUriEncode = require('strict-uri-encode');
|
|
3
|
-
const decodeComponent = require('decode-uri-component');
|
|
4
|
-
const splitOnFirst = require('split-on-first');
|
|
5
|
-
const filterObject = require('filter-obj');
|
|
6
|
-
|
|
7
|
-
const isNullOrUndefined = value => value === null || value === undefined;
|
|
8
|
-
|
|
9
|
-
const encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');
|
|
10
|
-
|
|
11
|
-
function encoderForArrayFormat(options) {
|
|
12
|
-
switch (options.arrayFormat) {
|
|
13
|
-
case 'index':
|
|
14
|
-
return key => (result, value) => {
|
|
15
|
-
const index = result.length;
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
value === undefined ||
|
|
19
|
-
(options.skipNull && value === null) ||
|
|
20
|
-
(options.skipEmptyString && value === '')
|
|
21
|
-
) {
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (value === null) {
|
|
26
|
-
return [...result, [encode(key, options), '[', index, ']'].join('')];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return [
|
|
30
|
-
...result,
|
|
31
|
-
[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')
|
|
32
|
-
];
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
case 'bracket':
|
|
36
|
-
return key => (result, value) => {
|
|
37
|
-
if (
|
|
38
|
-
value === undefined ||
|
|
39
|
-
(options.skipNull && value === null) ||
|
|
40
|
-
(options.skipEmptyString && value === '')
|
|
41
|
-
) {
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (value === null) {
|
|
46
|
-
return [...result, [encode(key, options), '[]'].join('')];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
case 'colon-list-separator':
|
|
53
|
-
return key => (result, value) => {
|
|
54
|
-
if (
|
|
55
|
-
value === undefined ||
|
|
56
|
-
(options.skipNull && value === null) ||
|
|
57
|
-
(options.skipEmptyString && value === '')
|
|
58
|
-
) {
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (value === null) {
|
|
63
|
-
return [...result, [encode(key, options), ':list='].join('')];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return [...result, [encode(key, options), ':list=', encode(value, options)].join('')];
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
case 'comma':
|
|
70
|
-
case 'separator':
|
|
71
|
-
case 'bracket-separator': {
|
|
72
|
-
const keyValueSep = options.arrayFormat === 'bracket-separator' ?
|
|
73
|
-
'[]=' :
|
|
74
|
-
'=';
|
|
75
|
-
|
|
76
|
-
return key => (result, value) => {
|
|
77
|
-
if (
|
|
78
|
-
value === undefined ||
|
|
79
|
-
(options.skipNull && value === null) ||
|
|
80
|
-
(options.skipEmptyString && value === '')
|
|
81
|
-
) {
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Translate null to an empty string so that it doesn't serialize as 'null'
|
|
86
|
-
value = value === null ? '' : value;
|
|
87
|
-
|
|
88
|
-
if (result.length === 0) {
|
|
89
|
-
return [[encode(key, options), keyValueSep, encode(value, options)].join('')];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return [[result, encode(value, options)].join(options.arrayFormatSeparator)];
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
default:
|
|
97
|
-
return key => (result, value) => {
|
|
98
|
-
if (
|
|
99
|
-
value === undefined ||
|
|
100
|
-
(options.skipNull && value === null) ||
|
|
101
|
-
(options.skipEmptyString && value === '')
|
|
102
|
-
) {
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (value === null) {
|
|
107
|
-
return [...result, encode(key, options)];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return [...result, [encode(key, options), '=', encode(value, options)].join('')];
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function parserForArrayFormat(options) {
|
|
116
|
-
let result;
|
|
117
|
-
|
|
118
|
-
switch (options.arrayFormat) {
|
|
119
|
-
case 'index':
|
|
120
|
-
return (key, value, accumulator) => {
|
|
121
|
-
result = /\[(\d*)\]$/.exec(key);
|
|
122
|
-
|
|
123
|
-
key = key.replace(/\[\d*\]$/, '');
|
|
124
|
-
|
|
125
|
-
if (!result) {
|
|
126
|
-
accumulator[key] = value;
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (accumulator[key] === undefined) {
|
|
131
|
-
accumulator[key] = {};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
accumulator[key][result[1]] = value;
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
case 'bracket':
|
|
138
|
-
return (key, value, accumulator) => {
|
|
139
|
-
result = /(\[\])$/.exec(key);
|
|
140
|
-
key = key.replace(/\[\]$/, '');
|
|
141
|
-
|
|
142
|
-
if (!result) {
|
|
143
|
-
accumulator[key] = value;
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (accumulator[key] === undefined) {
|
|
148
|
-
accumulator[key] = [value];
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
accumulator[key] = [].concat(accumulator[key], value);
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
case 'colon-list-separator':
|
|
156
|
-
return (key, value, accumulator) => {
|
|
157
|
-
result = /(:list)$/.exec(key);
|
|
158
|
-
key = key.replace(/:list$/, '');
|
|
159
|
-
|
|
160
|
-
if (!result) {
|
|
161
|
-
accumulator[key] = value;
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (accumulator[key] === undefined) {
|
|
166
|
-
accumulator[key] = [value];
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
accumulator[key] = [].concat(accumulator[key], value);
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
case 'comma':
|
|
174
|
-
case 'separator':
|
|
175
|
-
return (key, value, accumulator) => {
|
|
176
|
-
const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);
|
|
177
|
-
const isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));
|
|
178
|
-
value = isEncodedArray ? decode(value, options) : value;
|
|
179
|
-
const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
|
|
180
|
-
accumulator[key] = newValue;
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
case 'bracket-separator':
|
|
184
|
-
return (key, value, accumulator) => {
|
|
185
|
-
const isArray = /(\[\])$/.test(key);
|
|
186
|
-
key = key.replace(/\[\]$/, '');
|
|
187
|
-
|
|
188
|
-
if (!isArray) {
|
|
189
|
-
accumulator[key] = value ? decode(value, options) : value;
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
const arrayValue = value === null ?
|
|
194
|
-
[] :
|
|
195
|
-
value.split(options.arrayFormatSeparator).map(item => decode(item, options));
|
|
196
|
-
|
|
197
|
-
if (accumulator[key] === undefined) {
|
|
198
|
-
accumulator[key] = arrayValue;
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
accumulator[key] = [].concat(accumulator[key], arrayValue);
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
default:
|
|
206
|
-
return (key, value, accumulator) => {
|
|
207
|
-
if (accumulator[key] === undefined) {
|
|
208
|
-
accumulator[key] = value;
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
accumulator[key] = [].concat(accumulator[key], value);
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
function validateArrayFormatSeparator(value) {
|
|
218
|
-
if (typeof value !== 'string' || value.length !== 1) {
|
|
219
|
-
throw new TypeError('arrayFormatSeparator must be single character string');
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
function encode(value, options) {
|
|
224
|
-
if (options.encode) {
|
|
225
|
-
return options.strict ? strictUriEncode(value) : encodeURIComponent(value);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return value;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function decode(value, options) {
|
|
232
|
-
if (options.decode) {
|
|
233
|
-
return decodeComponent(value);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return value;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
function keysSorter(input) {
|
|
240
|
-
if (Array.isArray(input)) {
|
|
241
|
-
return input.sort();
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if (typeof input === 'object') {
|
|
245
|
-
return keysSorter(Object.keys(input))
|
|
246
|
-
.sort((a, b) => Number(a) - Number(b))
|
|
247
|
-
.map(key => input[key]);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
return input;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function removeHash(input) {
|
|
254
|
-
const hashStart = input.indexOf('#');
|
|
255
|
-
if (hashStart !== -1) {
|
|
256
|
-
input = input.slice(0, hashStart);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
return input;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
function getHash(url) {
|
|
263
|
-
let hash = '';
|
|
264
|
-
const hashStart = url.indexOf('#');
|
|
265
|
-
if (hashStart !== -1) {
|
|
266
|
-
hash = url.slice(hashStart);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
return hash;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
function extract(input) {
|
|
273
|
-
input = removeHash(input);
|
|
274
|
-
const queryStart = input.indexOf('?');
|
|
275
|
-
if (queryStart === -1) {
|
|
276
|
-
return '';
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return input.slice(queryStart + 1);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
function parseValue(value, options) {
|
|
283
|
-
if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
|
|
284
|
-
value = Number(value);
|
|
285
|
-
} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
|
|
286
|
-
value = value.toLowerCase() === 'true';
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return value;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
function parse(query, options) {
|
|
293
|
-
options = Object.assign({
|
|
294
|
-
decode: true,
|
|
295
|
-
sort: true,
|
|
296
|
-
arrayFormat: 'none',
|
|
297
|
-
arrayFormatSeparator: ',',
|
|
298
|
-
parseNumbers: false,
|
|
299
|
-
parseBooleans: false
|
|
300
|
-
}, options);
|
|
301
|
-
|
|
302
|
-
validateArrayFormatSeparator(options.arrayFormatSeparator);
|
|
303
|
-
|
|
304
|
-
const formatter = parserForArrayFormat(options);
|
|
305
|
-
|
|
306
|
-
// Create an object with no prototype
|
|
307
|
-
const ret = Object.create(null);
|
|
308
|
-
|
|
309
|
-
if (typeof query !== 'string') {
|
|
310
|
-
return ret;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
query = query.trim().replace(/^[?#&]/, '');
|
|
314
|
-
|
|
315
|
-
if (!query) {
|
|
316
|
-
return ret;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
for (const param of query.split('&')) {
|
|
320
|
-
if (param === '') {
|
|
321
|
-
continue;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '=');
|
|
325
|
-
|
|
326
|
-
// Missing `=` should be `null`:
|
|
327
|
-
// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
|
|
328
|
-
value = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);
|
|
329
|
-
formatter(decode(key, options), value, ret);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
for (const key of Object.keys(ret)) {
|
|
333
|
-
const value = ret[key];
|
|
334
|
-
if (typeof value === 'object' && value !== null) {
|
|
335
|
-
for (const k of Object.keys(value)) {
|
|
336
|
-
value[k] = parseValue(value[k], options);
|
|
337
|
-
}
|
|
338
|
-
} else {
|
|
339
|
-
ret[key] = parseValue(value, options);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
if (options.sort === false) {
|
|
344
|
-
return ret;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
|
|
348
|
-
const value = ret[key];
|
|
349
|
-
if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {
|
|
350
|
-
// Sort object keys, not values
|
|
351
|
-
result[key] = keysSorter(value);
|
|
352
|
-
} else {
|
|
353
|
-
result[key] = value;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
return result;
|
|
357
|
-
}, Object.create(null));
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
exports.extract = extract;
|
|
361
|
-
exports.parse = parse;
|
|
362
|
-
|
|
363
|
-
exports.stringify = (object, options) => {
|
|
364
|
-
if (!object) {
|
|
365
|
-
return '';
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
options = Object.assign({
|
|
369
|
-
encode: true,
|
|
370
|
-
strict: true,
|
|
371
|
-
arrayFormat: 'none',
|
|
372
|
-
arrayFormatSeparator: ','
|
|
373
|
-
}, options);
|
|
374
|
-
|
|
375
|
-
validateArrayFormatSeparator(options.arrayFormatSeparator);
|
|
376
|
-
|
|
377
|
-
const shouldFilter = key => (
|
|
378
|
-
(options.skipNull && isNullOrUndefined(object[key])) ||
|
|
379
|
-
(options.skipEmptyString && object[key] === '')
|
|
380
|
-
);
|
|
381
|
-
|
|
382
|
-
const formatter = encoderForArrayFormat(options);
|
|
383
|
-
|
|
384
|
-
const objectCopy = {};
|
|
385
|
-
|
|
386
|
-
for (const key of Object.keys(object)) {
|
|
387
|
-
if (!shouldFilter(key)) {
|
|
388
|
-
objectCopy[key] = object[key];
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
const keys = Object.keys(objectCopy);
|
|
393
|
-
|
|
394
|
-
if (options.sort !== false) {
|
|
395
|
-
keys.sort(options.sort);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
return keys.map(key => {
|
|
399
|
-
const value = object[key];
|
|
400
|
-
|
|
401
|
-
if (value === undefined) {
|
|
402
|
-
return '';
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
if (value === null) {
|
|
406
|
-
return encode(key, options);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
if (Array.isArray(value)) {
|
|
410
|
-
if (value.length === 0 && options.arrayFormat === 'bracket-separator') {
|
|
411
|
-
return encode(key, options) + '[]';
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
return value
|
|
415
|
-
.reduce(formatter(key), [])
|
|
416
|
-
.join('&');
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
return encode(key, options) + '=' + encode(value, options);
|
|
420
|
-
}).filter(x => x.length > 0).join('&');
|
|
421
|
-
};
|
|
422
|
-
|
|
423
|
-
exports.parseUrl = (url, options) => {
|
|
424
|
-
options = Object.assign({
|
|
425
|
-
decode: true
|
|
426
|
-
}, options);
|
|
427
|
-
|
|
428
|
-
const [url_, hash] = splitOnFirst(url, '#');
|
|
429
|
-
|
|
430
|
-
return Object.assign(
|
|
431
|
-
{
|
|
432
|
-
url: url_.split('?')[0] || '',
|
|
433
|
-
query: parse(extract(url), options)
|
|
434
|
-
},
|
|
435
|
-
options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}
|
|
436
|
-
);
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
exports.stringifyUrl = (object, options) => {
|
|
440
|
-
options = Object.assign({
|
|
441
|
-
encode: true,
|
|
442
|
-
strict: true,
|
|
443
|
-
[encodeFragmentIdentifier]: true
|
|
444
|
-
}, options);
|
|
445
|
-
|
|
446
|
-
const url = removeHash(object.url).split('?')[0] || '';
|
|
447
|
-
const queryFromUrl = exports.extract(object.url);
|
|
448
|
-
const parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});
|
|
449
|
-
|
|
450
|
-
const query = Object.assign(parsedQueryFromUrl, object.query);
|
|
451
|
-
let queryString = exports.stringify(query, options);
|
|
452
|
-
if (queryString) {
|
|
453
|
-
queryString = `?${queryString}`;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
let hash = getHash(object.url);
|
|
457
|
-
if (object.fragmentIdentifier) {
|
|
458
|
-
hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
return `${url}${queryString}${hash}`;
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
exports.pick = (input, filter, options) => {
|
|
465
|
-
options = Object.assign({
|
|
466
|
-
parseFragmentIdentifier: true,
|
|
467
|
-
[encodeFragmentIdentifier]: false
|
|
468
|
-
}, options);
|
|
469
|
-
|
|
470
|
-
const {url, query, fragmentIdentifier} = exports.parseUrl(input, options);
|
|
471
|
-
return exports.stringifyUrl({
|
|
472
|
-
url,
|
|
473
|
-
query: filterObject(query, filter),
|
|
474
|
-
fragmentIdentifier
|
|
475
|
-
}, options);
|
|
476
|
-
};
|
|
477
|
-
|
|
478
|
-
exports.exclude = (input, filter, options) => {
|
|
479
|
-
const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);
|
|
480
|
-
|
|
481
|
-
return exports.pick(input, exclusionFilter, options);
|
|
482
|
-
};
|
|
1
|
+
export * as default from './base.js';
|
package/license
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (
|
|
3
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
6
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "query-string",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.1",
|
|
4
4
|
"description": "Parse and stringify URL query strings",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "sindresorhus/query-string",
|
|
@@ -10,8 +10,13 @@
|
|
|
10
10
|
"email": "sindresorhus@gmail.com",
|
|
11
11
|
"url": "https://sindresorhus.com"
|
|
12
12
|
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"exports": {
|
|
15
|
+
"types": "./index.d.ts",
|
|
16
|
+
"default": "./index.js"
|
|
17
|
+
},
|
|
13
18
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
19
|
+
"node": ">=14.16"
|
|
15
20
|
},
|
|
16
21
|
"scripts": {
|
|
17
22
|
"benchmark": "node benchmark.js",
|
|
@@ -19,7 +24,9 @@
|
|
|
19
24
|
},
|
|
20
25
|
"files": [
|
|
21
26
|
"index.js",
|
|
22
|
-
"index.d.ts"
|
|
27
|
+
"index.d.ts",
|
|
28
|
+
"base.js",
|
|
29
|
+
"base.d.ts"
|
|
23
30
|
],
|
|
24
31
|
"keywords": [
|
|
25
32
|
"browser",
|
|
@@ -39,16 +46,20 @@
|
|
|
39
46
|
],
|
|
40
47
|
"dependencies": {
|
|
41
48
|
"decode-uri-component": "^0.2.2",
|
|
42
|
-
"filter-obj": "^
|
|
43
|
-
"split-on-first": "^1.0.0"
|
|
44
|
-
"strict-uri-encode": "^2.0.0"
|
|
49
|
+
"filter-obj": "^5.1.0",
|
|
50
|
+
"split-on-first": "^1.0.0"
|
|
45
51
|
},
|
|
46
52
|
"devDependencies": {
|
|
47
|
-
"ava": "^1.
|
|
53
|
+
"ava": "^5.1.0",
|
|
48
54
|
"benchmark": "^2.1.4",
|
|
49
|
-
"deep-equal": "^1.0
|
|
50
|
-
"fast-check": "^
|
|
51
|
-
"tsd": "^0.
|
|
52
|
-
"xo": "^0.
|
|
55
|
+
"deep-equal": "^2.1.0",
|
|
56
|
+
"fast-check": "^3.4.0",
|
|
57
|
+
"tsd": "^0.25.0",
|
|
58
|
+
"xo": "^0.53.1"
|
|
59
|
+
},
|
|
60
|
+
"tsd": {
|
|
61
|
+
"compilerOptions": {
|
|
62
|
+
"module": "node16"
|
|
63
|
+
}
|
|
53
64
|
}
|
|
54
65
|
}
|