@futpib/parser 1.0.1 → 1.0.3
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/.github/copilot-instructions.md +149 -0
- package/.github/workflows/copilot-setup-steps.yml +18 -0
- package/.github/workflows/main.yml +29 -8
- package/.yarn/releases/yarn-4.9.4.cjs +942 -0
- package/.yarnrc.yml +1 -1
- package/build/allSettledStream.js +32 -14
- package/build/allSettledStream.test.js +32 -0
- package/build/androidPackage.d.ts +39 -0
- package/build/androidPackageParser.d.ts +17 -0
- package/build/androidPackageParser.js +185 -0
- package/build/androidPackageParser.test.js +22 -0
- package/build/androidPackageUnparser.d.ts +4 -0
- package/build/androidPackageUnparser.js +94 -0
- package/build/androidPackageUnparser.test.js +26 -0
- package/build/arbitrarilySlicedAsyncInterable.d.ts +3 -1
- package/build/arbitrarilySlicedAsyncInterable.js +3 -3
- package/build/arbitrarilySlicedAsyncInterator.js +2 -1
- package/build/arbitraryDalvikBytecode.d.ts +4 -0
- package/build/arbitraryDalvikBytecode.js +640 -0
- package/build/arbitraryDalvikExecutable.d.ts +3 -0
- package/build/arbitraryDalvikExecutable.js +282 -0
- package/build/arbitraryDosDateTime.js +1 -0
- package/build/arbitraryZipStream.js +1 -1
- package/build/arrayParser.js +2 -2
- package/build/arrayParser.test.js +3 -3
- package/build/arrayUnparser.d.ts +1 -1
- package/build/backsmali.d.ts +3 -0
- package/build/backsmali.js +50 -0
- package/build/bsonParser.js +6 -2
- package/build/customInvariant.d.ts +2 -1
- package/build/customInvariant.js +4 -6
- package/build/dalvikBytecodeParser/formatParsers.d.ts +171 -0
- package/build/dalvikBytecodeParser/formatParsers.js +304 -0
- package/build/dalvikBytecodeParser/formatSizes.d.ts +34 -0
- package/build/dalvikBytecodeParser/formatSizes.js +34 -0
- package/build/dalvikBytecodeParser/operationFormats.d.ts +225 -0
- package/build/dalvikBytecodeParser/operationFormats.js +225 -0
- package/build/dalvikBytecodeParser.d.ts +1207 -0
- package/build/dalvikBytecodeParser.js +1289 -0
- package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +152 -0
- package/build/dalvikBytecodeUnparser/formatUnparsers.js +225 -0
- package/build/dalvikBytecodeUnparser.d.ts +3 -0
- package/build/dalvikBytecodeUnparser.js +642 -0
- package/build/dalvikBytecodeUnparser.test.js +25 -0
- package/build/dalvikExecutable.d.ts +215 -0
- package/build/dalvikExecutable.js +56 -0
- package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +4 -0
- package/build/dalvikExecutableParser/stringSyntaxParser.js +76 -0
- package/build/dalvikExecutableParser/typeParsers.d.ts +11 -0
- package/build/dalvikExecutableParser/typeParsers.js +39 -0
- package/build/dalvikExecutableParser/typedNumbers.d.ts +106 -0
- package/build/dalvikExecutableParser/typedNumbers.js +18 -0
- package/build/dalvikExecutableParser.d.ts +5 -0
- package/build/dalvikExecutableParser.js +1757 -0
- package/build/dalvikExecutableParser.test.js +72 -0
- package/build/dalvikExecutableParserAgainstSmaliParser.test.js +275 -0
- package/build/dalvikExecutableUnparser/annotationUnparsers.d.ts +14 -0
- package/build/dalvikExecutableUnparser/annotationUnparsers.js +97 -0
- package/build/dalvikExecutableUnparser/poolBuilders.d.ts +49 -0
- package/build/dalvikExecutableUnparser/poolBuilders.js +140 -0
- package/build/dalvikExecutableUnparser/poolScanners.d.ts +4 -0
- package/build/dalvikExecutableUnparser/poolScanners.js +220 -0
- package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +25 -0
- package/build/dalvikExecutableUnparser/sectionUnparsers.js +581 -0
- package/build/dalvikExecutableUnparser/utils.d.ts +10 -0
- package/build/dalvikExecutableUnparser/utils.js +108 -0
- package/build/dalvikExecutableUnparser.d.ts +4 -0
- package/build/dalvikExecutableUnparser.js +406 -0
- package/build/dalvikExecutableUnparser.test.js +31 -0
- package/build/debugLogInputParser.d.ts +4 -0
- package/build/debugLogInputParser.js +16 -0
- package/build/debugLogParser.js +14 -3
- package/build/disjunctionParser.d.ts +2 -1
- package/build/disjunctionParser.js +6 -4
- package/build/elementTerminatedArrayParser.d.ts +3 -0
- package/build/elementTerminatedArrayParser.js +18 -0
- package/build/elementTerminatedArrayParser.test.js +52 -0
- package/build/elementTerminatedSequenceArrayParser.d.ts +3 -0
- package/build/elementTerminatedSequenceArrayParser.js +32 -0
- package/build/elementTerminatedSequenceArrayParser.test.js +34 -0
- package/build/elementTerminatedSequenceParser.d.ts +3 -0
- package/build/elementTerminatedSequenceParser.js +27 -0
- package/build/elementTerminatedSequenceParser.test.js +34 -0
- package/build/endOfInputParser.d.ts +1 -1
- package/build/exactElementParser.js +10 -5
- package/build/exactElementSwitchParser.d.ts +3 -0
- package/build/exactElementSwitchParser.js +22 -0
- package/build/exactSequenceParser.d.ts +2 -1
- package/build/exactSequenceParser.js +12 -2
- package/build/fetchCid.d.ts +1 -0
- package/build/fetchCid.js +103 -0
- package/build/fetchCid.test.js +16 -0
- package/build/fixedLengthSequenceParser.d.ts +1 -0
- package/build/fixedLengthSequenceParser.js +18 -1
- package/build/fixedLengthSequenceParser.test.js +41 -0
- package/build/hasExecutable.d.ts +1 -0
- package/build/hasExecutable.js +8 -0
- package/build/highResolutionTimer.d.ts +16 -0
- package/build/highResolutionTimer.js +42 -0
- package/build/inputReader.d.ts +11 -0
- package/build/inputReader.js +37 -0
- package/build/inputReader.test.js +161 -8
- package/build/inputReaderState.d.ts +10 -0
- package/build/inputReaderState.js +16 -0
- package/build/inspect.d.ts +1 -0
- package/build/inspect.js +7 -0
- package/build/javaKeyStoreParser.test.js +8 -8
- package/build/jsonParser.d.ts +2 -0
- package/build/jsonParser.js +19 -22
- package/build/lazyMessageError.d.ts +48 -0
- package/build/lazyMessageError.js +53 -0
- package/build/lazyMessageError.test.d.ts +1 -0
- package/build/lazyMessageError.test.js +15 -0
- package/build/leb128Parser.d.ts +7 -0
- package/build/leb128Parser.js +82 -0
- package/build/leb128Parser.test.d.ts +1 -0
- package/build/leb128Parser.test.js +107 -0
- package/build/lookaheadParser.d.ts +2 -0
- package/build/lookaheadParser.js +14 -0
- package/build/negativeLookaheadParser.js +22 -16
- package/build/negativeLookaheadParser.test.d.ts +1 -0
- package/build/negativeLookaheadParser.test.js +30 -0
- package/build/noStackCaptureOverheadError.d.ts +4 -0
- package/build/noStackCaptureOverheadError.js +9 -0
- package/build/noStackCaptureOverheadError.test.d.ts +1 -0
- package/build/noStackCaptureOverheadError.test.js +15 -0
- package/build/nonEmptyArrayParser.d.ts +2 -0
- package/build/nonEmptyArrayParser.js +32 -0
- package/build/nonEmptyArrayParser.test.d.ts +1 -0
- package/build/nonEmptyArrayParser.test.js +17 -0
- package/build/optionalParser.js +2 -2
- package/build/parser.d.ts +11 -1
- package/build/parser.js +82 -32
- package/build/parser.test.js +141 -25
- package/build/parserAccessorParser.js +9 -1
- package/build/parserConsumedSequenceParser.d.ts +1 -1
- package/build/parserConsumedSequenceParser.js +21 -16
- package/build/parserContext.d.ts +22 -6
- package/build/parserContext.js +113 -57
- package/build/parserContext.test.js +33 -2
- package/build/parserCreatorCompose.d.ts +1 -0
- package/build/parserCreatorCompose.js +8 -2
- package/build/parserError.d.ts +605 -40
- package/build/parserError.js +98 -53
- package/build/parserImplementationInvariant.d.ts +1 -1
- package/build/parserImplementationInvariant.js +2 -2
- package/build/parserInputCompanion.d.ts +15 -0
- package/build/parserInputCompanion.js +38 -0
- package/build/promiseCompose.d.ts +1 -1
- package/build/promiseCompose.js +11 -1
- package/build/promiseSettled.d.ts +1 -0
- package/build/promiseSettled.js +4 -0
- package/build/separatedArrayParser.d.ts +2 -0
- package/build/separatedArrayParser.js +39 -0
- package/build/separatedArrayParser.test.d.ts +1 -0
- package/build/separatedArrayParser.test.js +21 -0
- package/build/separatedNonEmptyArrayParser.d.ts +2 -0
- package/build/separatedNonEmptyArrayParser.js +40 -0
- package/build/separatedNonEmptyArrayParser.test.d.ts +1 -0
- package/build/separatedNonEmptyArrayParser.test.js +66 -0
- package/build/sequenceBuffer.d.ts +10 -0
- package/build/sequenceBuffer.js +54 -2
- package/build/sequenceBuffer.test.js +57 -0
- package/build/sequenceTerminatedSequenceParser.d.ts +5 -0
- package/build/sequenceTerminatedSequenceParser.js +32 -0
- package/build/sequenceTerminatedSequenceParser.test.d.ts +1 -0
- package/build/sequenceTerminatedSequenceParser.test.js +37 -0
- package/build/sequenceUnparser.d.ts +1 -1
- package/build/skipParser.d.ts +1 -1
- package/build/skipParser.js +4 -2
- package/build/skipToParser.d.ts +2 -0
- package/build/skipToParser.js +11 -0
- package/build/sliceBoundedParser.d.ts +1 -1
- package/build/sliceBoundedParser.js +7 -2
- package/build/sliceBoundedParser.test.js +30 -1
- package/build/smali.d.ts +1 -0
- package/build/smali.js +21 -0
- package/build/smaliParser.d.ts +68 -0
- package/build/smaliParser.js +2081 -0
- package/build/smaliParser.test.d.ts +1 -0
- package/build/smaliParser.test.js +410 -0
- package/build/stringFromAsyncIterable.d.ts +1 -0
- package/build/stringFromAsyncIterable.js +7 -0
- package/build/terminatedArrayParser.d.ts +3 -1
- package/build/terminatedArrayParser.js +79 -2
- package/build/terminatedArrayParser.test.d.ts +1 -0
- package/build/terminatedArrayParser.test.js +131 -0
- package/build/toAsyncIterable.d.ts +1 -0
- package/build/toAsyncIterable.js +7 -0
- package/build/toAsyncIterator.d.ts +1 -0
- package/build/toAsyncIterator.js +33 -0
- package/build/tupleParser.d.ts +4 -0
- package/build/tupleParser.js +1 -5
- package/build/unionParser.d.ts +2 -1
- package/build/unionParser.js +29 -14
- package/build/unionParser.test.d.ts +1 -0
- package/build/unionParser.test.js +60 -0
- package/build/unparser.d.ts +3 -3
- package/build/unparser.js +6 -4
- package/build/unparser.test.js +7 -19
- package/build/unparserContext.d.ts +2 -2
- package/build/unparserContext.js +2 -3
- package/build/unparserError.d.ts +2 -1
- package/build/unparserError.js +2 -1
- package/build/unparserImplementationInvariant.d.ts +1 -1
- package/build/unparserOutputCompanion.d.ts +1 -1
- package/build/unparserOutputCompanion.js +1 -1
- package/build/zipParser.d.ts +7 -2
- package/build/zipParser.js +36 -12
- package/build/zipUnparser.d.ts +7 -4
- package/build/zipUnparser.js +64 -45
- package/build/zipUnparser.test.js +15 -15
- package/package.json +33 -24
- package/src/allSettledStream.test.ts +40 -0
- package/src/allSettledStream.ts +47 -15
- package/src/androidPackage.ts +48 -0
- package/src/androidPackageParser.test.ts +27 -0
- package/src/{apkParser.test.ts.md → androidPackageParser.test.ts.md} +4 -4
- package/src/androidPackageParser.test.ts.snap +0 -0
- package/src/androidPackageParser.ts +398 -0
- package/src/androidPackageUnparser.test.ts +34 -0
- package/src/androidPackageUnparser.ts +126 -0
- package/src/arbitrarilySlicedAsyncInterable.ts +7 -2
- package/src/arbitrarilySlicedAsyncInterator.ts +4 -4
- package/src/arbitraryDalvikBytecode.ts +992 -0
- package/src/arbitraryDalvikExecutable.ts +434 -0
- package/src/arbitraryDosDateTime.ts +1 -0
- package/src/arbitraryZipStream.ts +1 -1
- package/src/arrayParser.test.ts +3 -3
- package/src/arrayParser.ts +2 -2
- package/src/arrayUnparser.ts +2 -2
- package/src/backsmali.ts +74 -0
- package/src/bsonParser.test.ts +12 -14
- package/src/bsonParser.ts +13 -2
- package/src/customInvariant.ts +8 -12
- package/src/dalvikBytecodeParser/formatParsers.ts +780 -0
- package/src/dalvikBytecodeParser/formatSizes.ts +35 -0
- package/src/dalvikBytecodeParser/operationFormats.ts +226 -0
- package/src/dalvikBytecodeParser.ts +2873 -0
- package/src/dalvikBytecodeUnparser/formatUnparsers.ts +442 -0
- package/src/dalvikBytecodeUnparser.test.ts +44 -0
- package/src/dalvikBytecodeUnparser.ts +758 -0
- package/src/dalvikExecutable.ts +282 -0
- package/src/dalvikExecutableParser/stringSyntaxParser.ts +145 -0
- package/src/dalvikExecutableParser/typeParsers.ts +74 -0
- package/src/dalvikExecutableParser/typedNumbers.ts +57 -0
- package/src/dalvikExecutableParser.test.ts +89 -0
- package/src/dalvikExecutableParser.test.ts.md +634 -0
- package/src/dalvikExecutableParser.test.ts.snap +0 -0
- package/src/dalvikExecutableParser.ts +3245 -0
- package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +363 -0
- package/src/dalvikExecutableUnparser/annotationUnparsers.ts +135 -0
- package/src/dalvikExecutableUnparser/poolBuilders.ts +189 -0
- package/src/dalvikExecutableUnparser/poolScanners.ts +297 -0
- package/src/dalvikExecutableUnparser/sectionUnparsers.ts +683 -0
- package/src/dalvikExecutableUnparser/utils.ts +149 -0
- package/src/dalvikExecutableUnparser.test.ts +57 -0
- package/src/dalvikExecutableUnparser.ts +581 -0
- package/src/debugLogInputParser.ts +28 -0
- package/src/debugLogParser.ts +19 -3
- package/src/disjunctionParser.ts +12 -7
- package/src/elementTerminatedArrayParser.test.ts +99 -0
- package/src/elementTerminatedArrayParser.ts +31 -0
- package/src/elementTerminatedSequenceArrayParser.test.ts +52 -0
- package/src/elementTerminatedSequenceArrayParser.ts +52 -0
- package/src/elementTerminatedSequenceParser.test.ts +52 -0
- package/src/elementTerminatedSequenceParser.ts +43 -0
- package/src/endOfInputParser.ts +1 -1
- package/src/exactElementParser.ts +17 -11
- package/src/exactElementSwitchParser.ts +41 -0
- package/src/exactSequenceParser.ts +23 -2
- package/src/fetchCid.test.ts +20 -0
- package/src/fetchCid.ts +121 -0
- package/src/fixedLengthSequenceParser.test.ts +75 -0
- package/src/fixedLengthSequenceParser.ts +28 -1
- package/src/hasExecutable.ts +11 -0
- package/src/highResolutionTimer.ts +49 -0
- package/src/inputReader.test.ts +204 -8
- package/src/inputReader.ts +76 -3
- package/src/inputReaderState.ts +33 -0
- package/src/inspect.ts +9 -0
- package/src/javaKeyStoreParser.test.ts +12 -15
- package/src/javaKeyStoreParser.ts +2 -6
- package/src/jsonParser.test.ts +2 -4
- package/src/jsonParser.ts +46 -62
- package/src/lazyMessageError.test.ts +21 -0
- package/src/lazyMessageError.ts +88 -0
- package/src/leb128Parser.test.ts +173 -0
- package/src/leb128Parser.ts +125 -0
- package/src/lookaheadParser.ts +19 -0
- package/src/negativeLookaheadParser.test.ts +49 -0
- package/src/negativeLookaheadParser.ts +27 -15
- package/src/noStackCaptureOverheadError.test.ts +17 -0
- package/src/noStackCaptureOverheadError.ts +12 -0
- package/src/nonEmptyArrayParser.test.ts +21 -0
- package/src/nonEmptyArrayParser.ts +44 -0
- package/src/optionalParser.ts +3 -2
- package/src/parser.test.ts +203 -31
- package/src/parser.test.ts.md +34 -27
- package/src/parser.test.ts.snap +0 -0
- package/src/parser.ts +172 -45
- package/src/parserAccessorParser.ts +12 -2
- package/src/parserConsumedSequenceParser.ts +26 -17
- package/src/parserContext.test.ts +37 -2
- package/src/parserContext.ts +185 -79
- package/src/parserCreatorCompose.ts +20 -2
- package/src/parserError.ts +144 -61
- package/src/parserImplementationInvariant.ts +3 -3
- package/src/parserInputCompanion.ts +55 -0
- package/src/promiseCompose.ts +17 -3
- package/src/promiseSettled.ts +6 -0
- package/src/separatedArrayParser.test.ts +34 -0
- package/src/separatedArrayParser.ts +55 -0
- package/src/separatedNonEmptyArrayParser.test.ts +117 -0
- package/src/separatedNonEmptyArrayParser.ts +61 -0
- package/src/sequenceBuffer.test.ts +70 -0
- package/src/sequenceBuffer.ts +88 -2
- package/src/sequenceTerminatedSequenceParser.test.ts +58 -0
- package/src/sequenceTerminatedSequenceParser.ts +62 -0
- package/src/sequenceUnparser.ts +2 -2
- package/src/skipParser.ts +7 -5
- package/src/skipToParser.ts +16 -0
- package/src/sliceBoundedParser.test.ts +35 -1
- package/src/sliceBoundedParser.ts +19 -1
- package/src/smali.ts +29 -0
- package/src/smaliParser.test.ts +443 -0
- package/src/smaliParser.test.ts.md +3907 -0
- package/src/smaliParser.test.ts.snap +0 -0
- package/src/smaliParser.ts +3348 -0
- package/src/stringFromAsyncIterable.ts +9 -0
- package/src/terminatedArrayParser.test.ts +258 -0
- package/src/terminatedArrayParser.ts +109 -6
- package/src/toAsyncIterable.ts +7 -0
- package/src/toAsyncIterator.ts +48 -0
- package/src/tupleParser.ts +8 -5
- package/src/uint8Array.ts +2 -3
- package/src/unionParser.test.ts +78 -0
- package/src/unionParser.ts +47 -21
- package/src/unparser.test.ts +18 -34
- package/src/unparser.ts +13 -9
- package/src/unparserContext.ts +9 -13
- package/src/unparserError.ts +2 -1
- package/src/unparserImplementationInvariant.ts +1 -1
- package/src/unparserOutputCompanion.ts +1 -1
- package/src/zip.ts +2 -6
- package/src/zipParser.ts +71 -20
- package/src/zipUnparser.test.ts +19 -19
- package/src/zipUnparser.ts +139 -90
- package/tsconfig.json +7 -1
- package/xo.config.ts +15 -0
- package/.yarn/releases/yarn-4.5.3.cjs +0 -934
- package/build/apk.d.ts +0 -39
- package/build/apkParser.d.ts +0 -16
- package/build/apkParser.js +0 -164
- package/build/apkParser.test.js +0 -22
- package/build/apkUnparser.d.ts +0 -4
- package/build/apkUnparser.js +0 -90
- package/build/apkUnparser.test.js +0 -26
- package/build/arbitraryDosDate.d.ts +0 -2
- package/build/arbitraryDosDate.js +0 -8
- package/build/arbitraryZipEntry.d.ts +0 -3
- package/build/arbitraryZipEntry.js +0 -26
- package/build/createDisjunctionParser.d.ts +0 -2
- package/build/createDisjunctionParser.js +0 -47
- package/build/createExactParser.d.ts +0 -2
- package/build/createExactParser.js +0 -12
- package/build/createSequentialUnionParser.d.ts +0 -2
- package/build/createSequentialUnionParser.js +0 -69
- package/build/fixedLengthChunkParser.d.ts +0 -2
- package/build/fixedLengthChunkParser.js +0 -12
- package/build/fixedLengthParser.d.ts +0 -2
- package/build/fixedLengthParser.js +0 -12
- package/build/inputChunkBuffer.d.ts +0 -15
- package/build/inputChunkBuffer.js +0 -40
- package/build/inputChunkBuffer.test.js +0 -34
- package/build/inputCompanion.d.ts +0 -18
- package/build/inputCompanion.js +0 -28
- package/build/invariantDefined.d.ts +0 -1
- package/build/invariantDefined.js +0 -5
- package/build/invariantIdentity.d.ts +0 -3
- package/build/invariantIdentity.js +0 -5
- package/build/javaKeystoreParser.d.ts +0 -2
- package/build/javaKeystoreParser.js +0 -7
- package/build/jsonParser2.d.ts +0 -3
- package/build/jsonParser2.js +0 -52
- package/build/jsonParser2.test.js +0 -22
- package/build/negativeLookahead.d.ts +0 -2
- package/build/negativeLookahead.js +0 -18
- package/build/parserCompose.d.ts +0 -3
- package/build/parserCompose.js +0 -7
- package/build/parserImplementationInvariantInvariant.d.ts +0 -3
- package/build/parserImplementationInvariantInvariant.js +0 -15
- package/build/parserInvariant.d.ts +0 -4
- package/build/parserInvariant.js +0 -11
- package/build/promiseFish.d.ts +0 -1
- package/build/promiseFish.js +0 -3
- package/build/sequenceParser.d.ts +0 -3
- package/build/sequenceParser.js +0 -10
- package/build/terminatedSequenceParser.d.ts +0 -2
- package/build/terminatedSequenceParser.js +0 -24
- package/build/unparserInputCompanion.d.ts +0 -15
- package/build/unparserInputCompanion.js +0 -13
- package/build/zipEntry.d.ts +0 -28
- package/build/zipFile.d.ts +0 -32
- package/build/zipFileEntry.d.ts +0 -6
- package/src/apk.ts +0 -48
- package/src/apkParser.test.ts +0 -30
- package/src/apkParser.test.ts.snap +0 -0
- package/src/apkParser.ts +0 -392
- package/src/apkUnparser.test.ts +0 -37
- package/src/apkUnparser.ts +0 -120
- package/src/invariantDefined.ts +0 -6
- package/src/invariantIdentity.ts +0 -8
- /package/build/{apk.js → androidPackage.js} +0 -0
- /package/build/{apkParser.test.d.ts → androidPackageParser.test.d.ts} +0 -0
- /package/build/{apkUnparser.test.d.ts → androidPackageUnparser.test.d.ts} +0 -0
- /package/build/{arbitraryDosPermissions.d.ts → dalvikBytecodeUnparser.test.d.ts} +0 -0
- /package/build/{arbitraryDosPermissions.js → dalvikExecutableParser.test.d.ts} +0 -0
- /package/build/{inputChunkBuffer.test.d.ts → dalvikExecutableParserAgainstSmaliParser.test.d.ts} +0 -0
- /package/build/{jsonParser2.test.d.ts → dalvikExecutableUnparser.test.d.ts} +0 -0
- /package/build/{parserParsingInvariant.d.ts → elementTerminatedArrayParser.test.d.ts} +0 -0
- /package/build/{parserParsingInvariant.js → elementTerminatedSequenceArrayParser.test.d.ts} +0 -0
- /package/build/{zipEntry.js → elementTerminatedSequenceParser.test.d.ts} +0 -0
- /package/build/{zipFile.js → fetchCid.test.d.ts} +0 -0
- /package/build/{zipFileEntry.js → fixedLengthSequenceParser.test.d.ts} +0 -0
package/build/parserContext.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable prefer-arrow-callback */
|
|
2
|
-
import invariant from 'invariant';
|
|
3
|
-
import { ParserUnexpectedEndOfInputError, ParserParsingInvariantError, ParserParsingJoinNoneError, ParserParsingJoinAllError, ParserParsingJoinDeepestError, ParserParsingJoinFurthestError, } from './parserError.js';
|
|
4
2
|
import { customInvariant } from './customInvariant.js';
|
|
3
|
+
import { parserImplementationInvariant } from './parserImplementationInvariant.js';
|
|
4
|
+
import { formatLazyMessage, isLazyMessageError } from './lazyMessageError.js';
|
|
5
5
|
let parserContextId = 0;
|
|
6
6
|
export class ParserContextImplementation {
|
|
7
7
|
_parserInputCompanion;
|
|
@@ -33,12 +33,27 @@ export class ParserContextImplementation {
|
|
|
33
33
|
from(elements) {
|
|
34
34
|
return this._parserInputCompanion.from(elements);
|
|
35
35
|
}
|
|
36
|
+
concat(sequences) {
|
|
37
|
+
return this._parserInputCompanion.concat(sequences);
|
|
38
|
+
}
|
|
36
39
|
length(sequence) {
|
|
37
40
|
return this._parserInputCompanion.length(sequence);
|
|
38
41
|
}
|
|
39
42
|
at(sequence, index) {
|
|
40
43
|
return this._parserInputCompanion.at(sequence, index);
|
|
41
44
|
}
|
|
45
|
+
subsequence(sequence, start, end) {
|
|
46
|
+
return this._parserInputCompanion.subsequence(sequence, start, end);
|
|
47
|
+
}
|
|
48
|
+
indexOf(sequence, element, fromIndex) {
|
|
49
|
+
return this._parserInputCompanion.indexOf(sequence, element, fromIndex);
|
|
50
|
+
}
|
|
51
|
+
indexOfSubsequence(sequence, subsequence, fromIndex) {
|
|
52
|
+
return this._parserInputCompanion.indexOfSubsequence(sequence, subsequence, fromIndex);
|
|
53
|
+
}
|
|
54
|
+
equals(sequenceA, sequenceB) {
|
|
55
|
+
return this._parserInputCompanion.equals(sequenceA, sequenceB);
|
|
56
|
+
}
|
|
42
57
|
get position() {
|
|
43
58
|
return this._inputReader.position;
|
|
44
59
|
}
|
|
@@ -49,24 +64,41 @@ export class ParserContextImplementation {
|
|
|
49
64
|
}
|
|
50
65
|
return this._inputReader.peek(offset);
|
|
51
66
|
}
|
|
67
|
+
async peekSequence(start, end) {
|
|
68
|
+
if (this._options.sliceEnd !== undefined
|
|
69
|
+
&& (this.position + end - 1) >= this._options.sliceEnd) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
parserImplementationInvariant(start >= 0, 'start (%s) >= 0', start);
|
|
73
|
+
parserImplementationInvariant(end >= start, 'end (%s) >= start (%s)', start, end);
|
|
74
|
+
parserImplementationInvariant(Number.isSafeInteger(start), 'start (%d) is not a safe integer', start);
|
|
75
|
+
parserImplementationInvariant(Number.isSafeInteger(end), 'end (%d) is not a safe integer', end);
|
|
76
|
+
return this._inputReader.peekSequence(start, end);
|
|
77
|
+
}
|
|
52
78
|
skip(offset) {
|
|
53
79
|
this._inputReader.skip(offset);
|
|
54
80
|
}
|
|
55
81
|
async read(offset) {
|
|
56
82
|
const element = await this.peek(offset);
|
|
57
83
|
if (element === undefined) {
|
|
58
|
-
throw new ParserUnexpectedEndOfInputError('', this._depth, this.position);
|
|
84
|
+
throw new this._options.errorsModule.ParserUnexpectedEndOfInputError('', this._depth, this.position);
|
|
59
85
|
}
|
|
60
86
|
this.skip(offset + 1);
|
|
61
87
|
return element;
|
|
62
88
|
}
|
|
89
|
+
async readSequence(start, end) {
|
|
90
|
+
const sequence = await this.peekSequence(start, end);
|
|
91
|
+
if (sequence === undefined) {
|
|
92
|
+
throw new this._options.errorsModule.ParserUnexpectedEndOfInputError('', this._depth, this.position);
|
|
93
|
+
}
|
|
94
|
+
this.skip(end);
|
|
95
|
+
return sequence;
|
|
96
|
+
}
|
|
63
97
|
lookahead(options = {}) {
|
|
64
98
|
const lookaheadInputReader = this._inputReader.lookahead();
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
invariant(this.position === lookaheadInputReader.position, 'lookahead this.position (%s) === lookaheadInputReader.position (%s)', this.position, lookaheadInputReader.position);
|
|
69
|
-
const lookaheadParserContext = new ParserContextImplementation(this._parserInputCompanion, lookaheadInputReader, this, {
|
|
99
|
+
parserImplementationInvariant(this.position === lookaheadInputReader.position, 'lookahead this.position (%s) === lookaheadInputReader.position (%s)', this.position, lookaheadInputReader.position);
|
|
100
|
+
const ParserContext = this._options.parserContextClass ?? ParserContextImplementation;
|
|
101
|
+
const lookaheadParserContext = new ParserContext(this._parserInputCompanion, lookaheadInputReader, this, {
|
|
70
102
|
...this._options,
|
|
71
103
|
...options,
|
|
72
104
|
debugName: [
|
|
@@ -78,60 +110,57 @@ export class ParserContextImplementation {
|
|
|
78
110
|
options.debugName,
|
|
79
111
|
].join(''),
|
|
80
112
|
});
|
|
81
|
-
|
|
82
|
-
debugger;
|
|
83
|
-
}
|
|
84
|
-
invariant(this.position === lookaheadParserContext.position, 'lookahead this.position (%s) === lookaheadParserContext.position (%s)', this.position, lookaheadParserContext.position);
|
|
113
|
+
parserImplementationInvariant(this.position === lookaheadParserContext.position, 'lookahead this.position (%s) === lookaheadParserContext.position (%s)', this.position, lookaheadParserContext.position);
|
|
85
114
|
return lookaheadParserContext;
|
|
86
115
|
}
|
|
87
116
|
unlookahead() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
||
|
|
117
|
+
const parentParserContext = parserImplementationInvariant(this._parentParserContext, 'this._parentParserContext !== undefined');
|
|
118
|
+
parserImplementationInvariant((parentParserContext._exclusiveChildParserContext === undefined
|
|
119
|
+
|| parentParserContext._exclusiveChildParserContext === this), [
|
|
91
120
|
'Parent\'s exclusive child must be undefined or this',
|
|
92
121
|
'this: %s',
|
|
93
122
|
'parent: %s',
|
|
94
123
|
'parent.exclusiveChild: %s',
|
|
95
|
-
]
|
|
96
|
-
|
|
97
|
-
const offset = this._inputReader.position -
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this._inputReader =
|
|
101
|
-
|
|
124
|
+
], () => this.toString(), () => parentParserContext.toString(), () => parentParserContext._exclusiveChildParserContext?.toString());
|
|
125
|
+
parserImplementationInvariant(parentParserContext.position <= this.position, 'unlookahead this._parentParserContext.position (%s) <= this.position (%s)', parentParserContext.position, this.position);
|
|
126
|
+
const offset = this._inputReader.position - parentParserContext._inputReader.position;
|
|
127
|
+
parentParserContext.skip(offset);
|
|
128
|
+
parserImplementationInvariant(parentParserContext.position === this.position, 'unlookahead this._parentParserContext.position (%s) === this.position (%s)', parentParserContext.position, this.position);
|
|
129
|
+
this._inputReader = parentParserContext._inputReader;
|
|
130
|
+
parentParserContext._exclusiveChildParserContext = this;
|
|
102
131
|
if (this._exclusiveChildParserContext) {
|
|
103
132
|
this._exclusiveChildParserContext.unlookahead();
|
|
104
133
|
}
|
|
105
134
|
}
|
|
106
135
|
dispose() {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
||
|
|
136
|
+
const parentParserContext = parserImplementationInvariant(this._parentParserContext, 'this._parentParserContext !== undefined');
|
|
137
|
+
parserImplementationInvariant((parentParserContext._exclusiveChildParserContext === undefined
|
|
138
|
+
|| parentParserContext._exclusiveChildParserContext === this), [
|
|
110
139
|
'Parent\'s exclusive child must be undefined or this',
|
|
111
140
|
'this: %s',
|
|
112
141
|
'parent: %s',
|
|
113
142
|
'parent.exclusiveChild: %s',
|
|
114
|
-
]
|
|
115
|
-
|
|
143
|
+
], () => this.toString(), () => parentParserContext.toString(), () => parentParserContext._exclusiveChildParserContext?.toString());
|
|
144
|
+
parentParserContext._exclusiveChildParserContext = undefined;
|
|
116
145
|
this._parentParserContext = undefined;
|
|
117
146
|
}
|
|
118
147
|
invariant(value, format, ...formatArguments) {
|
|
119
148
|
const parserContext = this;
|
|
120
|
-
return customInvariant(function (
|
|
121
|
-
return new ParserParsingInvariantError(
|
|
149
|
+
return customInvariant(function (lazyMessage) {
|
|
150
|
+
return new parserContext._options.errorsModule.ParserParsingInvariantError(lazyMessage, parserContext._depth, parserContext.position);
|
|
122
151
|
}, value, format, ...formatArguments);
|
|
123
152
|
}
|
|
124
153
|
invariantJoin(value, childErrors, format, ...formatArguments) {
|
|
125
|
-
|
|
154
|
+
parserImplementationInvariant(childErrors.length > 0, 'childErrors.length > 0');
|
|
126
155
|
const errorJoinMode = this._options.errorJoinMode ?? 'none';
|
|
127
156
|
const parserContext = this;
|
|
128
157
|
if (errorJoinMode === 'none') {
|
|
129
|
-
return customInvariant(function (
|
|
130
|
-
return new ParserParsingJoinNoneError(
|
|
158
|
+
return customInvariant(function (lazyMessage) {
|
|
159
|
+
return new parserContext._options.errorsModule.ParserParsingJoinNoneError(lazyMessage, parserContext._depth, parserContext.position);
|
|
131
160
|
}, value, format, ...formatArguments);
|
|
132
161
|
}
|
|
133
162
|
if (errorJoinMode === 'furthest') {
|
|
134
|
-
return customInvariant(function (
|
|
163
|
+
return customInvariant(function (userLazyMessage) {
|
|
135
164
|
let furthestPosition = 0;
|
|
136
165
|
let furthestChildErrors = [];
|
|
137
166
|
for (const childError of childErrors) {
|
|
@@ -145,20 +174,31 @@ export class ParserContextImplementation {
|
|
|
145
174
|
}
|
|
146
175
|
furthestChildErrors.push(childError);
|
|
147
176
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
177
|
+
return new parserContext._options.errorsModule.ParserParsingJoinFurthestError([
|
|
178
|
+
[
|
|
179
|
+
'%s',
|
|
180
|
+
'Furthest child error stacks, indented:',
|
|
181
|
+
'%s',
|
|
182
|
+
'End of furthest child error stacks',
|
|
183
|
+
],
|
|
184
|
+
() => formatLazyMessage(userLazyMessage),
|
|
185
|
+
() => furthestChildErrors.flatMap(furthestChildError => {
|
|
186
|
+
if (isLazyMessageError(furthestChildError)) {
|
|
187
|
+
furthestChildError.computeMessage();
|
|
188
|
+
}
|
|
189
|
+
return furthestChildError.stack?.split('\n').map(line => ' ' + line);
|
|
190
|
+
}).join('\n'),
|
|
191
|
+
], parserContext._depth, furthestPosition, furthestChildErrors);
|
|
155
192
|
}, value, format, ...formatArguments);
|
|
156
193
|
}
|
|
157
194
|
if (errorJoinMode === 'deepest') {
|
|
158
|
-
return customInvariant(function (
|
|
195
|
+
return customInvariant(function (userLazyMessage) {
|
|
159
196
|
let deepestDepth = 0;
|
|
160
197
|
let deepestChildErrors = [];
|
|
161
198
|
for (const childError of childErrors) {
|
|
199
|
+
if (isLazyMessageError(childError)) {
|
|
200
|
+
childError.computeMessage();
|
|
201
|
+
}
|
|
162
202
|
if (childError.depth < deepestDepth) {
|
|
163
203
|
continue;
|
|
164
204
|
}
|
|
@@ -169,26 +209,42 @@ export class ParserContextImplementation {
|
|
|
169
209
|
}
|
|
170
210
|
deepestChildErrors.push(childError);
|
|
171
211
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
212
|
+
return new parserContext._options.errorsModule.ParserParsingJoinDeepestError([
|
|
213
|
+
[
|
|
214
|
+
'%s',
|
|
215
|
+
'Deepest child error stacks, indented:',
|
|
216
|
+
'%s',
|
|
217
|
+
'End of deepest child error stacks',
|
|
218
|
+
],
|
|
219
|
+
() => formatLazyMessage(userLazyMessage),
|
|
220
|
+
() => deepestChildErrors.flatMap(deepestChildError => {
|
|
221
|
+
if (isLazyMessageError(deepestChildError)) {
|
|
222
|
+
deepestChildError.computeMessage();
|
|
223
|
+
}
|
|
224
|
+
return deepestChildError.stack?.split('\n').map(line => ' ' + line);
|
|
225
|
+
}).join('\n'),
|
|
226
|
+
], deepestDepth, parserContext.position, deepestChildErrors);
|
|
179
227
|
}, value, format, ...formatArguments);
|
|
180
228
|
}
|
|
181
229
|
if (errorJoinMode === 'all') {
|
|
182
|
-
return customInvariant(function (
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
230
|
+
return customInvariant(function (userLazyMessage) {
|
|
231
|
+
return new parserContext._options.errorsModule.ParserParsingJoinAllError([
|
|
232
|
+
[
|
|
233
|
+
'%s',
|
|
234
|
+
'All child error stacks, indented:',
|
|
235
|
+
'%s',
|
|
236
|
+
'End of all child error stacks',
|
|
237
|
+
],
|
|
238
|
+
() => formatLazyMessage(userLazyMessage),
|
|
239
|
+
() => childErrors.flatMap(childError => {
|
|
240
|
+
if (isLazyMessageError(childError)) {
|
|
241
|
+
childError.computeMessage();
|
|
242
|
+
}
|
|
243
|
+
return childError.stack?.split('\n').map(line => ' ' + line);
|
|
244
|
+
}).join('\n'),
|
|
245
|
+
], parserContext._depth, parserContext.position, childErrors);
|
|
190
246
|
}, value, format, ...formatArguments);
|
|
191
247
|
}
|
|
192
|
-
|
|
248
|
+
return parserImplementationInvariant(false, 'Unsupported errorJoinMode: %s', errorJoinMode);
|
|
193
249
|
}
|
|
194
250
|
}
|
|
@@ -2,12 +2,14 @@ import test from 'ava';
|
|
|
2
2
|
import { ParserContextImplementation } from './parserContext.js';
|
|
3
3
|
import { stringParserInputCompanion } from './parserInputCompanion.js';
|
|
4
4
|
import { InputReaderImplementation } from './inputReader.js';
|
|
5
|
-
import {
|
|
5
|
+
import { noStackCaptureOverheadParserErrorModule } from './parserError.js';
|
|
6
6
|
const commonParserContextArguments = [
|
|
7
7
|
undefined,
|
|
8
8
|
{
|
|
9
9
|
debugName: 'root',
|
|
10
10
|
errorJoinMode: 'all',
|
|
11
|
+
errorStack: false,
|
|
12
|
+
errorsModule: noStackCaptureOverheadParserErrorModule,
|
|
11
13
|
},
|
|
12
14
|
];
|
|
13
15
|
test('parserContext.read', async (t) => {
|
|
@@ -22,7 +24,29 @@ test('parserContext.read', async (t) => {
|
|
|
22
24
|
t.is(await parserContext.read(0), 'b');
|
|
23
25
|
t.is(await parserContext.read(5), 'h');
|
|
24
26
|
await t.throwsAsync(async () => parserContext.read(0), {
|
|
25
|
-
|
|
27
|
+
any: true,
|
|
28
|
+
name: 'ParserUnexpectedEndOfInputError',
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
test('parserContext.readSequence', async (t) => {
|
|
32
|
+
const parserContext = new ParserContextImplementation(stringParserInputCompanion, new InputReaderImplementation(stringParserInputCompanion, (async function* () {
|
|
33
|
+
yield '';
|
|
34
|
+
yield 'abc';
|
|
35
|
+
yield 'def';
|
|
36
|
+
yield '';
|
|
37
|
+
yield 'gh';
|
|
38
|
+
})()), ...commonParserContextArguments);
|
|
39
|
+
t.is(await parserContext.readSequence(0, 0), '');
|
|
40
|
+
t.is(await parserContext.readSequence(0, 1), 'a');
|
|
41
|
+
t.is(await parserContext.readSequence(1, 4), 'cde');
|
|
42
|
+
t.is(await parserContext.readSequence(0, 1), 'f');
|
|
43
|
+
t.is(await parserContext.readSequence(0, 0), '');
|
|
44
|
+
t.is(await parserContext.readSequence(0, 1), 'g');
|
|
45
|
+
t.is(await parserContext.readSequence(1, 1), '');
|
|
46
|
+
t.is(await parserContext.readSequence(0, 0), '');
|
|
47
|
+
await t.throwsAsync(async () => parserContext.readSequence(0, 1), {
|
|
48
|
+
any: true,
|
|
49
|
+
name: 'ParserUnexpectedEndOfInputError',
|
|
26
50
|
});
|
|
27
51
|
});
|
|
28
52
|
test('parserContext.lookahead', async (t) => {
|
|
@@ -35,11 +59,15 @@ test('parserContext.lookahead', async (t) => {
|
|
|
35
59
|
sliceEnd: 3,
|
|
36
60
|
});
|
|
37
61
|
t.is(await lookaheadContext3.peek(2), 'c');
|
|
62
|
+
t.is(await lookaheadContext3.peekSequence(2, 3), 'c');
|
|
38
63
|
t.is(await lookaheadContext3.peek(3), undefined);
|
|
64
|
+
t.is(await lookaheadContext3.peekSequence(3, 4), undefined);
|
|
39
65
|
t.is(await lookaheadContext3.read(0), 'a');
|
|
40
66
|
t.is(await lookaheadContext3.read(0), 'b');
|
|
41
67
|
t.is(await lookaheadContext3.read(0), 'c');
|
|
42
68
|
t.is(await lookaheadContext3.peek(0), undefined);
|
|
69
|
+
t.is(await lookaheadContext3.peekSequence(0, 1), undefined);
|
|
70
|
+
t.is(await lookaheadContext3.peekSequence(0, 0), '');
|
|
43
71
|
t.is(await parserContext.peek(0), 'a');
|
|
44
72
|
t.is(await lookaheadContext1.peek(0), 'a');
|
|
45
73
|
t.is(await lookaheadContext2.peek(0), 'a');
|
|
@@ -52,6 +80,9 @@ test('parserContext.lookahead', async (t) => {
|
|
|
52
80
|
t.is(lookaheadContext1.position, 1);
|
|
53
81
|
t.is(lookaheadContext2.position, 0);
|
|
54
82
|
t.is(lookaheadContext3.position, 3);
|
|
83
|
+
lookaheadContext3.skip(1);
|
|
84
|
+
t.is(await lookaheadContext3.peekSequence(0, 0), undefined);
|
|
85
|
+
t.is(lookaheadContext3.position, 4);
|
|
55
86
|
});
|
|
56
87
|
test('parserContext.unlookahead', async (t) => {
|
|
57
88
|
const parserContext = new ParserContextImplementation(stringParserInputCompanion, new InputReaderImplementation(stringParserInputCompanion, (async function* () {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { type Parser } from './parser.js';
|
|
2
2
|
import { type DeriveSequenceElement } from './sequence.js';
|
|
3
3
|
export declare function parserCreatorCompose<Arguments extends unknown[], OutputA, OutputB, Sequence, Element = DeriveSequenceElement<Sequence>>(f1: (...arguments_: Arguments) => Parser<OutputA, Sequence, Element>, f2: (outputA: OutputA) => Parser<OutputB, Sequence, Element>): (...arguments_: Arguments) => Parser<OutputB, Sequence, Element>;
|
|
4
|
+
export declare function parserCreatorComposeMem<Arguments extends unknown[], OutputA, OutputB, Sequence, Element = DeriveSequenceElement<Sequence>>(f1: (...arguments_: Arguments) => Parser<OutputA, Sequence, Element>, f2: (outputA: OutputA) => Parser<OutputB, Sequence, Element>): (...arguments_: Arguments) => Parser<OutputB, Sequence, Element>;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import mem from 'mem';
|
|
1
2
|
export function parserCreatorCompose(f1, f2) {
|
|
2
|
-
|
|
3
|
+
const parserCreatorComposedOuter = (...arguments_) => {
|
|
3
4
|
const parserA = f1(...arguments_);
|
|
4
|
-
|
|
5
|
+
const parserCreatorComposedInner = async (parserContext) => {
|
|
5
6
|
const outputA = await parserA(parserContext);
|
|
6
7
|
const parserB = f2(outputA);
|
|
7
8
|
return parserB(parserContext);
|
|
8
9
|
};
|
|
10
|
+
return parserCreatorComposedInner;
|
|
9
11
|
};
|
|
12
|
+
return parserCreatorComposedOuter;
|
|
13
|
+
}
|
|
14
|
+
export function parserCreatorComposeMem(f1, f2) {
|
|
15
|
+
return parserCreatorCompose(mem(f1), mem(f2));
|
|
10
16
|
}
|