@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
@@ -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
- if (this.position !== lookaheadInputReader.position) {
66
- debugger;
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
- if (this.position !== lookaheadParserContext.position) {
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
- invariant(this._parentParserContext !== undefined, 'this._parentParserContext !== undefined');
89
- invariant((this._parentParserContext._exclusiveChildParserContext === undefined
90
- || this._parentParserContext._exclusiveChildParserContext === this), [
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
- ].join('\n'), this.toString(), this._parentParserContext.toString(), this._parentParserContext._exclusiveChildParserContext?.toString());
96
- invariant(this._parentParserContext.position <= this.position, 'unlookahead this._parentParserContext.position (%s) <= this.position (%s)', this._parentParserContext.position, this.position);
97
- const offset = this._inputReader.position - this._parentParserContext._inputReader.position;
98
- this._parentParserContext.skip(offset);
99
- invariant(this._parentParserContext.position === this.position, 'unlookahead this._parentParserContext.position (%s) === this.position (%s)', this._parentParserContext.position, this.position);
100
- this._inputReader = this._parentParserContext._inputReader;
101
- this._parentParserContext._exclusiveChildParserContext = this;
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
- invariant(this._parentParserContext !== undefined, 'this._parentParserContext !== undefined');
108
- invariant((this._parentParserContext._exclusiveChildParserContext === undefined
109
- || this._parentParserContext._exclusiveChildParserContext === this), [
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
- ].join('\n'), this.toString(), this._parentParserContext.toString(), this._parentParserContext._exclusiveChildParserContext?.toString());
115
- this._parentParserContext._exclusiveChildParserContext = undefined;
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 (message) {
121
- return new ParserParsingInvariantError(message, parserContext._depth, parserContext.position);
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
- invariant(childErrors.length > 0, 'childErrors.length > 0');
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 (message) {
130
- return new ParserParsingJoinNoneError(message, parserContext._depth, parserContext.position);
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 (message) {
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
- message += [
149
- '',
150
- 'Furthest child error stacks, indented:',
151
- ...furthestChildErrors.flatMap(furthestChildError => furthestChildError.stack?.split('\n').map(line => ' ' + line)),
152
- 'End of furthest child error stacks',
153
- ].join('\n');
154
- return new ParserParsingJoinFurthestError(message, parserContext._depth, furthestPosition, furthestChildErrors);
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 (message) {
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
- message += [
173
- '',
174
- 'Deepest child error stacks, indented:',
175
- ...deepestChildErrors.flatMap(deepestChildError => deepestChildError.stack?.split('\n').map(line => ' ' + line)),
176
- 'End of deepest child error stacks',
177
- ].join('\n');
178
- return new ParserParsingJoinDeepestError(message, deepestDepth, parserContext.position, deepestChildErrors);
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 (message) {
183
- message += [
184
- '',
185
- 'Child error stacks, indented:',
186
- ...childErrors.flatMap(childError => childError.stack?.split('\n').map(line => ' ' + line)),
187
- 'End of child error stacks',
188
- ].join('\n');
189
- return new ParserParsingJoinAllError(message, parserContext._depth, parserContext.position, childErrors);
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
- invariant(false, 'Unsupported errorJoinMode: %s', errorJoinMode);
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 { ParserUnexpectedEndOfInputError } from './parserError.js';
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
- instanceOf: ParserUnexpectedEndOfInputError,
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
- return (...arguments_) => {
3
+ const parserCreatorComposedOuter = (...arguments_) => {
3
4
  const parserA = f1(...arguments_);
4
- return async (parserContext) => {
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
  }