+1
-1
.mtn-ignore
+1
-1
.mtn-ignore
+13
-2
CHANGELOG.md
+13
-2
CHANGELOG.md
···
1
1
# ChangeLog
2
2
3
+
## 2.1.1 - 2025-10-24
4
+
5
+
### Changed
6
+
7
+
- update dev dependencies
8
+
- fix test suite that was reporting no error with empty responses
9
+
10
+
### Added
11
+
12
+
- add content length check for BOOLEAN, INTEGER, OID ([GitHub #104](https://github.com/lapo-luchini/asn1js/pull/104))
13
+
3
14
## 2.1.0 - 2025-08-03
4
15
5
16
### Changed
6
17
7
-
- when fields are CHOICEs now both the field name and the choice name are shown (fixes GitHub #102)
18
+
- when fields are CHOICEs now both the field name and the choice name are shown (fixes [GitHub #102](https://github.com/lapo-luchini/asn1js/issues/102))
8
19
- upgrade minimum NodeJS version supported from 12.20.0 to 14.6.0 due to usage of ?. and ?? operators in defs.js (ECMAScript 2020); older code is still linted against ECMAScript 2015 for now
9
20
10
21
### Added
···
15
26
16
27
### Added
17
28
18
-
- add proper support for standard Base64 (we previously only supported Base64url) (fixes GitHub #99)
29
+
- add proper support for standard Base64 (we previously only supported Base64url) (fixes [GitHub #99](https://github.com/lapo-luchini/asn1js/pull/99))
19
30
- improve test harness
20
31
21
32
## 2.0.5 - 2025-04-12
+4
-3
README.md
+4
-3
README.md
···
101
101
links
102
102
-----
103
103
104
-
- [official website](https://lapo.it/asn1js/)
105
-
- [dedicated domain](https://asn1js.eu/)
106
-
- [InDefero tracker](http://idf.lapo.it/p/asn1js/)
104
+
- [official website](https://asn1js.eu/)
105
+
- [alternate website](https://lapo.it/asn1js/)
106
+
- [single-file version working locally](https://asn1js.eu/index-local.html) (just save this link)
107
+
- [InDefero tracker](http://idf.lapo.it/p/asn1js/) (currently offline)
107
108
- [GitHub mirror](https://github.com/lapo-luchini/asn1js)
108
109
- [ChangeLog on GitHub](https://github.com/lapo-luchini/asn1js/blob/trunk/CHANGELOG.md)
109
110
- [Ohloh code stats](https://www.openhub.net/p/asn1js)
+273
-72
asn1.js
+273
-72
asn1.js
···
13
13
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
16
-
import { Int10 } from './int10.js';
17
16
import { oids } from './oids.js';
18
17
19
18
const
···
42
41
['CDELNRSTZcdelnrstz', 'ฤฤฤฤฝลลล ลคลฝฤฤฤฤพลลลกลฅลพ'], // Caron
43
42
];
44
43
44
+
/**
45
+
* Truncates a string to a specified length and adds an ellipsis if needed.
46
+
* @param {string} str - The input string to truncate
47
+
* @param {number} len - The maximum length of the string
48
+
* @returns {string} The truncated string
49
+
*/
45
50
function stringCut(str, len) {
46
51
if (str.length > len)
47
52
str = str.substring(0, len) + ellipsis;
48
53
return str;
49
54
}
50
55
56
+
/**
57
+
* Checks if a string contains only printable characters (ASCII 32-126, plus tab, newline, carriage return)
58
+
* @param {string} s - The string to check
59
+
* @throws {Error} If an unprintable character is found
60
+
*/
51
61
function checkPrintable(s) {
52
62
let i, v;
53
63
for (i = 0; i < s.length; ++i) {
···
57
67
}
58
68
}
59
69
60
-
/** Class to manage a stream of bytes, with a zero-copy approach.
61
-
* It uses an existing array or binary string and advances a position index. */
70
+
/**
71
+
* Class to manage a stream of bytes, with a zero-copy approach.
72
+
* It uses an existing array or binary string and advances a position index.
73
+
*/
62
74
export class Stream {
63
75
64
76
/**
77
+
* Creates a new Stream object.
65
78
* @param {Stream|array|string} enc data (will not be copied)
66
79
* @param {?number} pos starting position (mandatory when `end` is not a Stream)
67
80
*/
···
75
88
}
76
89
if (typeof this.pos != 'number')
77
90
throw new Error('"pos" must be a numeric value');
91
+
// Set up the raw byte access function based on the type of data
78
92
if (typeof this.enc == 'string')
79
93
this.getRaw = pos => this.enc.charCodeAt(pos);
80
94
else if (typeof this.enc[0] == 'number')
···
82
96
else
83
97
throw new Error('"enc" must be a numeric array or a string');
84
98
}
85
-
/** Get the byte at current position (and increment it) or at a specified position (and avoid moving current position).
86
-
* @param {?number} pos read position if specified, else current position (and increment it) */
99
+
100
+
/**
101
+
* Get the byte at current position (and increment it) or at a specified position (and avoid moving current position).
102
+
* @param {?number} pos read position if specified, else current position (and increment it)
103
+
* @returns {number} The byte value at the specified position
104
+
*/
87
105
get(pos) {
88
106
if (pos === undefined)
89
107
pos = this.pos++;
···
91
109
throw new Error('Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length);
92
110
return this.getRaw(pos);
93
111
}
94
-
/** Convert a single byte to an hexadcimal string (of length 2).
95
-
* @param {number} b */
112
+
113
+
/**
114
+
* Convert a single byte to a hexadecimal string (of length 2).
115
+
* @param {number} b - The byte to convert
116
+
* @returns {string} Hexadecimal representation of the byte
117
+
*/
96
118
static hexByte(b) {
97
119
return hexDigits.charAt((b >> 4) & 0xF) + hexDigits.charAt(b & 0xF);
98
120
}
99
-
/** Hexadecimal dump of a specified region of the stream.
100
-
* @param {number} start starting position (included)
101
-
* @param {number} end ending position (excluded)
102
-
* @param {string} type 'raw', 'byte' or 'dump' (default) */
121
+
122
+
/**
123
+
* Hexadecimal dump of a specified region of the stream.
124
+
* @param {number} start - starting position (included)
125
+
* @param {number} end - ending position (excluded)
126
+
* @param {string} type - 'raw', 'byte' or 'dump' (default)
127
+
* @returns {string} Hexadecimal representation of the data
128
+
*/
103
129
hexDump(start, end, type = 'dump') {
104
130
let s = '';
105
131
for (let i = start; i < end; ++i) {
···
115
141
}
116
142
return s;
117
143
}
118
-
/** Base64url dump of a specified region of the stream (according to RFC 4648 section 5).
119
-
* @param {number} start starting position (included)
120
-
* @param {number} end ending position (excluded)
121
-
* @param {string} type 'url' (default, section 5 without padding) or 'std' (section 4 with padding) */
144
+
145
+
/**
146
+
* Base64url dump of a specified region of the stream (according to RFC 4648 section 5).
147
+
* @param {number} start - starting position (included)
148
+
* @param {number} end - ending position (excluded)
149
+
* @param {string} type - 'url' (default, section 5 without padding) or 'std' (section 4 with padding)
150
+
* @returns {string} Base64 encoded representation of the data
151
+
*/
122
152
b64Dump(start, end, type = 'url') {
123
-
const b64 = type === 'url' ? b64URL : b64Std;
124
-
let extra = (end - start) % 3,
125
-
s = '',
153
+
const b64 = type === 'url' ? b64URL : b64Std,
154
+
extra = (end - start) % 3;
155
+
let s = '',
126
156
i, c;
127
157
for (i = start; i + 2 < end; i += 3) {
128
158
c = this.get(i) << 16 | this.get(i + 1) << 8 | this.get(i + 2);
···
141
171
}
142
172
return s;
143
173
}
174
+
175
+
/**
176
+
* Check if a region of the stream contains only ASCII characters (32-176)
177
+
* @param {number} start - starting position (included)
178
+
* @param {number} end - ending position (excluded)
179
+
* @returns {boolean} True if all characters are ASCII, false otherwise
180
+
*/
144
181
isASCII(start, end) {
145
182
for (let i = start; i < end; ++i) {
146
183
let c = this.get(i);
···
149
186
}
150
187
return true;
151
188
}
189
+
190
+
/**
191
+
* Parse a region of the stream as an ISO string
192
+
* @param {number} start - starting position (included)
193
+
* @param {number} end - ending position (excluded)
194
+
* @param {number} maxLength - maximum length of the output string
195
+
* @returns {Object} Object with size and str properties
196
+
*/
152
197
parseStringISO(start, end, maxLength) {
153
198
let s = '';
154
199
for (let i = start; i < end; ++i)
155
200
s += String.fromCharCode(this.get(i));
156
201
return { size: s.length, str: stringCut(s, maxLength) };
157
202
}
203
+
204
+
/**
205
+
* Parse a region of the stream as a T.61 string
206
+
* @param {number} start - starting position (included)
207
+
* @param {number} end - ending position (excluded)
208
+
* @param {number} maxLength - maximum length of the output string
209
+
* @returns {Object} Object with size and str properties
210
+
*/
158
211
parseStringT61(start, end, maxLength) {
159
212
// warning: this code is not very well tested so far
160
213
function merge(c, d) {
161
-
let t = tableT61[c - 0xC0];
162
-
let i = t[0].indexOf(String.fromCharCode(d));
214
+
const t = tableT61[c - 0xC0];
215
+
const i = t[0].indexOf(String.fromCharCode(d));
163
216
return (i < 0) ? '\0' : t[1].charAt(i);
164
217
}
165
218
let s = '', c;
···
176
229
}
177
230
return { size: s.length, str: stringCut(s, maxLength) };
178
231
}
232
+
233
+
/**
234
+
* Parse a region of the stream as a UTF-8 string
235
+
* @param {number} start - starting position (included)
236
+
* @param {number} end - ending position (excluded)
237
+
* @param {number} maxLength - maximum length of the output string
238
+
* @returns {Object} Object with size and str properties
239
+
*/
179
240
parseStringUTF(start, end, maxLength) {
241
+
/**
242
+
* Helper function to process UTF-8 continuation bytes
243
+
* @param {number} c - The continuation byte
244
+
* @returns {number} The extracted data bits
245
+
*/
180
246
function ex(c) { // must be 10xxxxxx
181
247
if ((c < 0x80) || (c >= 0xC0))
182
248
throw new Error('Invalid UTF-8 continuation byte: ' + c);
183
249
return (c & 0x3F);
184
250
}
251
+
/**
252
+
* Helper function to convert a code point to a surrogate pair
253
+
* @param {number} cp - The code point to convert
254
+
* @returns {string} The surrogate pair as a string
255
+
*/
185
256
function surrogate(cp) {
186
257
if (cp < 0x10000)
187
258
throw new Error('UTF-8 overlong encoding, codepoint encoded in 4 bytes: ' + cp);
···
191
262
}
192
263
let s = '';
193
264
for (let i = start; i < end; ) {
194
-
let c = this.get(i++);
265
+
const c = this.get(i++);
195
266
if (c < 0x80) // 0xxxxxxx (7 bit)
196
267
s += String.fromCharCode(c);
197
268
else if (c < 0xC0)
···
207
278
}
208
279
return { size: s.length, str: stringCut(s, maxLength) };
209
280
}
281
+
282
+
/**
283
+
* Parse a region of the stream as a BMP (Basic Multilingual Plane) string
284
+
* @param {number} start - starting position (included)
285
+
* @param {number} end - ending position (excluded)
286
+
* @param {number} maxLength - maximum length of the output string
287
+
* @returns {Object} Object with size and str properties
288
+
*/
210
289
parseStringBMP(start, end, maxLength) {
211
290
let s = '', hi, lo;
212
291
for (let i = start; i < end; ) {
···
216
295
}
217
296
return { size: s.length, str: stringCut(s, maxLength) };
218
297
}
298
+
299
+
/**
300
+
* Parse a region of the stream as a time string
301
+
* @param {number} start - starting position (included)
302
+
* @param {number} end - ending position (excluded)
303
+
* @param {boolean} shortYear - Whether to parse as short year (2-digit)
304
+
* @returns {string} Formatted time string
305
+
*/
219
306
parseTime(start, end, shortYear) {
220
307
let s = this.parseStringISO(start, end).str,
221
308
m = (shortYear ? reTimeS : reTimeL).exec(s);
···
243
330
}
244
331
return s;
245
332
}
333
+
334
+
/**
335
+
* Parse a region of the stream as an integer
336
+
* @param {number} start - starting position (included)
337
+
* @param {number} end - ending position (excluded)
338
+
* @returns {string} Formatted integer string
339
+
*/
246
340
parseInteger(start, end) {
247
341
let v = this.get(start),
248
-
neg = (v > 127),
249
-
pad = neg ? 255 : 0,
250
-
len,
251
342
s = '';
343
+
const neg = (v > 127),
344
+
pad = neg ? 255 : 0;
252
345
// skip unuseful bits (not allowed in DER)
253
346
while (v == pad && ++start < end)
254
347
v = this.get(start);
255
-
len = end - start;
348
+
const len = end - start;
256
349
if (len === 0)
257
350
return neg ? '-1' : '0';
258
351
// show bit length of huge integers
259
352
if (len > 4) {
260
-
s = v;
261
-
len <<= 3;
262
-
while (((s ^ pad) & 0x80) == 0) {
263
-
s <<= 1;
264
-
--len;
353
+
let v2 = v,
354
+
lenBit = len << 3;
355
+
while (((v2 ^ pad) & 0x80) == 0) {
356
+
v2 <<= 1;
357
+
--lenBit;
265
358
}
266
-
s = '(' + len + ' bit)\n';
359
+
s = '(' + lenBit + ' bit)\n';
267
360
}
268
361
// decode the integer
269
362
if (neg) v = v - 256;
270
-
let n = new Int10(v);
363
+
let n = BigInt(v);
271
364
for (let i = start + 1; i < end; ++i)
272
-
n.mulAdd(256, this.get(i));
273
-
return s + n.toString();
365
+
n = (n << 8n) | BigInt(this.get(i));
366
+
return s + n;
274
367
}
368
+
369
+
/**
370
+
* Parse a region of the stream as a bit string.
371
+
* @param {number} start - starting position (included)
372
+
* @param {number} end - ending position (excluded)
373
+
* @param {number} maxLength - maximum length of the output string
374
+
* @returns {Object} Object with size and str properties
375
+
*/
275
376
parseBitString(start, end, maxLength) {
276
-
let unusedBits = this.get(start);
377
+
const unusedBits = this.get(start);
277
378
if (unusedBits > 7)
278
379
throw new Error('Invalid BitString with unusedBits=' + unusedBits);
279
-
let lenBit = ((end - start - 1) << 3) - unusedBits,
280
-
s = '';
380
+
const lenBit = ((end - start - 1) << 3) - unusedBits;
381
+
let s = '';
281
382
for (let i = start + 1; i < end; ++i) {
282
383
let b = this.get(i),
283
384
skip = (i == end - 1) ? unusedBits : 0;
···
288
389
}
289
390
return { size: lenBit, str: s };
290
391
}
392
+
393
+
/**
394
+
* Parse a region of the stream as an octet string.
395
+
* @param {number} start - starting position (included)
396
+
* @param {number} end - ending position (excluded)
397
+
* @param {number} maxLength - maximum length of the output string
398
+
* @returns {Object} Object with size and str properties
399
+
*/
291
400
parseOctetString(start, end, maxLength) {
292
-
let len = end - start,
293
-
s;
294
401
try {
295
-
s = this.parseStringUTF(start, end, maxLength);
402
+
let s = this.parseStringUTF(start, end, maxLength);
296
403
checkPrintable(s.str);
297
404
return { size: end - start, str: s.str };
298
405
} catch (ignore) {
299
-
// ignore
406
+
// If UTF-8 parsing fails, fall back to hexadecimal dump
300
407
}
408
+
const len = end - start;
301
409
maxLength /= 2; // we work in bytes
302
410
if (len > maxLength)
303
411
end = start + maxLength;
304
-
s = '';
412
+
let s = '';
305
413
for (let i = start; i < end; ++i)
306
414
s += Stream.hexByte(this.get(i));
307
415
if (len > maxLength)
308
416
s += ellipsis;
309
417
return { size: len, str: s };
310
418
}
419
+
420
+
/**
421
+
* Parse a region of the stream as an OID (Object Identifier).
422
+
* @param {number} start - starting position (included)
423
+
* @param {number} end - ending position (excluded)
424
+
* @param {number} maxLength - maximum length of the output string
425
+
* @param {boolean} isRelative - Whether the OID is relative
426
+
* @returns {string} Formatted OID string
427
+
*/
311
428
parseOID(start, end, maxLength, isRelative) {
312
429
let s = '',
313
-
n = new Int10(),
430
+
n = 0n,
314
431
bits = 0;
315
432
for (let i = start; i < end; ++i) {
316
433
let v = this.get(i);
317
-
n.mulAdd(128, v & 0x7F);
434
+
// Shift bits and add the lower 7 bits of the byte
435
+
n = (n << 7n) | BigInt(v & 0x7F);
318
436
bits += 7;
437
+
// If the most significant bit is 0, this is the last byte of the OID component
319
438
if (!(v & 0x80)) { // finished
439
+
// If this is the first component, handle it specially
320
440
if (s === '') {
321
-
n = n.simplify();
322
441
if (isRelative) {
323
-
s = (n instanceof Int10) ? n.toString() : '' + n;
324
-
} else if (n instanceof Int10) {
325
-
n.sub(80);
326
-
s = '2.' + n.toString();
442
+
s = n.toString();
327
443
} else {
328
-
let m = n < 80 ? n < 40 ? 0 : 1 : 2;
329
-
s = m + '.' + (n - m * 40);
444
+
let m = n < 80 ? n < 40 ? 0n : 1n : 2n;
445
+
s = m + '.' + (n - m * 40n);
330
446
}
331
447
} else
332
-
s += '.' + n.toString();
448
+
s += '.' + n;
333
449
if (s.length > maxLength)
334
450
return stringCut(s, maxLength);
335
-
n = new Int10();
451
+
n = 0n;
336
452
bits = 0;
337
453
}
338
454
}
339
455
if (bits > 0)
340
456
s += '.incomplete';
457
+
// If OIDs mapping is available and the OID is absolute, try to resolve it
341
458
if (typeof oids === 'object' && !isRelative) {
342
459
let oid = oids[s];
343
460
if (oid) {
···
348
465
}
349
466
return s;
350
467
}
468
+
469
+
/**
470
+
* Parse a region of the stream as a relative OID (Object Identifier).
471
+
* @param {number} start - starting position (included)
472
+
* @param {number} end - ending position (excluded)
473
+
* @param {number} maxLength - maximum length of the output string
474
+
* @returns {string} Formatted relative OID string
475
+
*/
351
476
parseRelativeOID(start, end, maxLength) {
352
477
return this.parseOID(start, end, maxLength, true);
353
478
}
···
380
505
this.tagConstructed = ((buf & 0x20) !== 0);
381
506
this.tagNumber = buf & 0x1F;
382
507
if (this.tagNumber == 0x1F) { // long tag
383
-
let n = new Int10();
508
+
let n = 0n;
384
509
do {
385
510
buf = stream.get();
386
-
n.mulAdd(128, buf & 0x7F);
511
+
n = (n << 7n) | BigInt(buf & 0x7F);
387
512
} while (buf & 0x80);
388
-
this.tagNumber = n.simplify();
513
+
this.tagNumber = n <= Number.MAX_SAFE_INTEGER ? Number(n) : n;
389
514
}
390
515
}
391
516
isUniversal() {
···
396
521
}
397
522
}
398
523
524
+
/**
525
+
* ASN1 class for parsing ASN.1 encoded data.
526
+
* Instances of this class represent an ASN.1 element and provides methods to parse and display its content.
527
+
*/
399
528
export class ASN1 {
529
+
/**
530
+
* Creates an ASN1 parser object.
531
+
* @param {Stream} stream - The stream containing the ASN.1 data.
532
+
* @param {number} header - The header length.
533
+
* @param {number} length - The length of the data.
534
+
* @param {ASN1Tag} tag - The ASN.1 tag.
535
+
* @param {number} tagLen - The length of the tag.
536
+
* @param {Array} sub - The sub-elements.
537
+
*/
400
538
constructor(stream, header, length, tag, tagLen, sub) {
401
539
if (!(tag instanceof ASN1Tag)) throw new Error('Invalid tag value.');
402
540
this.stream = stream;
···
406
544
this.tagLen = tagLen;
407
545
this.sub = sub;
408
546
}
547
+
548
+
/**
549
+
* Get the type name of the ASN.1 element.
550
+
* @returns {string} The type name.
551
+
*/
409
552
typeName() {
410
553
switch (this.tag.tagClass) {
411
554
case 0: // universal
···
445
588
case 3: return 'Private_' + this.tag.tagNumber.toString();
446
589
}
447
590
}
448
-
/** A string preview of the content (intended for humans). */
591
+
592
+
/**
593
+
* Get a string preview of the content (intended for humans).
594
+
* @param {number} maxLength - The maximum length of the content.
595
+
* @returns {string|null} The content preview or null if not supported.
596
+
*/
449
597
content(maxLength) {
450
598
if (this.tag === undefined)
451
599
return null;
452
600
if (maxLength === undefined)
453
601
maxLength = Infinity;
454
-
let content = this.posContent(),
602
+
const content = this.posContent(),
455
603
len = Math.abs(this.length);
456
604
if (!this.tag.isUniversal()) {
457
605
if (this.sub !== null)
···
461
609
}
462
610
switch (this.tag.tagNumber) {
463
611
case 0x01: // BOOLEAN
464
-
if (len === 0) return 'invalid length 0';
612
+
if (len != 1) return 'invalid length ' + len;
465
613
return (this.stream.get(content) === 0) ? 'false' : 'true';
466
614
case 0x02: // INTEGER
467
-
if (len === 0) return 'invalid length 0';
615
+
if (len < 1) return 'invalid length ' + len;
468
616
return this.stream.parseInteger(content, content + len);
469
617
case 0x03: { // BIT_STRING
470
618
let d = recurse(this, 'parseBitString', maxLength);
471
619
return '(' + d.size + ' bit)\n' + d.str;
472
620
}
473
621
case 0x04: { // OCTET_STRING
474
-
if (len === 0) return 'invalid length 0';
475
622
let d = recurse(this, 'parseOctetString', maxLength);
476
623
return '(' + d.size + ' byte)\n' + d.str;
477
624
}
478
625
//case 0x05: // NULL
479
626
case 0x06: // OBJECT_IDENTIFIER
627
+
if (len < 1) return 'invalid length ' + len; // pgut001's dumpasn1.c enforces a minimum lenght of 3
480
628
return this.stream.parseOID(content, content + len, maxLength);
481
629
//case 0x07: // ObjectDescriptor
482
630
//case 0x08: // EXTERNAL
···
513
661
}
514
662
return null;
515
663
}
664
+
665
+
/**
666
+
* Get a string representation of the ASN.1 element.
667
+
* @returns {string} The string representation.
668
+
*/
516
669
toString() {
517
670
return this.typeName() + '@' + this.stream.pos + '[header:' + this.header + ',length:' + this.length + ',sub:' + ((this.sub === null) ? 'null' : this.sub.length) + ']';
518
671
}
672
+
673
+
/**
674
+
* Get a pretty string representation of the ASN.1 element.
675
+
* @param {string} indent - The indentation string.
676
+
* @returns {string} The pretty string representation.
677
+
*/
519
678
toPrettyString(indent) {
520
679
if (indent === undefined) indent = '';
521
680
let s = indent;
···
546
705
}
547
706
return s;
548
707
}
708
+
709
+
/**
710
+
* Get the starting position of the element in the stream.
711
+
* @returns {number} The starting position.
712
+
*/
549
713
posStart() {
550
714
return this.stream.pos;
551
715
}
716
+
717
+
/**
718
+
* Get the position of the content in the stream.
719
+
* @returns {number} The content position.
720
+
*/
552
721
posContent() {
553
722
return this.stream.pos + this.header;
554
723
}
724
+
725
+
/**
726
+
* Get the ending position of the element in the stream.
727
+
* @returns {number} The ending position.
728
+
*/
555
729
posEnd() {
556
730
return this.stream.pos + this.header + Math.abs(this.length);
557
731
}
558
-
/** Position of the length. */
732
+
733
+
/**
734
+
* Get the position of the length in the stream.
735
+
* @returns {number} The length position.
736
+
*/
559
737
posLen() {
560
738
return this.stream.pos + this.tagLen;
561
739
}
562
-
/** Hexadecimal dump of the node.
563
-
* @param type 'raw', 'byte' or 'dump' */
740
+
741
+
/**
742
+
* Get a hexadecimal dump of the node.
743
+
* @param {string} [type='raw'] - The dump type: 'raw', 'byte', or 'dump'.
744
+
* @returns {string} The hexadecimal dump.
745
+
*/
564
746
toHexString(type = 'raw') {
565
747
return this.stream.hexDump(this.posStart(), this.posEnd(), type);
566
748
}
567
-
/** Base64url dump of the node (according to RFC 4648 section 5).
568
-
* @param {string} type 'url' (default, section 5 without padding) or 'std' (section 4 with padding)
569
-
*/
749
+
750
+
/**
751
+
* Get a base64url dump of the node (according to RFC 4648 section 5).
752
+
* @param {string} [type='url'] - The dump type: 'url' (section 5 without padding) or 'std' (section 4 with padding).
753
+
* @returns {string} The base64 encoded representation.
754
+
*/
570
755
toB64String(type = 'url') {
571
756
return this.stream.b64Dump(this.posStart(), this.posEnd(), type);
572
757
}
758
+
759
+
/**
760
+
* Decode the length field of an ASN.1 element.
761
+
* @param {Stream} stream - The stream to read from.
762
+
* @returns {number|null} The decoded length, or null for indefinite length.
763
+
* @throws {Error} If the length is invalid or exceeds 48 bits.
764
+
*/
573
765
static decodeLength(stream) {
574
-
let buf = stream.get(),
766
+
const buf = stream.get(),
575
767
len = buf & 0x7F;
576
768
if (len == buf) // first bit was 0, short form
577
769
return len;
578
770
if (len === 0) // long form with length 0 is a special case
579
771
return null; // undefined length
580
-
if (len > 6) // no reason to use Int10, as it would be a huge buffer anyways
772
+
if (len > 6) // no reason to use BigInt, as it would be a huge buffer anyways
581
773
throw new Error('Length over 48 bits not supported at position ' + (stream.pos - 1));
582
-
buf = 0;
774
+
let value = 0;
583
775
for (let i = 0; i < len; ++i)
584
-
buf = (buf * 256) + stream.get();
585
-
return buf;
776
+
value = (value << 8) | stream.get();
777
+
return value;
586
778
}
779
+
780
+
/**
781
+
* Decode an ASN.1 element from a stream.
782
+
* @param {Stream|array|string} stream - The input data.
783
+
* @param {number} [offset=0] - The offset to start decoding from.
784
+
* @param {Function} [type=ASN1] - The class to instantiate.
785
+
* @returns {ASN1} The decoded ASN.1 element.
786
+
* @throws {Error} If the decoding fails.
787
+
*/
587
788
static decode(stream, offset, type = ASN1) {
588
789
if (!(type == ASN1 || type.prototype instanceof ASN1))
589
790
throw new Error('Must pass a class that extends ASN1');
+1
defs.js
+1
defs.js
···
140
140
[ 'PKCS#10 certification request', '1.2.840.113549.1.10.1.1', 'CertificationRequest' ],
141
141
[ 'CMP PKI Message', '1.3.6.1.5.5.7.0.16', 'PKIMessage' ],
142
142
[ 'LDAP Message', '1.3.6.1.1.18', 'LDAPMessage' ],
143
+
[ 'Time Stamp Request', '1.3.6.1.5.5.7.0.13', 'TimeStampReq' ],
143
144
].map(arr => ({ description: arr[0], ...Defs.moduleAndType(rfcdef[arr[1]], arr[2]) }));
+1
-7
eslint.config.js
+1
-7
eslint.config.js
···
10
10
...globals.node,
11
11
Uint8Array: 'readonly',
12
12
},
13
-
ecmaVersion: 2015,
13
+
ecmaVersion: 2020,
14
14
},
15
15
rules: {
16
16
indent: ['error', 4],
···
26
26
'no-unused-vars': ['error', {
27
27
caughtErrorsIgnorePattern: 'ignore',
28
28
}],
29
-
},
30
-
},
31
-
{
32
-
files: ['defs.js'],
33
-
languageOptions: {
34
-
ecmaVersion: 2020, // by use of optional chaining operator (?.) and null coalesching operator (??)
35
29
},
36
30
},
37
31
{
+5
examples/timestamp-req.b64
+5
examples/timestamp-req.b64
+1
index.html
+1
index.html
···
61
61
<option value="crl-rfc5280.b64">CRL example (RFC 5280)</option>
62
62
<option value="cmpv2.b64">CMP PKI message (RFC 4210)</option>
63
63
<option value="ldapmessage.b64">LDAP message (RFC 4511)</option>
64
+
<option value="timestamp-req.b64">TimeStamp request (RFC 3161)</option>
64
65
</select>
65
66
<input id="butExample" type="button" value="load"><br>
66
67
</td></tr>
-112
int10.js
-112
int10.js
···
1
-
// Big integer base-10 printing library
2
-
// Copyright (c) 2008 Lapo Luchini <lapo@lapo.it>
3
-
4
-
// Permission to use, copy, modify, and/or distribute this software for any
5
-
// purpose with or without fee is hereby granted, provided that the above
6
-
// copyright notice and this permission notice appear in all copies.
7
-
//
8
-
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
-
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
-
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
-
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
-
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
-
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
-
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
-
16
-
/** Biggest 10^n integer that can still fit 2^53 when multiplied by 256. */
17
-
const max = 10000000000000;
18
-
19
-
export class Int10 {
20
-
/**
21
-
* Arbitrary length base-10 value.
22
-
* @param {number} value - Optional initial value (will be 0 otherwise).
23
-
*/
24
-
constructor(value) {
25
-
this.buf = [+value || 0];
26
-
}
27
-
28
-
/**
29
-
* Multiply value by m and add c.
30
-
* @param {number} m - multiplier, must be 0<m<=256
31
-
* @param {number} c - value to add, must be c>=0
32
-
*/
33
-
mulAdd(m, c) {
34
-
// assert(m > 0)
35
-
// assert(m <= 256)
36
-
// assert(c >= 0)
37
-
let b = this.buf,
38
-
l = b.length,
39
-
i, t;
40
-
for (i = 0; i < l; ++i) {
41
-
t = b[i] * m + c;
42
-
if (t < max)
43
-
c = 0;
44
-
else {
45
-
c = 0|(t / max);
46
-
t -= c * max;
47
-
}
48
-
b[i] = t;
49
-
}
50
-
if (c > 0)
51
-
b[i] = c;
52
-
}
53
-
54
-
/**
55
-
* Subtract value.
56
-
* @param {number} c - value to subtract
57
-
*/
58
-
sub(c) {
59
-
let b = this.buf,
60
-
l = b.length,
61
-
i, t;
62
-
for (i = 0; i < l; ++i) {
63
-
t = b[i] - c;
64
-
if (t < 0) {
65
-
t += max;
66
-
c = 1;
67
-
} else
68
-
c = 0;
69
-
b[i] = t;
70
-
}
71
-
while (b[b.length - 1] === 0)
72
-
b.pop();
73
-
}
74
-
75
-
/**
76
-
* Convert to decimal string representation.
77
-
* @param {number} [base=10] - optional value, only value accepted is 10
78
-
* @returns {string} The decimal string representation.
79
-
*/
80
-
toString(base = 10) {
81
-
if (base != 10)
82
-
throw new Error('only base 10 is supported');
83
-
let b = this.buf,
84
-
s = b[b.length - 1].toString();
85
-
for (let i = b.length - 2; i >= 0; --i)
86
-
s += (max + b[i]).toString().substring(1);
87
-
return s;
88
-
}
89
-
90
-
/**
91
-
* Convert to Number value representation.
92
-
* Will probably overflow 2^53 and thus become approximate.
93
-
* @returns {number} The numeric value.
94
-
*/
95
-
valueOf() {
96
-
let b = this.buf,
97
-
v = 0;
98
-
for (let i = b.length - 1; i >= 0; --i)
99
-
v = v * max + b[i];
100
-
return v;
101
-
}
102
-
103
-
/**
104
-
* Return value as a simple Number (if it is <= 10000000000000), or return this.
105
-
* @returns {number | Int10} The simplified value.
106
-
*/
107
-
simplify() {
108
-
let b = this.buf;
109
-
return (b.length == 1) ? b[0] : this;
110
-
}
111
-
112
-
}
+8
-9
package.json
+8
-9
package.json
···
1
1
{
2
2
"name": "@lapo/asn1js",
3
-
"version": "2.1.0",
3
+
"version": "2.1.1",
4
4
"description": "Generic ASN.1 parser/decoder that can decode any valid ASN.1 DER or BER structures.",
5
5
"type": "module",
6
6
"main": "asn1.js",
···
24
24
"asn1.js",
25
25
"base64.js",
26
26
"hex.js",
27
-
"int10.js",
28
27
"dom.js",
29
28
"defs.js",
30
29
"oids.js",
···
32
31
"dumpASN1.js"
33
32
],
34
33
"scripts": {
35
-
"lint": "npx eslint asn1.js base64.js hex.js int10.js dom.js defs.js oids.js rfcdef.js tags.js context.js index.js parseRFC.js dumpASN1.js test.js testDefs.js vite.config.js theme.js",
34
+
"lint": "npx eslint asn1.js base64.js hex.js dom.js defs.js oids.js rfcdef.js tags.js context.js index.js parseRFC.js dumpASN1.js test.js testDefs.js vite.config.js theme.js",
36
35
"lint-action": "npx @action-validator/cli .github/workflows/node.js.yml",
37
36
"build": "vite build",
38
37
"serve": "npx -p local-web-server ws",
···
48
47
"packageManager": "pnpm@7.33.7",
49
48
"devDependencies": {
50
49
"@eslint/eslintrc": "^3.3.1",
51
-
"@eslint/js": "^9.32.0",
52
-
"@rollup/wasm-node": "^4.46.2",
50
+
"@eslint/js": "^9.38.0",
51
+
"@rollup/wasm-node": "^4.52.5",
53
52
"diff": "^8.0.2",
54
-
"eslint": "^9.32.0",
55
-
"globals": "^16.3.0",
53
+
"eslint": "^9.38.0",
54
+
"globals": "^16.4.0",
56
55
"htmlparser2": "^9.1.0",
57
-
"vite": "^5.4.19",
58
-
"vite-plugin-dom": "^1.0.4",
56
+
"vite": "^7.1.12",
57
+
"vite-plugin-dom": "^1.0.5",
59
58
"vite-plugin-singlefile": "^2.3.0"
60
59
},
61
60
"overrides": {
+718
-951
pnpm-lock.yaml
+718
-951
pnpm-lock.yaml
···
1
-
lockfileVersion: '9.0'
2
-
3
-
settings:
4
-
autoInstallPeers: true
5
-
excludeLinksFromLockfile: false
1
+
lockfileVersion: 5.4
6
2
7
3
overrides:
8
4
rollup: npm:@rollup/wasm-node
9
5
10
-
importers:
6
+
specifiers:
7
+
'@eslint/eslintrc': ^3.3.1
8
+
'@eslint/js': ^9.38.0
9
+
'@rollup/wasm-node': ^4.52.5
10
+
diff: ^8.0.2
11
+
eslint: ^9.38.0
12
+
globals: ^16.4.0
13
+
htmlparser2: ^9.1.0
14
+
vite: ^7.1.12
15
+
vite-plugin-dom: ^1.0.5
16
+
vite-plugin-singlefile: ^2.3.0
11
17
12
-
.:
13
-
devDependencies:
14
-
'@eslint/eslintrc':
15
-
specifier: ^3.3.1
16
-
version: 3.3.1
17
-
'@eslint/js':
18
-
specifier: ^9.32.0
19
-
version: 9.32.0
20
-
'@rollup/wasm-node':
21
-
specifier: ^4.46.2
22
-
version: 4.46.2
23
-
diff:
24
-
specifier: ^8.0.2
25
-
version: 8.0.2
26
-
eslint:
27
-
specifier: ^9.32.0
28
-
version: 9.32.0
29
-
globals:
30
-
specifier: ^16.3.0
31
-
version: 16.3.0
32
-
htmlparser2:
33
-
specifier: ^9.1.0
34
-
version: 9.1.0
35
-
vite:
36
-
specifier: ^5.4.19
37
-
version: 5.4.19
38
-
vite-plugin-dom:
39
-
specifier: ^1.0.4
40
-
version: 1.0.4(vite@5.4.19)
41
-
vite-plugin-singlefile:
42
-
specifier: ^2.3.0
43
-
version: 2.3.0(rollup@4.46.2)(vite@5.4.19)
18
+
devDependencies:
19
+
'@eslint/eslintrc': 3.3.1
20
+
'@eslint/js': 9.38.0
21
+
'@rollup/wasm-node': 4.52.5
22
+
diff: 8.0.2
23
+
eslint: 9.38.0
24
+
globals: 16.4.0
25
+
htmlparser2: 9.1.0
26
+
vite: 7.1.12
27
+
vite-plugin-dom: 1.0.5_vite@7.1.12
28
+
vite-plugin-singlefile: 2.3.0_vite@7.1.12
44
29
45
30
packages:
46
31
47
-
'@esbuild/aix-ppc64@0.21.5':
48
-
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
49
-
engines: {node: '>=12'}
32
+
/@esbuild/aix-ppc64/0.25.11:
33
+
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
34
+
engines: {node: '>=18'}
50
35
cpu: [ppc64]
51
36
os: [aix]
37
+
requiresBuild: true
38
+
dev: true
39
+
optional: true
52
40
53
-
'@esbuild/android-arm64@0.21.5':
54
-
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
55
-
engines: {node: '>=12'}
56
-
cpu: [arm64]
41
+
/@esbuild/android-arm/0.25.11:
42
+
resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
43
+
engines: {node: '>=18'}
44
+
cpu: [arm]
57
45
os: [android]
46
+
requiresBuild: true
47
+
dev: true
48
+
optional: true
58
49
59
-
'@esbuild/android-arm@0.21.5':
60
-
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
61
-
engines: {node: '>=12'}
62
-
cpu: [arm]
50
+
/@esbuild/android-arm64/0.25.11:
51
+
resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
52
+
engines: {node: '>=18'}
53
+
cpu: [arm64]
63
54
os: [android]
55
+
requiresBuild: true
56
+
dev: true
57
+
optional: true
64
58
65
-
'@esbuild/android-x64@0.21.5':
66
-
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
67
-
engines: {node: '>=12'}
59
+
/@esbuild/android-x64/0.25.11:
60
+
resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
61
+
engines: {node: '>=18'}
68
62
cpu: [x64]
69
63
os: [android]
64
+
requiresBuild: true
65
+
dev: true
66
+
optional: true
70
67
71
-
'@esbuild/darwin-arm64@0.21.5':
72
-
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
73
-
engines: {node: '>=12'}
68
+
/@esbuild/darwin-arm64/0.25.11:
69
+
resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
70
+
engines: {node: '>=18'}
74
71
cpu: [arm64]
75
72
os: [darwin]
73
+
requiresBuild: true
74
+
dev: true
75
+
optional: true
76
76
77
-
'@esbuild/darwin-x64@0.21.5':
78
-
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
79
-
engines: {node: '>=12'}
77
+
/@esbuild/darwin-x64/0.25.11:
78
+
resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
79
+
engines: {node: '>=18'}
80
80
cpu: [x64]
81
81
os: [darwin]
82
+
requiresBuild: true
83
+
dev: true
84
+
optional: true
82
85
83
-
'@esbuild/freebsd-arm64@0.21.5':
84
-
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
85
-
engines: {node: '>=12'}
86
+
/@esbuild/freebsd-arm64/0.25.11:
87
+
resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
88
+
engines: {node: '>=18'}
86
89
cpu: [arm64]
87
90
os: [freebsd]
91
+
requiresBuild: true
92
+
dev: true
93
+
optional: true
88
94
89
-
'@esbuild/freebsd-x64@0.21.5':
90
-
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
91
-
engines: {node: '>=12'}
95
+
/@esbuild/freebsd-x64/0.25.11:
96
+
resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
97
+
engines: {node: '>=18'}
92
98
cpu: [x64]
93
99
os: [freebsd]
100
+
requiresBuild: true
101
+
dev: true
102
+
optional: true
94
103
95
-
'@esbuild/linux-arm64@0.21.5':
96
-
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
97
-
engines: {node: '>=12'}
98
-
cpu: [arm64]
104
+
/@esbuild/linux-arm/0.25.11:
105
+
resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
106
+
engines: {node: '>=18'}
107
+
cpu: [arm]
99
108
os: [linux]
109
+
requiresBuild: true
110
+
dev: true
111
+
optional: true
100
112
101
-
'@esbuild/linux-arm@0.21.5':
102
-
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
103
-
engines: {node: '>=12'}
104
-
cpu: [arm]
113
+
/@esbuild/linux-arm64/0.25.11:
114
+
resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
115
+
engines: {node: '>=18'}
116
+
cpu: [arm64]
105
117
os: [linux]
118
+
requiresBuild: true
119
+
dev: true
120
+
optional: true
106
121
107
-
'@esbuild/linux-ia32@0.21.5':
108
-
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
109
-
engines: {node: '>=12'}
122
+
/@esbuild/linux-ia32/0.25.11:
123
+
resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
124
+
engines: {node: '>=18'}
110
125
cpu: [ia32]
111
126
os: [linux]
127
+
requiresBuild: true
128
+
dev: true
129
+
optional: true
112
130
113
-
'@esbuild/linux-loong64@0.21.5':
114
-
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
115
-
engines: {node: '>=12'}
131
+
/@esbuild/linux-loong64/0.25.11:
132
+
resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
133
+
engines: {node: '>=18'}
116
134
cpu: [loong64]
117
135
os: [linux]
136
+
requiresBuild: true
137
+
dev: true
138
+
optional: true
118
139
119
-
'@esbuild/linux-mips64el@0.21.5':
120
-
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
121
-
engines: {node: '>=12'}
140
+
/@esbuild/linux-mips64el/0.25.11:
141
+
resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
142
+
engines: {node: '>=18'}
122
143
cpu: [mips64el]
123
144
os: [linux]
145
+
requiresBuild: true
146
+
dev: true
147
+
optional: true
124
148
125
-
'@esbuild/linux-ppc64@0.21.5':
126
-
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
127
-
engines: {node: '>=12'}
149
+
/@esbuild/linux-ppc64/0.25.11:
150
+
resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
151
+
engines: {node: '>=18'}
128
152
cpu: [ppc64]
129
153
os: [linux]
154
+
requiresBuild: true
155
+
dev: true
156
+
optional: true
130
157
131
-
'@esbuild/linux-riscv64@0.21.5':
132
-
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
133
-
engines: {node: '>=12'}
158
+
/@esbuild/linux-riscv64/0.25.11:
159
+
resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
160
+
engines: {node: '>=18'}
134
161
cpu: [riscv64]
135
162
os: [linux]
163
+
requiresBuild: true
164
+
dev: true
165
+
optional: true
136
166
137
-
'@esbuild/linux-s390x@0.21.5':
138
-
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
139
-
engines: {node: '>=12'}
167
+
/@esbuild/linux-s390x/0.25.11:
168
+
resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
169
+
engines: {node: '>=18'}
140
170
cpu: [s390x]
141
171
os: [linux]
172
+
requiresBuild: true
173
+
dev: true
174
+
optional: true
142
175
143
-
'@esbuild/linux-x64@0.21.5':
144
-
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
145
-
engines: {node: '>=12'}
176
+
/@esbuild/linux-x64/0.25.11:
177
+
resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
178
+
engines: {node: '>=18'}
146
179
cpu: [x64]
147
180
os: [linux]
181
+
requiresBuild: true
182
+
dev: true
183
+
optional: true
148
184
149
-
'@esbuild/netbsd-x64@0.21.5':
150
-
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
151
-
engines: {node: '>=12'}
185
+
/@esbuild/netbsd-arm64/0.25.11:
186
+
resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
187
+
engines: {node: '>=18'}
188
+
cpu: [arm64]
189
+
os: [netbsd]
190
+
requiresBuild: true
191
+
dev: true
192
+
optional: true
193
+
194
+
/@esbuild/netbsd-x64/0.25.11:
195
+
resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
196
+
engines: {node: '>=18'}
152
197
cpu: [x64]
153
198
os: [netbsd]
199
+
requiresBuild: true
200
+
dev: true
201
+
optional: true
154
202
155
-
'@esbuild/openbsd-x64@0.21.5':
156
-
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
157
-
engines: {node: '>=12'}
203
+
/@esbuild/openbsd-arm64/0.25.11:
204
+
resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
205
+
engines: {node: '>=18'}
206
+
cpu: [arm64]
207
+
os: [openbsd]
208
+
requiresBuild: true
209
+
dev: true
210
+
optional: true
211
+
212
+
/@esbuild/openbsd-x64/0.25.11:
213
+
resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
214
+
engines: {node: '>=18'}
158
215
cpu: [x64]
159
216
os: [openbsd]
217
+
requiresBuild: true
218
+
dev: true
219
+
optional: true
160
220
161
-
'@esbuild/sunos-x64@0.21.5':
162
-
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
163
-
engines: {node: '>=12'}
221
+
/@esbuild/openharmony-arm64/0.25.11:
222
+
resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
223
+
engines: {node: '>=18'}
224
+
cpu: [arm64]
225
+
os: [openharmony]
226
+
requiresBuild: true
227
+
dev: true
228
+
optional: true
229
+
230
+
/@esbuild/sunos-x64/0.25.11:
231
+
resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
232
+
engines: {node: '>=18'}
164
233
cpu: [x64]
165
234
os: [sunos]
235
+
requiresBuild: true
236
+
dev: true
237
+
optional: true
166
238
167
-
'@esbuild/win32-arm64@0.21.5':
168
-
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
169
-
engines: {node: '>=12'}
239
+
/@esbuild/win32-arm64/0.25.11:
240
+
resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
241
+
engines: {node: '>=18'}
170
242
cpu: [arm64]
171
243
os: [win32]
244
+
requiresBuild: true
245
+
dev: true
246
+
optional: true
172
247
173
-
'@esbuild/win32-ia32@0.21.5':
174
-
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
175
-
engines: {node: '>=12'}
248
+
/@esbuild/win32-ia32/0.25.11:
249
+
resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
250
+
engines: {node: '>=18'}
176
251
cpu: [ia32]
177
252
os: [win32]
253
+
requiresBuild: true
254
+
dev: true
255
+
optional: true
178
256
179
-
'@esbuild/win32-x64@0.21.5':
180
-
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
181
-
engines: {node: '>=12'}
257
+
/@esbuild/win32-x64/0.25.11:
258
+
resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
259
+
engines: {node: '>=18'}
182
260
cpu: [x64]
183
261
os: [win32]
262
+
requiresBuild: true
263
+
dev: true
264
+
optional: true
184
265
185
-
'@eslint-community/eslint-utils@4.7.0':
186
-
resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
266
+
/@eslint-community/eslint-utils/4.9.0_eslint@9.38.0:
267
+
resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
187
268
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
188
269
peerDependencies:
189
270
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
271
+
dependencies:
272
+
eslint: 9.38.0
273
+
eslint-visitor-keys: 3.4.3
274
+
dev: true
190
275
191
-
'@eslint-community/regexpp@4.12.1':
192
-
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
276
+
/@eslint-community/regexpp/4.12.2:
277
+
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
193
278
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
279
+
dev: true
194
280
195
-
'@eslint/config-array@0.21.0':
196
-
resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
281
+
/@eslint/config-array/0.21.1:
282
+
resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
197
283
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
284
+
dependencies:
285
+
'@eslint/object-schema': 2.1.7
286
+
debug: 4.4.3
287
+
minimatch: 3.1.2
288
+
transitivePeerDependencies:
289
+
- supports-color
290
+
dev: true
198
291
199
-
'@eslint/config-helpers@0.3.0':
200
-
resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==}
292
+
/@eslint/config-helpers/0.4.2:
293
+
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
201
294
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
295
+
dependencies:
296
+
'@eslint/core': 0.17.0
297
+
dev: true
202
298
203
-
'@eslint/core@0.15.1':
204
-
resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==}
299
+
/@eslint/core/0.16.0:
300
+
resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
205
301
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
302
+
dependencies:
303
+
'@types/json-schema': 7.0.15
304
+
dev: true
206
305
207
-
'@eslint/eslintrc@3.3.1':
306
+
/@eslint/core/0.17.0:
307
+
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
308
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
309
+
dependencies:
310
+
'@types/json-schema': 7.0.15
311
+
dev: true
312
+
313
+
/@eslint/eslintrc/3.3.1:
208
314
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
209
315
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
316
+
dependencies:
317
+
ajv: 6.12.6
318
+
debug: 4.4.3
319
+
espree: 10.4.0
320
+
globals: 14.0.0
321
+
ignore: 5.3.2
322
+
import-fresh: 3.3.1
323
+
js-yaml: 4.1.0
324
+
minimatch: 3.1.2
325
+
strip-json-comments: 3.1.1
326
+
transitivePeerDependencies:
327
+
- supports-color
328
+
dev: true
210
329
211
-
'@eslint/js@9.32.0':
212
-
resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==}
330
+
/@eslint/js/9.38.0:
331
+
resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==}
213
332
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
333
+
dev: true
214
334
215
-
'@eslint/object-schema@2.1.6':
216
-
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
335
+
/@eslint/object-schema/2.1.7:
336
+
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
217
337
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
338
+
dev: true
218
339
219
-
'@eslint/plugin-kit@0.3.4':
220
-
resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==}
340
+
/@eslint/plugin-kit/0.4.1:
341
+
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
221
342
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
343
+
dependencies:
344
+
'@eslint/core': 0.17.0
345
+
levn: 0.4.1
346
+
dev: true
222
347
223
-
'@humanfs/core@0.19.1':
348
+
/@humanfs/core/0.19.1:
224
349
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
225
350
engines: {node: '>=18.18.0'}
351
+
dev: true
226
352
227
-
'@humanfs/node@0.16.6':
228
-
resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
353
+
/@humanfs/node/0.16.7:
354
+
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
229
355
engines: {node: '>=18.18.0'}
356
+
dependencies:
357
+
'@humanfs/core': 0.19.1
358
+
'@humanwhocodes/retry': 0.4.3
359
+
dev: true
230
360
231
-
'@humanwhocodes/module-importer@1.0.1':
361
+
/@humanwhocodes/module-importer/1.0.1:
232
362
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
233
363
engines: {node: '>=12.22'}
364
+
dev: true
234
365
235
-
'@humanwhocodes/retry@0.3.1':
236
-
resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
237
-
engines: {node: '>=18.18'}
238
-
239
-
'@humanwhocodes/retry@0.4.3':
366
+
/@humanwhocodes/retry/0.4.3:
240
367
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
241
368
engines: {node: '>=18.18'}
242
-
243
-
'@rollup/rollup-android-arm-eabi@4.46.2':
244
-
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
245
-
cpu: [arm]
246
-
os: [android]
369
+
dev: true
247
370
248
-
'@rollup/rollup-android-arm64@4.46.2':
249
-
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
250
-
cpu: [arm64]
251
-
os: [android]
252
-
253
-
'@rollup/rollup-darwin-arm64@4.46.2':
254
-
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
255
-
cpu: [arm64]
256
-
os: [darwin]
257
-
258
-
'@rollup/rollup-darwin-x64@4.46.2':
259
-
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
260
-
cpu: [x64]
261
-
os: [darwin]
262
-
263
-
'@rollup/rollup-freebsd-arm64@4.46.2':
264
-
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
265
-
cpu: [arm64]
266
-
os: [freebsd]
267
-
268
-
'@rollup/rollup-freebsd-x64@4.46.2':
269
-
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
270
-
cpu: [x64]
271
-
os: [freebsd]
272
-
273
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
274
-
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
275
-
cpu: [arm]
276
-
os: [linux]
277
-
278
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
279
-
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
280
-
cpu: [arm]
281
-
os: [linux]
282
-
283
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
284
-
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
285
-
cpu: [arm64]
286
-
os: [linux]
287
-
288
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
289
-
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
290
-
cpu: [arm64]
291
-
os: [linux]
292
-
293
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
294
-
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
295
-
cpu: [loong64]
296
-
os: [linux]
297
-
298
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
299
-
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
300
-
cpu: [ppc64]
301
-
os: [linux]
302
-
303
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
304
-
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
305
-
cpu: [riscv64]
306
-
os: [linux]
307
-
308
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
309
-
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
310
-
cpu: [riscv64]
311
-
os: [linux]
312
-
313
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
314
-
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
315
-
cpu: [s390x]
316
-
os: [linux]
317
-
318
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
319
-
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
320
-
cpu: [x64]
321
-
os: [linux]
322
-
323
-
'@rollup/rollup-linux-x64-musl@4.46.2':
324
-
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
325
-
cpu: [x64]
326
-
os: [linux]
327
-
328
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
329
-
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
330
-
cpu: [arm64]
331
-
os: [win32]
332
-
333
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
334
-
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
335
-
cpu: [ia32]
336
-
os: [win32]
337
-
338
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
339
-
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
340
-
cpu: [x64]
341
-
os: [win32]
342
-
343
-
'@rollup/wasm-node@4.46.2':
344
-
resolution: {integrity: sha512-lZRiZl+B1R3VhqZgORtuUpc2YYbgIv+X6g3LgQHS5sjlf1ENiK1HZ6N5e8pEZ04nAWiwYM0JX7rP0eyxflkJRg==}
371
+
/@rollup/wasm-node/4.52.5:
372
+
resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==}
345
373
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
346
374
hasBin: true
375
+
dependencies:
376
+
'@types/estree': 1.0.8
377
+
optionalDependencies:
378
+
fsevents: 2.3.3
379
+
dev: true
347
380
348
-
'@types/estree@1.0.8':
381
+
/@types/estree/1.0.8:
349
382
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
383
+
dev: true
350
384
351
-
'@types/json-schema@7.0.15':
385
+
/@types/json-schema/7.0.15:
352
386
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
387
+
dev: true
353
388
354
-
acorn-jsx@5.3.2:
389
+
/acorn-jsx/5.3.2_acorn@8.15.0:
355
390
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
356
391
peerDependencies:
357
392
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
393
+
dependencies:
394
+
acorn: 8.15.0
395
+
dev: true
358
396
359
-
acorn@8.15.0:
397
+
/acorn/8.15.0:
360
398
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
361
399
engines: {node: '>=0.4.0'}
362
400
hasBin: true
401
+
dev: true
363
402
364
-
ajv@6.12.6:
403
+
/ajv/6.12.6:
365
404
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
405
+
dependencies:
406
+
fast-deep-equal: 3.1.3
407
+
fast-json-stable-stringify: 2.1.0
408
+
json-schema-traverse: 0.4.1
409
+
uri-js: 4.4.1
410
+
dev: true
366
411
367
-
ansi-styles@4.3.0:
412
+
/ansi-styles/4.3.0:
368
413
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
369
414
engines: {node: '>=8'}
415
+
dependencies:
416
+
color-convert: 2.0.1
417
+
dev: true
370
418
371
-
argparse@2.0.1:
419
+
/argparse/2.0.1:
372
420
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
421
+
dev: true
373
422
374
-
balanced-match@1.0.2:
423
+
/balanced-match/1.0.2:
375
424
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
425
+
dev: true
376
426
377
-
brace-expansion@1.1.12:
427
+
/brace-expansion/1.1.12:
378
428
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
429
+
dependencies:
430
+
balanced-match: 1.0.2
431
+
concat-map: 0.0.1
432
+
dev: true
379
433
380
-
braces@3.0.3:
434
+
/braces/3.0.3:
381
435
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
382
436
engines: {node: '>=8'}
437
+
dependencies:
438
+
fill-range: 7.1.1
439
+
dev: true
383
440
384
-
callsites@3.1.0:
441
+
/callsites/3.1.0:
385
442
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
386
443
engines: {node: '>=6'}
444
+
dev: true
387
445
388
-
chalk@4.1.2:
446
+
/chalk/4.1.2:
389
447
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
390
448
engines: {node: '>=10'}
449
+
dependencies:
450
+
ansi-styles: 4.3.0
451
+
supports-color: 7.2.0
452
+
dev: true
391
453
392
-
color-convert@2.0.1:
454
+
/color-convert/2.0.1:
393
455
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
394
456
engines: {node: '>=7.0.0'}
457
+
dependencies:
458
+
color-name: 1.1.4
459
+
dev: true
395
460
396
-
color-name@1.1.4:
461
+
/color-name/1.1.4:
397
462
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
463
+
dev: true
398
464
399
-
concat-map@0.0.1:
465
+
/concat-map/0.0.1:
400
466
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
467
+
dev: true
401
468
402
-
cross-spawn@7.0.6:
469
+
/cross-spawn/7.0.6:
403
470
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
404
471
engines: {node: '>= 8'}
472
+
dependencies:
473
+
path-key: 3.1.1
474
+
shebang-command: 2.0.0
475
+
which: 2.0.2
476
+
dev: true
405
477
406
-
debug@4.4.1:
407
-
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
478
+
/debug/4.4.3:
479
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
408
480
engines: {node: '>=6.0'}
409
481
peerDependencies:
410
482
supports-color: '*'
411
483
peerDependenciesMeta:
412
484
supports-color:
413
485
optional: true
486
+
dependencies:
487
+
ms: 2.1.3
488
+
dev: true
414
489
415
-
deep-is@0.1.4:
490
+
/deep-is/0.1.4:
416
491
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
492
+
dev: true
417
493
418
-
diff@8.0.2:
494
+
/diff/8.0.2:
419
495
resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
420
496
engines: {node: '>=0.3.1'}
497
+
dev: true
421
498
422
-
dom-serializer@2.0.0:
499
+
/dom-serializer/2.0.0:
423
500
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
501
+
dependencies:
502
+
domelementtype: 2.3.0
503
+
domhandler: 5.0.3
504
+
entities: 4.5.0
505
+
dev: true
424
506
425
-
domelementtype@2.3.0:
507
+
/domelementtype/2.3.0:
426
508
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
509
+
dev: true
427
510
428
-
domhandler@5.0.3:
511
+
/domhandler/5.0.3:
429
512
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
430
513
engines: {node: '>= 4'}
514
+
dependencies:
515
+
domelementtype: 2.3.0
516
+
dev: true
431
517
432
-
domutils@3.2.2:
518
+
/domutils/3.2.2:
433
519
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
520
+
dependencies:
521
+
dom-serializer: 2.0.0
522
+
domelementtype: 2.3.0
523
+
domhandler: 5.0.3
524
+
dev: true
434
525
435
-
entities@4.5.0:
526
+
/entities/4.5.0:
436
527
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
437
528
engines: {node: '>=0.12'}
529
+
dev: true
438
530
439
-
esbuild@0.21.5:
440
-
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
441
-
engines: {node: '>=12'}
531
+
/entities/6.0.1:
532
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
533
+
engines: {node: '>=0.12'}
534
+
dev: true
535
+
536
+
/esbuild/0.25.11:
537
+
resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
538
+
engines: {node: '>=18'}
442
539
hasBin: true
540
+
requiresBuild: true
541
+
optionalDependencies:
542
+
'@esbuild/aix-ppc64': 0.25.11
543
+
'@esbuild/android-arm': 0.25.11
544
+
'@esbuild/android-arm64': 0.25.11
545
+
'@esbuild/android-x64': 0.25.11
546
+
'@esbuild/darwin-arm64': 0.25.11
547
+
'@esbuild/darwin-x64': 0.25.11
548
+
'@esbuild/freebsd-arm64': 0.25.11
549
+
'@esbuild/freebsd-x64': 0.25.11
550
+
'@esbuild/linux-arm': 0.25.11
551
+
'@esbuild/linux-arm64': 0.25.11
552
+
'@esbuild/linux-ia32': 0.25.11
553
+
'@esbuild/linux-loong64': 0.25.11
554
+
'@esbuild/linux-mips64el': 0.25.11
555
+
'@esbuild/linux-ppc64': 0.25.11
556
+
'@esbuild/linux-riscv64': 0.25.11
557
+
'@esbuild/linux-s390x': 0.25.11
558
+
'@esbuild/linux-x64': 0.25.11
559
+
'@esbuild/netbsd-arm64': 0.25.11
560
+
'@esbuild/netbsd-x64': 0.25.11
561
+
'@esbuild/openbsd-arm64': 0.25.11
562
+
'@esbuild/openbsd-x64': 0.25.11
563
+
'@esbuild/openharmony-arm64': 0.25.11
564
+
'@esbuild/sunos-x64': 0.25.11
565
+
'@esbuild/win32-arm64': 0.25.11
566
+
'@esbuild/win32-ia32': 0.25.11
567
+
'@esbuild/win32-x64': 0.25.11
568
+
dev: true
443
569
444
-
escape-string-regexp@4.0.0:
570
+
/escape-string-regexp/4.0.0:
445
571
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
446
572
engines: {node: '>=10'}
573
+
dev: true
447
574
448
-
eslint-scope@8.4.0:
575
+
/eslint-scope/8.4.0:
449
576
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
450
577
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
578
+
dependencies:
579
+
esrecurse: 4.3.0
580
+
estraverse: 5.3.0
581
+
dev: true
451
582
452
-
eslint-visitor-keys@3.4.3:
583
+
/eslint-visitor-keys/3.4.3:
453
584
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
454
585
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
586
+
dev: true
455
587
456
-
eslint-visitor-keys@4.2.1:
588
+
/eslint-visitor-keys/4.2.1:
457
589
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
458
590
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
591
+
dev: true
459
592
460
-
eslint@9.32.0:
461
-
resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==}
593
+
/eslint/9.38.0:
594
+
resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==}
462
595
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
463
596
hasBin: true
464
597
peerDependencies:
···
466
599
peerDependenciesMeta:
467
600
jiti:
468
601
optional: true
602
+
dependencies:
603
+
'@eslint-community/eslint-utils': 4.9.0_eslint@9.38.0
604
+
'@eslint-community/regexpp': 4.12.2
605
+
'@eslint/config-array': 0.21.1
606
+
'@eslint/config-helpers': 0.4.2
607
+
'@eslint/core': 0.16.0
608
+
'@eslint/eslintrc': 3.3.1
609
+
'@eslint/js': 9.38.0
610
+
'@eslint/plugin-kit': 0.4.1
611
+
'@humanfs/node': 0.16.7
612
+
'@humanwhocodes/module-importer': 1.0.1
613
+
'@humanwhocodes/retry': 0.4.3
614
+
'@types/estree': 1.0.8
615
+
ajv: 6.12.6
616
+
chalk: 4.1.2
617
+
cross-spawn: 7.0.6
618
+
debug: 4.4.3
619
+
escape-string-regexp: 4.0.0
620
+
eslint-scope: 8.4.0
621
+
eslint-visitor-keys: 4.2.1
622
+
espree: 10.4.0
623
+
esquery: 1.6.0
624
+
esutils: 2.0.3
625
+
fast-deep-equal: 3.1.3
626
+
file-entry-cache: 8.0.0
627
+
find-up: 5.0.0
628
+
glob-parent: 6.0.2
629
+
ignore: 5.3.2
630
+
imurmurhash: 0.1.4
631
+
is-glob: 4.0.3
632
+
json-stable-stringify-without-jsonify: 1.0.1
633
+
lodash.merge: 4.6.2
634
+
minimatch: 3.1.2
635
+
natural-compare: 1.4.0
636
+
optionator: 0.9.4
637
+
transitivePeerDependencies:
638
+
- supports-color
639
+
dev: true
469
640
470
-
espree@10.4.0:
641
+
/espree/10.4.0:
471
642
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
472
643
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
644
+
dependencies:
645
+
acorn: 8.15.0
646
+
acorn-jsx: 5.3.2_acorn@8.15.0
647
+
eslint-visitor-keys: 4.2.1
648
+
dev: true
473
649
474
-
esquery@1.6.0:
650
+
/esquery/1.6.0:
475
651
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
476
652
engines: {node: '>=0.10'}
653
+
dependencies:
654
+
estraverse: 5.3.0
655
+
dev: true
477
656
478
-
esrecurse@4.3.0:
657
+
/esrecurse/4.3.0:
479
658
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
480
659
engines: {node: '>=4.0'}
660
+
dependencies:
661
+
estraverse: 5.3.0
662
+
dev: true
481
663
482
-
estraverse@5.3.0:
664
+
/estraverse/5.3.0:
483
665
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
484
666
engines: {node: '>=4.0'}
667
+
dev: true
485
668
486
-
esutils@2.0.3:
669
+
/esutils/2.0.3:
487
670
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
488
671
engines: {node: '>=0.10.0'}
672
+
dev: true
489
673
490
-
fast-deep-equal@3.1.3:
674
+
/fast-deep-equal/3.1.3:
491
675
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
676
+
dev: true
492
677
493
-
fast-json-stable-stringify@2.1.0:
678
+
/fast-json-stable-stringify/2.1.0:
494
679
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
680
+
dev: true
495
681
496
-
fast-levenshtein@2.0.6:
682
+
/fast-levenshtein/2.0.6:
497
683
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
684
+
dev: true
498
685
499
-
file-entry-cache@8.0.0:
686
+
/fdir/6.5.0_picomatch@4.0.3:
687
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
688
+
engines: {node: '>=12.0.0'}
689
+
peerDependencies:
690
+
picomatch: ^3 || ^4
691
+
peerDependenciesMeta:
692
+
picomatch:
693
+
optional: true
694
+
dependencies:
695
+
picomatch: 4.0.3
696
+
dev: true
697
+
698
+
/file-entry-cache/8.0.0:
500
699
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
501
700
engines: {node: '>=16.0.0'}
701
+
dependencies:
702
+
flat-cache: 4.0.1
703
+
dev: true
502
704
503
-
fill-range@7.1.1:
705
+
/fill-range/7.1.1:
504
706
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
505
707
engines: {node: '>=8'}
708
+
dependencies:
709
+
to-regex-range: 5.0.1
710
+
dev: true
506
711
507
-
find-up@5.0.0:
712
+
/find-up/5.0.0:
508
713
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
509
714
engines: {node: '>=10'}
715
+
dependencies:
716
+
locate-path: 6.0.0
717
+
path-exists: 4.0.0
718
+
dev: true
510
719
511
-
flat-cache@4.0.1:
720
+
/flat-cache/4.0.1:
512
721
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
513
722
engines: {node: '>=16'}
723
+
dependencies:
724
+
flatted: 3.3.3
725
+
keyv: 4.5.4
726
+
dev: true
514
727
515
-
flatted@3.3.3:
728
+
/flatted/3.3.3:
516
729
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
730
+
dev: true
517
731
518
-
fsevents@2.3.3:
732
+
/fsevents/2.3.3:
519
733
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
520
734
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
521
735
os: [darwin]
736
+
requiresBuild: true
737
+
dev: true
738
+
optional: true
522
739
523
-
glob-parent@6.0.2:
740
+
/glob-parent/6.0.2:
524
741
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
525
742
engines: {node: '>=10.13.0'}
743
+
dependencies:
744
+
is-glob: 4.0.3
745
+
dev: true
526
746
527
-
globals@14.0.0:
747
+
/globals/14.0.0:
528
748
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
529
749
engines: {node: '>=18'}
750
+
dev: true
530
751
531
-
globals@16.3.0:
532
-
resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==}
752
+
/globals/16.4.0:
753
+
resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
533
754
engines: {node: '>=18'}
755
+
dev: true
534
756
535
-
has-flag@4.0.0:
757
+
/has-flag/4.0.0:
536
758
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
537
759
engines: {node: '>=8'}
760
+
dev: true
538
761
539
-
htmlparser2@9.1.0:
762
+
/htmlparser2/10.0.0:
763
+
resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==}
764
+
dependencies:
765
+
domelementtype: 2.3.0
766
+
domhandler: 5.0.3
767
+
domutils: 3.2.2
768
+
entities: 6.0.1
769
+
dev: true
770
+
771
+
/htmlparser2/9.1.0:
540
772
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
773
+
dependencies:
774
+
domelementtype: 2.3.0
775
+
domhandler: 5.0.3
776
+
domutils: 3.2.2
777
+
entities: 4.5.0
778
+
dev: true
541
779
542
-
ignore@5.3.2:
780
+
/ignore/5.3.2:
543
781
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
544
782
engines: {node: '>= 4'}
783
+
dev: true
545
784
546
-
import-fresh@3.3.1:
785
+
/import-fresh/3.3.1:
547
786
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
548
787
engines: {node: '>=6'}
788
+
dependencies:
789
+
parent-module: 1.0.1
790
+
resolve-from: 4.0.0
791
+
dev: true
549
792
550
-
imurmurhash@0.1.4:
793
+
/imurmurhash/0.1.4:
551
794
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
552
795
engines: {node: '>=0.8.19'}
796
+
dev: true
553
797
554
-
is-extglob@2.1.1:
798
+
/is-extglob/2.1.1:
555
799
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
556
800
engines: {node: '>=0.10.0'}
801
+
dev: true
557
802
558
-
is-glob@4.0.3:
803
+
/is-glob/4.0.3:
559
804
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
560
805
engines: {node: '>=0.10.0'}
806
+
dependencies:
807
+
is-extglob: 2.1.1
808
+
dev: true
561
809
562
-
is-number@7.0.0:
810
+
/is-number/7.0.0:
563
811
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
564
812
engines: {node: '>=0.12.0'}
813
+
dev: true
565
814
566
-
isexe@2.0.0:
815
+
/isexe/2.0.0:
567
816
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
817
+
dev: true
568
818
569
-
js-yaml@4.1.0:
819
+
/js-yaml/4.1.0:
570
820
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
571
821
hasBin: true
822
+
dependencies:
823
+
argparse: 2.0.1
824
+
dev: true
572
825
573
-
json-buffer@3.0.1:
826
+
/json-buffer/3.0.1:
574
827
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
828
+
dev: true
575
829
576
-
json-schema-traverse@0.4.1:
830
+
/json-schema-traverse/0.4.1:
577
831
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
832
+
dev: true
578
833
579
-
json-stable-stringify-without-jsonify@1.0.1:
834
+
/json-stable-stringify-without-jsonify/1.0.1:
580
835
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
836
+
dev: true
581
837
582
-
keyv@4.5.4:
838
+
/keyv/4.5.4:
583
839
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
840
+
dependencies:
841
+
json-buffer: 3.0.1
842
+
dev: true
584
843
585
-
levn@0.4.1:
844
+
/levn/0.4.1:
586
845
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
587
846
engines: {node: '>= 0.8.0'}
847
+
dependencies:
848
+
prelude-ls: 1.2.1
849
+
type-check: 0.4.0
850
+
dev: true
588
851
589
-
locate-path@6.0.0:
852
+
/locate-path/6.0.0:
590
853
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
591
854
engines: {node: '>=10'}
855
+
dependencies:
856
+
p-locate: 5.0.0
857
+
dev: true
592
858
593
-
lodash.merge@4.6.2:
859
+
/lodash.merge/4.6.2:
594
860
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
861
+
dev: true
595
862
596
-
micromatch@4.0.8:
863
+
/micromatch/4.0.8:
597
864
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
598
865
engines: {node: '>=8.6'}
866
+
dependencies:
867
+
braces: 3.0.3
868
+
picomatch: 2.3.1
869
+
dev: true
599
870
600
-
minimatch@3.1.2:
871
+
/minimatch/3.1.2:
601
872
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
873
+
dependencies:
874
+
brace-expansion: 1.1.12
875
+
dev: true
602
876
603
-
ms@2.1.3:
877
+
/ms/2.1.3:
604
878
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
879
+
dev: true
605
880
606
-
nanoid@3.3.11:
881
+
/nanoid/3.3.11:
607
882
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
608
883
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
609
884
hasBin: true
885
+
dev: true
610
886
611
-
natural-compare@1.4.0:
887
+
/natural-compare/1.4.0:
612
888
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
889
+
dev: true
613
890
614
-
optionator@0.9.4:
891
+
/optionator/0.9.4:
615
892
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
616
893
engines: {node: '>= 0.8.0'}
894
+
dependencies:
895
+
deep-is: 0.1.4
896
+
fast-levenshtein: 2.0.6
897
+
levn: 0.4.1
898
+
prelude-ls: 1.2.1
899
+
type-check: 0.4.0
900
+
word-wrap: 1.2.5
901
+
dev: true
617
902
618
-
p-limit@3.1.0:
903
+
/p-limit/3.1.0:
619
904
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
620
905
engines: {node: '>=10'}
906
+
dependencies:
907
+
yocto-queue: 0.1.0
908
+
dev: true
621
909
622
-
p-locate@5.0.0:
910
+
/p-locate/5.0.0:
623
911
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
624
912
engines: {node: '>=10'}
913
+
dependencies:
914
+
p-limit: 3.1.0
915
+
dev: true
625
916
626
-
parent-module@1.0.1:
917
+
/parent-module/1.0.1:
627
918
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
628
919
engines: {node: '>=6'}
920
+
dependencies:
921
+
callsites: 3.1.0
922
+
dev: true
629
923
630
-
path-exists@4.0.0:
924
+
/path-exists/4.0.0:
631
925
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
632
926
engines: {node: '>=8'}
927
+
dev: true
633
928
634
-
path-key@3.1.1:
929
+
/path-key/3.1.1:
635
930
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
636
931
engines: {node: '>=8'}
932
+
dev: true
637
933
638
-
picocolors@1.1.1:
934
+
/picocolors/1.1.1:
639
935
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
936
+
dev: true
640
937
641
-
picomatch@2.3.1:
938
+
/picomatch/2.3.1:
642
939
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
643
940
engines: {node: '>=8.6'}
941
+
dev: true
644
942
645
-
postcss@8.5.6:
943
+
/picomatch/4.0.3:
944
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
945
+
engines: {node: '>=12'}
946
+
dev: true
947
+
948
+
/postcss/8.5.6:
646
949
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
647
950
engines: {node: ^10 || ^12 || >=14}
951
+
dependencies:
952
+
nanoid: 3.3.11
953
+
picocolors: 1.1.1
954
+
source-map-js: 1.2.1
955
+
dev: true
648
956
649
-
prelude-ls@1.2.1:
957
+
/prelude-ls/1.2.1:
650
958
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
651
959
engines: {node: '>= 0.8.0'}
960
+
dev: true
652
961
653
-
punycode@2.3.1:
962
+
/punycode/2.3.1:
654
963
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
655
964
engines: {node: '>=6'}
965
+
dev: true
656
966
657
-
resolve-from@4.0.0:
967
+
/resolve-from/4.0.0:
658
968
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
659
969
engines: {node: '>=4'}
660
-
661
-
rollup@4.46.2:
662
-
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
663
-
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
664
-
hasBin: true
970
+
dev: true
665
971
666
-
shebang-command@2.0.0:
972
+
/shebang-command/2.0.0:
667
973
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
668
974
engines: {node: '>=8'}
975
+
dependencies:
976
+
shebang-regex: 3.0.0
977
+
dev: true
669
978
670
-
shebang-regex@3.0.0:
979
+
/shebang-regex/3.0.0:
671
980
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
672
981
engines: {node: '>=8'}
982
+
dev: true
673
983
674
-
source-map-js@1.2.1:
984
+
/source-map-js/1.2.1:
675
985
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
676
986
engines: {node: '>=0.10.0'}
987
+
dev: true
677
988
678
-
strip-json-comments@3.1.1:
989
+
/strip-json-comments/3.1.1:
679
990
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
680
991
engines: {node: '>=8'}
992
+
dev: true
681
993
682
-
supports-color@7.2.0:
994
+
/supports-color/7.2.0:
683
995
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
684
996
engines: {node: '>=8'}
997
+
dependencies:
998
+
has-flag: 4.0.0
999
+
dev: true
685
1000
686
-
to-regex-range@5.0.1:
1001
+
/tinyglobby/0.2.15:
1002
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
1003
+
engines: {node: '>=12.0.0'}
1004
+
dependencies:
1005
+
fdir: 6.5.0_picomatch@4.0.3
1006
+
picomatch: 4.0.3
1007
+
dev: true
1008
+
1009
+
/to-regex-range/5.0.1:
687
1010
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
688
1011
engines: {node: '>=8.0'}
1012
+
dependencies:
1013
+
is-number: 7.0.0
1014
+
dev: true
689
1015
690
-
type-check@0.4.0:
1016
+
/type-check/0.4.0:
691
1017
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
692
1018
engines: {node: '>= 0.8.0'}
1019
+
dependencies:
1020
+
prelude-ls: 1.2.1
1021
+
dev: true
693
1022
694
-
uri-js@4.4.1:
1023
+
/uri-js/4.4.1:
695
1024
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1025
+
dependencies:
1026
+
punycode: 2.3.1
1027
+
dev: true
696
1028
697
-
vite-plugin-dom@1.0.4:
698
-
resolution: {integrity: sha512-GkmDAsVDo0Aabb7RmGTGWZNDowV5K+IkrhmJfrgMpgjHdE7F8H1OsTk48DQmnQ/2llM5UvP4z5h0icdsnL/C/g==}
1029
+
/vite-plugin-dom/1.0.5_vite@7.1.12:
1030
+
resolution: {integrity: sha512-G3MbuH30FpBD800I26xlB6lUiDm7sCxvQkHPt9OAJyUEbyiO9UWrKADxVUhWbO65WqL/TGtH1OEez+w++TlfMw==}
699
1031
peerDependencies:
700
1032
vite: '>=4.0.0'
1033
+
dependencies:
1034
+
htmlparser2: 10.0.0
1035
+
vite: 7.1.12
1036
+
dev: true
701
1037
702
-
vite-plugin-singlefile@2.3.0:
1038
+
/vite-plugin-singlefile/2.3.0_vite@7.1.12:
703
1039
resolution: {integrity: sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==}
704
1040
engines: {node: '>18.0.0'}
705
1041
peerDependencies:
706
1042
rollup: ^4.44.1
707
1043
vite: ^5.4.11 || ^6.0.0 || ^7.0.0
1044
+
dependencies:
1045
+
micromatch: 4.0.8
1046
+
vite: 7.1.12
1047
+
dev: true
708
1048
709
-
vite@5.4.19:
710
-
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
711
-
engines: {node: ^18.0.0 || >=20.0.0}
1049
+
/vite/7.1.12:
1050
+
resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==}
1051
+
engines: {node: ^20.19.0 || >=22.12.0}
712
1052
hasBin: true
713
1053
peerDependencies:
714
-
'@types/node': ^18.0.0 || >=20.0.0
715
-
less: '*'
1054
+
'@types/node': ^20.19.0 || >=22.12.0
1055
+
jiti: '>=1.21.0'
1056
+
less: ^4.0.0
716
1057
lightningcss: ^1.21.0
717
-
sass: '*'
718
-
sass-embedded: '*'
719
-
stylus: '*'
720
-
sugarss: '*'
721
-
terser: ^5.4.0
1058
+
sass: ^1.70.0
1059
+
sass-embedded: ^1.70.0
1060
+
stylus: '>=0.54.8'
1061
+
sugarss: ^5.0.0
1062
+
terser: ^5.16.0
1063
+
tsx: ^4.8.1
1064
+
yaml: ^2.4.2
722
1065
peerDependenciesMeta:
723
1066
'@types/node':
1067
+
optional: true
1068
+
jiti:
724
1069
optional: true
725
1070
less:
726
1071
optional: true
···
736
1081
optional: true
737
1082
terser:
738
1083
optional: true
1084
+
tsx:
1085
+
optional: true
1086
+
yaml:
1087
+
optional: true
1088
+
dependencies:
1089
+
esbuild: 0.25.11
1090
+
fdir: 6.5.0_picomatch@4.0.3
1091
+
picomatch: 4.0.3
1092
+
postcss: 8.5.6
1093
+
rollup: /@rollup/wasm-node/4.52.5
1094
+
tinyglobby: 0.2.15
1095
+
optionalDependencies:
1096
+
fsevents: 2.3.3
1097
+
dev: true
739
1098
740
-
which@2.0.2:
1099
+
/which/2.0.2:
741
1100
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
742
1101
engines: {node: '>= 8'}
743
1102
hasBin: true
1103
+
dependencies:
1104
+
isexe: 2.0.0
1105
+
dev: true
744
1106
745
-
word-wrap@1.2.5:
1107
+
/word-wrap/1.2.5:
746
1108
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
747
1109
engines: {node: '>=0.10.0'}
1110
+
dev: true
748
1111
749
-
yocto-queue@0.1.0:
1112
+
/yocto-queue/0.1.0:
750
1113
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
751
1114
engines: {node: '>=10'}
752
-
753
-
snapshots:
754
-
755
-
'@esbuild/aix-ppc64@0.21.5':
756
-
optional: true
757
-
758
-
'@esbuild/android-arm64@0.21.5':
759
-
optional: true
760
-
761
-
'@esbuild/android-arm@0.21.5':
762
-
optional: true
763
-
764
-
'@esbuild/android-x64@0.21.5':
765
-
optional: true
766
-
767
-
'@esbuild/darwin-arm64@0.21.5':
768
-
optional: true
769
-
770
-
'@esbuild/darwin-x64@0.21.5':
771
-
optional: true
772
-
773
-
'@esbuild/freebsd-arm64@0.21.5':
774
-
optional: true
775
-
776
-
'@esbuild/freebsd-x64@0.21.5':
777
-
optional: true
778
-
779
-
'@esbuild/linux-arm64@0.21.5':
780
-
optional: true
781
-
782
-
'@esbuild/linux-arm@0.21.5':
783
-
optional: true
784
-
785
-
'@esbuild/linux-ia32@0.21.5':
786
-
optional: true
787
-
788
-
'@esbuild/linux-loong64@0.21.5':
789
-
optional: true
790
-
791
-
'@esbuild/linux-mips64el@0.21.5':
792
-
optional: true
793
-
794
-
'@esbuild/linux-ppc64@0.21.5':
795
-
optional: true
796
-
797
-
'@esbuild/linux-riscv64@0.21.5':
798
-
optional: true
799
-
800
-
'@esbuild/linux-s390x@0.21.5':
801
-
optional: true
802
-
803
-
'@esbuild/linux-x64@0.21.5':
804
-
optional: true
805
-
806
-
'@esbuild/netbsd-x64@0.21.5':
807
-
optional: true
808
-
809
-
'@esbuild/openbsd-x64@0.21.5':
810
-
optional: true
811
-
812
-
'@esbuild/sunos-x64@0.21.5':
813
-
optional: true
814
-
815
-
'@esbuild/win32-arm64@0.21.5':
816
-
optional: true
817
-
818
-
'@esbuild/win32-ia32@0.21.5':
819
-
optional: true
820
-
821
-
'@esbuild/win32-x64@0.21.5':
822
-
optional: true
823
-
824
-
'@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)':
825
-
dependencies:
826
-
eslint: 9.32.0
827
-
eslint-visitor-keys: 3.4.3
828
-
829
-
'@eslint-community/regexpp@4.12.1': {}
830
-
831
-
'@eslint/config-array@0.21.0':
832
-
dependencies:
833
-
'@eslint/object-schema': 2.1.6
834
-
debug: 4.4.1
835
-
minimatch: 3.1.2
836
-
transitivePeerDependencies:
837
-
- supports-color
838
-
839
-
'@eslint/config-helpers@0.3.0': {}
840
-
841
-
'@eslint/core@0.15.1':
842
-
dependencies:
843
-
'@types/json-schema': 7.0.15
844
-
845
-
'@eslint/eslintrc@3.3.1':
846
-
dependencies:
847
-
ajv: 6.12.6
848
-
debug: 4.4.1
849
-
espree: 10.4.0
850
-
globals: 14.0.0
851
-
ignore: 5.3.2
852
-
import-fresh: 3.3.1
853
-
js-yaml: 4.1.0
854
-
minimatch: 3.1.2
855
-
strip-json-comments: 3.1.1
856
-
transitivePeerDependencies:
857
-
- supports-color
858
-
859
-
'@eslint/js@9.32.0': {}
860
-
861
-
'@eslint/object-schema@2.1.6': {}
862
-
863
-
'@eslint/plugin-kit@0.3.4':
864
-
dependencies:
865
-
'@eslint/core': 0.15.1
866
-
levn: 0.4.1
867
-
868
-
'@humanfs/core@0.19.1': {}
869
-
870
-
'@humanfs/node@0.16.6':
871
-
dependencies:
872
-
'@humanfs/core': 0.19.1
873
-
'@humanwhocodes/retry': 0.3.1
874
-
875
-
'@humanwhocodes/module-importer@1.0.1': {}
876
-
877
-
'@humanwhocodes/retry@0.3.1': {}
878
-
879
-
'@humanwhocodes/retry@0.4.3': {}
880
-
881
-
'@rollup/rollup-android-arm-eabi@4.46.2':
882
-
optional: true
883
-
884
-
'@rollup/rollup-android-arm64@4.46.2':
885
-
optional: true
886
-
887
-
'@rollup/rollup-darwin-arm64@4.46.2':
888
-
optional: true
889
-
890
-
'@rollup/rollup-darwin-x64@4.46.2':
891
-
optional: true
892
-
893
-
'@rollup/rollup-freebsd-arm64@4.46.2':
894
-
optional: true
895
-
896
-
'@rollup/rollup-freebsd-x64@4.46.2':
897
-
optional: true
898
-
899
-
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
900
-
optional: true
901
-
902
-
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
903
-
optional: true
904
-
905
-
'@rollup/rollup-linux-arm64-gnu@4.46.2':
906
-
optional: true
907
-
908
-
'@rollup/rollup-linux-arm64-musl@4.46.2':
909
-
optional: true
910
-
911
-
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
912
-
optional: true
913
-
914
-
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
915
-
optional: true
916
-
917
-
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
918
-
optional: true
919
-
920
-
'@rollup/rollup-linux-riscv64-musl@4.46.2':
921
-
optional: true
922
-
923
-
'@rollup/rollup-linux-s390x-gnu@4.46.2':
924
-
optional: true
925
-
926
-
'@rollup/rollup-linux-x64-gnu@4.46.2':
927
-
optional: true
928
-
929
-
'@rollup/rollup-linux-x64-musl@4.46.2':
930
-
optional: true
931
-
932
-
'@rollup/rollup-win32-arm64-msvc@4.46.2':
933
-
optional: true
934
-
935
-
'@rollup/rollup-win32-ia32-msvc@4.46.2':
936
-
optional: true
937
-
938
-
'@rollup/rollup-win32-x64-msvc@4.46.2':
939
-
optional: true
940
-
941
-
'@rollup/wasm-node@4.46.2':
942
-
dependencies:
943
-
'@types/estree': 1.0.8
944
-
optionalDependencies:
945
-
fsevents: 2.3.3
946
-
947
-
'@types/estree@1.0.8': {}
948
-
949
-
'@types/json-schema@7.0.15': {}
950
-
951
-
acorn-jsx@5.3.2(acorn@8.15.0):
952
-
dependencies:
953
-
acorn: 8.15.0
954
-
955
-
acorn@8.15.0: {}
956
-
957
-
ajv@6.12.6:
958
-
dependencies:
959
-
fast-deep-equal: 3.1.3
960
-
fast-json-stable-stringify: 2.1.0
961
-
json-schema-traverse: 0.4.1
962
-
uri-js: 4.4.1
963
-
964
-
ansi-styles@4.3.0:
965
-
dependencies:
966
-
color-convert: 2.0.1
967
-
968
-
argparse@2.0.1: {}
969
-
970
-
balanced-match@1.0.2: {}
971
-
972
-
brace-expansion@1.1.12:
973
-
dependencies:
974
-
balanced-match: 1.0.2
975
-
concat-map: 0.0.1
976
-
977
-
braces@3.0.3:
978
-
dependencies:
979
-
fill-range: 7.1.1
980
-
981
-
callsites@3.1.0: {}
982
-
983
-
chalk@4.1.2:
984
-
dependencies:
985
-
ansi-styles: 4.3.0
986
-
supports-color: 7.2.0
987
-
988
-
color-convert@2.0.1:
989
-
dependencies:
990
-
color-name: 1.1.4
991
-
992
-
color-name@1.1.4: {}
993
-
994
-
concat-map@0.0.1: {}
995
-
996
-
cross-spawn@7.0.6:
997
-
dependencies:
998
-
path-key: 3.1.1
999
-
shebang-command: 2.0.0
1000
-
which: 2.0.2
1001
-
1002
-
debug@4.4.1:
1003
-
dependencies:
1004
-
ms: 2.1.3
1005
-
1006
-
deep-is@0.1.4: {}
1007
-
1008
-
diff@8.0.2: {}
1009
-
1010
-
dom-serializer@2.0.0:
1011
-
dependencies:
1012
-
domelementtype: 2.3.0
1013
-
domhandler: 5.0.3
1014
-
entities: 4.5.0
1015
-
1016
-
domelementtype@2.3.0: {}
1017
-
1018
-
domhandler@5.0.3:
1019
-
dependencies:
1020
-
domelementtype: 2.3.0
1021
-
1022
-
domutils@3.2.2:
1023
-
dependencies:
1024
-
dom-serializer: 2.0.0
1025
-
domelementtype: 2.3.0
1026
-
domhandler: 5.0.3
1027
-
1028
-
entities@4.5.0: {}
1029
-
1030
-
esbuild@0.21.5:
1031
-
optionalDependencies:
1032
-
'@esbuild/aix-ppc64': 0.21.5
1033
-
'@esbuild/android-arm': 0.21.5
1034
-
'@esbuild/android-arm64': 0.21.5
1035
-
'@esbuild/android-x64': 0.21.5
1036
-
'@esbuild/darwin-arm64': 0.21.5
1037
-
'@esbuild/darwin-x64': 0.21.5
1038
-
'@esbuild/freebsd-arm64': 0.21.5
1039
-
'@esbuild/freebsd-x64': 0.21.5
1040
-
'@esbuild/linux-arm': 0.21.5
1041
-
'@esbuild/linux-arm64': 0.21.5
1042
-
'@esbuild/linux-ia32': 0.21.5
1043
-
'@esbuild/linux-loong64': 0.21.5
1044
-
'@esbuild/linux-mips64el': 0.21.5
1045
-
'@esbuild/linux-ppc64': 0.21.5
1046
-
'@esbuild/linux-riscv64': 0.21.5
1047
-
'@esbuild/linux-s390x': 0.21.5
1048
-
'@esbuild/linux-x64': 0.21.5
1049
-
'@esbuild/netbsd-x64': 0.21.5
1050
-
'@esbuild/openbsd-x64': 0.21.5
1051
-
'@esbuild/sunos-x64': 0.21.5
1052
-
'@esbuild/win32-arm64': 0.21.5
1053
-
'@esbuild/win32-ia32': 0.21.5
1054
-
'@esbuild/win32-x64': 0.21.5
1055
-
1056
-
escape-string-regexp@4.0.0: {}
1057
-
1058
-
eslint-scope@8.4.0:
1059
-
dependencies:
1060
-
esrecurse: 4.3.0
1061
-
estraverse: 5.3.0
1062
-
1063
-
eslint-visitor-keys@3.4.3: {}
1064
-
1065
-
eslint-visitor-keys@4.2.1: {}
1066
-
1067
-
eslint@9.32.0:
1068
-
dependencies:
1069
-
'@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0)
1070
-
'@eslint-community/regexpp': 4.12.1
1071
-
'@eslint/config-array': 0.21.0
1072
-
'@eslint/config-helpers': 0.3.0
1073
-
'@eslint/core': 0.15.1
1074
-
'@eslint/eslintrc': 3.3.1
1075
-
'@eslint/js': 9.32.0
1076
-
'@eslint/plugin-kit': 0.3.4
1077
-
'@humanfs/node': 0.16.6
1078
-
'@humanwhocodes/module-importer': 1.0.1
1079
-
'@humanwhocodes/retry': 0.4.3
1080
-
'@types/estree': 1.0.8
1081
-
'@types/json-schema': 7.0.15
1082
-
ajv: 6.12.6
1083
-
chalk: 4.1.2
1084
-
cross-spawn: 7.0.6
1085
-
debug: 4.4.1
1086
-
escape-string-regexp: 4.0.0
1087
-
eslint-scope: 8.4.0
1088
-
eslint-visitor-keys: 4.2.1
1089
-
espree: 10.4.0
1090
-
esquery: 1.6.0
1091
-
esutils: 2.0.3
1092
-
fast-deep-equal: 3.1.3
1093
-
file-entry-cache: 8.0.0
1094
-
find-up: 5.0.0
1095
-
glob-parent: 6.0.2
1096
-
ignore: 5.3.2
1097
-
imurmurhash: 0.1.4
1098
-
is-glob: 4.0.3
1099
-
json-stable-stringify-without-jsonify: 1.0.1
1100
-
lodash.merge: 4.6.2
1101
-
minimatch: 3.1.2
1102
-
natural-compare: 1.4.0
1103
-
optionator: 0.9.4
1104
-
transitivePeerDependencies:
1105
-
- supports-color
1106
-
1107
-
espree@10.4.0:
1108
-
dependencies:
1109
-
acorn: 8.15.0
1110
-
acorn-jsx: 5.3.2(acorn@8.15.0)
1111
-
eslint-visitor-keys: 4.2.1
1112
-
1113
-
esquery@1.6.0:
1114
-
dependencies:
1115
-
estraverse: 5.3.0
1116
-
1117
-
esrecurse@4.3.0:
1118
-
dependencies:
1119
-
estraverse: 5.3.0
1120
-
1121
-
estraverse@5.3.0: {}
1122
-
1123
-
esutils@2.0.3: {}
1124
-
1125
-
fast-deep-equal@3.1.3: {}
1126
-
1127
-
fast-json-stable-stringify@2.1.0: {}
1128
-
1129
-
fast-levenshtein@2.0.6: {}
1130
-
1131
-
file-entry-cache@8.0.0:
1132
-
dependencies:
1133
-
flat-cache: 4.0.1
1134
-
1135
-
fill-range@7.1.1:
1136
-
dependencies:
1137
-
to-regex-range: 5.0.1
1138
-
1139
-
find-up@5.0.0:
1140
-
dependencies:
1141
-
locate-path: 6.0.0
1142
-
path-exists: 4.0.0
1143
-
1144
-
flat-cache@4.0.1:
1145
-
dependencies:
1146
-
flatted: 3.3.3
1147
-
keyv: 4.5.4
1148
-
1149
-
flatted@3.3.3: {}
1150
-
1151
-
fsevents@2.3.3:
1152
-
optional: true
1153
-
1154
-
glob-parent@6.0.2:
1155
-
dependencies:
1156
-
is-glob: 4.0.3
1157
-
1158
-
globals@14.0.0: {}
1159
-
1160
-
globals@16.3.0: {}
1161
-
1162
-
has-flag@4.0.0: {}
1163
-
1164
-
htmlparser2@9.1.0:
1165
-
dependencies:
1166
-
domelementtype: 2.3.0
1167
-
domhandler: 5.0.3
1168
-
domutils: 3.2.2
1169
-
entities: 4.5.0
1170
-
1171
-
ignore@5.3.2: {}
1172
-
1173
-
import-fresh@3.3.1:
1174
-
dependencies:
1175
-
parent-module: 1.0.1
1176
-
resolve-from: 4.0.0
1177
-
1178
-
imurmurhash@0.1.4: {}
1179
-
1180
-
is-extglob@2.1.1: {}
1181
-
1182
-
is-glob@4.0.3:
1183
-
dependencies:
1184
-
is-extglob: 2.1.1
1185
-
1186
-
is-number@7.0.0: {}
1187
-
1188
-
isexe@2.0.0: {}
1189
-
1190
-
js-yaml@4.1.0:
1191
-
dependencies:
1192
-
argparse: 2.0.1
1193
-
1194
-
json-buffer@3.0.1: {}
1195
-
1196
-
json-schema-traverse@0.4.1: {}
1197
-
1198
-
json-stable-stringify-without-jsonify@1.0.1: {}
1199
-
1200
-
keyv@4.5.4:
1201
-
dependencies:
1202
-
json-buffer: 3.0.1
1203
-
1204
-
levn@0.4.1:
1205
-
dependencies:
1206
-
prelude-ls: 1.2.1
1207
-
type-check: 0.4.0
1208
-
1209
-
locate-path@6.0.0:
1210
-
dependencies:
1211
-
p-locate: 5.0.0
1212
-
1213
-
lodash.merge@4.6.2: {}
1214
-
1215
-
micromatch@4.0.8:
1216
-
dependencies:
1217
-
braces: 3.0.3
1218
-
picomatch: 2.3.1
1219
-
1220
-
minimatch@3.1.2:
1221
-
dependencies:
1222
-
brace-expansion: 1.1.12
1223
-
1224
-
ms@2.1.3: {}
1225
-
1226
-
nanoid@3.3.11: {}
1227
-
1228
-
natural-compare@1.4.0: {}
1229
-
1230
-
optionator@0.9.4:
1231
-
dependencies:
1232
-
deep-is: 0.1.4
1233
-
fast-levenshtein: 2.0.6
1234
-
levn: 0.4.1
1235
-
prelude-ls: 1.2.1
1236
-
type-check: 0.4.0
1237
-
word-wrap: 1.2.5
1238
-
1239
-
p-limit@3.1.0:
1240
-
dependencies:
1241
-
yocto-queue: 0.1.0
1242
-
1243
-
p-locate@5.0.0:
1244
-
dependencies:
1245
-
p-limit: 3.1.0
1246
-
1247
-
parent-module@1.0.1:
1248
-
dependencies:
1249
-
callsites: 3.1.0
1250
-
1251
-
path-exists@4.0.0: {}
1252
-
1253
-
path-key@3.1.1: {}
1254
-
1255
-
picocolors@1.1.1: {}
1256
-
1257
-
picomatch@2.3.1: {}
1258
-
1259
-
postcss@8.5.6:
1260
-
dependencies:
1261
-
nanoid: 3.3.11
1262
-
picocolors: 1.1.1
1263
-
source-map-js: 1.2.1
1264
-
1265
-
prelude-ls@1.2.1: {}
1266
-
1267
-
punycode@2.3.1: {}
1268
-
1269
-
resolve-from@4.0.0: {}
1270
-
1271
-
rollup@4.46.2:
1272
-
dependencies:
1273
-
'@types/estree': 1.0.8
1274
-
optionalDependencies:
1275
-
'@rollup/rollup-android-arm-eabi': 4.46.2
1276
-
'@rollup/rollup-android-arm64': 4.46.2
1277
-
'@rollup/rollup-darwin-arm64': 4.46.2
1278
-
'@rollup/rollup-darwin-x64': 4.46.2
1279
-
'@rollup/rollup-freebsd-arm64': 4.46.2
1280
-
'@rollup/rollup-freebsd-x64': 4.46.2
1281
-
'@rollup/rollup-linux-arm-gnueabihf': 4.46.2
1282
-
'@rollup/rollup-linux-arm-musleabihf': 4.46.2
1283
-
'@rollup/rollup-linux-arm64-gnu': 4.46.2
1284
-
'@rollup/rollup-linux-arm64-musl': 4.46.2
1285
-
'@rollup/rollup-linux-loongarch64-gnu': 4.46.2
1286
-
'@rollup/rollup-linux-ppc64-gnu': 4.46.2
1287
-
'@rollup/rollup-linux-riscv64-gnu': 4.46.2
1288
-
'@rollup/rollup-linux-riscv64-musl': 4.46.2
1289
-
'@rollup/rollup-linux-s390x-gnu': 4.46.2
1290
-
'@rollup/rollup-linux-x64-gnu': 4.46.2
1291
-
'@rollup/rollup-linux-x64-musl': 4.46.2
1292
-
'@rollup/rollup-win32-arm64-msvc': 4.46.2
1293
-
'@rollup/rollup-win32-ia32-msvc': 4.46.2
1294
-
'@rollup/rollup-win32-x64-msvc': 4.46.2
1295
-
fsevents: 2.3.3
1296
-
1297
-
shebang-command@2.0.0:
1298
-
dependencies:
1299
-
shebang-regex: 3.0.0
1300
-
1301
-
shebang-regex@3.0.0: {}
1302
-
1303
-
source-map-js@1.2.1: {}
1304
-
1305
-
strip-json-comments@3.1.1: {}
1306
-
1307
-
supports-color@7.2.0:
1308
-
dependencies:
1309
-
has-flag: 4.0.0
1310
-
1311
-
to-regex-range@5.0.1:
1312
-
dependencies:
1313
-
is-number: 7.0.0
1314
-
1315
-
type-check@0.4.0:
1316
-
dependencies:
1317
-
prelude-ls: 1.2.1
1318
-
1319
-
uri-js@4.4.1:
1320
-
dependencies:
1321
-
punycode: 2.3.1
1322
-
1323
-
vite-plugin-dom@1.0.4(vite@5.4.19):
1324
-
dependencies:
1325
-
htmlparser2: 9.1.0
1326
-
vite: 5.4.19
1327
-
1328
-
vite-plugin-singlefile@2.3.0(rollup@4.46.2)(vite@5.4.19):
1329
-
dependencies:
1330
-
micromatch: 4.0.8
1331
-
rollup: 4.46.2
1332
-
vite: 5.4.19
1333
-
1334
-
vite@5.4.19:
1335
-
dependencies:
1336
-
esbuild: 0.21.5
1337
-
postcss: 8.5.6
1338
-
rollup: '@rollup/wasm-node@4.46.2'
1339
-
optionalDependencies:
1340
-
fsevents: 2.3.3
1341
-
1342
-
which@2.0.2:
1343
-
dependencies:
1344
-
isexe: 2.0.0
1345
-
1346
-
word-wrap@1.2.5: {}
1347
-
1348
-
yocto-queue@0.1.0: {}
1115
+
dev: true
+1
-1
release.sh
+1
-1
release.sh
···
1
1
#!/bin/sh
2
2
set -e
3
3
FILES="
4
-
asn1.js oids.js defs.js base64.js hex.js int10.js dom.js context.js theme.js
4
+
asn1.js oids.js defs.js base64.js hex.js dom.js context.js theme.js
5
5
rfcdef.js test.js tags.js
6
6
index.html index.css index.js index-local.html
7
7
favicon.svg tree-icon-light.svg tree-icon-dark.svg
+18
-25
test.js
+18
-25
test.js
···
5
5
import { Defs } from './defs.js';
6
6
import { Hex } from './hex.js';
7
7
import { Base64 } from './base64.js';
8
-
import { Int10 } from './int10.js';
9
8
import { createPatch } from 'diff';
10
9
11
10
const all = (process.argv[2] == 'all');
···
78
77
*/
79
78
checkResult(result, expected, comment) {
80
79
++stats.run;
81
-
if (!result || result == expected) {
80
+
if ((typeof expected != 'string' && !result) || result == expected) {
82
81
if (all) console.log('\x1B[1m\x1B[32mOK \x1B[39m\x1B[22m ' + comment);
83
82
} else {
84
83
++stats.error;
85
84
console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment);
86
-
if (result.length > 100) {
85
+
if (!result) result = '(empty)';
86
+
if (typeof expected != 'string') {
87
+
console.log(' ' + result);
88
+
} else if (result.length > 100) {
87
89
console.log(' \x1B[1m\x1B[34mDIF\x1B[39m\x1B[22m ' + diff(result, expected.toString()).replace(/\n/g, '\n '));
88
90
} else {
89
91
console.log(' \x1B[1m\x1B[34mEXP\x1B[39m\x1B[22m ' + expected.toString().replace(/\n/g, '\n '));
···
180
182
['0D04C27B0302','8571.3.2', 'Relative OID from ISO/IEC 8825-1:2002 8.20.5'],
181
183
// UTF-8
182
184
['0C0E4C61706FE280997320F09F9A972E', 'Lapoโs ๐.', 'UTF-8 4-byte sequence'],
183
-
// T-REC-X.690-201508
185
+
// T-REC-X.690-202102
184
186
['0307040A3B5F291CD0', '(44 bit)\n00001010001110110101111100101001000111001101', 'Example 8.6.4.2: bit string (primitive encoding)'],
185
187
['23800303000A3B0305045F291CD00000', '(44 bit)\n00001010001110110101111100101001000111001101', 'Example 8.6.4.2: bit string (constructed encoding)'],
188
+
['0603883703', '2.999.3', 'Example 8.19.5: object identifier'],
189
+
// X.690 section 8.2.1 โThe contents octets shall consist of a single octet.โ
190
+
['010100', 'false', 'Boolean with correct length (false)'],
191
+
['010101', 'true', 'Boolean with correct length (true)'],
192
+
['0100', 'invalid length 0', 'Boolean with zero length'],
193
+
['01020000', 'invalid length 2', 'Boolean with excessive length'],
194
+
// X.690 section 8.3.1 โThe contents octets shall consist of one or more octets.โ
195
+
['020100', '0', 'Integer with correct length'],
196
+
['0200', 'invalid length 0', 'Integer with zero length'],
197
+
// X.690 section 8.19.4 kinda imples that the minimum number of components is 2
198
+
['0600', 'invalid length 0', 'Object identifier with zero length'],
199
+
['060100', '0.0', 'Object identifier with minimal (?) length'],
186
200
// avoid past bugs
187
201
['23800303000A3B230A0302005F030404291CD00000', '(44 bit)\n00001010001110110101111100101001000111001101', 'Bit string (recursive constructed)'],
188
202
['0348003045022100DE601E573DAFB59BC551D58E3E7B9EDA0612DD0112805A2217B734759B884417022067C3FDE60780D41C1D7A3B90291F3D39C4DC2F206DCCBA2F982C06B67C09B232', '(568 bit)\n0011000001000101000000100010000100000000110111100110000000011110010101110011110110101111101101011001101111000101010100011101010110001110001111100111101110011110110110100000011000010010110111010000000100010010100000000101101000100010000101111011011100110100011101011001101110001000010001000001011100000010001000000110011111000011111111011110011000000111100000001101010000011100000111010111101000111011100100000010100100011111001111010011100111000100110111000010111100100000011011011100110010111010001011111001100000101100000001101011011001111100000010011011001000110010', 'not constructed, but contains structures'],
···
236
250
'ABCDEFE=',
237
251
'ABCDEFGH',
238
252
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQR\nSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456w==',
239
-
]));
240
-
241
-
tests.push(new Tests('Int10', function (t) {
242
-
this.row = (0|this.row) + 1;
243
-
this.num = this.num || new Int10();
244
-
this.num.mulAdd(t[0], t[1]);
245
-
this.checkResult(this.num.toString(), t[2], 'Int10 row ' + this.row);
246
-
}, [
247
-
[0, 1000000000, '1000000000'],
248
-
[256, 23, '256000000023'],
249
-
[256, 23, '65536000005911'],
250
-
[256, 23, '16777216001513239'],
251
-
[256, 23, '4294967296387389207'],
252
-
[256, 23, '1099511627875171637015'],
253
-
[256, 23, '281474976736043939075863'],
254
-
[253, 1, '71213169114219116586193340'],
255
-
[253, 1, '18016931785897436496306915021'],
256
-
[253, 1, '4558283741832051433565649500314'],
257
-
[253, 1, '1153245786683509012692109323579443'],
258
-
[253, 1, '291771184030927780211103658865599080'],
259
-
[1, 0, '291771184030927780211103658865599080'],
260
253
]));
261
254
262
255
for (const t of tests)
+7
-1
vite.config.js
+7
-1
vite.config.js
···
16
16
};
17
17
};
18
18
19
+
function massageSVG(str) {
20
+
return str.replace(/["<>#]/g, (c) => {
21
+
return '%' + c.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0');
22
+
});
23
+
}
24
+
19
25
export default defineConfig({
20
26
plugins: [
21
27
preventSVGEmit(),
···
25
31
if (removeNodes.includes(node.attribs.id))
26
32
DomUtils.removeElement(node);
27
33
else if (node.name == 'link' && node.attribs.rel == 'icon')
28
-
node.attribs.href = 'data:image/svg+xml;base64,' + btoa(fs.readFileSync('favicon.svg', 'ascii').replace(/^([^<]+|<[^s]|<s[^v]|<sv[^g])+/, '').trim());
34
+
node.attribs.href = 'data:image/svg+xml,' + massageSVG(fs.readFileSync('favicon.svg', 'ascii').replace(/^([^<]+|<[^s]|<s[^v]|<sv[^g])+/, '').trim());
29
35
},
30
36
}),
31
37
viteSingleFile(),