@futpib/parser 1.0.3 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +24 -0
- package/.github/workflows/main.yml +1 -0
- package/build/androidPackageParser.js +30 -32
- package/build/arbitraryDalvikBytecode.d.ts +3 -3
- package/build/arbitraryDalvikBytecode.js +33 -27
- package/build/arbitraryDalvikExecutable.js +55 -17
- package/build/arbitraryJava.d.ts +31 -0
- package/build/arbitraryJava.js +532 -0
- package/build/arbitraryJavaScript.d.ts +3 -0
- package/build/arbitraryJavaScript.js +263 -0
- package/build/arbitraryJavascript.d.ts +3 -0
- package/build/arbitraryJavascript.js +263 -0
- package/build/arbitraryZig.d.ts +3 -0
- package/build/arbitraryZig.js +240 -0
- package/build/arbitraryZipStream.d.ts +1 -1
- package/build/arrayParser.js +72 -13
- package/build/backsmali.d.ts +4 -3
- package/build/backsmali.js +26 -6
- package/build/bash.d.ts +89 -0
- package/build/bash.js +1 -0
- package/build/bashParser.d.ts +6 -0
- package/build/bashParser.js +335 -0
- package/build/bashParser.test.d.ts +1 -0
- package/build/bashParser.test.js +343 -0
- package/build/bashParserEdgeCases.test.d.ts +1 -0
- package/build/bashParserEdgeCases.test.js +117 -0
- package/build/dalvikBytecodeParser/addressConversion.d.ts +110 -0
- package/build/dalvikBytecodeParser/addressConversion.js +334 -0
- package/build/dalvikBytecodeParser/formatParsers.d.ts +7 -6
- package/build/dalvikBytecodeParser/formatParsers.js +13 -14
- package/build/dalvikBytecodeParser.d.ts +60 -31
- package/build/dalvikBytecodeParser.js +92 -35
- package/build/dalvikBytecodeParser.test-d.d.ts +1 -0
- package/build/dalvikBytecodeParser.test-d.js +268 -0
- package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +9 -8
- package/build/dalvikBytecodeUnparser/formatUnparsers.js +13 -12
- package/build/dalvikBytecodeUnparser.d.ts +2 -2
- package/build/dalvikBytecodeUnparser.js +23 -23
- package/build/dalvikBytecodeUnparser.test.js +7 -7
- package/build/dalvikExecutable.d.ts +3 -3
- package/build/dalvikExecutable.test-d.d.ts +1 -0
- package/build/dalvikExecutable.test-d.js +59 -0
- package/build/dalvikExecutableParser/typedNumbers.d.ts +18 -0
- package/build/dalvikExecutableParser/typedNumbers.js +3 -0
- package/build/dalvikExecutableParser.d.ts +2 -1
- package/build/dalvikExecutableParser.js +96 -77
- package/build/dalvikExecutableParser.test.js +24 -3
- package/build/dalvikExecutableParserAgainstSmaliParser.test.js +3 -0
- package/build/dalvikExecutableUnparser/poolScanners.d.ts +2 -2
- package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +3 -3
- package/build/dalvikExecutableUnparser/sectionUnparsers.js +26 -11
- package/build/dalvikExecutableUnparser.d.ts +2 -2
- package/build/dalvikExecutableUnparser.test.js +2 -1
- package/build/disjunctionParser.d.ts +5 -3
- package/build/disjunctionParser.js +79 -17
- package/build/disjunctionParser.test-d.d.ts +1 -0
- package/build/disjunctionParser.test-d.js +72 -0
- package/build/elementSwitchParser.d.ts +4 -0
- package/build/{exactElementSwitchParser.js → elementSwitchParser.js} +3 -4
- package/build/elementSwitchParser.test-d.d.ts +1 -0
- package/build/elementSwitchParser.test-d.js +44 -0
- package/build/exactSequenceParser.d.ts +4 -2
- package/build/exactSequenceParser.test-d.d.ts +1 -0
- package/build/exactSequenceParser.test-d.js +36 -0
- package/build/fetchCid.js +2 -66
- package/build/index.d.ts +25 -2
- package/build/index.js +23 -1
- package/build/index.test.js +16 -1
- package/build/inputReader.d.ts +10 -0
- package/build/inputReader.js +36 -0
- package/build/java.d.ts +502 -0
- package/build/java.js +2 -0
- package/build/javaKeyStoreParser.js +14 -17
- package/build/javaParser.d.ts +51 -0
- package/build/javaParser.js +1538 -0
- package/build/javaParser.test.d.ts +1 -0
- package/build/javaParser.test.js +1287 -0
- package/build/javaScript.d.ts +35 -0
- package/build/javaScript.js +1 -0
- package/build/javaScriptParser.d.ts +9 -0
- package/build/javaScriptParser.js +34 -0
- package/build/javaScriptUnparser.d.ts +3 -0
- package/build/javaScriptUnparser.js +4 -0
- package/build/javaScriptUnparser.test.d.ts +1 -0
- package/build/javaScriptUnparser.test.js +24 -0
- package/build/javaUnparser.d.ts +2 -0
- package/build/javaUnparser.js +519 -0
- package/build/javaUnparser.test.d.ts +1 -0
- package/build/javaUnparser.test.js +24 -0
- package/build/javascript.d.ts +35 -0
- package/build/javascript.js +1 -0
- package/build/javascriptParser.d.ts +9 -0
- package/build/javascriptParser.js +34 -0
- package/build/javascriptUnparser.d.ts +3 -0
- package/build/javascriptUnparser.js +4 -0
- package/build/javascriptUnparser.test.d.ts +1 -0
- package/build/javascriptUnparser.test.js +24 -0
- package/build/jsonParser.js +2 -12
- package/build/lazyMessageError.d.ts +3 -0
- package/build/lookaheadParser.js +60 -3
- package/build/negativeLookaheadParser.js +70 -11
- package/build/nonEmptyArrayParser.js +72 -13
- package/build/objectParser.d.ts +12 -0
- package/build/objectParser.js +31 -0
- package/build/objectParser.test-d.d.ts +1 -0
- package/build/objectParser.test-d.js +112 -0
- package/build/objectParser.test.d.ts +1 -0
- package/build/objectParser.test.js +55 -0
- package/build/optionalParser.js +69 -10
- package/build/parser.d.ts +4 -0
- package/build/parser.js +3 -1
- package/build/parser.test.js +114 -1
- package/build/parserConsumedSequenceParser.js +66 -7
- package/build/parserContext.d.ts +6 -0
- package/build/parserContext.js +20 -11
- package/build/parserError.d.ts +119 -27
- package/build/parserError.js +16 -8
- package/build/regexpParser.d.ts +2 -0
- package/build/regexpParser.js +101 -0
- package/build/regexpParser.test.d.ts +1 -0
- package/build/regexpParser.test.js +114 -0
- package/build/regularExpression.d.ts +63 -0
- package/build/regularExpression.js +1 -0
- package/build/regularExpressionParser.d.ts +3 -0
- package/build/regularExpressionParser.js +600 -0
- package/build/regularExpressionParser.test.d.ts +1 -0
- package/build/regularExpressionParser.test.js +89 -0
- package/build/separatedArrayParser.js +73 -14
- package/build/separatedNonEmptyArrayParser.js +73 -14
- package/build/sliceBoundedParser.js +62 -5
- package/build/smaliParser.d.ts +7 -7
- package/build/smaliParser.js +185 -268
- package/build/smaliParser.test.js +58 -0
- package/build/stringEscapes.d.ts +5 -0
- package/build/stringEscapes.js +244 -0
- package/build/symbolicExpression.d.ts +29 -0
- package/build/symbolicExpression.js +1 -0
- package/build/symbolicExpressionParser.d.ts +4 -0
- package/build/symbolicExpressionParser.js +123 -0
- package/build/symbolicExpressionParser.test.d.ts +1 -0
- package/build/symbolicExpressionParser.test.js +289 -0
- package/build/terminatedArrayParser.js +113 -38
- package/build/terminatedArrayParser.test.js +4 -2
- package/build/tupleParser.d.ts +7 -15
- package/build/tupleParser.js +1 -0
- package/build/unionParser.d.ts +5 -3
- package/build/unionParser.js +7 -2
- package/build/unionParser.test-d.d.ts +1 -0
- package/build/unionParser.test-d.js +72 -0
- package/build/unionParser.test.js +10 -11
- package/build/zig.d.ts +280 -0
- package/build/zig.js +2 -0
- package/build/zigParser.d.ts +3 -0
- package/build/zigParser.js +1119 -0
- package/build/zigParser.test.d.ts +1 -0
- package/build/zigParser.test.js +1590 -0
- package/build/zigUnparser.d.ts +2 -0
- package/build/zigUnparser.js +460 -0
- package/build/zigUnparser.test.d.ts +1 -0
- package/build/zigUnparser.test.js +24 -0
- package/build/zipParser.js +19 -32
- package/build/zipUnparser.js +19 -7
- package/build/zipUnparser.test.js +1 -1
- package/node_modules-@types/s-expression/index.d.ts +5 -0
- package/package.json +25 -6
- package/src/androidPackageParser.ts +33 -60
- package/src/arbitraryDalvikBytecode.ts +39 -31
- package/src/arbitraryDalvikExecutable.ts +65 -20
- package/src/arbitraryJava.ts +804 -0
- package/src/arbitraryJavaScript.ts +410 -0
- package/src/arbitraryZig.ts +380 -0
- package/src/arrayParser.ts +1 -3
- package/src/backsmali.ts +35 -4
- package/src/bash.ts +127 -0
- package/src/bashParser.test.ts +590 -0
- package/src/bashParser.ts +498 -0
- package/src/dalvikBytecodeParser/addressConversion.ts +496 -0
- package/src/dalvikBytecodeParser/formatParsers.ts +19 -29
- package/src/dalvikBytecodeParser.test-d.ts +310 -0
- package/src/dalvikBytecodeParser.ts +194 -69
- package/src/dalvikBytecodeUnparser/formatUnparsers.ts +27 -26
- package/src/dalvikBytecodeUnparser.test.ts +7 -7
- package/src/dalvikBytecodeUnparser.ts +31 -30
- package/src/dalvikExecutable.test-d.ts +132 -0
- package/src/dalvikExecutable.ts +3 -3
- package/src/dalvikExecutableParser/typedNumbers.ts +11 -0
- package/src/dalvikExecutableParser.test.ts +37 -3
- package/src/dalvikExecutableParser.test.ts.md +163 -2
- package/src/dalvikExecutableParser.test.ts.snap +0 -0
- package/src/dalvikExecutableParser.ts +121 -139
- package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +4 -0
- package/src/dalvikExecutableUnparser/poolScanners.ts +6 -6
- package/src/dalvikExecutableUnparser/sectionUnparsers.ts +38 -14
- package/src/dalvikExecutableUnparser.test.ts +3 -2
- package/src/dalvikExecutableUnparser.ts +4 -4
- package/src/disjunctionParser.test-d.ts +105 -0
- package/src/disjunctionParser.ts +18 -15
- package/src/elementSwitchParser.test-d.ts +74 -0
- package/src/elementSwitchParser.ts +51 -0
- package/src/exactSequenceParser.test-d.ts +43 -0
- package/src/exactSequenceParser.ts +13 -8
- package/src/fetchCid.ts +2 -76
- package/src/index.test.ts +22 -1
- package/src/index.ts +119 -2
- package/src/inputReader.ts +53 -0
- package/src/java.ts +708 -0
- package/src/javaKeyStoreParser.ts +18 -32
- package/src/javaParser.test.ts +1592 -0
- package/src/javaParser.ts +2640 -0
- package/src/javaScript.ts +36 -0
- package/src/javaScriptParser.ts +57 -0
- package/src/javaScriptUnparser.test.ts +37 -0
- package/src/javaScriptUnparser.ts +7 -0
- package/src/javaUnparser.test.ts +37 -0
- package/src/javaUnparser.ts +640 -0
- package/src/jsonParser.ts +6 -27
- package/src/lookaheadParser.ts +2 -6
- package/src/negativeLookaheadParser.ts +1 -3
- package/src/nonEmptyArrayParser.ts +1 -3
- package/src/objectParser.test-d.ts +152 -0
- package/src/objectParser.test.ts +71 -0
- package/src/objectParser.ts +69 -0
- package/src/optionalParser.ts +1 -3
- package/src/parser.test.ts +151 -4
- package/src/parser.ts +11 -1
- package/src/parserConsumedSequenceParser.ts +2 -4
- package/src/parserContext.ts +26 -11
- package/src/parserError.ts +17 -3
- package/src/regexpParser.test.ts +264 -0
- package/src/regexpParser.ts +126 -0
- package/src/regularExpression.ts +24 -0
- package/src/regularExpressionParser.test.ts +102 -0
- package/src/regularExpressionParser.ts +920 -0
- package/src/separatedArrayParser.ts +1 -3
- package/src/separatedNonEmptyArrayParser.ts +1 -3
- package/src/sliceBoundedParser.test.ts +2 -2
- package/src/sliceBoundedParser.ts +15 -19
- package/src/smaliParser.test.ts +64 -0
- package/src/smaliParser.test.ts.md +12 -12
- package/src/smaliParser.test.ts.snap +0 -0
- package/src/smaliParser.ts +246 -534
- package/src/stringEscapes.ts +253 -0
- package/src/symbolicExpression.ts +17 -0
- package/src/symbolicExpressionParser.test.ts +466 -0
- package/src/symbolicExpressionParser.ts +190 -0
- package/src/terminatedArrayParser.test.ts +9 -6
- package/src/terminatedArrayParser.ts +25 -29
- package/src/tupleParser.ts +21 -18
- package/src/unionParser.test-d.ts +105 -0
- package/src/unionParser.test.ts +18 -17
- package/src/unionParser.ts +28 -16
- package/src/zig.ts +411 -0
- package/src/zigParser.test.ts +1693 -0
- package/src/zigParser.ts +1745 -0
- package/src/zigUnparser.test.ts +37 -0
- package/src/zigUnparser.ts +615 -0
- package/src/zipParser.ts +20 -56
- package/src/zipUnparser.test.ts +1 -1
- package/src/zipUnparser.ts +22 -7
- package/tsconfig.json +2 -2
- package/build/exactElementSwitchParser.d.ts +0 -3
- package/src/exactElementSwitchParser.ts +0 -41
package/src/zipParser.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { pipeline } from 'node:stream/promises';
|
|
|
4
4
|
import invariant from 'invariant';
|
|
5
5
|
import { createArrayParser } from './arrayParser.js';
|
|
6
6
|
import { createExactSequenceParser } from './exactSequenceParser.js';
|
|
7
|
+
import { createObjectParser } from './objectParser.js';
|
|
7
8
|
import { type Parser, setParserName } from './parser.js';
|
|
8
9
|
import { createTupleParser } from './tupleParser.js';
|
|
9
10
|
import { promiseCompose } from './promiseCompose.js';
|
|
@@ -146,28 +147,15 @@ type ZipDataDescriptor = {
|
|
|
146
147
|
const zipDataDescriptorSignature: Uint8Array = Buffer.from('504b0708', 'hex');
|
|
147
148
|
const zipDataDescriptorSignatureParser = createExactSequenceParser<Uint8Array>(zipDataDescriptorSignature);
|
|
148
149
|
|
|
149
|
-
const zipDataDescriptorParser: Parser<ZipDataDescriptor, Uint8Array> =
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
]),
|
|
159
|
-
([
|
|
160
|
-
_notZipLocalFileHeaderSignature,
|
|
161
|
-
_zipDataDescriptorSignature,
|
|
162
|
-
crc32,
|
|
163
|
-
compressedSize,
|
|
164
|
-
uncompressedSize,
|
|
165
|
-
]) => ({
|
|
166
|
-
crc32,
|
|
167
|
-
compressedSize,
|
|
168
|
-
uncompressedSize,
|
|
169
|
-
}),
|
|
170
|
-
);
|
|
150
|
+
const zipDataDescriptorParser: Parser<ZipDataDescriptor, Uint8Array> = createObjectParser({
|
|
151
|
+
_notZipLocalFileHeaderSignature: createNegativeLookaheadParser(zipLocalFileHeaderSignatureParser),
|
|
152
|
+
// FIXME: optional in spec
|
|
153
|
+
// _zipDataDescriptorSignature: createOptionalParser(zipDataDescriptorSignatureParser),
|
|
154
|
+
_zipDataDescriptorSignature: zipDataDescriptorSignatureParser,
|
|
155
|
+
crc32: uint32LEParser,
|
|
156
|
+
compressedSize: uint32LEParser,
|
|
157
|
+
uncompressedSize: uint32LEParser,
|
|
158
|
+
});
|
|
171
159
|
|
|
172
160
|
setParserName(zipDataDescriptorParser, 'zipDataDescriptorParser');
|
|
173
161
|
|
|
@@ -411,40 +399,16 @@ export type ZipEndOfCentralDirectoryRecord = {
|
|
|
411
399
|
zipFileComment: string;
|
|
412
400
|
};
|
|
413
401
|
|
|
414
|
-
const
|
|
415
|
-
createExactSequenceParser<Uint8Array>(Buffer.from('504b0506', 'hex')),
|
|
416
|
-
uint16LEParser,
|
|
417
|
-
uint16LEParser,
|
|
418
|
-
uint16LEParser,
|
|
419
|
-
uint16LEParser,
|
|
420
|
-
uint32LEParser,
|
|
421
|
-
uint32LEParser,
|
|
422
|
-
zipFileCommentParser,
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
setParserName(zipEndOfCentralDirectoryRecordParser_, 'zipEndOfCentralDirectoryRecordParser_');
|
|
426
|
-
|
|
427
|
-
export const zipEndOfCentralDirectoryRecordParser: Parser<ZipEndOfCentralDirectoryRecord, Uint8Array> = promiseCompose(
|
|
428
|
-
zipEndOfCentralDirectoryRecordParser_,
|
|
429
|
-
([
|
|
430
|
-
_endOfCentralDirectoryRecordSignature,
|
|
431
|
-
numberOfThisDisk,
|
|
432
|
-
numberOfTheDiskWithTheStartOfTheCentralDirectory,
|
|
433
|
-
totalNumberOfEntriesInTheCentralDirectoryOnThisDisk,
|
|
434
|
-
totalNumberOfEntriesInTheCentralDirectory,
|
|
435
|
-
sizeOfTheCentralDirectory,
|
|
436
|
-
offsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber,
|
|
437
|
-
zipFileComment,
|
|
438
|
-
]) => ({
|
|
439
|
-
numberOfThisDisk,
|
|
440
|
-
numberOfTheDiskWithTheStartOfTheCentralDirectory,
|
|
441
|
-
totalNumberOfEntriesInTheCentralDirectoryOnThisDisk,
|
|
442
|
-
totalNumberOfEntriesInTheCentralDirectory,
|
|
443
|
-
sizeOfTheCentralDirectory,
|
|
444
|
-
offsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber,
|
|
445
|
-
zipFileComment,
|
|
446
|
-
}),
|
|
447
|
-
);
|
|
402
|
+
export const zipEndOfCentralDirectoryRecordParser: Parser<ZipEndOfCentralDirectoryRecord, Uint8Array> = createObjectParser({
|
|
403
|
+
_endOfCentralDirectoryRecordSignature: createExactSequenceParser<Uint8Array>(Buffer.from('504b0506', 'hex')),
|
|
404
|
+
numberOfThisDisk: uint16LEParser,
|
|
405
|
+
numberOfTheDiskWithTheStartOfTheCentralDirectory: uint16LEParser,
|
|
406
|
+
totalNumberOfEntriesInTheCentralDirectoryOnThisDisk: uint16LEParser,
|
|
407
|
+
totalNumberOfEntriesInTheCentralDirectory: uint16LEParser,
|
|
408
|
+
sizeOfTheCentralDirectory: uint32LEParser,
|
|
409
|
+
offsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber: uint32LEParser,
|
|
410
|
+
zipFileComment: zipFileCommentParser,
|
|
411
|
+
});
|
|
448
412
|
|
|
449
413
|
setParserName(zipEndOfCentralDirectoryRecordParser, 'zipEndOfCentralDirectoryRecordParser');
|
|
450
414
|
|
package/src/zipUnparser.test.ts
CHANGED
package/src/zipUnparser.ts
CHANGED
|
@@ -134,6 +134,14 @@ export const createZipUnparser = ({
|
|
|
134
134
|
return [ [ zipEntry, promise.then(([ , compressedContent ]) => compressedContent) ] ];
|
|
135
135
|
}));
|
|
136
136
|
|
|
137
|
+
const crc32ByZipFileEntry = new Map<ZipFileEntry, number>(zip.entries.flatMap(zipEntry => {
|
|
138
|
+
if (zipEntry.type !== 'file') {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return [ [ zipEntry, zlib.crc32(zipEntry.content) ] ];
|
|
143
|
+
}));
|
|
144
|
+
|
|
137
145
|
const filePathByZipEntry = new Map<ZipEntry, string>(zip.entries.map(zipEntry => [ zipEntry, zipEntry.type === 'file' ? zipEntry.path : zipEntry.path + '/' ]));
|
|
138
146
|
|
|
139
147
|
const localHeaderPositionByZipEntry = new Map<ZipEntry, number>();
|
|
@@ -156,14 +164,21 @@ export const createZipUnparser = ({
|
|
|
156
164
|
};
|
|
157
165
|
|
|
158
166
|
let shouldWriteDataDescriptor = false;
|
|
167
|
+
let actualCrc32 = 0;
|
|
168
|
+
let actualCompressedSize = 0;
|
|
169
|
+
let actualUncompressedSize = 0;
|
|
159
170
|
|
|
160
171
|
if (zipEntry.type === 'file') {
|
|
161
172
|
const compressedContent = await compressedContentByZipFileEntry.get(zipEntry)!;
|
|
162
173
|
|
|
163
174
|
zipLocalFileHeader.compressionMethod = zipEntry.compression;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
actualCrc32 = crc32ByZipFileEntry.get(zipEntry)!;
|
|
176
|
+
actualCompressedSize = compressedContent.length;
|
|
177
|
+
actualUncompressedSize = zipEntry.content.length;
|
|
178
|
+
|
|
179
|
+
zipLocalFileHeader.crc32 = actualCrc32;
|
|
180
|
+
zipLocalFileHeader.compressedSize = actualCompressedSize;
|
|
181
|
+
zipLocalFileHeader.uncompressedSize = actualUncompressedSize;
|
|
167
182
|
|
|
168
183
|
if (dataDescriptor) {
|
|
169
184
|
shouldWriteDataDescriptor = true;
|
|
@@ -184,9 +199,9 @@ export const createZipUnparser = ({
|
|
|
184
199
|
|
|
185
200
|
if (shouldWriteDataDescriptor) {
|
|
186
201
|
yield * zipDataDescriptorUnparser({
|
|
187
|
-
crc32:
|
|
188
|
-
compressedSize:
|
|
189
|
-
uncompressedSize:
|
|
202
|
+
crc32: actualCrc32,
|
|
203
|
+
compressedSize: actualCompressedSize,
|
|
204
|
+
uncompressedSize: actualUncompressedSize,
|
|
190
205
|
}, unparserContext);
|
|
191
206
|
}
|
|
192
207
|
}
|
|
@@ -215,7 +230,7 @@ export const createZipUnparser = ({
|
|
|
215
230
|
if (zipEntry.type === 'file') {
|
|
216
231
|
const compressedContent = await compressedContentByZipFileEntry.get(zipEntry)!;
|
|
217
232
|
|
|
218
|
-
yield * uint32LEUnparser(
|
|
233
|
+
yield * uint32LEUnparser(crc32ByZipFileEntry.get(zipEntry)!, unparserContext);
|
|
219
234
|
yield * uint32LEUnparser(compressedContent.length, unparserContext);
|
|
220
235
|
yield * uint32LEUnparser(zipEntry.content.length, unparserContext);
|
|
221
236
|
} else {
|
package/tsconfig.json
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
/* Language and Environment */
|
|
14
14
|
"target": "es2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
|
15
|
-
|
|
15
|
+
"lib": ["ES2022", "ESNext.Disposable"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
|
16
16
|
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
|
17
17
|
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
|
|
18
18
|
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
|
32
32
|
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
|
33
33
|
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
|
34
|
-
|
|
34
|
+
"typeRoots": ["./node_modules-@types", "./node_modules/@types"], /* Specify multiple folders that act like './node_modules/@types'. */
|
|
35
35
|
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
|
36
36
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
37
37
|
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { Parser } from "./parser.js";
|
|
2
|
-
import { DeriveSequenceElement } from "./sequence.js";
|
|
3
|
-
export declare const createElementSwitchParser: <Output, Sequence, Element = DeriveSequenceElement<Sequence>>(childParsers: Map<Element, Parser<unknown, Sequence, Element>>, defaultParser?: Parser<unknown, Sequence, Element>) => Parser<Output, Sequence, Element>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import invariant from "invariant";
|
|
2
|
-
import { getParserName, Parser, setParserName } from "./parser.js";
|
|
3
|
-
import { parserImplementationInvariant } from "./parserImplementationInvariant.js";
|
|
4
|
-
import { DeriveSequenceElement } from "./sequence.js";
|
|
5
|
-
|
|
6
|
-
export const createElementSwitchParser = <
|
|
7
|
-
Output,
|
|
8
|
-
Sequence,
|
|
9
|
-
Element = DeriveSequenceElement<Sequence>,
|
|
10
|
-
>(
|
|
11
|
-
childParsers: Map<Element, Parser<unknown, Sequence, Element>>,
|
|
12
|
-
defaultParser?: Parser<unknown, Sequence, Element>,
|
|
13
|
-
): Parser<Output, Sequence, Element> => {
|
|
14
|
-
parserImplementationInvariant(childParsers.size > 0, 'Element switch parser must have at least one child parser.');
|
|
15
|
-
|
|
16
|
-
const elementSwitchParser: Parser<Output, Sequence, Element> = async parserContext => {
|
|
17
|
-
const currentElement = await parserContext.peek(0);
|
|
18
|
-
|
|
19
|
-
parserContext.invariant(currentElement !== undefined, 'Unexpected end of input.');
|
|
20
|
-
invariant(currentElement !== undefined, 'Unexpected end of input.');
|
|
21
|
-
|
|
22
|
-
const childParser = childParsers.get(currentElement) ?? defaultParser;
|
|
23
|
-
|
|
24
|
-
parserContext.invariant(childParser, `No child parser found for element: ${String(currentElement)}`);
|
|
25
|
-
|
|
26
|
-
const childParserOutput = await childParser!(parserContext) as Output;
|
|
27
|
-
|
|
28
|
-
return childParserOutput;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const name = [
|
|
32
|
-
'elementSwitch(',
|
|
33
|
-
...Array.from(childParsers.entries()).map(
|
|
34
|
-
([ element, childParser ]) => `${String(element)}=>${getParserName(childParser, 'anonymousElementSwitchChild')}`,
|
|
35
|
-
),
|
|
36
|
-
defaultParser ? `|default=>${getParserName(defaultParser, 'anonymousElementSwitchDefaultChild')}` : '',
|
|
37
|
-
')',
|
|
38
|
-
].join('');
|
|
39
|
-
|
|
40
|
-
return setParserName(elementSwitchParser, name);
|
|
41
|
-
}
|