@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,152 @@
1
+ import { type Unparser } from '../unparser.js';
2
+ export declare const ubyteUnparser: Unparser<number, Uint8Array>;
3
+ export declare const byteUnparser: Unparser<number, Uint8Array>;
4
+ export declare const shortUnparser: Unparser<number, Uint8Array>;
5
+ export declare const ushortUnparser: Unparser<number, Uint8Array>;
6
+ export declare const intUnparser: Unparser<number, Uint8Array>;
7
+ export declare const uintUnparser: Unparser<number, Uint8Array>;
8
+ export declare const longUnparser: Unparser<bigint, Uint8Array>;
9
+ export declare const ulongUnparser: Unparser<bigint, Uint8Array>;
10
+ export declare const nibblesUnparser: Unparser<[number, number], Uint8Array>;
11
+ type DalvikBytecodeFormat10t = {
12
+ branchOffset: number;
13
+ };
14
+ export declare const dalvikBytecodeFormat10tUnparser: Unparser<DalvikBytecodeFormat10t, Uint8Array>;
15
+ type DalvikBytecodeFormat10x = void;
16
+ export declare const dalvikBytecodeFormat10xUnparser: Unparser<DalvikBytecodeFormat10x, Uint8Array>;
17
+ type DalvikBytecodeFormat11x = {
18
+ registers: number[];
19
+ };
20
+ export declare const dalvikBytecodeFormat11xUnparser: Unparser<DalvikBytecodeFormat11x, Uint8Array>;
21
+ type DalvikBytecodeFormat11n = {
22
+ value: number;
23
+ registers: number[];
24
+ };
25
+ export declare const dalvikBytecodeFormat11nUnparser: Unparser<DalvikBytecodeFormat11n, Uint8Array>;
26
+ type DalvikBytecodeFormat12x = {
27
+ registers: number[];
28
+ };
29
+ export declare const dalvikBytecodeFormat12xUnparser: Unparser<DalvikBytecodeFormat12x, Uint8Array>;
30
+ export declare const dalvikBytecodeFormat12xReversedUnparser: Unparser<DalvikBytecodeFormat12x, Uint8Array>;
31
+ type DalvikBytecodeFormat20t = {
32
+ branchOffset: number;
33
+ };
34
+ export declare const dalvikBytecodeFormat20tUnparser: Unparser<DalvikBytecodeFormat20t, Uint8Array>;
35
+ type DalvikBytecodeFormat21c = {
36
+ index: number;
37
+ registers: number[];
38
+ };
39
+ export declare const dalvikBytecodeFormat21cUnparser: Unparser<DalvikBytecodeFormat21c, Uint8Array>;
40
+ type DalvikBytecodeFormat21h = {
41
+ value: number;
42
+ registers: number[];
43
+ };
44
+ export declare const dalvikBytecodeFormat21hUnparser: Unparser<DalvikBytecodeFormat21h, Uint8Array>;
45
+ type DalvikBytecodeFormat21t = {
46
+ branchOffset: number;
47
+ registers: number[];
48
+ };
49
+ export declare const dalvikBytecodeFormat21tUnparser: Unparser<DalvikBytecodeFormat21t, Uint8Array>;
50
+ type DalvikBytecodeFormat21s = {
51
+ registers: number[];
52
+ value: number;
53
+ };
54
+ export declare const dalvikBytecodeFormat21sUnparser: Unparser<DalvikBytecodeFormat21s, Uint8Array>;
55
+ type DalvikBytecodeFormat22b = {
56
+ registers: number[];
57
+ value: number;
58
+ };
59
+ export declare const dalvikBytecodeFormat22bUnparser: Unparser<DalvikBytecodeFormat22b, Uint8Array>;
60
+ type DalvikBytecodeFormat22c = {
61
+ registers: number[];
62
+ index: number;
63
+ };
64
+ export declare const dalvikBytecodeFormat22cUnparser: Unparser<DalvikBytecodeFormat22c, Uint8Array>;
65
+ type DalvikBytecodeFormat22s = {
66
+ value: number;
67
+ registers: number[];
68
+ };
69
+ export declare const dalvikBytecodeFormat22sUnparser: Unparser<DalvikBytecodeFormat22s, Uint8Array>;
70
+ type DalvikBytecodeFormat22t = {
71
+ branchOffset: number;
72
+ registers: number[];
73
+ };
74
+ export declare const dalvikBytecodeFormat22tUnparser: Unparser<DalvikBytecodeFormat22t, Uint8Array>;
75
+ export declare const dalvikBytecodeFormat22tCommutativeUnparser: Unparser<DalvikBytecodeFormat22t, Uint8Array>;
76
+ type DalvikBytecodeFormat22x = {
77
+ registers: number[];
78
+ };
79
+ export declare const dalvikBytecodeFormat22xUnparser: Unparser<DalvikBytecodeFormat22x, Uint8Array>;
80
+ type DalvikBytecodeFormat23x = {
81
+ registers: number[];
82
+ };
83
+ export declare const dalvikBytecodeFormat23xUnparser: Unparser<DalvikBytecodeFormat23x, Uint8Array>;
84
+ type DalvikBytecodeFormat30t = {
85
+ branchOffset: number;
86
+ };
87
+ export declare const dalvikBytecodeFormat30tUnparser: Unparser<DalvikBytecodeFormat30t, Uint8Array>;
88
+ type DalvikBytecodeFormat31i = {
89
+ value: number;
90
+ registers: number[];
91
+ };
92
+ export declare const dalvikBytecodeFormat31iUnparser: Unparser<DalvikBytecodeFormat31i, Uint8Array>;
93
+ type DalvikBytecodeFormat31c = {
94
+ index: number;
95
+ registers: number[];
96
+ };
97
+ export declare const dalvikBytecodeFormat31cUnparser: Unparser<DalvikBytecodeFormat31c, Uint8Array>;
98
+ type DalvikBytecodeFormat31t = {
99
+ branchOffset: number;
100
+ registers: number[];
101
+ };
102
+ export declare const dalvikBytecodeFormat31tUnparser: Unparser<DalvikBytecodeFormat31t, Uint8Array>;
103
+ type DalvikBytecodeFormat32x = {
104
+ registers: number[];
105
+ };
106
+ export declare const dalvikBytecodeFormat32xUnparser: Unparser<DalvikBytecodeFormat32x, Uint8Array>;
107
+ type DalvikBytecodeFormat35c = {
108
+ index: number;
109
+ registers: number[];
110
+ };
111
+ export declare const dalvikBytecodeFormat35cUnparser: Unparser<DalvikBytecodeFormat35c, Uint8Array>;
112
+ type DalvikBytecodeFormat3rc = {
113
+ index: number;
114
+ registers: number[];
115
+ };
116
+ export declare const dalvikBytecodeFormat3rcUnparser: Unparser<DalvikBytecodeFormat3rc, Uint8Array>;
117
+ type DalvikBytecodeFormat51l = {
118
+ value: bigint;
119
+ registers: number[];
120
+ };
121
+ export declare const dalvikBytecodeFormat51lUnparser: Unparser<DalvikBytecodeFormat51l, Uint8Array>;
122
+ type DalvikBytecodeFormat45cc = {
123
+ methodIndex: number;
124
+ protoIndex: number;
125
+ registers: number[];
126
+ };
127
+ export declare const dalvikBytecodeFormat45ccUnparser: Unparser<DalvikBytecodeFormat45cc, Uint8Array>;
128
+ type DalvikBytecodeFormat4rcc = {
129
+ methodIndex: number;
130
+ protoIndex: number;
131
+ registers: number[];
132
+ };
133
+ export declare const dalvikBytecodeFormat4rccUnparser: Unparser<DalvikBytecodeFormat4rcc, Uint8Array>;
134
+ type DalvikBytecodeOperationPackedSwitchPayload = {
135
+ operation: 'packed-switch-payload';
136
+ value: number;
137
+ branchOffsets: number[];
138
+ };
139
+ export declare const dalvikBytecodeOperationPackedSwitchPayloadUnparser: Unparser<DalvikBytecodeOperationPackedSwitchPayload, Uint8Array>;
140
+ type DalvikBytecodeOperationSparseSwitchPayload = {
141
+ operation: 'sparse-switch-payload';
142
+ keys: number[];
143
+ branchOffsets: number[];
144
+ };
145
+ export declare const dalvikBytecodeOperationSparseSwitchPayloadUnparser: Unparser<DalvikBytecodeOperationSparseSwitchPayload, Uint8Array>;
146
+ type DalvikBytecodeOperationFillArrayDataPayload = {
147
+ operation: 'fill-array-data-payload';
148
+ elementWidth: number;
149
+ data: number[];
150
+ };
151
+ export declare const dalvikBytecodeOperationFillArrayDataPayloadUnparser: Unparser<DalvikBytecodeOperationFillArrayDataPayload, Uint8Array>;
152
+ export {};
@@ -0,0 +1,225 @@
1
+ // Basic type unparsers
2
+ export const ubyteUnparser = async function* (input) {
3
+ const buffer = Buffer.alloc(1);
4
+ buffer.writeUInt8(input);
5
+ yield buffer;
6
+ };
7
+ export const byteUnparser = async function* (input) {
8
+ const buffer = Buffer.alloc(1);
9
+ buffer.writeInt8(input);
10
+ yield buffer;
11
+ };
12
+ export const shortUnparser = async function* (input) {
13
+ const buffer = Buffer.alloc(2);
14
+ buffer.writeInt16LE(input);
15
+ yield buffer;
16
+ };
17
+ export const ushortUnparser = async function* (input) {
18
+ const buffer = Buffer.alloc(2);
19
+ buffer.writeUInt16LE(input);
20
+ yield buffer;
21
+ };
22
+ export const intUnparser = async function* (input) {
23
+ const buffer = Buffer.alloc(4);
24
+ buffer.writeInt32LE(input);
25
+ yield buffer;
26
+ };
27
+ export const uintUnparser = async function* (input) {
28
+ const buffer = Buffer.alloc(4);
29
+ buffer.writeUInt32LE(input);
30
+ yield buffer;
31
+ };
32
+ export const longUnparser = async function* (input) {
33
+ const buffer = Buffer.alloc(8);
34
+ buffer.writeBigInt64LE(input);
35
+ yield buffer;
36
+ };
37
+ export const ulongUnparser = async function* (input) {
38
+ const buffer = Buffer.alloc(8);
39
+ buffer.writeBigUInt64LE(input);
40
+ yield buffer;
41
+ };
42
+ // Nibbles unparser (two 4-bit values in one byte)
43
+ export const nibblesUnparser = async function* ([high, low], unparserContext) {
44
+ const byte = (high << 4) | (low & 0b1111);
45
+ yield* ubyteUnparser(byte, unparserContext);
46
+ };
47
+ export const dalvikBytecodeFormat10tUnparser = async function* (input, unparserContext) {
48
+ yield* byteUnparser(input.branchOffset, unparserContext);
49
+ };
50
+ export const dalvikBytecodeFormat10xUnparser = async function* (_input, unparserContext) {
51
+ yield* ubyteUnparser(0, unparserContext); // Zero byte
52
+ };
53
+ export const dalvikBytecodeFormat11xUnparser = async function* (input, unparserContext) {
54
+ yield* ubyteUnparser(input.registers[0], unparserContext);
55
+ };
56
+ export const dalvikBytecodeFormat11nUnparser = async function* (input, unparserContext) {
57
+ yield* nibblesUnparser([input.value & 0b1111, input.registers[0]], unparserContext);
58
+ };
59
+ export const dalvikBytecodeFormat12xUnparser = async function* (input, unparserContext) {
60
+ yield* nibblesUnparser([input.registers[0], input.registers[1]], unparserContext);
61
+ };
62
+ // Format 12x with reversed registers (for operations like array-length that reverse in parser)
63
+ export const dalvikBytecodeFormat12xReversedUnparser = async function* (input, unparserContext) {
64
+ yield* nibblesUnparser([input.registers[1], input.registers[0]], unparserContext);
65
+ };
66
+ export const dalvikBytecodeFormat20tUnparser = async function* (input, unparserContext) {
67
+ yield* ubyteUnparser(0, unparserContext);
68
+ yield* shortUnparser(input.branchOffset, unparserContext);
69
+ };
70
+ export const dalvikBytecodeFormat21cUnparser = async function* (input, unparserContext) {
71
+ yield* ubyteUnparser(input.registers[0], unparserContext);
72
+ yield* ushortUnparser(input.index, unparserContext);
73
+ };
74
+ export const dalvikBytecodeFormat21hUnparser = async function* (input, unparserContext) {
75
+ yield* ubyteUnparser(input.registers[0], unparserContext);
76
+ yield* ushortUnparser(input.value, unparserContext);
77
+ };
78
+ export const dalvikBytecodeFormat21tUnparser = async function* (input, unparserContext) {
79
+ yield* ubyteUnparser(input.registers[0], unparserContext);
80
+ yield* shortUnparser(input.branchOffset, unparserContext);
81
+ };
82
+ export const dalvikBytecodeFormat21sUnparser = async function* (input, unparserContext) {
83
+ yield* ubyteUnparser(input.registers[0], unparserContext);
84
+ yield* shortUnparser(input.value, unparserContext);
85
+ };
86
+ export const dalvikBytecodeFormat22bUnparser = async function* (input, unparserContext) {
87
+ yield* ubyteUnparser(input.registers[0], unparserContext);
88
+ yield* ubyteUnparser(input.registers[1], unparserContext);
89
+ yield* byteUnparser(input.value, unparserContext);
90
+ };
91
+ export const dalvikBytecodeFormat22cUnparser = async function* (input, unparserContext) {
92
+ yield* nibblesUnparser([input.registers[1], input.registers[0]], unparserContext);
93
+ yield* ushortUnparser(input.index, unparserContext);
94
+ };
95
+ export const dalvikBytecodeFormat22sUnparser = async function* (input, unparserContext) {
96
+ yield* nibblesUnparser([input.registers[1], input.registers[0]], unparserContext);
97
+ yield* shortUnparser(input.value, unparserContext);
98
+ };
99
+ export const dalvikBytecodeFormat22tUnparser = async function* (input, unparserContext) {
100
+ yield* nibblesUnparser([input.registers[1], input.registers[0]], unparserContext);
101
+ yield* shortUnparser(input.branchOffset, unparserContext);
102
+ };
103
+ // Format 22t for commutative operations (if-eq, if-ne): registers are already in sorted/canonical order
104
+ // so we don't reverse them
105
+ export const dalvikBytecodeFormat22tCommutativeUnparser = async function* (input, unparserContext) {
106
+ yield* nibblesUnparser([input.registers[0], input.registers[1]], unparserContext);
107
+ yield* shortUnparser(input.branchOffset, unparserContext);
108
+ };
109
+ export const dalvikBytecodeFormat22xUnparser = async function* (input, unparserContext) {
110
+ yield* ubyteUnparser(input.registers[0], unparserContext);
111
+ yield* ushortUnparser(input.registers[1], unparserContext);
112
+ };
113
+ export const dalvikBytecodeFormat23xUnparser = async function* (input, unparserContext) {
114
+ yield* ubyteUnparser(input.registers[0], unparserContext);
115
+ yield* ubyteUnparser(input.registers[1], unparserContext);
116
+ yield* ubyteUnparser(input.registers[2], unparserContext);
117
+ };
118
+ export const dalvikBytecodeFormat30tUnparser = async function* (input, unparserContext) {
119
+ yield* intUnparser(input.branchOffset, unparserContext);
120
+ };
121
+ export const dalvikBytecodeFormat31iUnparser = async function* (input, unparserContext) {
122
+ yield* ubyteUnparser(input.registers[0], unparserContext);
123
+ yield* intUnparser(input.value, unparserContext);
124
+ };
125
+ export const dalvikBytecodeFormat31cUnparser = async function* (input, unparserContext) {
126
+ yield* ubyteUnparser(input.registers[0], unparserContext);
127
+ yield* uintUnparser(input.index, unparserContext);
128
+ };
129
+ export const dalvikBytecodeFormat31tUnparser = async function* (input, unparserContext) {
130
+ yield* ubyteUnparser(input.registers[0], unparserContext);
131
+ yield* intUnparser(input.branchOffset, unparserContext);
132
+ };
133
+ export const dalvikBytecodeFormat32xUnparser = async function* (input, unparserContext) {
134
+ yield* ushortUnparser(input.registers[0], unparserContext);
135
+ yield* ushortUnparser(input.registers[1], unparserContext);
136
+ };
137
+ export const dalvikBytecodeFormat35cUnparser = async function* (input, unparserContext) {
138
+ const registerCount = input.registers.length;
139
+ const register4 = input.registers[4] ?? 0;
140
+ const register3 = input.registers[3] ?? 0;
141
+ const register2 = input.registers[2] ?? 0;
142
+ const register1 = input.registers[1] ?? 0;
143
+ const register0 = input.registers[0] ?? 0;
144
+ yield* nibblesUnparser([registerCount, register4], unparserContext);
145
+ yield* ushortUnparser(input.index, unparserContext);
146
+ yield* nibblesUnparser([register1, register0], unparserContext);
147
+ yield* nibblesUnparser([register3, register2], unparserContext);
148
+ };
149
+ export const dalvikBytecodeFormat3rcUnparser = async function* (input, unparserContext) {
150
+ const registerCount = input.registers.length;
151
+ const firstRegister = input.registers[0] ?? 0;
152
+ yield* ubyteUnparser(registerCount, unparserContext);
153
+ yield* ushortUnparser(input.index, unparserContext);
154
+ yield* ushortUnparser(firstRegister, unparserContext);
155
+ };
156
+ export const dalvikBytecodeFormat51lUnparser = async function* (input, unparserContext) {
157
+ yield* ubyteUnparser(input.registers[0], unparserContext);
158
+ yield* longUnparser(input.value, unparserContext);
159
+ };
160
+ export const dalvikBytecodeFormat45ccUnparser = async function* (input, unparserContext) {
161
+ const registerCount = input.registers.length;
162
+ const register4 = input.registers[4] ?? 0;
163
+ const register3 = input.registers[3] ?? 0;
164
+ const register2 = input.registers[2] ?? 0;
165
+ const register1 = input.registers[1] ?? 0;
166
+ const register0 = input.registers[0] ?? 0;
167
+ yield* nibblesUnparser([registerCount, register4], unparserContext);
168
+ yield* ushortUnparser(input.methodIndex, unparserContext);
169
+ yield* nibblesUnparser([register1, register0], unparserContext);
170
+ yield* nibblesUnparser([register3, register2], unparserContext);
171
+ yield* ushortUnparser(input.protoIndex, unparserContext);
172
+ };
173
+ export const dalvikBytecodeFormat4rccUnparser = async function* (input, unparserContext) {
174
+ const registerCount = input.registers.length;
175
+ const firstRegister = input.registers[0] ?? 0;
176
+ yield* ubyteUnparser(registerCount, unparserContext);
177
+ yield* ushortUnparser(input.methodIndex, unparserContext);
178
+ yield* ushortUnparser(firstRegister, unparserContext);
179
+ yield* ushortUnparser(input.protoIndex, unparserContext);
180
+ };
181
+ export const dalvikBytecodeOperationPackedSwitchPayloadUnparser = async function* (input, unparserContext) {
182
+ // Ident (0x0100) - little-endian
183
+ yield* ushortUnparser(0x01_00, unparserContext);
184
+ // Size
185
+ yield* ushortUnparser(input.branchOffsets.length, unparserContext);
186
+ // First key value
187
+ yield* intUnparser(input.value, unparserContext);
188
+ // Branch offsets
189
+ for (const offset of input.branchOffsets) {
190
+ yield* intUnparser(offset, unparserContext);
191
+ }
192
+ };
193
+ export const dalvikBytecodeOperationSparseSwitchPayloadUnparser = async function* (input, unparserContext) {
194
+ // Ident (0x0200) - little-endian
195
+ yield* ushortUnparser(0x02_00, unparserContext);
196
+ // Size
197
+ yield* ushortUnparser(input.keys.length, unparserContext);
198
+ // Keys
199
+ for (const key of input.keys) {
200
+ yield* intUnparser(key, unparserContext);
201
+ }
202
+ // Branch offsets
203
+ for (const offset of input.branchOffsets) {
204
+ yield* intUnparser(offset, unparserContext);
205
+ }
206
+ };
207
+ export const dalvikBytecodeOperationFillArrayDataPayloadUnparser = async function* (input, unparserContext) {
208
+ // Ident (0x0300) - little-endian
209
+ yield* ushortUnparser(0x03_00, unparserContext);
210
+ // Element width
211
+ yield* ushortUnparser(input.elementWidth, unparserContext);
212
+ // Size (number of elements) - data array contains bytes, so divide by elementWidth
213
+ const numElements = Math.floor(input.data.length / input.elementWidth);
214
+ yield* uintUnparser(numElements, unparserContext);
215
+ // Data (each byte from the data array)
216
+ for (const byte of input.data) {
217
+ yield* ubyteUnparser(byte, unparserContext);
218
+ }
219
+ // Padding if needed (align to 2-byte boundary)
220
+ const dataSize = input.data.length;
221
+ const paddingSize = dataSize % 2;
222
+ if (paddingSize === 1) {
223
+ yield* ubyteUnparser(0, unparserContext);
224
+ }
225
+ };
@@ -0,0 +1,3 @@
1
+ import { type Unparser } from './unparser.js';
2
+ import { type DalvikBytecode } from './dalvikBytecodeParser.js';
3
+ export declare const dalvikBytecodeUnparser: Unparser<DalvikBytecode, Uint8Array>;