@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.
Files changed (425) hide show
  1. package/.github/copilot-instructions.md +149 -0
  2. package/.github/workflows/copilot-setup-steps.yml +18 -0
  3. package/.github/workflows/main.yml +29 -8
  4. package/.yarn/releases/yarn-4.9.4.cjs +942 -0
  5. package/.yarnrc.yml +1 -1
  6. package/build/allSettledStream.js +32 -14
  7. package/build/allSettledStream.test.js +32 -0
  8. package/build/androidPackage.d.ts +39 -0
  9. package/build/androidPackageParser.d.ts +17 -0
  10. package/build/androidPackageParser.js +185 -0
  11. package/build/androidPackageParser.test.js +22 -0
  12. package/build/androidPackageUnparser.d.ts +4 -0
  13. package/build/androidPackageUnparser.js +94 -0
  14. package/build/androidPackageUnparser.test.js +26 -0
  15. package/build/arbitrarilySlicedAsyncInterable.d.ts +3 -1
  16. package/build/arbitrarilySlicedAsyncInterable.js +3 -3
  17. package/build/arbitrarilySlicedAsyncInterator.js +2 -1
  18. package/build/arbitraryDalvikBytecode.d.ts +4 -0
  19. package/build/arbitraryDalvikBytecode.js +640 -0
  20. package/build/arbitraryDalvikExecutable.d.ts +3 -0
  21. package/build/arbitraryDalvikExecutable.js +282 -0
  22. package/build/arbitraryDosDateTime.js +1 -0
  23. package/build/arbitraryZipStream.js +1 -1
  24. package/build/arrayParser.js +2 -2
  25. package/build/arrayParser.test.js +3 -3
  26. package/build/arrayUnparser.d.ts +1 -1
  27. package/build/backsmali.d.ts +3 -0
  28. package/build/backsmali.js +50 -0
  29. package/build/bsonParser.js +6 -2
  30. package/build/customInvariant.d.ts +2 -1
  31. package/build/customInvariant.js +4 -6
  32. package/build/dalvikBytecodeParser/formatParsers.d.ts +171 -0
  33. package/build/dalvikBytecodeParser/formatParsers.js +304 -0
  34. package/build/dalvikBytecodeParser/formatSizes.d.ts +34 -0
  35. package/build/dalvikBytecodeParser/formatSizes.js +34 -0
  36. package/build/dalvikBytecodeParser/operationFormats.d.ts +225 -0
  37. package/build/dalvikBytecodeParser/operationFormats.js +225 -0
  38. package/build/dalvikBytecodeParser.d.ts +1207 -0
  39. package/build/dalvikBytecodeParser.js +1289 -0
  40. package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +152 -0
  41. package/build/dalvikBytecodeUnparser/formatUnparsers.js +225 -0
  42. package/build/dalvikBytecodeUnparser.d.ts +3 -0
  43. package/build/dalvikBytecodeUnparser.js +642 -0
  44. package/build/dalvikBytecodeUnparser.test.js +25 -0
  45. package/build/dalvikExecutable.d.ts +215 -0
  46. package/build/dalvikExecutable.js +56 -0
  47. package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +4 -0
  48. package/build/dalvikExecutableParser/stringSyntaxParser.js +76 -0
  49. package/build/dalvikExecutableParser/typeParsers.d.ts +11 -0
  50. package/build/dalvikExecutableParser/typeParsers.js +39 -0
  51. package/build/dalvikExecutableParser/typedNumbers.d.ts +106 -0
  52. package/build/dalvikExecutableParser/typedNumbers.js +18 -0
  53. package/build/dalvikExecutableParser.d.ts +5 -0
  54. package/build/dalvikExecutableParser.js +1757 -0
  55. package/build/dalvikExecutableParser.test.js +72 -0
  56. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +275 -0
  57. package/build/dalvikExecutableUnparser/annotationUnparsers.d.ts +14 -0
  58. package/build/dalvikExecutableUnparser/annotationUnparsers.js +97 -0
  59. package/build/dalvikExecutableUnparser/poolBuilders.d.ts +49 -0
  60. package/build/dalvikExecutableUnparser/poolBuilders.js +140 -0
  61. package/build/dalvikExecutableUnparser/poolScanners.d.ts +4 -0
  62. package/build/dalvikExecutableUnparser/poolScanners.js +220 -0
  63. package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +25 -0
  64. package/build/dalvikExecutableUnparser/sectionUnparsers.js +581 -0
  65. package/build/dalvikExecutableUnparser/utils.d.ts +10 -0
  66. package/build/dalvikExecutableUnparser/utils.js +108 -0
  67. package/build/dalvikExecutableUnparser.d.ts +4 -0
  68. package/build/dalvikExecutableUnparser.js +406 -0
  69. package/build/dalvikExecutableUnparser.test.js +31 -0
  70. package/build/debugLogInputParser.d.ts +4 -0
  71. package/build/debugLogInputParser.js +16 -0
  72. package/build/debugLogParser.js +14 -3
  73. package/build/disjunctionParser.d.ts +2 -1
  74. package/build/disjunctionParser.js +6 -4
  75. package/build/elementTerminatedArrayParser.d.ts +3 -0
  76. package/build/elementTerminatedArrayParser.js +18 -0
  77. package/build/elementTerminatedArrayParser.test.js +52 -0
  78. package/build/elementTerminatedSequenceArrayParser.d.ts +3 -0
  79. package/build/elementTerminatedSequenceArrayParser.js +32 -0
  80. package/build/elementTerminatedSequenceArrayParser.test.js +34 -0
  81. package/build/elementTerminatedSequenceParser.d.ts +3 -0
  82. package/build/elementTerminatedSequenceParser.js +27 -0
  83. package/build/elementTerminatedSequenceParser.test.js +34 -0
  84. package/build/endOfInputParser.d.ts +1 -1
  85. package/build/exactElementParser.js +10 -5
  86. package/build/exactElementSwitchParser.d.ts +3 -0
  87. package/build/exactElementSwitchParser.js +22 -0
  88. package/build/exactSequenceParser.d.ts +2 -1
  89. package/build/exactSequenceParser.js +12 -2
  90. package/build/fetchCid.d.ts +1 -0
  91. package/build/fetchCid.js +103 -0
  92. package/build/fetchCid.test.js +16 -0
  93. package/build/fixedLengthSequenceParser.d.ts +1 -0
  94. package/build/fixedLengthSequenceParser.js +18 -1
  95. package/build/fixedLengthSequenceParser.test.js +41 -0
  96. package/build/hasExecutable.d.ts +1 -0
  97. package/build/hasExecutable.js +8 -0
  98. package/build/highResolutionTimer.d.ts +16 -0
  99. package/build/highResolutionTimer.js +42 -0
  100. package/build/inputReader.d.ts +11 -0
  101. package/build/inputReader.js +37 -0
  102. package/build/inputReader.test.js +161 -8
  103. package/build/inputReaderState.d.ts +10 -0
  104. package/build/inputReaderState.js +16 -0
  105. package/build/inspect.d.ts +1 -0
  106. package/build/inspect.js +7 -0
  107. package/build/javaKeyStoreParser.test.js +8 -8
  108. package/build/jsonParser.d.ts +2 -0
  109. package/build/jsonParser.js +19 -22
  110. package/build/lazyMessageError.d.ts +48 -0
  111. package/build/lazyMessageError.js +53 -0
  112. package/build/lazyMessageError.test.d.ts +1 -0
  113. package/build/lazyMessageError.test.js +15 -0
  114. package/build/leb128Parser.d.ts +7 -0
  115. package/build/leb128Parser.js +82 -0
  116. package/build/leb128Parser.test.d.ts +1 -0
  117. package/build/leb128Parser.test.js +107 -0
  118. package/build/lookaheadParser.d.ts +2 -0
  119. package/build/lookaheadParser.js +14 -0
  120. package/build/negativeLookaheadParser.js +22 -16
  121. package/build/negativeLookaheadParser.test.d.ts +1 -0
  122. package/build/negativeLookaheadParser.test.js +30 -0
  123. package/build/noStackCaptureOverheadError.d.ts +4 -0
  124. package/build/noStackCaptureOverheadError.js +9 -0
  125. package/build/noStackCaptureOverheadError.test.d.ts +1 -0
  126. package/build/noStackCaptureOverheadError.test.js +15 -0
  127. package/build/nonEmptyArrayParser.d.ts +2 -0
  128. package/build/nonEmptyArrayParser.js +32 -0
  129. package/build/nonEmptyArrayParser.test.d.ts +1 -0
  130. package/build/nonEmptyArrayParser.test.js +17 -0
  131. package/build/optionalParser.js +2 -2
  132. package/build/parser.d.ts +11 -1
  133. package/build/parser.js +82 -32
  134. package/build/parser.test.js +141 -25
  135. package/build/parserAccessorParser.js +9 -1
  136. package/build/parserConsumedSequenceParser.d.ts +1 -1
  137. package/build/parserConsumedSequenceParser.js +21 -16
  138. package/build/parserContext.d.ts +22 -6
  139. package/build/parserContext.js +113 -57
  140. package/build/parserContext.test.js +33 -2
  141. package/build/parserCreatorCompose.d.ts +1 -0
  142. package/build/parserCreatorCompose.js +8 -2
  143. package/build/parserError.d.ts +605 -40
  144. package/build/parserError.js +98 -53
  145. package/build/parserImplementationInvariant.d.ts +1 -1
  146. package/build/parserImplementationInvariant.js +2 -2
  147. package/build/parserInputCompanion.d.ts +15 -0
  148. package/build/parserInputCompanion.js +38 -0
  149. package/build/promiseCompose.d.ts +1 -1
  150. package/build/promiseCompose.js +11 -1
  151. package/build/promiseSettled.d.ts +1 -0
  152. package/build/promiseSettled.js +4 -0
  153. package/build/separatedArrayParser.d.ts +2 -0
  154. package/build/separatedArrayParser.js +39 -0
  155. package/build/separatedArrayParser.test.d.ts +1 -0
  156. package/build/separatedArrayParser.test.js +21 -0
  157. package/build/separatedNonEmptyArrayParser.d.ts +2 -0
  158. package/build/separatedNonEmptyArrayParser.js +40 -0
  159. package/build/separatedNonEmptyArrayParser.test.d.ts +1 -0
  160. package/build/separatedNonEmptyArrayParser.test.js +66 -0
  161. package/build/sequenceBuffer.d.ts +10 -0
  162. package/build/sequenceBuffer.js +54 -2
  163. package/build/sequenceBuffer.test.js +57 -0
  164. package/build/sequenceTerminatedSequenceParser.d.ts +5 -0
  165. package/build/sequenceTerminatedSequenceParser.js +32 -0
  166. package/build/sequenceTerminatedSequenceParser.test.d.ts +1 -0
  167. package/build/sequenceTerminatedSequenceParser.test.js +37 -0
  168. package/build/sequenceUnparser.d.ts +1 -1
  169. package/build/skipParser.d.ts +1 -1
  170. package/build/skipParser.js +4 -2
  171. package/build/skipToParser.d.ts +2 -0
  172. package/build/skipToParser.js +11 -0
  173. package/build/sliceBoundedParser.d.ts +1 -1
  174. package/build/sliceBoundedParser.js +7 -2
  175. package/build/sliceBoundedParser.test.js +30 -1
  176. package/build/smali.d.ts +1 -0
  177. package/build/smali.js +21 -0
  178. package/build/smaliParser.d.ts +68 -0
  179. package/build/smaliParser.js +2081 -0
  180. package/build/smaliParser.test.d.ts +1 -0
  181. package/build/smaliParser.test.js +410 -0
  182. package/build/stringFromAsyncIterable.d.ts +1 -0
  183. package/build/stringFromAsyncIterable.js +7 -0
  184. package/build/terminatedArrayParser.d.ts +3 -1
  185. package/build/terminatedArrayParser.js +79 -2
  186. package/build/terminatedArrayParser.test.d.ts +1 -0
  187. package/build/terminatedArrayParser.test.js +131 -0
  188. package/build/toAsyncIterable.d.ts +1 -0
  189. package/build/toAsyncIterable.js +7 -0
  190. package/build/toAsyncIterator.d.ts +1 -0
  191. package/build/toAsyncIterator.js +33 -0
  192. package/build/tupleParser.d.ts +4 -0
  193. package/build/tupleParser.js +1 -5
  194. package/build/unionParser.d.ts +2 -1
  195. package/build/unionParser.js +29 -14
  196. package/build/unionParser.test.d.ts +1 -0
  197. package/build/unionParser.test.js +60 -0
  198. package/build/unparser.d.ts +3 -3
  199. package/build/unparser.js +6 -4
  200. package/build/unparser.test.js +7 -19
  201. package/build/unparserContext.d.ts +2 -2
  202. package/build/unparserContext.js +2 -3
  203. package/build/unparserError.d.ts +2 -1
  204. package/build/unparserError.js +2 -1
  205. package/build/unparserImplementationInvariant.d.ts +1 -1
  206. package/build/unparserOutputCompanion.d.ts +1 -1
  207. package/build/unparserOutputCompanion.js +1 -1
  208. package/build/zipParser.d.ts +7 -2
  209. package/build/zipParser.js +36 -12
  210. package/build/zipUnparser.d.ts +7 -4
  211. package/build/zipUnparser.js +64 -45
  212. package/build/zipUnparser.test.js +15 -15
  213. package/package.json +33 -24
  214. package/src/allSettledStream.test.ts +40 -0
  215. package/src/allSettledStream.ts +47 -15
  216. package/src/androidPackage.ts +48 -0
  217. package/src/androidPackageParser.test.ts +27 -0
  218. package/src/{apkParser.test.ts.md → androidPackageParser.test.ts.md} +4 -4
  219. package/src/androidPackageParser.test.ts.snap +0 -0
  220. package/src/androidPackageParser.ts +398 -0
  221. package/src/androidPackageUnparser.test.ts +34 -0
  222. package/src/androidPackageUnparser.ts +126 -0
  223. package/src/arbitrarilySlicedAsyncInterable.ts +7 -2
  224. package/src/arbitrarilySlicedAsyncInterator.ts +4 -4
  225. package/src/arbitraryDalvikBytecode.ts +992 -0
  226. package/src/arbitraryDalvikExecutable.ts +434 -0
  227. package/src/arbitraryDosDateTime.ts +1 -0
  228. package/src/arbitraryZipStream.ts +1 -1
  229. package/src/arrayParser.test.ts +3 -3
  230. package/src/arrayParser.ts +2 -2
  231. package/src/arrayUnparser.ts +2 -2
  232. package/src/backsmali.ts +74 -0
  233. package/src/bsonParser.test.ts +12 -14
  234. package/src/bsonParser.ts +13 -2
  235. package/src/customInvariant.ts +8 -12
  236. package/src/dalvikBytecodeParser/formatParsers.ts +780 -0
  237. package/src/dalvikBytecodeParser/formatSizes.ts +35 -0
  238. package/src/dalvikBytecodeParser/operationFormats.ts +226 -0
  239. package/src/dalvikBytecodeParser.ts +2873 -0
  240. package/src/dalvikBytecodeUnparser/formatUnparsers.ts +442 -0
  241. package/src/dalvikBytecodeUnparser.test.ts +44 -0
  242. package/src/dalvikBytecodeUnparser.ts +758 -0
  243. package/src/dalvikExecutable.ts +282 -0
  244. package/src/dalvikExecutableParser/stringSyntaxParser.ts +145 -0
  245. package/src/dalvikExecutableParser/typeParsers.ts +74 -0
  246. package/src/dalvikExecutableParser/typedNumbers.ts +57 -0
  247. package/src/dalvikExecutableParser.test.ts +89 -0
  248. package/src/dalvikExecutableParser.test.ts.md +634 -0
  249. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  250. package/src/dalvikExecutableParser.ts +3245 -0
  251. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +363 -0
  252. package/src/dalvikExecutableUnparser/annotationUnparsers.ts +135 -0
  253. package/src/dalvikExecutableUnparser/poolBuilders.ts +189 -0
  254. package/src/dalvikExecutableUnparser/poolScanners.ts +297 -0
  255. package/src/dalvikExecutableUnparser/sectionUnparsers.ts +683 -0
  256. package/src/dalvikExecutableUnparser/utils.ts +149 -0
  257. package/src/dalvikExecutableUnparser.test.ts +57 -0
  258. package/src/dalvikExecutableUnparser.ts +581 -0
  259. package/src/debugLogInputParser.ts +28 -0
  260. package/src/debugLogParser.ts +19 -3
  261. package/src/disjunctionParser.ts +12 -7
  262. package/src/elementTerminatedArrayParser.test.ts +99 -0
  263. package/src/elementTerminatedArrayParser.ts +31 -0
  264. package/src/elementTerminatedSequenceArrayParser.test.ts +52 -0
  265. package/src/elementTerminatedSequenceArrayParser.ts +52 -0
  266. package/src/elementTerminatedSequenceParser.test.ts +52 -0
  267. package/src/elementTerminatedSequenceParser.ts +43 -0
  268. package/src/endOfInputParser.ts +1 -1
  269. package/src/exactElementParser.ts +17 -11
  270. package/src/exactElementSwitchParser.ts +41 -0
  271. package/src/exactSequenceParser.ts +23 -2
  272. package/src/fetchCid.test.ts +20 -0
  273. package/src/fetchCid.ts +121 -0
  274. package/src/fixedLengthSequenceParser.test.ts +75 -0
  275. package/src/fixedLengthSequenceParser.ts +28 -1
  276. package/src/hasExecutable.ts +11 -0
  277. package/src/highResolutionTimer.ts +49 -0
  278. package/src/inputReader.test.ts +204 -8
  279. package/src/inputReader.ts +76 -3
  280. package/src/inputReaderState.ts +33 -0
  281. package/src/inspect.ts +9 -0
  282. package/src/javaKeyStoreParser.test.ts +12 -15
  283. package/src/javaKeyStoreParser.ts +2 -6
  284. package/src/jsonParser.test.ts +2 -4
  285. package/src/jsonParser.ts +46 -62
  286. package/src/lazyMessageError.test.ts +21 -0
  287. package/src/lazyMessageError.ts +88 -0
  288. package/src/leb128Parser.test.ts +173 -0
  289. package/src/leb128Parser.ts +125 -0
  290. package/src/lookaheadParser.ts +19 -0
  291. package/src/negativeLookaheadParser.test.ts +49 -0
  292. package/src/negativeLookaheadParser.ts +27 -15
  293. package/src/noStackCaptureOverheadError.test.ts +17 -0
  294. package/src/noStackCaptureOverheadError.ts +12 -0
  295. package/src/nonEmptyArrayParser.test.ts +21 -0
  296. package/src/nonEmptyArrayParser.ts +44 -0
  297. package/src/optionalParser.ts +3 -2
  298. package/src/parser.test.ts +203 -31
  299. package/src/parser.test.ts.md +34 -27
  300. package/src/parser.test.ts.snap +0 -0
  301. package/src/parser.ts +172 -45
  302. package/src/parserAccessorParser.ts +12 -2
  303. package/src/parserConsumedSequenceParser.ts +26 -17
  304. package/src/parserContext.test.ts +37 -2
  305. package/src/parserContext.ts +185 -79
  306. package/src/parserCreatorCompose.ts +20 -2
  307. package/src/parserError.ts +144 -61
  308. package/src/parserImplementationInvariant.ts +3 -3
  309. package/src/parserInputCompanion.ts +55 -0
  310. package/src/promiseCompose.ts +17 -3
  311. package/src/promiseSettled.ts +6 -0
  312. package/src/separatedArrayParser.test.ts +34 -0
  313. package/src/separatedArrayParser.ts +55 -0
  314. package/src/separatedNonEmptyArrayParser.test.ts +117 -0
  315. package/src/separatedNonEmptyArrayParser.ts +61 -0
  316. package/src/sequenceBuffer.test.ts +70 -0
  317. package/src/sequenceBuffer.ts +88 -2
  318. package/src/sequenceTerminatedSequenceParser.test.ts +58 -0
  319. package/src/sequenceTerminatedSequenceParser.ts +62 -0
  320. package/src/sequenceUnparser.ts +2 -2
  321. package/src/skipParser.ts +7 -5
  322. package/src/skipToParser.ts +16 -0
  323. package/src/sliceBoundedParser.test.ts +35 -1
  324. package/src/sliceBoundedParser.ts +19 -1
  325. package/src/smali.ts +29 -0
  326. package/src/smaliParser.test.ts +443 -0
  327. package/src/smaliParser.test.ts.md +3907 -0
  328. package/src/smaliParser.test.ts.snap +0 -0
  329. package/src/smaliParser.ts +3348 -0
  330. package/src/stringFromAsyncIterable.ts +9 -0
  331. package/src/terminatedArrayParser.test.ts +258 -0
  332. package/src/terminatedArrayParser.ts +109 -6
  333. package/src/toAsyncIterable.ts +7 -0
  334. package/src/toAsyncIterator.ts +48 -0
  335. package/src/tupleParser.ts +8 -5
  336. package/src/uint8Array.ts +2 -3
  337. package/src/unionParser.test.ts +78 -0
  338. package/src/unionParser.ts +47 -21
  339. package/src/unparser.test.ts +18 -34
  340. package/src/unparser.ts +13 -9
  341. package/src/unparserContext.ts +9 -13
  342. package/src/unparserError.ts +2 -1
  343. package/src/unparserImplementationInvariant.ts +1 -1
  344. package/src/unparserOutputCompanion.ts +1 -1
  345. package/src/zip.ts +2 -6
  346. package/src/zipParser.ts +71 -20
  347. package/src/zipUnparser.test.ts +19 -19
  348. package/src/zipUnparser.ts +139 -90
  349. package/tsconfig.json +7 -1
  350. package/xo.config.ts +15 -0
  351. package/.yarn/releases/yarn-4.5.3.cjs +0 -934
  352. package/build/apk.d.ts +0 -39
  353. package/build/apkParser.d.ts +0 -16
  354. package/build/apkParser.js +0 -164
  355. package/build/apkParser.test.js +0 -22
  356. package/build/apkUnparser.d.ts +0 -4
  357. package/build/apkUnparser.js +0 -90
  358. package/build/apkUnparser.test.js +0 -26
  359. package/build/arbitraryDosDate.d.ts +0 -2
  360. package/build/arbitraryDosDate.js +0 -8
  361. package/build/arbitraryZipEntry.d.ts +0 -3
  362. package/build/arbitraryZipEntry.js +0 -26
  363. package/build/createDisjunctionParser.d.ts +0 -2
  364. package/build/createDisjunctionParser.js +0 -47
  365. package/build/createExactParser.d.ts +0 -2
  366. package/build/createExactParser.js +0 -12
  367. package/build/createSequentialUnionParser.d.ts +0 -2
  368. package/build/createSequentialUnionParser.js +0 -69
  369. package/build/fixedLengthChunkParser.d.ts +0 -2
  370. package/build/fixedLengthChunkParser.js +0 -12
  371. package/build/fixedLengthParser.d.ts +0 -2
  372. package/build/fixedLengthParser.js +0 -12
  373. package/build/inputChunkBuffer.d.ts +0 -15
  374. package/build/inputChunkBuffer.js +0 -40
  375. package/build/inputChunkBuffer.test.js +0 -34
  376. package/build/inputCompanion.d.ts +0 -18
  377. package/build/inputCompanion.js +0 -28
  378. package/build/invariantDefined.d.ts +0 -1
  379. package/build/invariantDefined.js +0 -5
  380. package/build/invariantIdentity.d.ts +0 -3
  381. package/build/invariantIdentity.js +0 -5
  382. package/build/javaKeystoreParser.d.ts +0 -2
  383. package/build/javaKeystoreParser.js +0 -7
  384. package/build/jsonParser2.d.ts +0 -3
  385. package/build/jsonParser2.js +0 -52
  386. package/build/jsonParser2.test.js +0 -22
  387. package/build/negativeLookahead.d.ts +0 -2
  388. package/build/negativeLookahead.js +0 -18
  389. package/build/parserCompose.d.ts +0 -3
  390. package/build/parserCompose.js +0 -7
  391. package/build/parserImplementationInvariantInvariant.d.ts +0 -3
  392. package/build/parserImplementationInvariantInvariant.js +0 -15
  393. package/build/parserInvariant.d.ts +0 -4
  394. package/build/parserInvariant.js +0 -11
  395. package/build/promiseFish.d.ts +0 -1
  396. package/build/promiseFish.js +0 -3
  397. package/build/sequenceParser.d.ts +0 -3
  398. package/build/sequenceParser.js +0 -10
  399. package/build/terminatedSequenceParser.d.ts +0 -2
  400. package/build/terminatedSequenceParser.js +0 -24
  401. package/build/unparserInputCompanion.d.ts +0 -15
  402. package/build/unparserInputCompanion.js +0 -13
  403. package/build/zipEntry.d.ts +0 -28
  404. package/build/zipFile.d.ts +0 -32
  405. package/build/zipFileEntry.d.ts +0 -6
  406. package/src/apk.ts +0 -48
  407. package/src/apkParser.test.ts +0 -30
  408. package/src/apkParser.test.ts.snap +0 -0
  409. package/src/apkParser.ts +0 -392
  410. package/src/apkUnparser.test.ts +0 -37
  411. package/src/apkUnparser.ts +0 -120
  412. package/src/invariantDefined.ts +0 -6
  413. package/src/invariantIdentity.ts +0 -8
  414. /package/build/{apk.js → androidPackage.js} +0 -0
  415. /package/build/{apkParser.test.d.ts → androidPackageParser.test.d.ts} +0 -0
  416. /package/build/{apkUnparser.test.d.ts → androidPackageUnparser.test.d.ts} +0 -0
  417. /package/build/{arbitraryDosPermissions.d.ts → dalvikBytecodeUnparser.test.d.ts} +0 -0
  418. /package/build/{arbitraryDosPermissions.js → dalvikExecutableParser.test.d.ts} +0 -0
  419. /package/build/{inputChunkBuffer.test.d.ts → dalvikExecutableParserAgainstSmaliParser.test.d.ts} +0 -0
  420. /package/build/{jsonParser2.test.d.ts → dalvikExecutableUnparser.test.d.ts} +0 -0
  421. /package/build/{parserParsingInvariant.d.ts → elementTerminatedArrayParser.test.d.ts} +0 -0
  422. /package/build/{parserParsingInvariant.js → elementTerminatedSequenceArrayParser.test.d.ts} +0 -0
  423. /package/build/{zipEntry.js → elementTerminatedSequenceParser.test.d.ts} +0 -0
  424. /package/build/{zipFile.js → fetchCid.test.d.ts} +0 -0
  425. /package/build/{zipFileEntry.js → fixedLengthSequenceParser.test.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+
2
+ class NoStackCaptureOverheadErrorClass extends Error {}
3
+
4
+ function NoStackCaptureOverheadErrorConstructor(this: Error, message: string) {
5
+ this.name = 'NoStackCaptureOverheadError';
6
+ this.message = message;
7
+ this.stack = 'This stack is intentionally left blank to avoid capture overhead.';
8
+ }
9
+
10
+ NoStackCaptureOverheadErrorConstructor.prototype = Object.create(Error.prototype);
11
+
12
+ export const NoStackCaptureOverheadError = NoStackCaptureOverheadErrorConstructor as unknown as typeof NoStackCaptureOverheadErrorClass
@@ -0,0 +1,21 @@
1
+ import test from 'ava';
2
+ import { createNonEmptyArrayParser } from './nonEmptyArrayParser.js';
3
+ import { type Parser, runParser } from './parser.js';
4
+ import { stringParserInputCompanion } from './parserInputCompanion.js';
5
+ import { createExactElementParser } from './exactElementParser.js';
6
+
7
+ test('empty array does not match', async t => {
8
+ const parser: Parser<string[], string> = createNonEmptyArrayParser(createExactElementParser('0'));
9
+
10
+ await t.throwsAsync(async () => runParser(parser, '', stringParserInputCompanion), {
11
+ any: true,
12
+ message: /Expected .* to match at least once/,
13
+ });
14
+ });
15
+
16
+ test('non-empty array matches', async t => {
17
+ const parser: Parser<string[], string> = createNonEmptyArrayParser(createExactElementParser('0'));
18
+ const result = await runParser(parser, '0', stringParserInputCompanion);
19
+
20
+ t.deepEqual(result, [ '0' ]);
21
+ });
@@ -0,0 +1,44 @@
1
+ import { getParserName, type Parser, setParserName } from './parser.js';
2
+ import { isParserParsingFailedError, ParserParsingFailedError } from './parserError.js';
3
+
4
+ export const createNonEmptyArrayParser = <ElementOutput, Sequence>(
5
+ elementParser: Parser<ElementOutput, Sequence>,
6
+ ): Parser<ElementOutput[], Sequence> => {
7
+ const nonEmptyArrayParser: Parser<ElementOutput[], Sequence> = async parserContext => {
8
+ const elements: ElementOutput[] = [];
9
+
10
+ while (true) {
11
+ const elementParserContext = parserContext.lookahead();
12
+ const initialPosition = elementParserContext.position;
13
+ try {
14
+ const element = await elementParser(elementParserContext);
15
+ if (elementParserContext.position === initialPosition) {
16
+ break;
17
+ }
18
+
19
+ elements.push(element);
20
+ elementParserContext.unlookahead();
21
+ } catch (error) {
22
+ if (isParserParsingFailedError(error)) {
23
+ break;
24
+ }
25
+
26
+ throw error;
27
+ } finally {
28
+ elementParserContext.dispose();
29
+ }
30
+ }
31
+
32
+ parserContext.invariant(
33
+ elements.length > 0,
34
+ 'Expected elementParser (%s) to match at least once',
35
+ getParserName(elementParser, 'anonymousNonEmptyArrayChild'),
36
+ );
37
+
38
+ return elements;
39
+ };
40
+
41
+ setParserName(nonEmptyArrayParser, getParserName(elementParser, 'anonymousNonEmptyArrayChild') + '+');
42
+
43
+ return nonEmptyArrayParser;
44
+ };
@@ -1,17 +1,18 @@
1
1
  import { getParserName, type Parser, setParserName } from './parser.js';
2
- import { ParserParsingFailedError } from './parserError.js';
2
+ import { isParserParsingFailedError, ParserParsingFailedError } from './parserError.js';
3
3
 
4
4
  export const createOptionalParser = <Output, Sequence>(
5
5
  childParser: Parser<Output, Sequence>,
6
6
  ): Parser<undefined | Output, Sequence> => {
7
7
  const optionalParser: Parser<undefined | Output, Sequence> = async parserContext => {
8
8
  const childParserContext = parserContext.lookahead();
9
+
9
10
  try {
10
11
  const value = await childParser(childParserContext);
11
12
  childParserContext.unlookahead();
12
13
  return value;
13
14
  } catch (error) {
14
- if (error instanceof ParserParsingFailedError) {
15
+ if (isParserParsingFailedError(error)) {
15
16
  return undefined;
16
17
  }
17
18
 
@@ -1,36 +1,41 @@
1
1
  import test from 'ava';
2
2
  import invariant from 'invariant';
3
3
  import { createUnionParser } from './unionParser.js';
4
- import { type Parser, runParser } from './parser.js';
4
+ import { type Parser, runParser, runParserWithRemainingInput } from './parser.js';
5
5
  import { stringParserInputCompanion, uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
6
6
  import {
7
- ParserParsingInvariantError, ParserParsingJoinAllError, ParserParsingJoinDeepestError, ParserParsingJoinError, ParserParsingJoinFurthestError, ParserParsingJoinNoneError,
7
+ isParserParsingJoinError,
8
+ normalParserErrorModule,
9
+ ParserError,
10
+ ParserParsingJoinError,
8
11
  } from './parserError.js';
9
12
  import { createTupleParser } from './tupleParser.js';
10
13
  import { promiseCompose } from './promiseCompose.js';
11
14
  import { createDisjunctionParser } from './disjunctionParser.js';
12
- import { createExactSequenceParser } from './exactSequenceParser.js';
15
+ import { createExactSequenceNaiveParser } from './exactSequenceParser.js';
13
16
  import { createArrayParser } from './arrayParser.js';
14
17
  import { createElementParser } from './elementParser.js';
18
+ import { toAsyncIterable } from './toAsyncIterable.js';
19
+ import { stringFromAsyncIterable } from './stringFromAsyncIterable.js';
15
20
 
16
21
  const aUnionParser = createUnionParser<string, string>([
17
- createExactSequenceParser('1'),
18
- createExactSequenceParser('aa'),
19
- createExactSequenceParser('AAA'),
22
+ createExactSequenceNaiveParser('1'),
23
+ createExactSequenceNaiveParser('aa'),
24
+ createExactSequenceNaiveParser('AAA'),
20
25
  ]);
21
26
 
22
27
  const abDisjunctionParser = createDisjunctionParser<string, string>([
23
28
  aUnionParser,
24
- createExactSequenceParser('2'),
25
- createExactSequenceParser('bb'),
26
- createExactSequenceParser('BBB'),
29
+ createExactSequenceNaiveParser('2'),
30
+ createExactSequenceNaiveParser('bb'),
31
+ createExactSequenceNaiveParser('BBB'),
27
32
  ]);
28
33
 
29
34
  const abcUnionParser = createUnionParser<string, string>([
30
35
  abDisjunctionParser,
31
- createExactSequenceParser('final_3'),
32
- createExactSequenceParser('final_cc'),
33
- createExactSequenceParser('final_CCC'),
36
+ createExactSequenceNaiveParser('final_3'),
37
+ createExactSequenceNaiveParser('final_cc'),
38
+ createExactSequenceNaiveParser('final_CCC'),
34
39
  ]);
35
40
 
36
41
  const sampleParser = promiseCompose(
@@ -46,64 +51,66 @@ async function * asyncIteratorFromString(string: string) {
46
51
  yield string;
47
52
  }
48
53
 
49
- function sortChildErrors(error: ParserParsingJoinNoneError) {
54
+ function sortChildErrors(error: ParserParsingJoinError) {
50
55
  error.childErrors.sort((a, b) => a.message.localeCompare(b.message));
51
56
 
52
57
  for (const childError of error.childErrors) {
53
- if (childError instanceof ParserParsingJoinError) {
58
+ if (isParserParsingJoinError(childError)) {
54
59
  sortChildErrors(childError);
55
60
  }
56
61
  }
57
62
  }
58
63
 
59
- function removeStackLocations(errorStack: string) {
60
- return errorStack.replaceAll(/((at [^\n]+)[\s\n]+)+(at [^\n]+)/g, 'at [LOCATIONS]');
64
+ function removeStackLocations(errorStack: string | undefined) {
65
+ return errorStack?.replaceAll(/((at [^\n]+)[\s\n]+)+(at [^\n]+)/g, 'at [LOCATIONS]');
61
66
  }
62
67
 
63
68
  test('errorJoinMode: none', async t => {
64
69
  const error = await t.throwsAsync(runParser(sampleParser, asyncIteratorFromString('1bbfinal_CC!'), stringParserInputCompanion, {
65
70
  errorJoinMode: 'none',
71
+ errorStack: true,
66
72
  }), {
67
- instanceOf: ParserParsingJoinNoneError,
73
+ instanceOf: normalParserErrorModule.ParserParsingJoinNoneError,
68
74
  });
69
75
 
70
76
  t.is(error.position, 12);
71
77
  t.deepEqual(error.childErrors, []);
72
78
 
73
- t.snapshot(removeStackLocations(error.stack!));
79
+ t.snapshot(removeStackLocations(error.stack));
74
80
  });
75
81
 
76
82
  test('errorJoinMode: all', async t => {
77
83
  const error = await t.throwsAsync(runParser(sampleParser, asyncIteratorFromString('1bbfinal_CC!'), stringParserInputCompanion, {
78
84
  errorJoinMode: 'all',
85
+ errorStack: true,
79
86
  }), {
80
- instanceOf: ParserParsingJoinAllError,
87
+ instanceOf: normalParserErrorModule.ParserParsingJoinAllError,
81
88
  });
82
89
 
83
90
  sortChildErrors(error);
84
91
 
85
- t.snapshot(removeStackLocations(error.stack!));
92
+ t.snapshot(removeStackLocations(error.stack));
86
93
 
87
94
  t.is(error.position, 12, 'error.position');
88
95
  t.is(error.childErrors.length, 4);
89
96
 
90
97
  const error1 = error.childErrors.at(-1)!;
91
98
 
92
- invariant(error1 instanceof ParserParsingJoinAllError, 'error1 instanceof ParserParsingJoinAllError');
99
+ invariant(isParserParsingJoinError(error1), 'error1 instanceof ParserParsingJoinAllError');
93
100
 
94
101
  t.is(error1.position, 3, 'error1.position');
95
102
  t.is(error1.childErrors.length, 4);
96
103
 
97
104
  const error2 = error1.childErrors.at(-1)!;
98
105
 
99
- invariant(error2 instanceof ParserParsingJoinAllError, 'error2 instanceof ParserParsingJoinAllError');
106
+ invariant(isParserParsingJoinError(error2), 'error2 instanceof ParserParsingJoinAllError');
100
107
 
101
108
  t.is(error2.position, 4, 'error2.position');
102
109
  t.is(error2.childErrors.length, 3);
103
110
 
104
111
  const error3 = error2.childErrors.at(-1)!;
105
112
 
106
- invariant(error3 instanceof ParserParsingInvariantError, 'error3 instanceof ParserParsingInvariantError');
113
+ invariant(error3.name === 'ParserParsingInvariantError', 'error3 instanceof ParserParsingInvariantError');
107
114
 
108
115
  t.is(error3.position, 4, 'error3.position');
109
116
  });
@@ -111,34 +118,35 @@ test('errorJoinMode: all', async t => {
111
118
  test('errorJoinMode: deepest', async t => {
112
119
  const error = await t.throwsAsync(runParser(sampleParser, asyncIteratorFromString('1bbfinal_CC!'), stringParserInputCompanion, {
113
120
  errorJoinMode: 'deepest',
121
+ errorStack: true,
114
122
  }), {
115
- instanceOf: ParserParsingJoinDeepestError,
123
+ instanceOf: normalParserErrorModule.ParserParsingJoinDeepestError,
116
124
  });
117
125
 
118
126
  sortChildErrors(error);
119
127
 
120
- t.snapshot(removeStackLocations(error.stack!));
128
+ t.snapshot(removeStackLocations(error.stack));
121
129
 
122
130
  t.is(error.position, 12);
123
131
  t.is(error.childErrors.length, 1);
124
132
 
125
133
  const error1 = error.childErrors.at(-1)!;
126
134
 
127
- invariant(error1 instanceof ParserParsingJoinDeepestError, 'error1 instanceof ParserParsingJoinDeepestError');
135
+ invariant(isParserParsingJoinError(error1), 'error1 instanceof ParserParsingJoinDeepestError');
128
136
 
129
137
  t.is(error1.position, 3);
130
138
  t.is(error1.childErrors.length, 1);
131
139
 
132
140
  const error2 = error1.childErrors.at(-1)!;
133
141
 
134
- invariant(error2 instanceof ParserParsingJoinDeepestError, 'error2 instanceof ParserParsingJoinDeepestError');
142
+ invariant(isParserParsingJoinError(error2), 'error2 instanceof ParserParsingJoinDeepestError');
135
143
 
136
144
  t.is(error2.position, 4);
137
145
  t.is(error2.childErrors.length, 3);
138
146
 
139
147
  const error3 = error2.childErrors.at(-1)!;
140
148
 
141
- invariant(error3 instanceof ParserParsingInvariantError, 'error3 instanceof ParserParsingInvariantError');
149
+ invariant(error3.name === 'ParserParsingInvariantError', 'error3 instanceof ParserParsingInvariantError');
142
150
 
143
151
  t.is(error3.position, 4);
144
152
  });
@@ -146,24 +154,83 @@ test('errorJoinMode: deepest', async t => {
146
154
  test('errorJoinMode: furthest', async t => {
147
155
  const error = await t.throwsAsync(runParser(sampleParser, asyncIteratorFromString('1bbfinal_CC!'), stringParserInputCompanion, {
148
156
  errorJoinMode: 'furthest',
157
+ errorStack: true,
149
158
  }), {
150
- instanceOf: ParserParsingJoinFurthestError,
159
+ instanceOf: normalParserErrorModule.ParserParsingJoinFurthestError,
151
160
  });
152
161
 
153
162
  sortChildErrors(error);
154
163
 
155
- t.snapshot(removeStackLocations(error.stack!));
164
+ t.snapshot(removeStackLocations(error.stack));
156
165
 
157
166
  t.is(error.position, 12);
158
167
  t.is(error.childErrors.length, 1);
159
168
 
160
169
  const error1 = error.childErrors.at(-1)!;
161
170
 
162
- invariant(error1 instanceof ParserParsingInvariantError, 'error1 instanceof ParserParsingInvariantError');
171
+ invariant(error1.name === 'ParserParsingInvariantError', 'error1 instanceof ParserParsingInvariantError');
163
172
 
164
173
  t.is(error1.position, 12);
165
174
  });
166
175
 
176
+ test('errorStack: false', async t => {
177
+ const error = await t.throwsAsync(runParser(sampleParser, 'nothing like what sampleParser expects', stringParserInputCompanion, {
178
+ errorJoinMode: 'all',
179
+ }), {
180
+ instanceOf: normalParserErrorModule.ParserParsingJoinAllError,
181
+ });
182
+
183
+ t.regex(error.stack!, /intentionally left blank/);
184
+ t.regex(error.stack!, /errorStack: true/);
185
+ });
186
+
187
+ test('errorStack: true', async t => {
188
+ const error = await t.throwsAsync(runParser(sampleParser, 'nothing like what sampleParser expects', stringParserInputCompanion, {
189
+ errorJoinMode: 'all',
190
+ errorStack: true,
191
+ }), {
192
+ instanceOf: normalParserErrorModule.ParserParsingJoinAllError,
193
+ });
194
+
195
+ t.regex(error.stack!, /exactSequenceParser/);
196
+ });
197
+
198
+ test('errorJoinMode: none, errorStack: false', async t => {
199
+ const error = await t.throwsAsync(runParser(sampleParser, asyncIteratorFromString('1bbfinal_CC!'), stringParserInputCompanion, {
200
+ errorJoinMode: 'none',
201
+ errorStack: false,
202
+ }), {
203
+ instanceOf: normalParserErrorModule.ParserParsingJoinNoneError,
204
+ });
205
+
206
+ t.is(error.position, 12);
207
+ t.deepEqual(error.childErrors, []);
208
+
209
+ t.snapshot(removeStackLocations(error.stack));
210
+ });
211
+
212
+ test('retrows normal errors untouched', async t => {
213
+ class CustomError extends Error {};
214
+ const originalCustomError1 = new CustomError('This is a custom error');
215
+ const originalCustomError2 = new Error('This is a normal error');
216
+
217
+ const error1 = await t.throwsAsync(runParser(() => {
218
+ throw originalCustomError1;
219
+ }, 'foo', stringParserInputCompanion), {
220
+ instanceOf: CustomError,
221
+ });
222
+
223
+ t.is(error1, originalCustomError1);
224
+
225
+ const error2 = await t.throwsAsync(runParser(() => {
226
+ throw originalCustomError2;
227
+ }, 'foo', stringParserInputCompanion), {
228
+ instanceOf: Error,
229
+ });
230
+
231
+ t.is(error2, originalCustomError2);
232
+ });
233
+
167
234
  test('throws on parserInputCompanion type mismatch', async t => {
168
235
  const anythingParser: Parser<any, any> = createArrayParser(createElementParser());
169
236
 
@@ -176,3 +243,108 @@ test('throws on parserInputCompanion type mismatch', async t => {
176
243
  message: /input companion/,
177
244
  });
178
245
  });
246
+
247
+ test('thrown error has input reader state', async t => {
248
+ const error = await t.throwsAsync(
249
+ runParser(
250
+ createTupleParser([
251
+ createExactSequenceNaiveParser('foo'),
252
+ createExactSequenceNaiveParser('bar'),
253
+ ]),
254
+ (async function * () {
255
+ yield 'foo';
256
+ yield 'qux';
257
+ yield 'bar';
258
+ })(),
259
+ stringParserInputCompanion,
260
+ {
261
+ errorStack: true,
262
+ },
263
+ ),
264
+ {
265
+ instanceOf: normalParserErrorModule.ParserParsingInvariantError,
266
+ },
267
+ );
268
+
269
+ t.is(error.position, 4);
270
+
271
+ invariant(error.inputReaderSate, 'error.inputReaderSate');
272
+
273
+ const {
274
+ consumedBufferedSequences,
275
+ unconsumedBufferedSequences,
276
+ unbufferedSequences,
277
+ position,
278
+ ...inputReaderStateRest
279
+ } = error.inputReaderSate;
280
+
281
+ t.is(position, 4);
282
+ t.deepEqual(inputReaderStateRest, {});
283
+
284
+ const unbufferedSequencesArray = [];
285
+
286
+ if (unbufferedSequences) {
287
+ for await (const sequence of toAsyncIterable(unbufferedSequences)) {
288
+ unbufferedSequencesArray.push(sequence);
289
+ }
290
+ }
291
+
292
+ t.deepEqual(consumedBufferedSequences, [ 'q' ]);
293
+ t.deepEqual(unconsumedBufferedSequences, [ 'ux' ]);
294
+ t.deepEqual(unbufferedSequencesArray, [ 'bar' ]);
295
+ });
296
+
297
+ test('runParser throws with remaining input', async t => {
298
+ const parser: Parser<string, string> = createExactSequenceNaiveParser('foo');
299
+ const error = await t.throwsAsync(async () => runParser(parser, 'foobar', stringParserInputCompanion), {
300
+ any: true,
301
+ name: 'ParserUnexpectedRemainingInputError',
302
+ message: /remaining input/,
303
+ }) as ParserError;
304
+
305
+ t.is(error.position, 3);
306
+
307
+ const {
308
+ position,
309
+ consumedBufferedSequences,
310
+ unconsumedBufferedSequences,
311
+ unbufferedSequences,
312
+ ...inputReaderStateRest
313
+ } = error.inputReaderSate!;
314
+
315
+ t.deepEqual(inputReaderStateRest, {});
316
+ t.is(position, 3);
317
+ t.deepEqual(consumedBufferedSequences, [ 'foo' ]);
318
+ t.deepEqual(unconsumedBufferedSequences, [ 'bar' ]);
319
+ t.truthy(unbufferedSequences);
320
+ });
321
+
322
+ test('runParser does not throw without remaining input', async t => {
323
+ const parser: Parser<string, string> = createExactSequenceNaiveParser('foo');
324
+ const output = await runParser(parser, 'foo', stringParserInputCompanion);
325
+
326
+ t.is(output, 'foo');
327
+ });
328
+
329
+ test('runParserWithRemainingInput with remaining input', async t => {
330
+ const parser: Parser<string, string> = createExactSequenceNaiveParser('foo');
331
+ const {
332
+ output,
333
+ remainingInput,
334
+ position,
335
+ ...resultRest
336
+ } = await runParserWithRemainingInput(parser, 'foobar', stringParserInputCompanion);
337
+
338
+ t.deepEqual(resultRest, {});
339
+ t.is(output, 'foo');
340
+ t.is(await stringFromAsyncIterable(remainingInput!), 'bar');
341
+ t.is(position, 3);
342
+ });
343
+
344
+ test('runParserWithRemainingInput without remaining input', async t => {
345
+ const parser: Parser<string, string> = createExactSequenceNaiveParser('foo');
346
+ const { output, remainingInput } = await runParserWithRemainingInput(parser, 'foo', stringParserInputCompanion);
347
+
348
+ t.is(output, 'foo');
349
+ t.is(remainingInput, undefined);
350
+ });
@@ -8,48 +8,48 @@ Generated by [AVA](https://avajs.dev).
8
8
 
9
9
  > Snapshot 1
10
10
 
11
- `ParserParsingJoinNoneError: (position: 12) No union child parser succeeded.␊
11
+ `ParserParsingJoinNoneError: No union child parser succeeded.␊
12
12
  at [LOCATIONS]`
13
13
 
14
14
  ## errorJoinMode: all
15
15
 
16
16
  > Snapshot 1
17
17
 
18
- `ParserParsingJoinAllError: (position: 12) No union child parser succeeded.␊
19
- Child error stacks, indented:␊
20
- ParserParsingInvariantError: (position: 10) Expected "3", got "C", at [LOCATIONS]␊
21
- ParserParsingInvariantError: (position: 10) Expected "c", got "C", at [LOCATIONS]␊
22
- ParserParsingJoinAllError: (position: 3) No disjunction child parser succeeded.␊
23
- Child error stacks, indented:␊
24
- ParserParsingJoinAllError: (position: 4) No union child parser succeeded.␊
25
- Child error stacks, indented:␊
26
- ParserParsingInvariantError: (position: 4) Expected "1", got "f", at [LOCATIONS]␊
27
- ParserParsingInvariantError: (position: 4) Expected "a", got "f", at [LOCATIONS]␊
28
- ParserParsingInvariantError: (position: 4) Expected "A", got "f", at [LOCATIONS]␊
29
- End of child error stacks␊
18
+ `ParserParsingJoinAllError: No union child parser succeeded.␊
19
+ All child error stacks, indented:␊
20
+ ParserParsingInvariantError: Expected "3", got "C", at [LOCATIONS]␊
21
+ ParserParsingInvariantError: Expected "c", got "C", at [LOCATIONS]␊
22
+ ParserParsingJoinAllError: No disjunction child parser succeeded.␊
23
+ All child error stacks, indented:␊
24
+ ParserParsingJoinAllError: No union child parser succeeded.␊
25
+ All child error stacks, indented:␊
26
+ ParserParsingInvariantError: Expected "1", got "f", at [LOCATIONS]␊
27
+ ParserParsingInvariantError: Expected "a", got "f", at [LOCATIONS]␊
28
+ ParserParsingInvariantError: Expected "A", got "f", at [LOCATIONS]␊
29
+ End of all child error stacks␊
30
30
  at [LOCATIONS]␊
31
- ParserParsingInvariantError: (position: 4) Expected "2", got "f", at [LOCATIONS]␊
32
- ParserParsingInvariantError: (position: 4) Expected "b", got "f", at [LOCATIONS]␊
33
- ParserParsingInvariantError: (position: 4) Expected "B", got "f", at [LOCATIONS]␊
34
- End of child error stacks␊
31
+ ParserParsingInvariantError: Expected "2", got "f", at [LOCATIONS]␊
32
+ ParserParsingInvariantError: Expected "b", got "f", at [LOCATIONS]␊
33
+ ParserParsingInvariantError: Expected "B", got "f", at [LOCATIONS]␊
34
+ End of all child error stacks␊
35
35
  at [LOCATIONS]␊
36
- ParserParsingInvariantError: (position: 12) Expected "C", got "!", at [LOCATIONS]␊
37
- End of child error stacks␊
36
+ ParserParsingInvariantError: Expected "C", got "!", at [LOCATIONS]␊
37
+ End of all child error stacks␊
38
38
  at [LOCATIONS]`
39
39
 
40
40
  ## errorJoinMode: deepest
41
41
 
42
42
  > Snapshot 1
43
43
 
44
- `ParserParsingJoinDeepestError: (position: 12) No union child parser succeeded.␊
44
+ `ParserParsingJoinDeepestError: No union child parser succeeded.␊
45
45
  Deepest child error stacks, indented:␊
46
- ParserParsingJoinDeepestError: (position: 3) No disjunction child parser succeeded.␊
46
+ ParserParsingJoinDeepestError: No disjunction child parser succeeded.␊
47
47
  Deepest child error stacks, indented:␊
48
- ParserParsingJoinDeepestError: (position: 4) No union child parser succeeded.␊
48
+ ParserParsingJoinDeepestError: No union child parser succeeded.␊
49
49
  Deepest child error stacks, indented:␊
50
- ParserParsingInvariantError: (position: 4) Expected "1", got "f", at [LOCATIONS]␊
51
- ParserParsingInvariantError: (position: 4) Expected "a", got "f", at [LOCATIONS]␊
52
- ParserParsingInvariantError: (position: 4) Expected "A", got "f", at [LOCATIONS]␊
50
+ ParserParsingInvariantError: Expected "1", got "f", at [LOCATIONS]␊
51
+ ParserParsingInvariantError: Expected "a", got "f", at [LOCATIONS]␊
52
+ ParserParsingInvariantError: Expected "A", got "f", at [LOCATIONS]␊
53
53
  End of deepest child error stacks␊
54
54
  at [LOCATIONS]␊
55
55
  End of deepest child error stacks␊
@@ -61,8 +61,15 @@ Generated by [AVA](https://avajs.dev).
61
61
 
62
62
  > Snapshot 1
63
63
 
64
- `ParserParsingJoinFurthestError: (position: 12) No union child parser succeeded.␊
64
+ `ParserParsingJoinFurthestError: No union child parser succeeded.␊
65
65
  Furthest child error stacks, indented:␊
66
- ParserParsingInvariantError: (position: 12) Expected "C", got "!", at [LOCATIONS]␊
66
+ ParserParsingInvariantError: Expected "C", got "!", at [LOCATIONS]␊
67
67
  End of furthest child error stacks␊
68
68
  at [LOCATIONS]`
69
+
70
+ ## errorJoinMode: none, errorStack: false
71
+
72
+ > Snapshot 1
73
+
74
+ `This stack is intentionally left blank to avoid capture overhead.␊
75
+ If you need a useful stack trace, pass \`errorStack: true\` to \`runParser\`, trading off some performance.`
Binary file