@futpib/parser 1.0.2 → 1.0.4

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 (311) 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 +1 -1
  7. package/build/allSettledStream.test.js +2 -2
  8. package/build/androidPackageParser.d.ts +1 -1
  9. package/build/androidPackageParser.js +5 -3
  10. package/build/androidPackageParser.test.js +7 -7
  11. package/build/androidPackageUnparser.d.ts +2 -2
  12. package/build/androidPackageUnparser.js +18 -14
  13. package/build/androidPackageUnparser.test.js +7 -7
  14. package/build/arbitrarilySlicedAsyncInterator.js +2 -1
  15. package/build/arbitraryDalvikBytecode.d.ts +4 -0
  16. package/build/arbitraryDalvikBytecode.js +640 -0
  17. package/build/arbitraryDalvikExecutable.d.ts +3 -0
  18. package/build/arbitraryDalvikExecutable.js +282 -0
  19. package/build/arbitraryDosDateTime.js +1 -0
  20. package/build/arbitraryZipStream.js +1 -1
  21. package/build/arrayParser.js +2 -2
  22. package/build/arrayUnparser.d.ts +1 -1
  23. package/build/backsmali.d.ts +3 -1
  24. package/build/backsmali.js +31 -3
  25. package/build/bash.d.ts +84 -0
  26. package/build/bash.js +1 -0
  27. package/build/bashParser.d.ts +6 -0
  28. package/build/bashParser.js +294 -0
  29. package/build/bashParser.test.d.ts +1 -0
  30. package/build/bashParser.test.js +181 -0
  31. package/build/customInvariant.d.ts +2 -1
  32. package/build/customInvariant.js +4 -6
  33. package/build/dalvikBytecodeParser/formatParsers.d.ts +76 -2
  34. package/build/dalvikBytecodeParser/formatParsers.js +146 -11
  35. package/build/dalvikBytecodeParser/formatSizes.d.ts +34 -0
  36. package/build/dalvikBytecodeParser/formatSizes.js +34 -0
  37. package/build/dalvikBytecodeParser/operationFormats.d.ts +225 -0
  38. package/build/dalvikBytecodeParser/operationFormats.js +225 -0
  39. package/build/dalvikBytecodeParser.d.ts +1105 -5
  40. package/build/dalvikBytecodeParser.js +658 -205
  41. package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +152 -0
  42. package/build/dalvikBytecodeUnparser/formatUnparsers.js +225 -0
  43. package/build/dalvikBytecodeUnparser.d.ts +3 -0
  44. package/build/dalvikBytecodeUnparser.js +642 -0
  45. package/build/dalvikBytecodeUnparser.test.d.ts +1 -0
  46. package/build/dalvikBytecodeUnparser.test.js +25 -0
  47. package/build/dalvikExecutable.d.ts +65 -8
  48. package/build/dalvikExecutable.js +36 -0
  49. package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +1 -1
  50. package/build/dalvikExecutableParser/stringSyntaxParser.js +17 -17
  51. package/build/dalvikExecutableParser/typeParsers.d.ts +2 -1
  52. package/build/dalvikExecutableParser/typeParsers.js +16 -11
  53. package/build/dalvikExecutableParser/typedNumbers.d.ts +85 -69
  54. package/build/dalvikExecutableParser/typedNumbers.js +0 -1
  55. package/build/dalvikExecutableParser.d.ts +2 -2
  56. package/build/dalvikExecutableParser.js +655 -337
  57. package/build/dalvikExecutableParser.test.js +24 -22
  58. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +223 -246
  59. package/build/dalvikExecutableUnparser/annotationUnparsers.d.ts +14 -0
  60. package/build/dalvikExecutableUnparser/annotationUnparsers.js +97 -0
  61. package/build/dalvikExecutableUnparser/poolBuilders.d.ts +49 -0
  62. package/build/dalvikExecutableUnparser/poolBuilders.js +140 -0
  63. package/build/dalvikExecutableUnparser/poolScanners.d.ts +4 -0
  64. package/build/dalvikExecutableUnparser/poolScanners.js +220 -0
  65. package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +25 -0
  66. package/build/dalvikExecutableUnparser/sectionUnparsers.js +581 -0
  67. package/build/dalvikExecutableUnparser/utils.d.ts +10 -0
  68. package/build/dalvikExecutableUnparser/utils.js +108 -0
  69. package/build/dalvikExecutableUnparser.d.ts +4 -0
  70. package/build/dalvikExecutableUnparser.js +406 -0
  71. package/build/dalvikExecutableUnparser.test.d.ts +1 -0
  72. package/build/dalvikExecutableUnparser.test.js +31 -0
  73. package/build/debugLogInputParser.js +1 -1
  74. package/build/disjunctionParser.d.ts +2 -2
  75. package/build/disjunctionParser.js +2 -2
  76. package/build/elementTerminatedArrayParser.d.ts +2 -2
  77. package/build/elementTerminatedArrayParser.js +1 -1
  78. package/build/elementTerminatedArrayParser.test.js +5 -5
  79. package/build/elementTerminatedSequenceArrayParser.d.ts +2 -2
  80. package/build/elementTerminatedSequenceArrayParser.js +1 -1
  81. package/build/elementTerminatedSequenceArrayParser.test.js +2 -2
  82. package/build/elementTerminatedSequenceParser.d.ts +2 -2
  83. package/build/elementTerminatedSequenceParser.js +1 -1
  84. package/build/elementTerminatedSequenceParser.test.js +2 -2
  85. package/build/endOfInputParser.d.ts +1 -1
  86. package/build/exactElementSwitchParser.d.ts +3 -0
  87. package/build/exactElementSwitchParser.js +22 -0
  88. package/build/fetchCid.js +2 -6
  89. package/build/fetchCid.test.d.ts +1 -0
  90. package/build/fetchCid.test.js +16 -0
  91. package/build/fixedLengthSequenceParser.test.js +2 -2
  92. package/build/hasExecutable.js +2 -2
  93. package/build/highResolutionTimer.js +1 -1
  94. package/build/index.d.ts +24 -2
  95. package/build/index.js +22 -1
  96. package/build/inputReader.d.ts +1 -1
  97. package/build/inputReader.test.js +33 -45
  98. package/build/javaKeyStoreParser.test.js +6 -6
  99. package/build/jsonParser.js +8 -8
  100. package/build/lazyMessageError.d.ts +48 -0
  101. package/build/lazyMessageError.js +53 -0
  102. package/build/lazyMessageError.test.d.ts +1 -0
  103. package/build/lazyMessageError.test.js +15 -0
  104. package/build/leb128Parser.d.ts +1 -1
  105. package/build/leb128Parser.js +10 -10
  106. package/build/leb128Parser.test.js +7 -7
  107. package/build/negativeLookaheadParser.js +2 -2
  108. package/build/negativeLookaheadParser.test.js +4 -4
  109. package/build/noStackCaptureOverheadError.d.ts +4 -0
  110. package/build/noStackCaptureOverheadError.js +9 -0
  111. package/build/noStackCaptureOverheadError.test.d.ts +1 -0
  112. package/build/noStackCaptureOverheadError.test.js +15 -0
  113. package/build/nonEmptyArrayParser.js +2 -2
  114. package/build/nonEmptyArrayParser.test.js +2 -1
  115. package/build/optionalParser.js +2 -2
  116. package/build/parser.d.ts +2 -1
  117. package/build/parser.js +23 -8
  118. package/build/parser.test.js +78 -29
  119. package/build/parserConsumedSequenceParser.d.ts +1 -1
  120. package/build/parserConsumedSequenceParser.js +2 -2
  121. package/build/parserContext.d.ts +8 -6
  122. package/build/parserContext.js +60 -33
  123. package/build/parserContext.test.js +7 -3
  124. package/build/parserError.d.ts +603 -44
  125. package/build/parserError.js +98 -53
  126. package/build/parserImplementationInvariant.d.ts +1 -1
  127. package/build/parserImplementationInvariant.js +2 -2
  128. package/build/parserInputCompanion.js +2 -2
  129. package/build/promiseCompose.js +1 -2
  130. package/build/regexpParser.d.ts +2 -0
  131. package/build/regexpParser.js +71 -0
  132. package/build/regexpParser.test.d.ts +1 -0
  133. package/build/regexpParser.test.js +83 -0
  134. package/build/regularExpression.d.ts +63 -0
  135. package/build/regularExpression.js +1 -0
  136. package/build/regularExpressionParser.d.ts +3 -0
  137. package/build/regularExpressionParser.js +580 -0
  138. package/build/regularExpressionParser.test.d.ts +1 -0
  139. package/build/regularExpressionParser.test.js +89 -0
  140. package/build/separatedArrayParser.js +2 -2
  141. package/build/separatedNonEmptyArrayParser.d.ts +2 -0
  142. package/build/separatedNonEmptyArrayParser.js +40 -0
  143. package/build/separatedNonEmptyArrayParser.test.d.ts +1 -0
  144. package/build/separatedNonEmptyArrayParser.test.js +66 -0
  145. package/build/sequenceBuffer.js +1 -1
  146. package/build/sequenceTerminatedSequenceParser.d.ts +2 -2
  147. package/build/sequenceTerminatedSequenceParser.js +3 -3
  148. package/build/sequenceTerminatedSequenceParser.test.js +1 -1
  149. package/build/sequenceUnparser.d.ts +1 -1
  150. package/build/skipToParser.d.ts +1 -1
  151. package/build/skipToParser.js +2 -2
  152. package/build/sliceBoundedParser.test.js +4 -9
  153. package/build/smali.d.ts +1 -1
  154. package/build/smali.js +6 -2
  155. package/build/smaliParser.d.ts +62 -6
  156. package/build/smaliParser.js +1721 -296
  157. package/build/smaliParser.test.js +338 -43
  158. package/build/stringFromAsyncIterable.d.ts +1 -0
  159. package/build/stringFromAsyncIterable.js +7 -0
  160. package/build/terminatedArrayParser.js +4 -4
  161. package/build/terminatedArrayParser.test.js +7 -7
  162. package/build/toAsyncIterator.js +4 -4
  163. package/build/unionParser.d.ts +1 -1
  164. package/build/unionParser.js +2 -2
  165. package/build/unionParser.test.js +3 -3
  166. package/build/unparser.d.ts +3 -3
  167. package/build/unparser.js +6 -4
  168. package/build/unparser.test.js +7 -19
  169. package/build/unparserContext.d.ts +2 -2
  170. package/build/unparserContext.js +2 -3
  171. package/build/unparserError.d.ts +2 -1
  172. package/build/unparserError.js +2 -1
  173. package/build/unparserImplementationInvariant.d.ts +1 -1
  174. package/build/unparserOutputCompanion.d.ts +1 -1
  175. package/build/unparserOutputCompanion.js +1 -1
  176. package/build/zipParser.js +1 -1
  177. package/build/zipUnparser.d.ts +3 -3
  178. package/build/zipUnparser.js +9 -19
  179. package/build/zipUnparser.test.js +1 -1
  180. package/package.json +20 -26
  181. package/src/allSettledStream.test.ts +2 -2
  182. package/src/allSettledStream.ts +3 -3
  183. package/src/androidPackageParser.test.ts +17 -19
  184. package/src/androidPackageParser.ts +129 -171
  185. package/src/androidPackageUnparser.test.ts +19 -21
  186. package/src/androidPackageUnparser.ts +23 -17
  187. package/src/arbitrarilySlicedAsyncInterable.ts +1 -1
  188. package/src/arbitrarilySlicedAsyncInterator.ts +4 -4
  189. package/src/arbitraryDalvikBytecode.ts +992 -0
  190. package/src/arbitraryDalvikExecutable.ts +434 -0
  191. package/src/arbitraryDosDateTime.ts +1 -0
  192. package/src/arbitraryZipStream.ts +1 -1
  193. package/src/arrayParser.ts +2 -2
  194. package/src/arrayUnparser.ts +2 -2
  195. package/src/backsmali.ts +48 -4
  196. package/src/bash.ts +120 -0
  197. package/src/bashParser.test.ts +332 -0
  198. package/src/bashParser.ts +461 -0
  199. package/src/bsonParser.test.ts +12 -14
  200. package/src/customInvariant.ts +8 -12
  201. package/src/dalvikBytecodeParser/formatParsers.ts +376 -17
  202. package/src/dalvikBytecodeParser/formatSizes.ts +35 -0
  203. package/src/dalvikBytecodeParser/operationFormats.ts +226 -0
  204. package/src/dalvikBytecodeParser.ts +1042 -243
  205. package/src/dalvikBytecodeUnparser/formatUnparsers.ts +442 -0
  206. package/src/dalvikBytecodeUnparser.test.ts +44 -0
  207. package/src/dalvikBytecodeUnparser.ts +758 -0
  208. package/src/dalvikExecutable.ts +110 -48
  209. package/src/dalvikExecutableParser/stringSyntaxParser.ts +33 -33
  210. package/src/dalvikExecutableParser/typeParsers.ts +23 -14
  211. package/src/dalvikExecutableParser/typedNumbers.ts +19 -19
  212. package/src/dalvikExecutableParser.test.ts +60 -60
  213. package/src/dalvikExecutableParser.test.ts.md +6 -6
  214. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  215. package/src/dalvikExecutableParser.ts +911 -434
  216. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +256 -239
  217. package/src/dalvikExecutableUnparser/annotationUnparsers.ts +135 -0
  218. package/src/dalvikExecutableUnparser/poolBuilders.ts +189 -0
  219. package/src/dalvikExecutableUnparser/poolScanners.ts +297 -0
  220. package/src/dalvikExecutableUnparser/sectionUnparsers.ts +683 -0
  221. package/src/dalvikExecutableUnparser/utils.ts +149 -0
  222. package/src/dalvikExecutableUnparser.test.ts +57 -0
  223. package/src/dalvikExecutableUnparser.ts +581 -0
  224. package/src/debugLogInputParser.ts +1 -1
  225. package/src/disjunctionParser.ts +5 -5
  226. package/src/elementTerminatedArrayParser.test.ts +8 -8
  227. package/src/elementTerminatedArrayParser.ts +2 -2
  228. package/src/elementTerminatedSequenceArrayParser.test.ts +4 -6
  229. package/src/elementTerminatedSequenceArrayParser.ts +2 -2
  230. package/src/elementTerminatedSequenceParser.test.ts +4 -6
  231. package/src/elementTerminatedSequenceParser.ts +2 -2
  232. package/src/endOfInputParser.ts +1 -1
  233. package/src/exactElementSwitchParser.ts +41 -0
  234. package/src/fetchCid.test.ts +20 -0
  235. package/src/fetchCid.ts +3 -7
  236. package/src/fixedLengthSequenceParser.test.ts +10 -12
  237. package/src/hasExecutable.ts +2 -2
  238. package/src/highResolutionTimer.ts +1 -1
  239. package/src/index.ts +113 -2
  240. package/src/inputReader.test.ts +39 -52
  241. package/src/inputReader.ts +2 -4
  242. package/src/inputReaderState.ts +1 -1
  243. package/src/inspect.ts +1 -1
  244. package/src/javaKeyStoreParser.test.ts +12 -14
  245. package/src/javaKeyStoreParser.ts +2 -6
  246. package/src/jsonParser.test.ts +2 -4
  247. package/src/jsonParser.ts +34 -38
  248. package/src/lazyMessageError.test.ts +21 -0
  249. package/src/lazyMessageError.ts +88 -0
  250. package/src/leb128Parser.test.ts +25 -23
  251. package/src/leb128Parser.ts +19 -19
  252. package/src/negativeLookaheadParser.test.ts +7 -11
  253. package/src/negativeLookaheadParser.ts +2 -2
  254. package/src/noStackCaptureOverheadError.test.ts +17 -0
  255. package/src/noStackCaptureOverheadError.ts +12 -0
  256. package/src/nonEmptyArrayParser.test.ts +3 -2
  257. package/src/nonEmptyArrayParser.ts +2 -2
  258. package/src/optionalParser.ts +2 -2
  259. package/src/parser.test.ts +96 -43
  260. package/src/parser.test.ts.md +13 -6
  261. package/src/parser.test.ts.snap +0 -0
  262. package/src/parser.ts +35 -12
  263. package/src/parserAccessorParser.ts +1 -1
  264. package/src/parserConsumedSequenceParser.ts +3 -3
  265. package/src/parserContext.test.ts +7 -3
  266. package/src/parserContext.ts +82 -48
  267. package/src/parserError.ts +143 -63
  268. package/src/parserImplementationInvariant.ts +3 -3
  269. package/src/parserInputCompanion.ts +2 -2
  270. package/src/promiseCompose.ts +2 -2
  271. package/src/regexpParser.test.ts +186 -0
  272. package/src/regexpParser.ts +94 -0
  273. package/src/regularExpression.ts +24 -0
  274. package/src/regularExpressionParser.test.ts +102 -0
  275. package/src/regularExpressionParser.ts +921 -0
  276. package/src/separatedArrayParser.ts +3 -3
  277. package/src/separatedNonEmptyArrayParser.test.ts +117 -0
  278. package/src/separatedNonEmptyArrayParser.ts +61 -0
  279. package/src/sequenceBuffer.test.ts +9 -9
  280. package/src/sequenceBuffer.ts +4 -4
  281. package/src/sequenceTerminatedSequenceParser.test.ts +3 -5
  282. package/src/sequenceTerminatedSequenceParser.ts +4 -4
  283. package/src/sequenceUnparser.ts +2 -2
  284. package/src/skipToParser.ts +2 -2
  285. package/src/sliceBoundedParser.test.ts +4 -12
  286. package/src/sliceBoundedParser.ts +2 -2
  287. package/src/smali.ts +8 -3
  288. package/src/smaliParser.test.ts +377 -66
  289. package/src/smaliParser.test.ts.md +1635 -48
  290. package/src/smaliParser.test.ts.snap +0 -0
  291. package/src/smaliParser.ts +2751 -569
  292. package/src/stringFromAsyncIterable.ts +9 -0
  293. package/src/terminatedArrayParser.test.ts +11 -11
  294. package/src/terminatedArrayParser.ts +5 -7
  295. package/src/toAsyncIterator.ts +8 -8
  296. package/src/uint8Array.ts +2 -3
  297. package/src/unionParser.test.ts +22 -23
  298. package/src/unionParser.ts +6 -8
  299. package/src/unparser.test.ts +18 -34
  300. package/src/unparser.ts +13 -9
  301. package/src/unparserContext.ts +9 -13
  302. package/src/unparserError.ts +2 -1
  303. package/src/unparserImplementationInvariant.ts +1 -1
  304. package/src/unparserOutputCompanion.ts +1 -1
  305. package/src/zip.ts +2 -6
  306. package/src/zipParser.ts +10 -18
  307. package/src/zipUnparser.test.ts +1 -1
  308. package/src/zipUnparser.ts +52 -64
  309. package/tsconfig.json +7 -1
  310. package/xo.config.ts +15 -0
  311. package/.yarn/releases/yarn-4.5.3.cjs +0 -934
@@ -1,15 +1,15 @@
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";
1
+ import { byteParser, intParser, longParser, shortParser, ubyteParser, uintParser, 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
6
  // https://source.android.com/docs/core/runtime/instruction-formats
7
- export const nibblesParser = promiseCompose(createElementParser(), (byte) => [
7
+ export const nibblesParser = promiseCompose(createElementParser(), byte => [
8
8
  byte >> 4,
9
9
  byte & 0b1111,
10
10
  ]);
11
11
  setParserName(nibblesParser, 'nibblesParser');
12
- export const dalvikBytecodeFormat10tParser = promiseCompose(byteParser, (branchOffset) => ({
12
+ export const dalvikBytecodeFormat10tParser = promiseCompose(byteParser, branchOffset => ({
13
13
  branchOffset,
14
14
  }));
15
15
  export const dalvikBytecodeFormat10xParser = promiseCompose(createElementParser(), () => undefined);
@@ -18,13 +18,22 @@ export const dalvikBytecodeFormat11xParser = promiseCompose(ubyteParser, registe
18
18
  register0,
19
19
  ],
20
20
  }));
21
+ export const dalvikBytecodeFormat11nParser = promiseCompose(nibblesParser, ([value, register0,]) => ({
22
+ value: value << 28 >> 28, // Sign extend 4-bit value
23
+ registers: [
24
+ register0,
25
+ ],
26
+ }));
21
27
  export const dalvikBytecodeFormat12xParser = promiseCompose(nibblesParser, ([register0, register1,]) => ({
22
28
  registers: [
23
29
  register0,
24
30
  register1,
25
31
  ],
26
32
  }));
27
- export const dalvikBytecodeFormat20tParser = promiseCompose(shortParser, (branchOffset) => ({
33
+ export const dalvikBytecodeFormat20tParser = promiseCompose(createTupleParser([
34
+ ubyteParser,
35
+ shortParser,
36
+ ]), ([_zero, branchOffset,]) => ({
28
37
  branchOffset,
29
38
  }));
30
39
  export const createDalvikBytecodeFormat21cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
@@ -77,7 +86,7 @@ export const createDalvikBytecodeFormat22bParser = () => promiseCompose(createTu
77
86
  export const createDalvikBytecodeFormat22cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
78
87
  nibblesParser,
79
88
  ushortParser,
80
- ]), ([[register0, register1,], index,]) => ({
89
+ ]), ([[register1, register0,], index,]) => ({
81
90
  index: isoIndex.wrap(index),
82
91
  registers: [
83
92
  register0,
@@ -90,8 +99,8 @@ export const createDalvikBytecodeFormat22sParser = () => promiseCompose(createTu
90
99
  ]), ([[register0, register1,], value,]) => ({
91
100
  value,
92
101
  registers: [
93
- register0,
94
102
  register1,
103
+ register0,
95
104
  ],
96
105
  }));
97
106
  export const createDalvikBytecodeFormat22tParser = () => promiseCompose(createTupleParser([
@@ -124,6 +133,9 @@ export const dalvikBytecodeFormat23xParser = promiseCompose(createTupleParser([
124
133
  register2,
125
134
  ],
126
135
  }));
136
+ export const dalvikBytecodeFormat30tParser = promiseCompose(intParser, branchOffset => ({
137
+ branchOffset,
138
+ }));
127
139
  export const dalvikBytecodeFormat31iParser = promiseCompose(createTupleParser([
128
140
  ubyteParser,
129
141
  intParser,
@@ -133,6 +145,24 @@ export const dalvikBytecodeFormat31iParser = promiseCompose(createTupleParser([
133
145
  register0,
134
146
  ],
135
147
  }));
148
+ export const createDalvikBytecodeFormat31cParser = ({ isoIndex, }) => promiseCompose(createTupleParser([
149
+ ubyteParser,
150
+ uintParser,
151
+ ]), ([register0, index,]) => ({
152
+ index: isoIndex.wrap(index),
153
+ registers: [
154
+ register0,
155
+ ],
156
+ }));
157
+ export const dalvikBytecodeFormat31tParser = promiseCompose(createTupleParser([
158
+ ubyteParser,
159
+ intParser,
160
+ ]), ([register0, branchOffset,]) => ({
161
+ branchOffset,
162
+ registers: [
163
+ register0,
164
+ ],
165
+ }));
136
166
  export const dalvikBytecodeFormat32xParser = promiseCompose(createTupleParser([
137
167
  ushortParser,
138
168
  ushortParser,
@@ -147,7 +177,7 @@ export const createDalvikBytecodeFormat35cParser = ({ isoIndex, }) => promiseCom
147
177
  ushortParser,
148
178
  nibblesParser,
149
179
  nibblesParser,
150
- ]), ([[registerCount, register4,], index, [register0, register1,], [register2, register3,],]) => ({
180
+ ]), ([[registerCount, register4,], index, [register1, register0,], [register3, register2,],]) => ({
151
181
  index: isoIndex.wrap(index),
152
182
  registers: Object.assign([
153
183
  register0,
@@ -167,3 +197,108 @@ export const createDalvikBytecodeFormat3rcParser = ({ isoIndex, }) => promiseCom
167
197
  index: isoIndex.wrap(index),
168
198
  registers: Array.from({ length: registerCount }, (_, index) => firstRegister + index),
169
199
  }));
200
+ export const dalvikBytecodeFormat51lParser = promiseCompose(createTupleParser([
201
+ ubyteParser,
202
+ longParser,
203
+ ]), ([register0, value,]) => ({
204
+ value,
205
+ registers: [
206
+ register0,
207
+ ],
208
+ }));
209
+ export const dalvikBytecodeFormat20bcParser = promiseCompose(createTupleParser([
210
+ ubyteParser,
211
+ ushortParser,
212
+ ]), ([kind, index,]) => ({
213
+ kind,
214
+ index,
215
+ }));
216
+ export const dalvikBytecodeFormat22csParser = promiseCompose(createTupleParser([
217
+ nibblesParser,
218
+ ushortParser,
219
+ ]), ([[register0, register1,], fieldOffset,]) => ({
220
+ fieldOffset,
221
+ registers: [
222
+ register0,
223
+ register1,
224
+ ],
225
+ }));
226
+ export const dalvikBytecodeFormat35miParser = promiseCompose(createTupleParser([
227
+ nibblesParser,
228
+ ushortParser,
229
+ nibblesParser,
230
+ nibblesParser,
231
+ ]), ([[registerCount, register4,], inlineIndex, [register1, register0,], [register3, register2,],]) => ({
232
+ inlineIndex,
233
+ registers: Object.assign([
234
+ register0,
235
+ register1,
236
+ register2,
237
+ register3,
238
+ register4,
239
+ ], {
240
+ length: registerCount,
241
+ }),
242
+ }));
243
+ export const dalvikBytecodeFormat35msParser = promiseCompose(createTupleParser([
244
+ nibblesParser,
245
+ ushortParser,
246
+ nibblesParser,
247
+ nibblesParser,
248
+ ]), ([[registerCount, register4,], vtableOffset, [register1, register0,], [register3, register2,],]) => ({
249
+ vtableOffset,
250
+ registers: Object.assign([
251
+ register0,
252
+ register1,
253
+ register2,
254
+ register3,
255
+ register4,
256
+ ], {
257
+ length: registerCount,
258
+ }),
259
+ }));
260
+ export const dalvikBytecodeFormat3rmiParser = promiseCompose(createTupleParser([
261
+ ubyteParser,
262
+ ushortParser,
263
+ ushortParser,
264
+ ]), ([registerCount, inlineIndex, firstRegister,]) => ({
265
+ inlineIndex,
266
+ registers: Array.from({ length: registerCount }, (_, index) => firstRegister + index),
267
+ }));
268
+ export const dalvikBytecodeFormat3rmsParser = promiseCompose(createTupleParser([
269
+ ubyteParser,
270
+ ushortParser,
271
+ ushortParser,
272
+ ]), ([registerCount, vtableOffset, firstRegister,]) => ({
273
+ vtableOffset,
274
+ registers: Array.from({ length: registerCount }, (_, index) => firstRegister + index),
275
+ }));
276
+ export const createDalvikBytecodeFormat45ccParser = ({ isoMethodIndex, isoProtoIndex, }) => promiseCompose(createTupleParser([
277
+ nibblesParser,
278
+ ushortParser,
279
+ nibblesParser,
280
+ nibblesParser,
281
+ ushortParser,
282
+ ]), ([[registerCount, register4,], methodIndex, [register1, register0,], [register3, register2,], protoIndex,]) => ({
283
+ methodIndex: isoMethodIndex.wrap(methodIndex),
284
+ protoIndex: isoProtoIndex.wrap(protoIndex),
285
+ registers: Object.assign([
286
+ register0,
287
+ register1,
288
+ register2,
289
+ register3,
290
+ register4,
291
+ ], {
292
+ length: registerCount,
293
+ }),
294
+ }));
295
+ export const createDalvikBytecodeFormat4rccParser = ({ isoMethodIndex, isoProtoIndex, }) => promiseCompose(createTupleParser([
296
+ ubyteParser,
297
+ ushortParser,
298
+ ushortParser,
299
+ ushortParser,
300
+ ]), ([registerCount, methodIndex, firstRegister, protoIndex,]) => ({
301
+ methodIndex: isoMethodIndex.wrap(methodIndex),
302
+ protoIndex: isoProtoIndex.wrap(protoIndex),
303
+ registers: Array.from({ length: registerCount }, (_, index) => firstRegister + index),
304
+ }));
@@ -0,0 +1,34 @@
1
+ export declare const formatSizes: {
2
+ readonly '10x': 1;
3
+ readonly '11x': 1;
4
+ readonly '11n': 1;
5
+ readonly '12x': 1;
6
+ readonly '10t': 1;
7
+ readonly '20t': 2;
8
+ readonly '20bc': 2;
9
+ readonly '22x': 2;
10
+ readonly '21t': 2;
11
+ readonly '21s': 2;
12
+ readonly '21h': 2;
13
+ readonly '21c': 2;
14
+ readonly '23x': 2;
15
+ readonly '22b': 2;
16
+ readonly '22t': 2;
17
+ readonly '22s': 2;
18
+ readonly '22c': 2;
19
+ readonly '22cs': 2;
20
+ readonly '30t': 3;
21
+ readonly '32x': 3;
22
+ readonly '31i': 3;
23
+ readonly '31t': 3;
24
+ readonly '31c': 3;
25
+ readonly '35c': 3;
26
+ readonly '35ms': 3;
27
+ readonly '35mi': 3;
28
+ readonly '3rc': 3;
29
+ readonly '3rms': 3;
30
+ readonly '3rmi': 3;
31
+ readonly '45cc': 4;
32
+ readonly '4rcc': 4;
33
+ readonly '51l': 5;
34
+ };
@@ -0,0 +1,34 @@
1
+ export const formatSizes = {
2
+ '10x': 1,
3
+ '11x': 1,
4
+ '11n': 1,
5
+ '12x': 1,
6
+ '10t': 1,
7
+ '20t': 2,
8
+ '20bc': 2,
9
+ '22x': 2,
10
+ '21t': 2,
11
+ '21s': 2,
12
+ '21h': 2,
13
+ '21c': 2,
14
+ '23x': 2,
15
+ '22b': 2,
16
+ '22t': 2,
17
+ '22s': 2,
18
+ '22c': 2,
19
+ '22cs': 2,
20
+ '30t': 3,
21
+ '32x': 3,
22
+ '31i': 3,
23
+ '31t': 3,
24
+ '31c': 3,
25
+ '35c': 3,
26
+ '35ms': 3,
27
+ '35mi': 3,
28
+ '3rc': 3,
29
+ '3rms': 3,
30
+ '3rmi': 3,
31
+ '45cc': 4,
32
+ '4rcc': 4,
33
+ '51l': 5,
34
+ };
@@ -0,0 +1,225 @@
1
+ export declare const operationFormats: {
2
+ readonly nop: "10x";
3
+ readonly move: "12x";
4
+ readonly 'move/from16': "22x";
5
+ readonly 'move/16': "32x";
6
+ readonly 'move-wide': "12x";
7
+ readonly 'move-wide/from16': "22x";
8
+ readonly 'move-wide/16': "32x";
9
+ readonly 'move-object': "12x";
10
+ readonly 'move-object/from16': "22x";
11
+ readonly 'move-object/16': "32x";
12
+ readonly 'move-result': "11x";
13
+ readonly 'move-result-wide': "11x";
14
+ readonly 'move-result-object': "11x";
15
+ readonly 'move-exception': "11x";
16
+ readonly 'return-void': "10x";
17
+ readonly return: "11x";
18
+ readonly 'return-wide': "11x";
19
+ readonly 'return-object': "11x";
20
+ readonly 'const/4': "11n";
21
+ readonly 'const/16': "21s";
22
+ readonly const: "31i";
23
+ readonly 'const/high16': "21h";
24
+ readonly 'const-wide/16': "21s";
25
+ readonly 'const-wide/32': "31i";
26
+ readonly 'const-wide': "51l";
27
+ readonly 'const-wide/high16': "21h";
28
+ readonly 'const-string': "21c";
29
+ readonly 'const-string/jumbo': "31c";
30
+ readonly 'const-class': "21c";
31
+ readonly 'monitor-enter': "11x";
32
+ readonly 'monitor-exit': "11x";
33
+ readonly 'check-cast': "21c";
34
+ readonly 'instance-of': "22c";
35
+ readonly 'array-length': "12x";
36
+ readonly 'new-instance': "21c";
37
+ readonly 'new-array': "22c";
38
+ readonly 'filled-new-array': "35c";
39
+ readonly 'filled-new-array/range': "3rc";
40
+ readonly 'fill-array-data': "31t";
41
+ readonly throw: "11x";
42
+ readonly goto: "10t";
43
+ readonly 'goto/16': "20t";
44
+ readonly 'goto/32': "30t";
45
+ readonly 'packed-switch': "31t";
46
+ readonly 'sparse-switch': "31t";
47
+ readonly 'cmpl-float': "23x";
48
+ readonly 'cmpg-float': "23x";
49
+ readonly 'cmpl-double': "23x";
50
+ readonly 'cmpg-double': "23x";
51
+ readonly 'cmp-long': "23x";
52
+ readonly 'if-eq': "22t";
53
+ readonly 'if-ne': "22t";
54
+ readonly 'if-lt': "22t";
55
+ readonly 'if-ge': "22t";
56
+ readonly 'if-gt': "22t";
57
+ readonly 'if-le': "22t";
58
+ readonly 'if-eqz': "21t";
59
+ readonly 'if-nez': "21t";
60
+ readonly 'if-ltz': "21t";
61
+ readonly 'if-gez': "21t";
62
+ readonly 'if-gtz': "21t";
63
+ readonly 'if-lez': "21t";
64
+ readonly aget: "23x";
65
+ readonly 'aget-wide': "23x";
66
+ readonly 'aget-object': "23x";
67
+ readonly 'aget-boolean': "23x";
68
+ readonly 'aget-byte': "23x";
69
+ readonly 'aget-char': "23x";
70
+ readonly 'aget-short': "23x";
71
+ readonly aput: "23x";
72
+ readonly 'aput-wide': "23x";
73
+ readonly 'aput-object': "23x";
74
+ readonly 'aput-boolean': "23x";
75
+ readonly 'aput-byte': "23x";
76
+ readonly 'aput-char': "23x";
77
+ readonly 'aput-short': "23x";
78
+ readonly iget: "22c";
79
+ readonly 'iget-wide': "22c";
80
+ readonly 'iget-object': "22c";
81
+ readonly 'iget-boolean': "22c";
82
+ readonly 'iget-byte': "22c";
83
+ readonly 'iget-char': "22c";
84
+ readonly 'iget-short': "22c";
85
+ readonly iput: "22c";
86
+ readonly 'iput-wide': "22c";
87
+ readonly 'iput-object': "22c";
88
+ readonly 'iput-boolean': "22c";
89
+ readonly 'iput-byte': "22c";
90
+ readonly 'iput-char': "22c";
91
+ readonly 'iput-short': "22c";
92
+ readonly sget: "21c";
93
+ readonly 'sget-wide': "21c";
94
+ readonly 'sget-object': "21c";
95
+ readonly 'sget-boolean': "21c";
96
+ readonly 'sget-byte': "21c";
97
+ readonly 'sget-char': "21c";
98
+ readonly 'sget-short': "21c";
99
+ readonly sput: "21c";
100
+ readonly 'sput-wide': "21c";
101
+ readonly 'sput-object': "21c";
102
+ readonly 'sput-boolean': "21c";
103
+ readonly 'sput-byte': "21c";
104
+ readonly 'sput-char': "21c";
105
+ readonly 'sput-short': "21c";
106
+ readonly 'invoke-virtual': "35c";
107
+ readonly 'invoke-super': "35c";
108
+ readonly 'invoke-direct': "35c";
109
+ readonly 'invoke-static': "35c";
110
+ readonly 'invoke-interface': "35c";
111
+ readonly 'invoke-virtual/range': "3rc";
112
+ readonly 'invoke-super/range': "3rc";
113
+ readonly 'invoke-direct/range': "3rc";
114
+ readonly 'invoke-static/range': "3rc";
115
+ readonly 'invoke-interface/range': "3rc";
116
+ readonly 'neg-int': "12x";
117
+ readonly 'not-int': "12x";
118
+ readonly 'neg-long': "12x";
119
+ readonly 'not-long': "12x";
120
+ readonly 'neg-float': "12x";
121
+ readonly 'neg-double': "12x";
122
+ readonly 'int-to-long': "12x";
123
+ readonly 'int-to-float': "12x";
124
+ readonly 'int-to-double': "12x";
125
+ readonly 'long-to-int': "12x";
126
+ readonly 'long-to-float': "12x";
127
+ readonly 'long-to-double': "12x";
128
+ readonly 'float-to-int': "12x";
129
+ readonly 'float-to-long': "12x";
130
+ readonly 'float-to-double': "12x";
131
+ readonly 'double-to-int': "12x";
132
+ readonly 'double-to-long': "12x";
133
+ readonly 'double-to-float': "12x";
134
+ readonly 'int-to-byte': "12x";
135
+ readonly 'int-to-char': "12x";
136
+ readonly 'int-to-short': "12x";
137
+ readonly 'add-int': "23x";
138
+ readonly 'sub-int': "23x";
139
+ readonly 'mul-int': "23x";
140
+ readonly 'div-int': "23x";
141
+ readonly 'rem-int': "23x";
142
+ readonly 'and-int': "23x";
143
+ readonly 'or-int': "23x";
144
+ readonly 'xor-int': "23x";
145
+ readonly 'shl-int': "23x";
146
+ readonly 'shr-int': "23x";
147
+ readonly 'ushr-int': "23x";
148
+ readonly 'add-long': "23x";
149
+ readonly 'sub-long': "23x";
150
+ readonly 'mul-long': "23x";
151
+ readonly 'div-long': "23x";
152
+ readonly 'rem-long': "23x";
153
+ readonly 'and-long': "23x";
154
+ readonly 'or-long': "23x";
155
+ readonly 'xor-long': "23x";
156
+ readonly 'shl-long': "23x";
157
+ readonly 'shr-long': "23x";
158
+ readonly 'ushr-long': "23x";
159
+ readonly 'add-float': "23x";
160
+ readonly 'sub-float': "23x";
161
+ readonly 'mul-float': "23x";
162
+ readonly 'div-float': "23x";
163
+ readonly 'rem-float': "23x";
164
+ readonly 'add-double': "23x";
165
+ readonly 'sub-double': "23x";
166
+ readonly 'mul-double': "23x";
167
+ readonly 'div-double': "23x";
168
+ readonly 'rem-double': "23x";
169
+ readonly 'add-int/2addr': "12x";
170
+ readonly 'sub-int/2addr': "12x";
171
+ readonly 'mul-int/2addr': "12x";
172
+ readonly 'div-int/2addr': "12x";
173
+ readonly 'rem-int/2addr': "12x";
174
+ readonly 'and-int/2addr': "12x";
175
+ readonly 'or-int/2addr': "12x";
176
+ readonly 'xor-int/2addr': "12x";
177
+ readonly 'shl-int/2addr': "12x";
178
+ readonly 'shr-int/2addr': "12x";
179
+ readonly 'ushr-int/2addr': "12x";
180
+ readonly 'add-long/2addr': "12x";
181
+ readonly 'sub-long/2addr': "12x";
182
+ readonly 'mul-long/2addr': "12x";
183
+ readonly 'div-long/2addr': "12x";
184
+ readonly 'rem-long/2addr': "12x";
185
+ readonly 'and-long/2addr': "12x";
186
+ readonly 'or-long/2addr': "12x";
187
+ readonly 'xor-long/2addr': "12x";
188
+ readonly 'shl-long/2addr': "12x";
189
+ readonly 'shr-long/2addr': "12x";
190
+ readonly 'ushr-long/2addr': "12x";
191
+ readonly 'add-float/2addr': "12x";
192
+ readonly 'sub-float/2addr': "12x";
193
+ readonly 'mul-float/2addr': "12x";
194
+ readonly 'div-float/2addr': "12x";
195
+ readonly 'rem-float/2addr': "12x";
196
+ readonly 'add-double/2addr': "12x";
197
+ readonly 'sub-double/2addr': "12x";
198
+ readonly 'mul-double/2addr': "12x";
199
+ readonly 'div-double/2addr': "12x";
200
+ readonly 'rem-double/2addr': "12x";
201
+ readonly 'add-int/lit16': "22s";
202
+ readonly 'rsub-int': "22s";
203
+ readonly 'rsub-int/lit16': "22s";
204
+ readonly 'mul-int/lit16': "22s";
205
+ readonly 'div-int/lit16': "22s";
206
+ readonly 'rem-int/lit16': "22s";
207
+ readonly 'and-int/lit16': "22s";
208
+ readonly 'or-int/lit16': "22s";
209
+ readonly 'xor-int/lit16': "22s";
210
+ readonly 'add-int/lit8': "22b";
211
+ readonly 'rsub-int/lit8': "22b";
212
+ readonly 'mul-int/lit8': "22b";
213
+ readonly 'div-int/lit8': "22b";
214
+ readonly 'rem-int/lit8': "22b";
215
+ readonly 'and-int/lit8': "22b";
216
+ readonly 'or-int/lit8': "22b";
217
+ readonly 'xor-int/lit8': "22b";
218
+ readonly 'shl-int/lit8': "22b";
219
+ readonly 'shr-int/lit8': "22b";
220
+ readonly 'ushr-int/lit8': "22b";
221
+ readonly 'invoke-polymorphic': "45cc";
222
+ readonly 'invoke-polymorphic/range': "4rcc";
223
+ readonly 'invoke-custom': "35c";
224
+ readonly 'invoke-custom/range': "3rc";
225
+ };