@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,34 +0,0 @@
1
- import test from 'ava';
2
- import { SequenceBufferImplementation } from './sequenceBuffer.js';
3
- import { stringInputCompanion } from './inputCompanion.js';
4
- test('sequenceBuffer', t => {
5
- const sequenceBuffer = new SequenceBufferImplementation(stringInputCompanion);
6
- t.is(sequenceBuffer.peek(0), undefined);
7
- sequenceBuffer.push('');
8
- t.is(sequenceBuffer.peek(0), undefined);
9
- sequenceBuffer.push('abc');
10
- t.is(sequenceBuffer.peek(0), 'a');
11
- t.is(sequenceBuffer.peek(1), 'b');
12
- t.is(sequenceBuffer.peek(2), 'c');
13
- t.is(sequenceBuffer.peek(3), undefined);
14
- sequenceBuffer.push('def');
15
- t.is(sequenceBuffer.peek(0), 'a');
16
- t.is(sequenceBuffer.peek(3), 'd');
17
- t.is(sequenceBuffer.peek(6), undefined);
18
- sequenceBuffer.push('');
19
- t.is(sequenceBuffer.peek(0), 'a');
20
- t.is(sequenceBuffer.peek(3), 'd');
21
- t.is(sequenceBuffer.peek(6), undefined);
22
- sequenceBuffer.skip(1);
23
- t.is(sequenceBuffer.peek(0), 'b');
24
- t.is(sequenceBuffer.peek(3), 'e');
25
- t.is(sequenceBuffer.peek(5), undefined);
26
- sequenceBuffer.skip(3);
27
- t.is(sequenceBuffer.peek(0), 'e');
28
- t.is(sequenceBuffer.peek(2), undefined);
29
- sequenceBuffer.push('gh');
30
- t.is(sequenceBuffer.peek(0), 'e');
31
- t.is(sequenceBuffer.peek(2), 'g');
32
- t.is(sequenceBuffer.peek(3), 'h');
33
- t.is(sequenceBuffer.peek(4), undefined);
34
- });
@@ -1,18 +0,0 @@
1
- export type InputCompanion<Sequence, Element> = {
2
- is(value: unknown): value is Sequence;
3
- from(elements: Element[]): Sequence;
4
- length(sequence: Sequence): number;
5
- at(sequence: Sequence, index: number): Element | undefined;
6
- };
7
- export declare const stringInputCompanion: {
8
- is(value: unknown): value is string;
9
- from(elements: string[]): string;
10
- length(sequence: string): number;
11
- at(sequence: string, index: number): string | undefined;
12
- };
13
- export declare const uint8ArrayInputCompanion: {
14
- is(value: unknown): value is Uint8Array;
15
- from(elements: number[]): Uint8Array;
16
- length(sequence: Uint8Array): number;
17
- at(sequence: Uint8Array, index: number): number | undefined;
18
- };
@@ -1,28 +0,0 @@
1
- export const stringInputCompanion = new class StringInputCompanion {
2
- is(value) {
3
- return typeof value === 'string';
4
- }
5
- from(elements) {
6
- return elements.join('');
7
- }
8
- length(sequence) {
9
- return sequence.length;
10
- }
11
- at(sequence, index) {
12
- return sequence.at(index);
13
- }
14
- }();
15
- export const uint8ArrayInputCompanion = new class Uint8ArrayInputCompanion {
16
- is(value) {
17
- return value instanceof Uint8Array;
18
- }
19
- from(elements) {
20
- return new Uint8Array(elements);
21
- }
22
- length(sequence) {
23
- return sequence.length;
24
- }
25
- at(sequence, index) {
26
- return sequence.at(index);
27
- }
28
- }();
@@ -1 +0,0 @@
1
- export declare function invariantDefined<T>(value: T, format: string, ...extra: any[]): Exclude<T, undefined>;
@@ -1,5 +0,0 @@
1
- import invariant from 'invariant';
2
- export function invariantDefined(value, format, ...extra) {
3
- invariant(value !== undefined, format, ...extra);
4
- return value;
5
- }
@@ -1,3 +0,0 @@
1
- type Falsy = '' | 0 | false | undefined;
2
- export declare function invariantIdentity<T>(value: T, format: string, ...extra: any[]): Exclude<T, Falsy>;
3
- export {};
@@ -1,5 +0,0 @@
1
- import invariant from 'invariant';
2
- export function invariantIdentity(value, format, ...extra) {
3
- invariant(value, format, ...extra);
4
- return value;
5
- }
@@ -1,2 +0,0 @@
1
- import { Parser } from "./parser.js";
2
- export declare const javaKeyStoreParser: Parser<unknown, Uint8Array>;
@@ -1,7 +0,0 @@
1
- import { createArrayParser } from "./arrayParser.js";
2
- import { createElementParser } from "./elementParser.js";
3
- import { createTupleParser } from "./tupleParser.js";
4
- export const javaKeyStoreParser = createTupleParser([
5
- createArrayParser(createElementParser()),
6
- createArrayParser(createElementParser()),
7
- ]);
@@ -1,3 +0,0 @@
1
- import { type JsonValue } from 'type-fest';
2
- import { type Parser } from './parser.js';
3
- export declare const jsonValueParser2: Parser<JsonValue, string>;
@@ -1,52 +0,0 @@
1
- import { parserParsingInvariant } from './parserParsingInvariant.js';
2
- import { createUnionParser } from './unionParser.js';
3
- import { createExactSequenceParser } from './exactSequenceParser.js';
4
- import { promiseCompose } from './promiseCompose.js';
5
- const jsonStringParser = async (inputContext) => {
6
- await inputContext.read(0);
7
- await inputContext.read(0);
8
- return '';
9
- };
10
- const jsonDummyParser = async (inputContext) => {
11
- await inputContext.read(0);
12
- parserParsingInvariant(false, 'dummy');
13
- return 0;
14
- };
15
- const jsonNullParser = promiseCompose(createExactSequenceParser('null'), () => null);
16
- Object.defineProperty(jsonNullParser, 'name', { value: 'jsonNullParser' });
17
- const jsonPrimitiveParser = createUnionParser([
18
- jsonDummyParser,
19
- jsonDummyParser,
20
- jsonDummyParser,
21
- jsonDummyParser,
22
- jsonNullParser,
23
- ]);
24
- Object.defineProperty(jsonPrimitiveParser, 'name', { value: 'jsonPrimitiveParser' });
25
- const jsonObjectParser = async (inputContext) => {
26
- const value = {};
27
- const firstCharacter = await inputContext.read(0);
28
- parserParsingInvariant(firstCharacter === '{', 'Expected "{", got "%s"', firstCharacter);
29
- const key = await jsonStringParser(inputContext);
30
- const colon = await inputContext.read(0);
31
- parserParsingInvariant(colon === ':', 'Expected ":", got "%s"', colon);
32
- const keyValue = await jsonValueParser2(inputContext);
33
- Object.defineProperty(value, key, {
34
- value: keyValue,
35
- enumerable: true,
36
- });
37
- const commaOrClosingBrace = await inputContext.peek(0);
38
- parserParsingInvariant((commaOrClosingBrace === ','
39
- || commaOrClosingBrace === '}'), 'Expected "," or "}", got "%s"', commaOrClosingBrace);
40
- if (commaOrClosingBrace === '}') {
41
- inputContext.skip(1);
42
- return value;
43
- }
44
- parserParsingInvariant(commaOrClosingBrace === ',', 'Expected ",", got "%s"', commaOrClosingBrace);
45
- inputContext.skip(1);
46
- return value;
47
- };
48
- export const jsonValueParser2 = createUnionParser([
49
- jsonObjectParser,
50
- jsonPrimitiveParser,
51
- ]);
52
- Object.defineProperty(jsonValueParser2, 'name', { value: 'jsonValueParser2' });
@@ -1,22 +0,0 @@
1
- import { testProp, fc } from '@fast-check/ava';
2
- import { jsonValueParser2 } from './jsonParser2.js';
3
- import { runParser } from './parser.js';
4
- import { arbitrarilySlicedAsyncIterator } from './arbitrarilySlicedAsyncInterator.js';
5
- import { stringInputCompanion } from './inputCompanion.js';
6
- testProp('json', [
7
- arbitrarilySlicedAsyncIterator(fc.json()),
8
- ], async (t, [jsonString, jsonStringChunkIterator]) => {
9
- if (jsonString !== '{"":null}') {
10
- throw new Error('This test is only for the JSON string \'{"":null}\'.');
11
- }
12
- const actual = await runParser(jsonValueParser2, jsonStringChunkIterator, stringInputCompanion);
13
- const expected = JSON.parse(jsonString);
14
- t.deepEqual(actual, expected);
15
- }, {
16
- verbose: true,
17
- examples: [
18
- [['{"":null}', (async function* () {
19
- yield* ['{"":null}'];
20
- })()[Symbol.asyncIterator]()]],
21
- ],
22
- });
@@ -1,2 +0,0 @@
1
- import { type Parser } from './parser.js';
2
- export declare const createNegativeLookaheadParser: <Sequence>(childParser: Parser<unknown, Sequence>) => Parser<void, Sequence>;
@@ -1,18 +0,0 @@
1
- import { getParserName } from './parser.js';
2
- import { ParserParsingFailedError } from './parserError.js';
3
- export const createNegativeLookaheadParser = (childParser) => async (parserContext) => {
4
- const childParserContext = parserContext.lookahead();
5
- try {
6
- await childParser(childParserContext);
7
- parserContext.invariant(false, 'Negative lookahead assertion failed for child parser %s.', getParserName(childParser));
8
- }
9
- catch (error) {
10
- if (error instanceof ParserParsingFailedError) {
11
- return;
12
- }
13
- throw error;
14
- }
15
- finally {
16
- childParserContext.dispose();
17
- }
18
- };
@@ -1,3 +0,0 @@
1
- import { Parser } from "./parser.js";
2
- import { DeriveSequenceElement } from "./sequence.js";
3
- export declare function parserCreatorCompose<OutputA, OutputB, Sequence, Element = DeriveSequenceElement<Sequence>>(f1: Parser<OutputA, Sequence, Element>, f2: (outputA: OutputA) => Parser<OutputB, Sequence, Element>): Parser<OutputB, Sequence, Element>;
@@ -1,7 +0,0 @@
1
- export function parserCreatorCompose(f1, f2) {
2
- return async (parserContext) => {
3
- const outputA = await f1(parserContext);
4
- const parserB = f2(outputA);
5
- return parserB(parserContext);
6
- };
7
- }
@@ -1,3 +0,0 @@
1
- type Falsy = '' | 0 | false | undefined;
2
- export declare function parserImplementationInvariant<T>(value: T, formatOrFormatLines: string | string[], ...extra: any[]): Exclude<T, Falsy>;
3
- export {};
@@ -1,15 +0,0 @@
1
- import invariant from 'invariant';
2
- import { ParserImplementationInvariantError } from './parserError.js';
3
- export function parserImplementationInvariant(value, formatOrFormatLines, ...extra) {
4
- const format = Array.isArray(formatOrFormatLines) ? formatOrFormatLines.join('\n') : formatOrFormatLines;
5
- try {
6
- invariant(value, format, ...extra);
7
- return value;
8
- }
9
- catch (error) {
10
- if (error instanceof Error) {
11
- throw new ParserImplementationInvariantError(error.message);
12
- }
13
- throw error;
14
- }
15
- }
@@ -1,4 +0,0 @@
1
- import { type Constructor } from 'type-fest';
2
- export type Falsy = '' | 0 | false | undefined;
3
- export type ValueOrAccessor<T> = T | (() => T);
4
- export declare function customInvariant<T>(ErrorConstructor: Constructor<Error, [message: string]> | ((message: string) => Error), value: T, formatOrFormatLines: ValueOrAccessor<string | string[]>, ...formatArguments: any[]): Exclude<T, Falsy>;
@@ -1,11 +0,0 @@
1
- export function customInvariant(ErrorConstructor, value, formatOrFormatLines, ...formatArguments) {
2
- if (value) {
3
- return value;
4
- }
5
- let format = typeof formatOrFormatLines === 'function' ? formatOrFormatLines() : formatOrFormatLines;
6
- format = Array.isArray(format) ? format.join('\n') : format;
7
- throw new ErrorConstructor(format.replaceAll('%s', () => {
8
- const argumentOrAccessor = formatArguments.shift();
9
- return typeof argumentOrAccessor === 'function' ? argumentOrAccessor() : argumentOrAccessor;
10
- }));
11
- }
@@ -1 +0,0 @@
1
- export declare function promiseCompose<A, B, C>(f1: (a: A) => Promise<B>, f2: (b: B) => Promise<C>): (a: A) => Promise<C>;
@@ -1,3 +0,0 @@
1
- export function promiseCompose(f1, f2) {
2
- return a => f1(a).then(f2);
3
- }
@@ -1,3 +0,0 @@
1
- import { type Parser } from './parser.js';
2
- export declare function createTupleParser<A, B, Sequence>([parserA, parserB]: [Parser<A, Sequence>, Parser<B, Sequence>]): Parser<[A, B], Sequence>;
3
- export declare function createTupleParser<A, B, C, Sequence>([parserA, parserB, parserC]: [Parser<A, Sequence>, Parser<B, Sequence>, Parser<C, Sequence>]): Parser<[A, B, C], Sequence>;
@@ -1,10 +0,0 @@
1
- export function createTupleParser(parsers) {
2
- return async (parserContext) => {
3
- const values = [];
4
- for (const parser of parsers) {
5
- const value = await parser(parserContext);
6
- values.push(value);
7
- }
8
- return values;
9
- };
10
- }
@@ -1,2 +0,0 @@
1
- import { Parser } from "./parser.js";
2
- export declare const createTerminatedArrayParser: <ElementOutput, TerminatorOutput, Sequence>(elementParser: Parser<ElementOutput, Sequence>, terminatorParser: Parser<unknown, Sequence>) => Parser<[ElementOutput[], TerminatorOutput], Sequence>;
@@ -1,24 +0,0 @@
1
- import { promiseCompose } from "./promiseCompose.js";
2
- import { createUnionParser } from "./unionParser.js";
3
- class Terminated {
4
- value;
5
- constructor(value) {
6
- this.value = value;
7
- }
8
- }
9
- export const createTerminatedArrayParser = (elementParser, terminatorParser) => {
10
- const elementOrTerminatorParser = createUnionParser([
11
- elementParser,
12
- promiseCompose(terminatorParser, terminatorValue => new Terminated(terminatorValue)),
13
- ]);
14
- return async (parserContext) => {
15
- const elements = [];
16
- while (true) {
17
- const elementOrTerminator = await elementOrTerminatorParser(parserContext);
18
- if (elementOrTerminator instanceof Terminated) {
19
- return [elements, elementOrTerminator.value];
20
- }
21
- elements.push(elementOrTerminator);
22
- }
23
- };
24
- };
@@ -1,15 +0,0 @@
1
- import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from "./parserInputCompanion.js";
2
- export type UnparserOutputCompanion<Sequence, Element> = {
3
- is(value: unknown): value is Sequence;
4
- from(elements: Element[]): Sequence;
5
- concat(sequences: Sequence[]): Sequence;
6
- length(sequence: Sequence): number;
7
- };
8
- export declare class StringUnparserOutputCompanion extends StringParserInputCompanion implements UnparserOutputCompanion<string, string> {
9
- concat(sequences: string[]): string;
10
- }
11
- export declare const stringUnparserOutputCompanion: StringUnparserOutputCompanion;
12
- export declare class Uint8ArrayUnparserOutputCompanion extends Uint8ArrayParserInputCompanion implements UnparserOutputCompanion<Uint8Array, number> {
13
- concat(sequences: Uint8Array[]): Uint8Array;
14
- }
15
- export declare const uint8ArrayUnparserOutputCompanion: Uint8ArrayUnparserOutputCompanion;
@@ -1,13 +0,0 @@
1
- import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from "./parserInputCompanion.js";
2
- export class StringUnparserOutputCompanion extends StringParserInputCompanion {
3
- concat(sequences) {
4
- return sequences.join('');
5
- }
6
- }
7
- export const stringUnparserOutputCompanion = new StringUnparserOutputCompanion();
8
- export class Uint8ArrayUnparserOutputCompanion extends Uint8ArrayParserInputCompanion {
9
- concat(sequences) {
10
- return Buffer.concat(sequences);
11
- }
12
- }
13
- export const uint8ArrayUnparserOutputCompanion = new Uint8ArrayUnparserOutputCompanion();
@@ -1,28 +0,0 @@
1
- export type ZipStoreCompression = {
2
- type: 'store';
3
- };
4
- export type ZipDeflateCompression = {
5
- type: 'deflate';
6
- level: number;
7
- };
8
- export type ZipCompression = ZipStoreCompression | ZipDeflateCompression;
9
- export type ZipFileEntry = {
10
- type: 'file';
11
- name: string;
12
- date: Date;
13
- comment: string;
14
- unixPermissions: number;
15
- dosPermissions: number;
16
- compression: ZipCompression;
17
- content: Uint8Array;
18
- };
19
- export type ZipDirectoryEntry = {
20
- type: 'directory';
21
- name: string;
22
- date: Date;
23
- comment: string;
24
- unixPermissions: number;
25
- dosPermissions: number;
26
- entries: ZipEntry[];
27
- };
28
- export type ZipEntry = ZipFileEntry | ZipDirectoryEntry;
@@ -1,32 +0,0 @@
1
- export type ZipStoreCompression = {
2
- type: 'store';
3
- };
4
- export type ZipDeflateCompression = {
5
- type: 'deflate';
6
- level: number;
7
- };
8
- export type ZipCompression = ZipStoreCompression | ZipDeflateCompression;
9
- export type ZipFileEntry = {
10
- type: 'file';
11
- name: string;
12
- date: Date;
13
- comment: Uint8Array;
14
- unixPermissions: number;
15
- dosPermissions: number;
16
- compression: ZipCompression;
17
- content: Uint8Array;
18
- };
19
- export type ZipDirectoryEntry = {
20
- type: 'directory';
21
- name: string;
22
- date: Date;
23
- comment: Uint8Array;
24
- unixPermissions: number;
25
- dosPermissions: number;
26
- entries: ZipEntry[];
27
- };
28
- export type ZipEntry = ZipFileEntry | ZipDirectoryEntry;
29
- export type ZipFile = {
30
- root: ZipDirectoryEntry;
31
- comment: Uint8Array;
32
- };
@@ -1,6 +0,0 @@
1
- export type ZipFileEntry = {
2
- type: 'file';
3
- name: string;
4
- date: Date;
5
- content: Uint8Array;
6
- };
package/src/apk.ts DELETED
@@ -1,48 +0,0 @@
1
- import { type Zip } from './zip.js';
2
-
3
- export type ApkSigningBlockPair = {
4
- id: number;
5
- value: Uint8Array;
6
- };
7
-
8
- export type ApkSignatureV2Digest = {
9
- signatureAlgorithmId: number;
10
- digest: Uint8Array;
11
- };
12
-
13
- export type ApkSignatureV2AdditionalAttribute = {
14
- id: number;
15
- value: Uint8Array;
16
- };
17
-
18
- export type ApkSignatureV2SignedData = {
19
- digests: ApkSignatureV2Digest[];
20
- certificates: Uint8Array[];
21
- additionalAttributes: ApkSignatureV2AdditionalAttribute[];
22
- zeroPaddingLength?: number;
23
- };
24
-
25
- export type ApkSignatureV2Signature = {
26
- signatureAlgorithmId: number;
27
- signature: Uint8Array;
28
- };
29
-
30
- export type ApkSignatureV2Signer = {
31
- signedData: ApkSignatureV2SignedData;
32
- signatures: ApkSignatureV2Signature[];
33
- publicKey: Uint8Array;
34
- };
35
-
36
- export type ApkSignatureV2 = {
37
- signers: ApkSignatureV2Signer[];
38
- };
39
-
40
- export type ApkSigningBlock = {
41
- pairs: ApkSigningBlockPair[];
42
- signatureV2?: ApkSignatureV2;
43
- zeroPaddingLength?: number;
44
- };
45
-
46
- export type Apk = Zip & {
47
- signingBlock?: ApkSigningBlock;
48
- };
@@ -1,30 +0,0 @@
1
- import test from 'ava';
2
- import { uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
3
- import { runParser } from './parser.js';
4
- import { apkParser } from './apkParser.js';
5
-
6
- for (const apkCid of [
7
- 'bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu',
8
- 'bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m',
9
- ]) {
10
- test(
11
- 'apk ' + apkCid,
12
- async t => {
13
- const apkResponse = await fetch('https://ipfs.io/ipfs/' + apkCid);
14
-
15
- const apkStream = apkResponse.body!;
16
-
17
- const actual = await runParser(apkParser, apkStream, uint8ArrayParserInputCompanion, {
18
- errorJoinMode: 'all',
19
- });
20
-
21
- for (const entry of actual.entries) {
22
- if (entry.type === 'file') {
23
- entry.content = new Uint8Array([ entry.content.length ]);
24
- }
25
- }
26
-
27
- t.snapshot(actual);
28
- },
29
- );
30
- }
Binary file