@futpib/parser 1.0.1 → 1.0.2

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 (304) hide show
  1. package/build/allSettledStream.js +32 -14
  2. package/build/allSettledStream.test.js +32 -0
  3. package/build/androidPackage.d.ts +39 -0
  4. package/build/androidPackageParser.d.ts +17 -0
  5. package/build/androidPackageParser.js +183 -0
  6. package/build/{apkParser.test.js → androidPackageParser.test.js} +6 -6
  7. package/build/androidPackageUnparser.d.ts +4 -0
  8. package/build/{apkUnparser.js → androidPackageUnparser.js} +23 -23
  9. package/build/androidPackageUnparser.test.js +26 -0
  10. package/build/arbitrarilySlicedAsyncInterable.d.ts +3 -1
  11. package/build/arbitrarilySlicedAsyncInterable.js +3 -3
  12. package/build/arrayParser.test.js +3 -3
  13. package/build/backsmali.d.ts +1 -0
  14. package/build/backsmali.js +22 -0
  15. package/build/bsonParser.js +6 -2
  16. package/build/customInvariant.d.ts +1 -1
  17. package/build/dalvikBytecodeParser/formatParsers.d.ts +97 -0
  18. package/build/dalvikBytecodeParser/formatParsers.js +169 -0
  19. package/build/dalvikBytecodeParser.d.ts +107 -0
  20. package/build/dalvikBytecodeParser.js +836 -0
  21. package/build/dalvikExecutable.d.ts +158 -0
  22. package/build/dalvikExecutable.js +20 -0
  23. package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +4 -0
  24. package/build/dalvikExecutableParser/stringSyntaxParser.js +76 -0
  25. package/build/dalvikExecutableParser/typeParsers.d.ts +10 -0
  26. package/build/dalvikExecutableParser/typeParsers.js +34 -0
  27. package/build/dalvikExecutableParser/typedNumbers.d.ts +90 -0
  28. package/build/dalvikExecutableParser/typedNumbers.js +19 -0
  29. package/build/dalvikExecutableParser.d.ts +5 -0
  30. package/build/dalvikExecutableParser.js +1439 -0
  31. package/build/dalvikExecutableParser.test.js +70 -0
  32. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +298 -0
  33. package/build/debugLogInputParser.d.ts +4 -0
  34. package/build/debugLogInputParser.js +16 -0
  35. package/build/debugLogParser.js +14 -3
  36. package/build/disjunctionParser.d.ts +2 -1
  37. package/build/disjunctionParser.js +4 -2
  38. package/build/elementTerminatedArrayParser.d.ts +3 -0
  39. package/build/elementTerminatedArrayParser.js +18 -0
  40. package/build/elementTerminatedArrayParser.test.js +52 -0
  41. package/build/elementTerminatedSequenceArrayParser.d.ts +3 -0
  42. package/build/elementTerminatedSequenceArrayParser.js +32 -0
  43. package/build/elementTerminatedSequenceArrayParser.test.js +34 -0
  44. package/build/elementTerminatedSequenceParser.d.ts +3 -0
  45. package/build/elementTerminatedSequenceParser.js +27 -0
  46. package/build/elementTerminatedSequenceParser.test.js +34 -0
  47. package/build/exactElementParser.js +10 -5
  48. package/build/exactSequenceParser.d.ts +2 -1
  49. package/build/exactSequenceParser.js +12 -2
  50. package/build/fetchCid.d.ts +1 -0
  51. package/build/fetchCid.js +107 -0
  52. package/build/fixedLengthSequenceParser.d.ts +1 -0
  53. package/build/fixedLengthSequenceParser.js +18 -1
  54. package/build/fixedLengthSequenceParser.test.js +41 -0
  55. package/build/hasExecutable.d.ts +1 -0
  56. package/build/hasExecutable.js +8 -0
  57. package/build/highResolutionTimer.d.ts +16 -0
  58. package/build/highResolutionTimer.js +42 -0
  59. package/build/inputReader.d.ts +11 -0
  60. package/build/inputReader.js +37 -0
  61. package/build/inputReader.test.js +165 -0
  62. package/build/inputReaderState.d.ts +10 -0
  63. package/build/inputReaderState.js +16 -0
  64. package/build/inspect.d.ts +1 -0
  65. package/build/inspect.js +7 -0
  66. package/build/javaKeyStoreParser.test.js +2 -2
  67. package/build/jsonParser.d.ts +2 -0
  68. package/build/jsonParser.js +11 -14
  69. package/build/leb128Parser.d.ts +7 -0
  70. package/build/leb128Parser.js +82 -0
  71. package/build/leb128Parser.test.js +107 -0
  72. package/build/lookaheadParser.d.ts +2 -0
  73. package/build/lookaheadParser.js +14 -0
  74. package/build/negativeLookaheadParser.js +21 -15
  75. package/build/negativeLookaheadParser.test.js +30 -0
  76. package/build/nonEmptyArrayParser.d.ts +2 -0
  77. package/build/nonEmptyArrayParser.js +32 -0
  78. package/build/nonEmptyArrayParser.test.js +16 -0
  79. package/build/parser.d.ts +10 -1
  80. package/build/parser.js +66 -31
  81. package/build/parser.test.js +79 -12
  82. package/build/parserAccessorParser.js +9 -1
  83. package/build/parserConsumedSequenceParser.js +20 -15
  84. package/build/parserContext.d.ts +14 -0
  85. package/build/parserContext.js +56 -27
  86. package/build/parserContext.test.js +27 -0
  87. package/build/parserCreatorCompose.d.ts +1 -0
  88. package/build/parserCreatorCompose.js +8 -2
  89. package/build/parserError.d.ts +6 -0
  90. package/build/parserError.js +6 -6
  91. package/build/parserInputCompanion.d.ts +15 -0
  92. package/build/parserInputCompanion.js +38 -0
  93. package/build/promiseCompose.d.ts +1 -1
  94. package/build/promiseCompose.js +12 -1
  95. package/build/promiseSettled.d.ts +1 -0
  96. package/build/promiseSettled.js +4 -0
  97. package/build/separatedArrayParser.d.ts +2 -0
  98. package/build/separatedArrayParser.js +39 -0
  99. package/build/separatedArrayParser.test.d.ts +1 -0
  100. package/build/separatedArrayParser.test.js +21 -0
  101. package/build/sequenceBuffer.d.ts +10 -0
  102. package/build/sequenceBuffer.js +54 -2
  103. package/build/sequenceBuffer.test.js +57 -0
  104. package/build/sequenceTerminatedSequenceParser.d.ts +5 -0
  105. package/build/sequenceTerminatedSequenceParser.js +32 -0
  106. package/build/sequenceTerminatedSequenceParser.test.d.ts +1 -0
  107. package/build/sequenceTerminatedSequenceParser.test.js +37 -0
  108. package/build/skipParser.d.ts +1 -1
  109. package/build/skipParser.js +4 -2
  110. package/build/skipToParser.d.ts +2 -0
  111. package/build/skipToParser.js +11 -0
  112. package/build/sliceBoundedParser.d.ts +1 -1
  113. package/build/sliceBoundedParser.js +7 -2
  114. package/build/sliceBoundedParser.test.js +35 -1
  115. package/build/smali.d.ts +1 -0
  116. package/build/smali.js +17 -0
  117. package/build/smaliParser.d.ts +12 -0
  118. package/build/smaliParser.js +656 -0
  119. package/build/smaliParser.test.d.ts +1 -0
  120. package/build/smaliParser.test.js +115 -0
  121. package/build/terminatedArrayParser.d.ts +3 -1
  122. package/build/terminatedArrayParser.js +79 -2
  123. package/build/terminatedArrayParser.test.d.ts +1 -0
  124. package/build/terminatedArrayParser.test.js +131 -0
  125. package/build/toAsyncIterable.d.ts +1 -0
  126. package/build/toAsyncIterable.js +7 -0
  127. package/build/toAsyncIterator.d.ts +1 -0
  128. package/build/toAsyncIterator.js +33 -0
  129. package/build/tupleParser.d.ts +4 -0
  130. package/build/tupleParser.js +1 -5
  131. package/build/unionParser.d.ts +2 -1
  132. package/build/unionParser.js +27 -12
  133. package/build/unionParser.test.d.ts +1 -0
  134. package/build/unionParser.test.js +60 -0
  135. package/build/zipParser.d.ts +7 -2
  136. package/build/zipParser.js +36 -12
  137. package/build/zipUnparser.d.ts +4 -1
  138. package/build/zipUnparser.js +55 -26
  139. package/build/zipUnparser.test.js +14 -14
  140. package/package.json +23 -7
  141. package/src/allSettledStream.test.ts +40 -0
  142. package/src/allSettledStream.ts +47 -15
  143. package/src/androidPackage.ts +48 -0
  144. package/src/{apkParser.test.ts → androidPackageParser.test.ts} +6 -7
  145. package/src/{apkParser.test.ts.md → androidPackageParser.test.ts.md} +4 -4
  146. package/src/androidPackageParser.test.ts.snap +0 -0
  147. package/src/androidPackageParser.ts +440 -0
  148. package/src/androidPackageUnparser.test.ts +36 -0
  149. package/src/androidPackageUnparser.ts +120 -0
  150. package/src/arbitrarilySlicedAsyncInterable.ts +7 -2
  151. package/src/arrayParser.test.ts +3 -3
  152. package/src/backsmali.ts +30 -0
  153. package/src/bsonParser.ts +13 -2
  154. package/src/customInvariant.ts +1 -1
  155. package/src/dalvikBytecodeParser/formatParsers.ts +421 -0
  156. package/src/dalvikBytecodeParser.ts +2074 -0
  157. package/src/dalvikExecutable.ts +220 -0
  158. package/src/dalvikExecutableParser/stringSyntaxParser.ts +145 -0
  159. package/src/dalvikExecutableParser/typeParsers.ts +65 -0
  160. package/src/dalvikExecutableParser/typedNumbers.ts +57 -0
  161. package/src/dalvikExecutableParser.test.ts +89 -0
  162. package/src/dalvikExecutableParser.test.ts.md +634 -0
  163. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  164. package/src/dalvikExecutableParser.ts +2768 -0
  165. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +346 -0
  166. package/src/debugLogInputParser.ts +28 -0
  167. package/src/debugLogParser.ts +19 -3
  168. package/src/disjunctionParser.ts +10 -5
  169. package/src/elementTerminatedArrayParser.test.ts +99 -0
  170. package/src/elementTerminatedArrayParser.ts +31 -0
  171. package/src/elementTerminatedSequenceArrayParser.test.ts +54 -0
  172. package/src/elementTerminatedSequenceArrayParser.ts +52 -0
  173. package/src/elementTerminatedSequenceParser.test.ts +54 -0
  174. package/src/elementTerminatedSequenceParser.ts +43 -0
  175. package/src/exactElementParser.ts +17 -11
  176. package/src/exactSequenceParser.ts +23 -2
  177. package/src/fetchCid.ts +125 -0
  178. package/src/fixedLengthSequenceParser.test.ts +77 -0
  179. package/src/fixedLengthSequenceParser.ts +28 -1
  180. package/src/hasExecutable.ts +11 -0
  181. package/src/highResolutionTimer.ts +49 -0
  182. package/src/inputReader.test.ts +209 -0
  183. package/src/inputReader.ts +75 -0
  184. package/src/inputReaderState.ts +33 -0
  185. package/src/inspect.ts +9 -0
  186. package/src/javaKeyStoreParser.test.ts +2 -3
  187. package/src/jsonParser.ts +13 -25
  188. package/src/leb128Parser.test.ts +171 -0
  189. package/src/leb128Parser.ts +125 -0
  190. package/src/lookaheadParser.ts +19 -0
  191. package/src/negativeLookaheadParser.test.ts +53 -0
  192. package/src/negativeLookaheadParser.ts +26 -14
  193. package/src/nonEmptyArrayParser.test.ts +20 -0
  194. package/src/nonEmptyArrayParser.ts +44 -0
  195. package/src/optionalParser.ts +1 -0
  196. package/src/parser.test.ts +131 -12
  197. package/src/parser.test.ts.md +21 -21
  198. package/src/parser.test.ts.snap +0 -0
  199. package/src/parser.ts +149 -45
  200. package/src/parserAccessorParser.ts +12 -2
  201. package/src/parserConsumedSequenceParser.ts +25 -16
  202. package/src/parserContext.test.ts +31 -0
  203. package/src/parserContext.ts +109 -37
  204. package/src/parserCreatorCompose.ts +20 -2
  205. package/src/parserError.ts +9 -6
  206. package/src/parserInputCompanion.ts +55 -0
  207. package/src/promiseCompose.ts +17 -3
  208. package/src/promiseSettled.ts +6 -0
  209. package/src/separatedArrayParser.test.ts +34 -0
  210. package/src/separatedArrayParser.ts +55 -0
  211. package/src/sequenceBuffer.test.ts +70 -0
  212. package/src/sequenceBuffer.ts +88 -2
  213. package/src/sequenceTerminatedSequenceParser.test.ts +60 -0
  214. package/src/sequenceTerminatedSequenceParser.ts +62 -0
  215. package/src/skipParser.ts +7 -5
  216. package/src/skipToParser.ts +16 -0
  217. package/src/sliceBoundedParser.test.ts +43 -1
  218. package/src/sliceBoundedParser.ts +19 -1
  219. package/src/smali.ts +24 -0
  220. package/src/smaliParser.test.ts +132 -0
  221. package/src/smaliParser.test.ts.md +2320 -0
  222. package/src/smaliParser.test.ts.snap +0 -0
  223. package/src/smaliParser.ts +1166 -0
  224. package/src/terminatedArrayParser.test.ts +258 -0
  225. package/src/terminatedArrayParser.ts +108 -3
  226. package/src/toAsyncIterable.ts +7 -0
  227. package/src/toAsyncIterator.ts +48 -0
  228. package/src/tupleParser.ts +8 -5
  229. package/src/unionParser.test.ts +79 -0
  230. package/src/unionParser.ts +44 -16
  231. package/src/zipParser.ts +77 -18
  232. package/src/zipUnparser.test.ts +18 -18
  233. package/src/zipUnparser.ts +88 -27
  234. package/build/apk.d.ts +0 -39
  235. package/build/apkParser.d.ts +0 -16
  236. package/build/apkParser.js +0 -164
  237. package/build/apkUnparser.d.ts +0 -4
  238. package/build/apkUnparser.test.js +0 -26
  239. package/build/arbitraryDosDate.d.ts +0 -2
  240. package/build/arbitraryDosDate.js +0 -8
  241. package/build/arbitraryZipEntry.d.ts +0 -3
  242. package/build/arbitraryZipEntry.js +0 -26
  243. package/build/createDisjunctionParser.d.ts +0 -2
  244. package/build/createDisjunctionParser.js +0 -47
  245. package/build/createExactParser.d.ts +0 -2
  246. package/build/createExactParser.js +0 -12
  247. package/build/createSequentialUnionParser.d.ts +0 -2
  248. package/build/createSequentialUnionParser.js +0 -69
  249. package/build/fixedLengthChunkParser.d.ts +0 -2
  250. package/build/fixedLengthChunkParser.js +0 -12
  251. package/build/fixedLengthParser.d.ts +0 -2
  252. package/build/fixedLengthParser.js +0 -12
  253. package/build/inputChunkBuffer.d.ts +0 -15
  254. package/build/inputChunkBuffer.js +0 -40
  255. package/build/inputChunkBuffer.test.js +0 -34
  256. package/build/inputCompanion.d.ts +0 -18
  257. package/build/inputCompanion.js +0 -28
  258. package/build/invariantDefined.d.ts +0 -1
  259. package/build/invariantDefined.js +0 -5
  260. package/build/invariantIdentity.d.ts +0 -3
  261. package/build/invariantIdentity.js +0 -5
  262. package/build/javaKeystoreParser.d.ts +0 -2
  263. package/build/javaKeystoreParser.js +0 -7
  264. package/build/jsonParser2.d.ts +0 -3
  265. package/build/jsonParser2.js +0 -52
  266. package/build/jsonParser2.test.js +0 -22
  267. package/build/negativeLookahead.d.ts +0 -2
  268. package/build/negativeLookahead.js +0 -18
  269. package/build/parserCompose.d.ts +0 -3
  270. package/build/parserCompose.js +0 -7
  271. package/build/parserImplementationInvariantInvariant.d.ts +0 -3
  272. package/build/parserImplementationInvariantInvariant.js +0 -15
  273. package/build/parserInvariant.d.ts +0 -4
  274. package/build/parserInvariant.js +0 -11
  275. package/build/promiseFish.d.ts +0 -1
  276. package/build/promiseFish.js +0 -3
  277. package/build/sequenceParser.d.ts +0 -3
  278. package/build/sequenceParser.js +0 -10
  279. package/build/terminatedSequenceParser.d.ts +0 -2
  280. package/build/terminatedSequenceParser.js +0 -24
  281. package/build/unparserInputCompanion.d.ts +0 -15
  282. package/build/unparserInputCompanion.js +0 -13
  283. package/build/zipEntry.d.ts +0 -28
  284. package/build/zipFile.d.ts +0 -32
  285. package/build/zipFileEntry.d.ts +0 -6
  286. package/src/apk.ts +0 -48
  287. package/src/apkParser.test.ts.snap +0 -0
  288. package/src/apkParser.ts +0 -392
  289. package/src/apkUnparser.test.ts +0 -37
  290. package/src/apkUnparser.ts +0 -120
  291. package/src/invariantDefined.ts +0 -6
  292. package/src/invariantIdentity.ts +0 -8
  293. /package/build/{apk.js → androidPackage.js} +0 -0
  294. /package/build/{apkParser.test.d.ts → androidPackageParser.test.d.ts} +0 -0
  295. /package/build/{apkUnparser.test.d.ts → androidPackageUnparser.test.d.ts} +0 -0
  296. /package/build/{arbitraryDosPermissions.d.ts → dalvikExecutableParser.test.d.ts} +0 -0
  297. /package/build/{arbitraryDosPermissions.js → dalvikExecutableParserAgainstSmaliParser.test.d.ts} +0 -0
  298. /package/build/{inputChunkBuffer.test.d.ts → elementTerminatedArrayParser.test.d.ts} +0 -0
  299. /package/build/{jsonParser2.test.d.ts → elementTerminatedSequenceArrayParser.test.d.ts} +0 -0
  300. /package/build/{parserParsingInvariant.d.ts → elementTerminatedSequenceParser.test.d.ts} +0 -0
  301. /package/build/{parserParsingInvariant.js → fixedLengthSequenceParser.test.d.ts} +0 -0
  302. /package/build/{zipEntry.js → leb128Parser.test.d.ts} +0 -0
  303. /package/build/{zipFile.js → negativeLookaheadParser.test.d.ts} +0 -0
  304. /package/build/{zipFileEntry.js → nonEmptyArrayParser.test.d.ts} +0 -0
@@ -0,0 +1,97 @@
1
+ import { Iso } from "monocle-ts";
2
+ import { Parser } from "../parser.js";
3
+ export declare const nibblesParser: Parser<[number, number], Uint8Array>;
4
+ type DalvikBytecodeFormat10t = {
5
+ branchOffset: number;
6
+ };
7
+ export declare const dalvikBytecodeFormat10tParser: Parser<DalvikBytecodeFormat10t, Uint8Array>;
8
+ type DalvikBytecodeFormat10x = void;
9
+ export declare const dalvikBytecodeFormat10xParser: Parser<DalvikBytecodeFormat10x, Uint8Array>;
10
+ type DalvikBytecodeFormat11x = {
11
+ registers: number[];
12
+ };
13
+ export declare const dalvikBytecodeFormat11xParser: Parser<DalvikBytecodeFormat11x, Uint8Array>;
14
+ type DalvikBytecodeFormat12x = {
15
+ registers: number[];
16
+ };
17
+ export declare const dalvikBytecodeFormat12xParser: Parser<DalvikBytecodeFormat12x, Uint8Array>;
18
+ type DalvikBytecodeFormat20t = {
19
+ branchOffset: number;
20
+ };
21
+ export declare const dalvikBytecodeFormat20tParser: Parser<DalvikBytecodeFormat20t, Uint8Array>;
22
+ type DalvikBytecodeFormat21c<Index> = {
23
+ index: Index;
24
+ registers: number[];
25
+ };
26
+ export declare const createDalvikBytecodeFormat21cParser: <Index>({ isoIndex, }: {
27
+ isoIndex: Iso<Index, number>;
28
+ }) => Parser<DalvikBytecodeFormat21c<Index>, Uint8Array>;
29
+ type DalvikBytecodeFormat21h = {
30
+ value: number;
31
+ registers: number[];
32
+ };
33
+ export declare const dalvikBytecodeFormat21hParser: Parser<DalvikBytecodeFormat21h, Uint8Array>;
34
+ type DalvikBytecodeFormat21t = {
35
+ branchOffset: number;
36
+ registers: number[];
37
+ };
38
+ export declare const createDalvikBytecodeFormat21tParser: () => Parser<DalvikBytecodeFormat21t, Uint8Array>;
39
+ type DalvikBytecodeFormat21s = {
40
+ registers: number[];
41
+ value: number;
42
+ };
43
+ export declare const createDalvikBytecodeFormat21sParser: () => Parser<DalvikBytecodeFormat21s, Uint8Array>;
44
+ type DalvikBytecodeFormat22b = {
45
+ registers: number[];
46
+ value: number;
47
+ };
48
+ export declare const createDalvikBytecodeFormat22bParser: () => Parser<DalvikBytecodeFormat22b, Uint8Array>;
49
+ type DalvikBytecodeFormat22c<Index> = {
50
+ registers: number[];
51
+ index: Index;
52
+ };
53
+ export declare const createDalvikBytecodeFormat22cParser: <Index>({ isoIndex, }: {
54
+ isoIndex: Iso<Index, number>;
55
+ }) => Parser<DalvikBytecodeFormat22c<Index>, Uint8Array>;
56
+ type DalvikBytecodeFormat22s = {
57
+ value: number;
58
+ registers: number[];
59
+ };
60
+ export declare const createDalvikBytecodeFormat22sParser: () => Parser<DalvikBytecodeFormat22s, Uint8Array>;
61
+ type DalvikBytecodeFormat22t = {
62
+ branchOffset: number;
63
+ registers: number[];
64
+ };
65
+ export declare const createDalvikBytecodeFormat22tParser: () => Parser<DalvikBytecodeFormat22t, Uint8Array>;
66
+ type DalvikBytecodeFormat22x = {
67
+ registers: number[];
68
+ };
69
+ export declare const dalvikBytecodeFormat22xParser: Parser<DalvikBytecodeFormat22x, Uint8Array>;
70
+ type DalvikBytecodeFormat23x = {
71
+ registers: number[];
72
+ };
73
+ export declare const dalvikBytecodeFormat23xParser: Parser<DalvikBytecodeFormat23x, Uint8Array>;
74
+ type DalvikBytecodeFormat31i = {
75
+ value: number;
76
+ registers: number[];
77
+ };
78
+ export declare const dalvikBytecodeFormat31iParser: Parser<DalvikBytecodeFormat31i, Uint8Array>;
79
+ type DalvikBytecodeFormat32x = {
80
+ registers: number[];
81
+ };
82
+ export declare const dalvikBytecodeFormat32xParser: Parser<DalvikBytecodeFormat32x, Uint8Array>;
83
+ type DalvikBytecodeFormat35c<Index> = {
84
+ index: Index;
85
+ registers: number[];
86
+ };
87
+ export declare const createDalvikBytecodeFormat35cParser: <Index>({ isoIndex, }: {
88
+ isoIndex: Iso<Index, number>;
89
+ }) => Parser<DalvikBytecodeFormat35c<Index>, Uint8Array>;
90
+ type DalvikBytecodeFormat3rc<Index> = {
91
+ index: Index;
92
+ registers: number[];
93
+ };
94
+ export declare const createDalvikBytecodeFormat3rcParser: <Index>({ isoIndex, }: {
95
+ isoIndex: Iso<Index, number>;
96
+ }) => Parser<DalvikBytecodeFormat3rc<Index>, Uint8Array>;
97
+ export {};
@@ -0,0 +1,169 @@
1
+ import { byteParser, intParser, shortParser, ubyteParser, ushortParser } from "../dalvikExecutableParser/typeParsers.js";
2
+ import { createElementParser } from "../elementParser.js";
3
+ import { setParserName } from "../parser.js";
4
+ import { promiseCompose } from "../promiseCompose.js";
5
+ import { createTupleParser } from "../tupleParser.js";
6
+ // https://source.android.com/docs/core/runtime/instruction-formats
7
+ export const nibblesParser = promiseCompose(createElementParser(), (byte) => [
8
+ byte >> 4,
9
+ byte & 0b1111,
10
+ ]);
11
+ setParserName(nibblesParser, 'nibblesParser');
12
+ export const dalvikBytecodeFormat10tParser = promiseCompose(byteParser, (branchOffset) => ({
13
+ branchOffset,
14
+ }));
15
+ export const dalvikBytecodeFormat10xParser = promiseCompose(createElementParser(), () => undefined);
16
+ export const dalvikBytecodeFormat11xParser = promiseCompose(ubyteParser, register0 => ({
17
+ registers: [
18
+ register0,
19
+ ],
20
+ }));
21
+ export const dalvikBytecodeFormat12xParser = promiseCompose(nibblesParser, ([register0, register1,]) => ({
22
+ registers: [
23
+ register0,
24
+ register1,
25
+ ],
26
+ }));
27
+ export const dalvikBytecodeFormat20tParser = promiseCompose(shortParser, (branchOffset) => ({
28
+ branchOffset,
29
+ }));
30
+ export const createDalvikBytecodeFormat21cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
31
+ ubyteParser,
32
+ ushortParser,
33
+ ]), ([register0, index,]) => ({
34
+ index: isoIndex.wrap(index),
35
+ registers: [
36
+ register0,
37
+ ],
38
+ }));
39
+ export const dalvikBytecodeFormat21hParser = promiseCompose(createTupleParser([
40
+ ubyteParser,
41
+ ushortParser,
42
+ ]), ([register0, value,]) => ({
43
+ value,
44
+ registers: [
45
+ register0,
46
+ ],
47
+ }));
48
+ export const createDalvikBytecodeFormat21tParser = () => promiseCompose(createTupleParser([
49
+ ubyteParser,
50
+ shortParser,
51
+ ]), ([register0, branchOffset,]) => ({
52
+ branchOffset,
53
+ registers: [
54
+ register0,
55
+ ],
56
+ }));
57
+ export const createDalvikBytecodeFormat21sParser = () => promiseCompose(createTupleParser([
58
+ ubyteParser,
59
+ shortParser,
60
+ ]), ([register0, value,]) => ({
61
+ value,
62
+ registers: [
63
+ register0,
64
+ ],
65
+ }));
66
+ export const createDalvikBytecodeFormat22bParser = () => promiseCompose(createTupleParser([
67
+ ubyteParser,
68
+ ubyteParser,
69
+ byteParser,
70
+ ]), ([register0, register1, value,]) => ({
71
+ value,
72
+ registers: [
73
+ register0,
74
+ register1,
75
+ ],
76
+ }));
77
+ export const createDalvikBytecodeFormat22cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
78
+ nibblesParser,
79
+ ushortParser,
80
+ ]), ([[register0, register1,], index,]) => ({
81
+ index: isoIndex.wrap(index),
82
+ registers: [
83
+ register0,
84
+ register1,
85
+ ],
86
+ }));
87
+ export const createDalvikBytecodeFormat22sParser = () => promiseCompose(createTupleParser([
88
+ nibblesParser,
89
+ shortParser,
90
+ ]), ([[register0, register1,], value,]) => ({
91
+ value,
92
+ registers: [
93
+ register0,
94
+ register1,
95
+ ],
96
+ }));
97
+ export const createDalvikBytecodeFormat22tParser = () => promiseCompose(createTupleParser([
98
+ nibblesParser,
99
+ shortParser,
100
+ ]), ([[register0, register1,], branchOffset,]) => ({
101
+ branchOffset,
102
+ registers: [
103
+ register0,
104
+ register1,
105
+ ],
106
+ }));
107
+ export const dalvikBytecodeFormat22xParser = promiseCompose(createTupleParser([
108
+ ubyteParser,
109
+ ushortParser,
110
+ ]), ([register0, register1,]) => ({
111
+ registers: [
112
+ register0,
113
+ register1,
114
+ ],
115
+ }));
116
+ export const dalvikBytecodeFormat23xParser = promiseCompose(createTupleParser([
117
+ ubyteParser,
118
+ ubyteParser,
119
+ ubyteParser,
120
+ ]), ([register0, register1, register2,]) => ({
121
+ registers: [
122
+ register0,
123
+ register1,
124
+ register2,
125
+ ],
126
+ }));
127
+ export const dalvikBytecodeFormat31iParser = promiseCompose(createTupleParser([
128
+ ubyteParser,
129
+ intParser,
130
+ ]), ([register0, value,]) => ({
131
+ value,
132
+ registers: [
133
+ register0,
134
+ ],
135
+ }));
136
+ export const dalvikBytecodeFormat32xParser = promiseCompose(createTupleParser([
137
+ ushortParser,
138
+ ushortParser,
139
+ ]), ([register0, register1,]) => ({
140
+ registers: [
141
+ register0,
142
+ register1,
143
+ ],
144
+ }));
145
+ export const createDalvikBytecodeFormat35cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
146
+ nibblesParser,
147
+ ushortParser,
148
+ nibblesParser,
149
+ nibblesParser,
150
+ ]), ([[registerCount, register4,], index, [register0, register1,], [register2, register3,],]) => ({
151
+ index: isoIndex.wrap(index),
152
+ registers: Object.assign([
153
+ register0,
154
+ register1,
155
+ register2,
156
+ register3,
157
+ register4,
158
+ ], {
159
+ length: registerCount,
160
+ }),
161
+ }));
162
+ export const createDalvikBytecodeFormat3rcParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
163
+ ubyteParser,
164
+ ushortParser,
165
+ ushortParser,
166
+ ]), ([registerCount, index, firstRegister,]) => ({
167
+ index: isoIndex.wrap(index),
168
+ registers: Array.from({ length: registerCount }, (_, index) => firstRegister + index),
169
+ }));
@@ -0,0 +1,107 @@
1
+ import { DalvikExecutableField, DalvikExecutableMethod } from "./dalvikExecutable.js";
2
+ import { IndexIntoFieldIds, IndexIntoMethodIds, IndexIntoStringIds, IndexIntoTypeIds } from "./dalvikExecutableParser/typedNumbers.js";
3
+ import { Parser } from "./parser.js";
4
+ type DalvikBytecodeOperationNoOperation = {
5
+ operation: 'no-operation';
6
+ };
7
+ declare const dalvikBytecodeOperationInvokeVirtualParser: Parser<{
8
+ operation: "invoke-virtual";
9
+ methodIndex: IndexIntoMethodIds;
10
+ registers: number[];
11
+ }, Uint8Array<ArrayBufferLike>>;
12
+ type DalvikBytecodeOperationInvokeVirtual = Awaited<ReturnType<typeof dalvikBytecodeOperationInvokeVirtualParser>>;
13
+ declare const dalvikBytecodeOperationInvokeSuperParser: Parser<{
14
+ operation: "invoke-super";
15
+ methodIndex: IndexIntoMethodIds;
16
+ registers: number[];
17
+ }, Uint8Array<ArrayBufferLike>>;
18
+ type DalvikBytecodeOperationInvokeSuper = Awaited<ReturnType<typeof dalvikBytecodeOperationInvokeSuperParser>>;
19
+ declare const dalvikBytecodeOperationInvokeDirectParser: Parser<{
20
+ operation: "invoke-direct";
21
+ methodIndex: IndexIntoMethodIds;
22
+ registers: number[];
23
+ }, Uint8Array<ArrayBufferLike>>;
24
+ type DalvikBytecodeOperationInvokeDirect = Awaited<ReturnType<typeof dalvikBytecodeOperationInvokeDirectParser>>;
25
+ declare const dalvikBytecodeOperationInvokeStaticParser: Parser<{
26
+ operation: "invoke-static";
27
+ methodIndex: IndexIntoMethodIds;
28
+ registers: number[];
29
+ }, Uint8Array<ArrayBufferLike>>;
30
+ type DalvikBytecodeOperationInvokeStatic = Awaited<ReturnType<typeof dalvikBytecodeOperationInvokeStaticParser>>;
31
+ declare const dalvikBytecodeOperationInvokeInterfaceParser: Parser<{
32
+ operation: "invoke-interface";
33
+ methodIndex: IndexIntoMethodIds;
34
+ registers: number[];
35
+ }, Uint8Array<ArrayBufferLike>>;
36
+ type DalvikBytecodeOperationInvokeInterface = Awaited<ReturnType<typeof dalvikBytecodeOperationInvokeInterfaceParser>>;
37
+ type DalvikBytecodeOperationInvoke = DalvikBytecodeOperationInvokeVirtual | DalvikBytecodeOperationInvokeSuper | DalvikBytecodeOperationInvokeDirect | DalvikBytecodeOperationInvokeStatic | DalvikBytecodeOperationInvokeInterface;
38
+ type DalvikBytecodeOperationInstanceOf = {
39
+ operation: 'instance-of';
40
+ registers: number[];
41
+ typeIndex: IndexIntoTypeIds;
42
+ };
43
+ type DalvikBytecodeOperationNewInstance = {
44
+ operation: 'new-instance';
45
+ typeIndex: IndexIntoTypeIds;
46
+ registers: number[];
47
+ };
48
+ type DalvikBytecodeOperationCheckCast = {
49
+ operation: 'check-cast';
50
+ typeIndex: IndexIntoTypeIds;
51
+ registers: number[];
52
+ };
53
+ type DalvikBytecodeOperationReturnVoid = {
54
+ operation: 'return-void';
55
+ };
56
+ declare const dalvikBytecodeMoveResultParser: Parser<{
57
+ operation: "move-result";
58
+ registers: number[];
59
+ }, Uint8Array<ArrayBufferLike>>;
60
+ type DalvikBytecodeOperationMoveResult = Awaited<ReturnType<typeof dalvikBytecodeMoveResultParser>>;
61
+ declare const dalvikBytecodeMoveResultWideParser: Parser<{
62
+ operation: "move-result-wide";
63
+ registers: number[];
64
+ }, Uint8Array<ArrayBufferLike>>;
65
+ type DalvikBytecodeOperationMoveResultWide = Awaited<ReturnType<typeof dalvikBytecodeMoveResultWideParser>>;
66
+ declare const dalvikBytecodeMoveResultObjectParser: Parser<{
67
+ operation: "move-result-object";
68
+ registers: number[];
69
+ }, Uint8Array<ArrayBufferLike>>;
70
+ type DalvikBytecodeOperationMoveResultObject = Awaited<ReturnType<typeof dalvikBytecodeMoveResultObjectParser>>;
71
+ declare const dalvikBytecodeMoveExceptionParser: Parser<{
72
+ operation: "move-exception";
73
+ registers: number[];
74
+ }, Uint8Array<ArrayBufferLike>>;
75
+ type DalvikBytecodeOperationMoveException = Awaited<ReturnType<typeof dalvikBytecodeMoveExceptionParser>>;
76
+ type DalvikBytecodeOperationMoveResult1 = DalvikBytecodeOperationMoveResult | DalvikBytecodeOperationMoveResultWide | DalvikBytecodeOperationMoveResultObject | DalvikBytecodeOperationMoveException;
77
+ export type DalvikBytecodeOperation = DalvikBytecodeOperationNoOperation | DalvikBytecodeOperationInvoke | DalvikBytecodeOperationNewInstance | DalvikBytecodeOperationCheckCast | DalvikBytecodeOperationInstanceOf | DalvikBytecodeOperationReturnVoid | DalvikBytecodeOperationMoveResult1;
78
+ export declare const dalvikBytecodeOperationCompanion: {
79
+ getRegisters(operation: DalvikBytecodeOperation): number[];
80
+ };
81
+ export type DalvikBytecode = DalvikBytecodeOperation[];
82
+ export declare const createDalvikBytecodeParser: (size: number) => Parser<DalvikBytecode, Uint8Array>;
83
+ type ResolvedDalvikBytecodeOperation<T extends DalvikBytecodeOperation> = T extends {
84
+ stringIndex: IndexIntoFieldIds;
85
+ } ? Omit<T, 'stringIndex'> & {
86
+ string: string;
87
+ } : T extends {
88
+ typeIndex: IndexIntoTypeIds;
89
+ } ? Omit<T, 'typeIndex'> & {
90
+ type: string;
91
+ } : T extends {
92
+ methodIndex: IndexIntoMethodIds;
93
+ } ? Omit<T, 'methodIndex'> & {
94
+ method: DalvikExecutableMethod;
95
+ } : T extends {
96
+ fieldIndex: IndexIntoFieldIds;
97
+ } ? Omit<T, 'fieldIndex'> & {
98
+ field: DalvikExecutableField;
99
+ } : T;
100
+ export type DalvikBytecodeOperationResolvers = {
101
+ resolveIndexIntoStringIds: (index: IndexIntoStringIds) => string;
102
+ resolveIndexIntoTypeIds: (index: IndexIntoTypeIds) => string;
103
+ resolveIndexIntoMethodIds: (index: IndexIntoMethodIds) => DalvikExecutableMethod;
104
+ resolveIndexIntoFieldIds: (index: IndexIntoFieldIds) => DalvikExecutableField;
105
+ };
106
+ export declare function resolveDalvikBytecodeOperation<T extends DalvikBytecodeOperation>(operation: T, { resolveIndexIntoStringIds, resolveIndexIntoTypeIds, resolveIndexIntoMethodIds, resolveIndexIntoFieldIds, }: DalvikBytecodeOperationResolvers): ResolvedDalvikBytecodeOperation<T>;
107
+ export {};