@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
@@ -28,12 +28,7 @@ const dosDateTimeUnparser = async function* (date, unparserContext) {
28
28
  | (date.getUTCFullYear() - 1980) << 9), unparserContext);
29
29
  };
30
30
  const zipCompressionMethodUnparser = async function* (compressionMethod, unparserContext) {
31
- if (compressionMethod === 'store') {
32
- yield* uint16LEUnparser(0, unparserContext);
33
- }
34
- else {
35
- yield* uint16LEUnparser(8, unparserContext);
36
- }
31
+ yield* (compressionMethod === 'store' ? uint16LEUnparser(0, unparserContext) : uint16LEUnparser(8, unparserContext));
37
32
  };
38
33
  export const zipEndOfCentralDirectoryRecordUnparser = async function* (zipEndOfCentralDirectoryRecord, unparserContext) {
39
34
  yield Buffer.from('504b0506', 'hex');
@@ -45,7 +40,28 @@ export const zipEndOfCentralDirectoryRecordUnparser = async function* (zipEndOfC
45
40
  yield* uint32LEUnparser(zipEndOfCentralDirectoryRecord.offsetOfStartOfCentralDirectoryWithRespectToTheStartingDiskNumber, unparserContext);
46
41
  yield* uint16LEPrefixedStringUnparser(zipEndOfCentralDirectoryRecord.zipFileComment, unparserContext);
47
42
  };
48
- export const zipUnparser = async function* (zip, unparserContext) {
43
+ const zipDataDescriptorUnparser = async function* ({ crc32, compressedSize, uncompressedSize, }, unparserContext) {
44
+ yield Buffer.from('504b0708', 'hex');
45
+ yield* uint32LEUnparser(crc32, unparserContext);
46
+ yield* uint32LEUnparser(compressedSize, unparserContext);
47
+ yield* uint32LEUnparser(uncompressedSize, unparserContext);
48
+ };
49
+ const zipLocalFileHeaderUnparser = async function* ({ versionNeededToExtract, generalPurposeBitFlag, compressionMethod, lastModifiedFile, crc32, compressedSize, uncompressedSize, filePath, extraField, }, unparserContext) {
50
+ yield Buffer.from('504b0304', 'hex');
51
+ yield* uint16LEUnparser(versionNeededToExtract, unparserContext);
52
+ yield* uint16LEUnparser(generalPurposeBitFlag, unparserContext);
53
+ yield* zipCompressionMethodUnparser(compressionMethod, unparserContext);
54
+ yield* dosDateTimeUnparser(lastModifiedFile, unparserContext);
55
+ yield* uint32LEUnparser(crc32, unparserContext);
56
+ yield* uint32LEUnparser(compressedSize, unparserContext);
57
+ yield* uint32LEUnparser(uncompressedSize, unparserContext);
58
+ const filePathBuffer = Buffer.from(filePath, 'utf8');
59
+ yield* uint16LEUnparser(filePathBuffer.length, unparserContext);
60
+ yield* uint16LEUnparser(extraField.length, unparserContext);
61
+ yield filePathBuffer;
62
+ yield extraField;
63
+ };
64
+ export const createZipUnparser = ({ dataDescriptor = false, } = {}) => async function* (zip, unparserContext) {
49
65
  const compressedContentByZipFileEntry = new Map(zip.entries.flatMap(zipEntry => {
50
66
  if (zipEntry.type !== 'file') {
51
67
  return [];
@@ -66,62 +82,64 @@ export const zipUnparser = async function* (zip, unparserContext) {
66
82
  const localHeaderPositionByZipEntry = new Map();
67
83
  for (const zipEntry of zip.entries) {
68
84
  localHeaderPositionByZipEntry.set(zipEntry, unparserContext.position);
69
- yield Buffer.from('504b0304', 'hex');
70
- yield* uint16LEUnparser(10, unparserContext); // version needed to extract
71
- yield* uint16LEUnparser(0, unparserContext); // general purpose bit flag
72
- if (zipEntry.type === 'file') {
73
- yield* zipCompressionMethodUnparser(zipEntry.compression, unparserContext);
74
- }
75
- else {
76
- yield* uint16LEUnparser(0, unparserContext);
77
- }
78
- yield* dosDateTimeUnparser(zipEntry.date, unparserContext);
85
+ const filePath = filePathByZipEntry.get(zipEntry);
86
+ const zipLocalFileHeader = {
87
+ versionNeededToExtract: 20,
88
+ generalPurposeBitFlag: 0,
89
+ compressionMethod: 'store',
90
+ lastModifiedFile: zipEntry.date,
91
+ crc32: 0,
92
+ compressedSize: 0,
93
+ uncompressedSize: 0,
94
+ filePath,
95
+ extraField: Buffer.alloc(0),
96
+ };
97
+ let shouldWriteDataDescriptor = false;
79
98
  if (zipEntry.type === 'file') {
80
99
  const compressedContent = await compressedContentByZipFileEntry.get(zipEntry);
81
- yield* uint32LEUnparser(0, unparserContext); // crc32 // TODO
82
- yield* uint32LEUnparser(compressedContent.length, unparserContext);
83
- yield* uint32LEUnparser(zipEntry.content.length, unparserContext);
84
- }
85
- else {
86
- yield* uint32LEUnparser(0, unparserContext);
87
- yield* uint32LEUnparser(0, unparserContext);
88
- yield* uint32LEUnparser(0, unparserContext);
100
+ zipLocalFileHeader.compressionMethod = zipEntry.compression;
101
+ zipLocalFileHeader.crc32 = 0; // TODO
102
+ zipLocalFileHeader.compressedSize = compressedContent.length;
103
+ zipLocalFileHeader.uncompressedSize = zipEntry.content.length;
104
+ if (dataDescriptor) {
105
+ shouldWriteDataDescriptor = true;
106
+ zipLocalFileHeader.generalPurposeBitFlag |= 0b0000_0000_0000_1000;
107
+ zipLocalFileHeader.crc32 = 0;
108
+ zipLocalFileHeader.compressedSize = 0;
109
+ zipLocalFileHeader.uncompressedSize = 0;
110
+ }
89
111
  }
90
- const filePath = filePathByZipEntry.get(zipEntry);
91
- const filePathBuffer = Buffer.from(filePath, 'utf8');
92
- const extraFieldBuffer = Buffer.alloc(0);
93
- yield* uint16LEUnparser(filePathBuffer.length, unparserContext);
94
- yield* uint16LEUnparser(extraFieldBuffer.length, unparserContext);
95
- yield filePathBuffer;
96
- yield extraFieldBuffer;
112
+ yield* zipLocalFileHeaderUnparser(zipLocalFileHeader, unparserContext);
97
113
  if (zipEntry.type === 'file') {
98
114
  const compressedContent = await compressedContentByZipFileEntry.get(zipEntry);
99
115
  yield compressedContent;
116
+ if (shouldWriteDataDescriptor) {
117
+ yield* zipDataDescriptorUnparser({
118
+ crc32: zipLocalFileHeader.crc32,
119
+ compressedSize: zipLocalFileHeader.compressedSize,
120
+ uncompressedSize: zipLocalFileHeader.uncompressedSize,
121
+ }, unparserContext);
122
+ }
100
123
  }
101
124
  }
102
125
  const startOfCentralDirectoryPosition = unparserContext.position;
103
126
  for (const zipEntry of zip.entries) {
104
127
  yield Buffer.from('504b0102', 'hex');
105
128
  if (zipEntry.hostSystem === 'unix') {
106
- yield 0; // zip specification version
107
- yield 3; // host system
129
+ yield 0; // Zip specification version
130
+ yield 3; // Host system
108
131
  }
109
132
  else {
110
133
  yield 0;
111
134
  yield 0;
112
135
  }
113
- yield* uint16LEUnparser(0, unparserContext); // version needed to extract
114
- yield* uint16LEUnparser(0, unparserContext); // general purpose bit flag
115
- if (zipEntry.type === 'file') {
116
- yield* zipCompressionMethodUnparser(zipEntry.compression, unparserContext);
117
- }
118
- else {
119
- yield* uint16LEUnparser(0, unparserContext);
120
- }
136
+ yield* uint16LEUnparser(0, unparserContext); // Version needed to extract
137
+ yield* uint16LEUnparser(0, unparserContext); // General purpose bit flag
138
+ yield* (zipEntry.type === 'file' ? zipCompressionMethodUnparser(zipEntry.compression, unparserContext) : uint16LEUnparser(0, unparserContext));
121
139
  yield* dosDateTimeUnparser(zipEntry.date, unparserContext);
122
140
  if (zipEntry.type === 'file') {
123
141
  const compressedContent = await compressedContentByZipFileEntry.get(zipEntry);
124
- yield* uint32LEUnparser(0, unparserContext); // crc32 // TODO
142
+ yield* uint32LEUnparser(0, unparserContext); // Crc32 // TODO
125
143
  yield* uint32LEUnparser(compressedContent.length, unparserContext);
126
144
  yield* uint32LEUnparser(zipEntry.content.length, unparserContext);
127
145
  }
@@ -137,8 +155,8 @@ export const zipUnparser = async function* (zip, unparserContext) {
137
155
  yield* uint16LEUnparser(extraFieldBuffer.length, unparserContext);
138
156
  const fileCommentBuffer = Buffer.from(zipEntry.comment, 'utf8');
139
157
  yield* uint16LEUnparser(fileCommentBuffer.length, unparserContext);
140
- yield* uint16LEUnparser(0, unparserContext); // disk number start
141
- yield* uint16LEUnparser(0, unparserContext); // internal file attributes
158
+ yield* uint16LEUnparser(0, unparserContext); // Disk number start
159
+ yield* uint16LEUnparser(0, unparserContext); // Internal file attributes
142
160
  if (zipEntry.hostSystem === 'unix') {
143
161
  yield* uint32LEUnparser((0
144
162
  | (zipEntry.type === 'directory'
@@ -169,3 +187,4 @@ export const zipUnparser = async function* (zip, unparserContext) {
169
187
  zipFileComment: zip.comment,
170
188
  }, unparserContext);
171
189
  };
190
+ export const zipUnparser = createZipUnparser();
@@ -1,21 +1,15 @@
1
- import { testProp } from '@fast-check/ava';
1
+ import fsPromises from 'node:fs/promises';
2
+ import { fc, testProp } from '@fast-check/ava';
2
3
  import { temporaryFile } from 'tempy';
3
4
  import { execa } from 'execa';
4
- import fsPromises from 'node:fs/promises';
5
5
  import { runUnparser } from './unparser.js';
6
- import { zipUnparser } from './zipUnparser.js';
6
+ import { createZipUnparser } from './zipUnparser.js';
7
7
  import { uint8ArrayUnparserOutputCompanion } from './unparserOutputCompanion.js';
8
8
  import { runParser } from './parser.js';
9
9
  import { zipParser } from './zipParser.js';
10
10
  import { uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
11
11
  import { arbitraryZip } from './arbitraryZip.js';
12
- async function hasExecutable(executable) {
13
- const hasExecutable = execa(executable).then(() => true, () => false);
14
- if (!hasExecutable) {
15
- console.warn(`Executable %o not found`, executable);
16
- }
17
- return hasExecutable;
18
- }
12
+ import { hasExecutable } from './hasExecutable.js';
19
13
  const hasZipinfoPromise = hasExecutable('zipinfo');
20
14
  const has7zPromise = hasExecutable('7z');
21
15
  async function zipinfo(zipFilePath) {
@@ -45,16 +39,22 @@ async function _7zList(zipFilePath) {
45
39
  }
46
40
  testProp('zip', [
47
41
  arbitraryZip,
48
- ], async (t, zip) => {
42
+ fc.record({
43
+ dataDescriptor: fc.boolean(),
44
+ }),
45
+ ], async (t, zip, options) => {
46
+ const zipUnparser = createZipUnparser(options);
47
+ {
48
+ const zipStream = runUnparser(zipUnparser, zip, uint8ArrayUnparserOutputCompanion);
49
+ await fsPromises.writeFile('/tmp/zip.zip', zipStream);
50
+ }
49
51
  const actualStream = runUnparser(zipUnparser, zip, uint8ArrayUnparserOutputCompanion);
50
52
  const actual = await runParser(zipParser, actualStream, uint8ArrayParserInputCompanion);
51
- const isDeepEqual = t.deepEqual(actual, zip);
52
- if (!isDeepEqual) {
53
- return;
54
- }
53
+ t.deepEqual(actual, zip);
55
54
  const hasZipinfo = await hasZipinfoPromise;
56
55
  const has7z = await has7zPromise;
57
56
  if (!hasZipinfo && !has7z) {
57
+ t.pass('no zipinfo or 7z, skipping zipfile check');
58
58
  return;
59
59
  }
60
60
  const temporaryFilePath = temporaryFile({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futpib/parser",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "main": "build/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "type": "module",
@@ -18,37 +18,46 @@
18
18
  },
19
19
  "compile": false
20
20
  },
21
- "verbose": true
21
+ "verbose": true,
22
+ "timeout": "60s"
22
23
  },
23
24
  "devDependencies": {
24
- "@ava/typescript": "^5.0.0",
25
- "@fast-check/ava": "^2.0.1",
25
+ "@ava/typescript": "^6.0.0",
26
+ "@fast-check/ava": "^2.0.2",
26
27
  "@types/invariant": "^2.2.37",
27
- "@types/node": "^22.10.1",
28
- "ava": "^6.2.0",
29
- "bson": "^6.10.0",
30
- "c8": "^10.1.2",
28
+ "@types/node": "^24.4.0",
29
+ "ava": "^6.4.1",
30
+ "bson": "^6.10.4",
31
+ "c8": "^10.1.3",
31
32
  "coveralls": "^3.1.1",
32
- "eslint-config-xo-typescript-overrides": "^1.6.1",
33
- "execa": "^9.5.2",
34
- "fast-check": "^3.23.1",
33
+ "env-paths": "^3.0.0",
34
+ "eslint-config-xo-typescript-overrides": "^2.0.3",
35
+ "execa": "^9.6.0",
36
+ "fast-check": "^4.3.0",
35
37
  "invariant": "^2.2.4",
36
38
  "jszip": "^3.10.1",
39
+ "leb128": "^0.0.5",
40
+ "mutf-8": "^1.2.2",
41
+ "p-memoize": "^8.0.0",
37
42
  "tempy": "^3.1.0",
38
- "type-fest": "^4.29.0",
39
- "typescript": "^5.7.2",
40
- "xo": "^0.59.3"
43
+ "type-fest": "^5.0.0",
44
+ "typescript": "^5.9.2",
45
+ "xo": "^1.2.2"
41
46
  },
42
- "xo": {
43
- "extends": [
44
- "eslint-config-xo-typescript-overrides"
45
- ],
46
- "rules": {
47
- "ava/no-ignored-test-files": "off"
48
- }
49
- },
50
- "packageManager": "yarn@4.5.3",
47
+ "packageManager": "yarn@4.9.4",
51
48
  "dependencies": {
52
- "p-mutex": "^0.1.0"
49
+ "fp-ts": "^2.16.11",
50
+ "mem": "^10.0.0",
51
+ "monocle-ts": "^2.3.13",
52
+ "newtype-ts": "^0.3.5",
53
+ "p-mutex": "^1.0.0"
54
+ },
55
+ "peerDependencies": {
56
+ "mutf-8": "^1.1.4"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "mutf-8": {
60
+ "optional": true
61
+ }
53
62
  }
54
63
  }
@@ -57,3 +57,43 @@ test('allSettledStream', async t => {
57
57
  t.snapshot(results);
58
58
  t.is(results.length, 8);
59
59
  });
60
+
61
+ test('allSettledStream reader cancel', async t => {
62
+ const stream = allSettledStream<number, number>([
63
+ 10,
64
+ 20,
65
+ 0,
66
+ 40,
67
+ 30,
68
+ ].map(delay => ({
69
+ promise: new Promise<number>(resolve => {
70
+ setTimeout(() => {
71
+ resolve(delay);
72
+ }, delay);
73
+ }),
74
+ context: delay,
75
+ })));
76
+
77
+ const results: any[] = [];
78
+
79
+ for await (const value of stream) {
80
+ results.push(value);
81
+
82
+ if (value.context === 30) {
83
+ break;
84
+ }
85
+ }
86
+
87
+ await new Promise<void>(resolve => {
88
+ setTimeout(resolve, 50);
89
+ });
90
+
91
+ stream.cancel();
92
+
93
+ for await (const value of stream) {
94
+ t.fail();
95
+ results.push(value);
96
+ }
97
+
98
+ t.deepEqual(results.map(({ context }) => context), [ 0, 10, 20, 30 ]);
99
+ });
@@ -1,3 +1,5 @@
1
+ import { promiseSettled } from './promiseSettled.js';
2
+
1
3
  type AllSettledStreamFulfilledResult<T, Context> = {
2
4
  status: 'fulfilled';
3
5
  value: T;
@@ -18,27 +20,57 @@ type AllSettledStreamTask<T, Context> = {
18
20
  };
19
21
 
20
22
  export function allSettledStream<T, Context>(tasks: Array<AllSettledStreamTask<T, Context>>): ReadableStream<AllSettedStreamResult<T, Context>> {
23
+ let cancelled = false;
24
+
21
25
  return new ReadableStream({
22
- async start(controller) {
23
- let settledCount = 0;
24
- for (const { promise, context } of tasks) {
25
- (async () => {
26
- const [ promiseSettledResult ] = await Promise.allSettled([ promise ]);
26
+ start(controller) {
27
+ const startStack = (
28
+ (new Error('allSettledStream ReadableStream start stack holder').stack ?? '')
29
+ .split('\n')
30
+ .slice(1)
31
+ .join('\n')
32
+ );
33
+
34
+ const allSettledStreamTaskAwaiter = async ({
35
+ promise,
36
+ context,
37
+ }: AllSettledStreamTask<T, Context>) => {
38
+ const promiseSettledResult = await promiseSettled(promise);
39
+
40
+ if (
41
+ promiseSettledResult.status === 'rejected'
42
+ && promiseSettledResult.reason instanceof Error
43
+ && promiseSettledResult.reason.stack
44
+ ) {
45
+ promiseSettledResult.reason.stack += `\n${startStack}`;
46
+ }
27
47
 
28
- settledCount++;
48
+ settledCount++;
29
49
 
30
- const allSettedStreamResult: AllSettedStreamResult<T, Context> = {
31
- ...promiseSettledResult,
32
- context,
33
- };
50
+ if (cancelled) {
51
+ return;
52
+ }
34
53
 
35
- controller.enqueue(allSettedStreamResult);
54
+ const allSettedStreamResult: AllSettedStreamResult<T, Context> = {
55
+ ...promiseSettledResult,
56
+ context,
57
+ };
36
58
 
37
- if (settledCount === tasks.length) {
38
- controller.close();
39
- }
40
- })();
59
+ controller.enqueue(allSettedStreamResult);
60
+
61
+ if (settledCount === tasks.length) {
62
+ controller.close();
63
+ }
64
+ };
65
+
66
+ let settledCount = 0;
67
+ for (const task of tasks) {
68
+ allSettledStreamTaskAwaiter(task);
41
69
  }
42
70
  },
71
+
72
+ cancel() {
73
+ cancelled = true;
74
+ },
43
75
  });
44
76
  }
@@ -0,0 +1,48 @@
1
+ import { type Zip } from './zip.js';
2
+
3
+ export type AndroidPackageSigningBlockPair = {
4
+ id: number;
5
+ value: Uint8Array;
6
+ };
7
+
8
+ export type AndroidPackageSignatureV2Digest = {
9
+ signatureAlgorithmId: number;
10
+ digest: Uint8Array;
11
+ };
12
+
13
+ export type AndroidPackageSignatureV2AdditionalAttribute = {
14
+ id: number;
15
+ value: Uint8Array;
16
+ };
17
+
18
+ export type AndroidPackageSignatureV2SignedData = {
19
+ digests: AndroidPackageSignatureV2Digest[];
20
+ certificates: Uint8Array[];
21
+ additionalAttributes: AndroidPackageSignatureV2AdditionalAttribute[];
22
+ zeroPaddingLength?: number;
23
+ };
24
+
25
+ export type AndroidPackageSignatureV2Signature = {
26
+ signatureAlgorithmId: number;
27
+ signature: Uint8Array;
28
+ };
29
+
30
+ export type AndroidPackageSignatureV2Signer = {
31
+ signedData: AndroidPackageSignatureV2SignedData;
32
+ signatures: AndroidPackageSignatureV2Signature[];
33
+ publicKey: Uint8Array;
34
+ };
35
+
36
+ export type AndroidPackageSignatureV2 = {
37
+ signers: AndroidPackageSignatureV2Signer[];
38
+ };
39
+
40
+ export type AndroidPackageSigningBlock = {
41
+ pairs: AndroidPackageSigningBlockPair[];
42
+ signatureV2?: AndroidPackageSignatureV2;
43
+ zeroPaddingLength?: number;
44
+ };
45
+
46
+ export type AndroidPackage = Zip & {
47
+ signingBlock?: AndroidPackageSigningBlock;
48
+ };
@@ -0,0 +1,27 @@
1
+ import test from 'ava';
2
+ import { uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
3
+ import { runParser } from './parser.js';
4
+ import { androidPackageParser } from './androidPackageParser.js';
5
+ import { fetchCid } from './fetchCid.js';
6
+
7
+ const androidPackageMacro = test.macro({
8
+ title: (providedTitle, androidPackageCid: string) => providedTitle ?? `androidPackage ${androidPackageCid}`,
9
+ async exec(t, androidPackageCid: string) {
10
+ const androidPackageStream = await fetchCid(androidPackageCid);
11
+
12
+ const actual = await runParser(androidPackageParser, androidPackageStream, uint8ArrayParserInputCompanion, {
13
+ errorJoinMode: 'all',
14
+ });
15
+
16
+ for (const entry of actual.entries) {
17
+ if (entry.type === 'file') {
18
+ entry.content = new Uint8Array([ entry.content.length ]);
19
+ }
20
+ }
21
+
22
+ t.snapshot(actual);
23
+ },
24
+ });
25
+
26
+ test(androidPackageMacro, 'bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu');
27
+ test(androidPackageMacro, 'bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m');
@@ -1,10 +1,10 @@
1
- # Snapshot report for `src/apkParser.test.ts`
1
+ # Snapshot report for `src/androidPackageParser.test.ts`
2
2
 
3
- The actual snapshot is saved in `apkParser.test.ts.snap`.
3
+ The actual snapshot is saved in `androidPackageParser.test.ts.snap`.
4
4
 
5
5
  Generated by [AVA](https://avajs.dev).
6
6
 
7
- ## apk bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu
7
+ ## androidPackage bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu
8
8
 
9
9
  > Snapshot 1
10
10
 
@@ -189,7 +189,7 @@ Generated by [AVA](https://avajs.dev).
189
189
  },
190
190
  }
191
191
 
192
- ## apk bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m
192
+ ## androidPackage bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m
193
193
 
194
194
  > Snapshot 1
195
195