@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
@@ -19,7 +19,62 @@ export type DalvikExecutableAccessFlags = {
19
19
  constructor: boolean;
20
20
  declaredSynchronized: boolean;
21
21
  };
22
- export type DalvikExecutableEncodedValue = number | DalvikExecutableEncodedValue[] | undefined;
22
+ export declare function dalvikExecutableAccessFlagsDefault(): DalvikExecutableAccessFlags;
23
+ export type DalvikExecutableEncodedValue = {
24
+ type: 'byte';
25
+ value: number;
26
+ } | {
27
+ type: 'short';
28
+ value: number;
29
+ } | {
30
+ type: 'char';
31
+ value: number;
32
+ } | {
33
+ type: 'int';
34
+ value: number;
35
+ } | {
36
+ type: 'long';
37
+ value: bigint;
38
+ } | {
39
+ type: 'float';
40
+ value: number;
41
+ } | {
42
+ type: 'double';
43
+ value: number;
44
+ } | {
45
+ type: 'methodType';
46
+ value: DalvikExecutablePrototype;
47
+ } | {
48
+ type: 'methodHandle';
49
+ value: number;
50
+ } | {
51
+ type: 'string';
52
+ value: string;
53
+ } | {
54
+ type: 'type';
55
+ value: string;
56
+ } | {
57
+ type: 'field';
58
+ value: DalvikExecutableField;
59
+ } | {
60
+ type: 'method';
61
+ value: DalvikExecutableMethod;
62
+ } | {
63
+ type: 'enum';
64
+ value: DalvikExecutableField;
65
+ } | {
66
+ type: 'array';
67
+ value: DalvikExecutableEncodedValue[];
68
+ } | {
69
+ type: 'annotation';
70
+ value: DalvikExecutableAnnotation;
71
+ } | {
72
+ type: 'null';
73
+ value: null;
74
+ } | {
75
+ type: 'boolean';
76
+ value: boolean;
77
+ };
23
78
  type DalvikExecutableTry = {
24
79
  startAddress: number;
25
80
  instructionCount: number;
@@ -78,7 +133,7 @@ type DalvikExecutableDebugByteCodeValue = {
78
133
  type DalvikExecutableDebugByteCode = DalvikExecutableDebugByteCodeValue[];
79
134
  export type DalvikExecutableDebugInfo = {
80
135
  lineStart: number;
81
- parameterNames: (undefined | string)[];
136
+ parameterNames: Array<undefined | string>;
82
137
  bytecode: DalvikExecutableDebugByteCode;
83
138
  };
84
139
  type DalvikExecutableAnnotationItemVisibility = 'build' | 'runtime' | 'system';
@@ -102,6 +157,7 @@ export type DalvikExecutableField = {
102
157
  name: string;
103
158
  };
104
159
  export declare function isDalvikExecutableField(x: unknown): x is DalvikExecutableField;
160
+ export declare function dalvikExecutableFieldEquals(a: DalvikExecutableField, b: DalvikExecutableField): boolean;
105
161
  export type DalvikExecutableFieldWithAccess = {
106
162
  field: DalvikExecutableField;
107
163
  accessFlags: DalvikExecutableAccessFlags;
@@ -112,6 +168,7 @@ export type DalvikExecutableMethod = {
112
168
  name: string;
113
169
  };
114
170
  export declare function isDalvikExecutableMethod(x: unknown): x is DalvikExecutableMethod;
171
+ export declare function dalvikExecutableMethodEquals(a: DalvikExecutableMethod, b: DalvikExecutableMethod): boolean;
115
172
  export type DalvikExecutableMethodWithAccess<Instructions> = {
116
173
  method: DalvikExecutableMethod;
117
174
  accessFlags: DalvikExecutableAccessFlags;
@@ -123,14 +180,14 @@ export type DalvikExecutableClassFieldAnnotation = {
123
180
  };
124
181
  export type DalvikExecutableClassMethodAnnotation = {
125
182
  method: DalvikExecutableMethod;
126
- annotations: undefined | DalvikExecutableAnnotation[];
183
+ annotations: DalvikExecutableAnnotation[];
127
184
  };
128
185
  export type DalvikExecutableClassParameterAnnotation = {
129
186
  method: DalvikExecutableMethod;
130
- annotations: undefined | (undefined | DalvikExecutableAnnotation[])[];
187
+ annotations: DalvikExecutableAnnotation[][];
131
188
  };
132
189
  export type DalvikExecutableClassAnnotations = {
133
- classAnnotations: undefined | DalvikExecutableAnnotation[];
190
+ classAnnotations: DalvikExecutableAnnotation[];
134
191
  fieldAnnotations: DalvikExecutableClassFieldAnnotation[];
135
192
  methodAnnotations: DalvikExecutableClassMethodAnnotation[];
136
193
  parameterAnnotations: DalvikExecutableClassParameterAnnotation[];
@@ -138,8 +195,8 @@ export type DalvikExecutableClassAnnotations = {
138
195
  export type DalvikExecutableClassData<Instructions> = {
139
196
  staticFields: DalvikExecutableFieldWithAccess[];
140
197
  instanceFields: DalvikExecutableFieldWithAccess[];
141
- directMethods: DalvikExecutableMethodWithAccess<Instructions>[];
142
- virtualMethods: DalvikExecutableMethodWithAccess<Instructions>[];
198
+ directMethods: Array<DalvikExecutableMethodWithAccess<Instructions>>;
199
+ virtualMethods: Array<DalvikExecutableMethodWithAccess<Instructions>>;
143
200
  };
144
201
  export type DalvikExecutableClassDefinition<Instructions> = {
145
202
  class: string;
@@ -152,7 +209,7 @@ export type DalvikExecutableClassDefinition<Instructions> = {
152
209
  classData: undefined | DalvikExecutableClassData<Instructions>;
153
210
  };
154
211
  export type DalvikExecutable<Instructions> = {
155
- classDefinitions: DalvikExecutableClassDefinition<Instructions>[];
212
+ classDefinitions: Array<DalvikExecutableClassDefinition<Instructions>>;
156
213
  link: undefined | Uint8Array;
157
214
  };
158
215
  export {};
@@ -1,3 +1,26 @@
1
+ export function dalvikExecutableAccessFlagsDefault() {
2
+ return {
3
+ public: false,
4
+ private: false,
5
+ protected: false,
6
+ static: false,
7
+ final: false,
8
+ synchronized: false,
9
+ volatile: false,
10
+ bridge: false,
11
+ transient: false,
12
+ varargs: false,
13
+ native: false,
14
+ interface: false,
15
+ abstract: false,
16
+ strict: false,
17
+ synthetic: false,
18
+ annotation: false,
19
+ enum: false,
20
+ constructor: false,
21
+ declaredSynchronized: false,
22
+ };
23
+ }
1
24
  export function isDalvikExecutableField(x) {
2
25
  return (x !== null
3
26
  && typeof x === 'object'
@@ -8,6 +31,11 @@ export function isDalvikExecutableField(x) {
8
31
  && typeof x.type === 'string'
9
32
  && typeof x.name === 'string');
10
33
  }
34
+ export function dalvikExecutableFieldEquals(a, b) {
35
+ return (a.class === b.class
36
+ && a.type === b.type
37
+ && a.name === b.name);
38
+ }
11
39
  export function isDalvikExecutableMethod(x) {
12
40
  return (x !== null
13
41
  && typeof x === 'object'
@@ -18,3 +46,11 @@ export function isDalvikExecutableMethod(x) {
18
46
  && typeof x.prototype === 'object'
19
47
  && typeof x.name === 'string');
20
48
  }
49
+ export function dalvikExecutableMethodEquals(a, b) {
50
+ return (a.class === b.class
51
+ && a.name === b.name
52
+ && a.prototype.shorty === b.prototype.shorty
53
+ && a.prototype.returnType === b.prototype.returnType
54
+ && a.prototype.parameters.length === b.prototype.parameters.length
55
+ && a.prototype.parameters.every((v, i) => v === b.prototype.parameters[i]));
56
+ }
@@ -1,4 +1,4 @@
1
- import { Parser } from "../parser.js";
1
+ import { type Parser } from '../parser.js';
2
2
  export declare const smaliSimpleNameParser: Parser<string, string>;
3
3
  export declare const smaliMemberNameParser: Parser<string, string>;
4
4
  export declare const smaliTypeDescriptorParser: Parser<string, string>;
@@ -1,11 +1,11 @@
1
- import invariant from "invariant";
2
- import { setParserName } from "../parser.js";
3
- import { promiseCompose } from "../promiseCompose.js";
4
- import { createSeparatedArrayParser } from "../separatedArrayParser.js";
5
- import { createExactSequenceParser } from "../exactSequenceParser.js";
6
- import { createUnionParser } from "../unionParser.js";
7
- import { createTupleParser } from "../tupleParser.js";
8
- import { createArrayParser } from "../arrayParser.js";
1
+ import invariant from 'invariant';
2
+ import { setParserName } from '../parser.js';
3
+ import { promiseCompose } from '../promiseCompose.js';
4
+ import { createSeparatedArrayParser } from '../separatedArrayParser.js';
5
+ import { createExactSequenceParser } from '../exactSequenceParser.js';
6
+ import { createUnionParser } from '../unionParser.js';
7
+ import { createTupleParser } from '../tupleParser.js';
8
+ import { createArrayParser } from '../arrayParser.js';
9
9
  export const smaliSimpleNameParser = async (parserContext) => {
10
10
  const characters = [];
11
11
  while (true) {
@@ -19,14 +19,14 @@ export const smaliSimpleNameParser = async (parserContext) => {
19
19
  || (character === '$')
20
20
  || (character === '-')
21
21
  || (character === '_')
22
- || (character === '\u00a0')
23
- || (character >= '\u00a1' && character <= '\u1fff')
24
- || (character >= '\u2000' && character <= '\u200a')
22
+ || (character === '\u00A0')
23
+ || (character >= '\u00A1' && character <= '\u1FFF')
24
+ || (character >= '\u2000' && character <= '\u200A')
25
25
  || (character >= '\u2010' && character <= '\u2027')
26
- || (character === '\u202f')
27
- || (character >= '\u2030' && character <= '\ud7ff')
28
- || (character >= '\ue000' && character <= '\uffef')
29
- || (character >= '\ud800' && character <= '\udbff')) {
26
+ || (character === '\u202F')
27
+ || (character >= '\u2030' && character <= '\uD7FF')
28
+ || (character >= '\uE000' && character <= '\uFFEF')
29
+ || (character >= '\uD800' && character <= '\uDBFF')) {
30
30
  parserContext.skip(1);
31
31
  characters.push(character);
32
32
  continue;
@@ -43,10 +43,10 @@ export const smaliMemberNameParser = createUnionParser([
43
43
  createExactSequenceParser('<'),
44
44
  smaliSimpleNameParser,
45
45
  createExactSequenceParser('>'),
46
- ]), (strings) => strings.join('')),
46
+ ]), strings => strings.join('')),
47
47
  ]);
48
48
  setParserName(smaliMemberNameParser, 'smaliMemberNameParser');
49
- const smaliFullClassNameParser = promiseCompose(createSeparatedArrayParser(smaliMemberNameParser, createExactSequenceParser('/')), (pathSegments) => pathSegments.join('/'));
49
+ const smaliFullClassNameParser = promiseCompose(createSeparatedArrayParser(smaliMemberNameParser, createExactSequenceParser('/')), pathSegments => pathSegments.join('/'));
50
50
  setParserName(smaliFullClassNameParser, 'smaliFullClassNameParser');
51
51
  const smaliNonArrayFieldTypeDescriptorParser = createUnionParser([
52
52
  createExactSequenceParser('Z'),
@@ -1,9 +1,10 @@
1
- import { Parser } from "../parser.js";
1
+ import { type Parser } from '../parser.js';
2
2
  export declare const uleb128p1NumberParser: Parser<number, Uint8Array>;
3
3
  export declare const ubyteParser: Parser<number, Uint8Array>;
4
4
  export declare const byteParser: Parser<number, Uint8Array>;
5
5
  export declare const shortParser: Parser<number, Uint8Array>;
6
6
  export declare const ushortParser: Parser<number, Uint8Array>;
7
+ export declare const createExactUshortParser: (expectedValue: number) => Parser<number, Uint8Array>;
7
8
  export declare const intParser: Parser<number, Uint8Array>;
8
9
  export declare const uintParser: Parser<number, Uint8Array>;
9
10
  export declare const longParser: Parser<bigint, Uint8Array>;
@@ -1,34 +1,39 @@
1
- import { createElementParser } from "../elementParser.js";
2
- import { createFixedLengthSequenceParser } from "../fixedLengthSequenceParser.js";
3
- import { uleb128NumberParser } from "../leb128Parser.js";
4
- import { promiseCompose } from "../promiseCompose.js";
1
+ import { createElementParser } from '../elementParser.js';
2
+ import { createFixedLengthSequenceParser } from '../fixedLengthSequenceParser.js';
3
+ import { uleb128NumberParser } from '../leb128Parser.js';
4
+ import { parserCreatorCompose } from '../parserCreatorCompose.js';
5
+ import { promiseCompose } from '../promiseCompose.js';
5
6
  export const uleb128p1NumberParser = async (parserContext) => {
6
7
  const value = await uleb128NumberParser(parserContext);
7
8
  return value - 1;
8
9
  };
9
10
  export const ubyteParser = createElementParser();
10
- export const byteParser = promiseCompose(ubyteParser, (ubyte) => ubyte > 127 ? ubyte - 256 : ubyte);
11
- export const shortParser = promiseCompose(createFixedLengthSequenceParser(2), (uint8Array) => {
11
+ export const byteParser = promiseCompose(ubyteParser, ubyte => ubyte > 127 ? ubyte - 256 : ubyte);
12
+ export const shortParser = promiseCompose(createFixedLengthSequenceParser(2), uint8Array => {
12
13
  const buffer = Buffer.from(uint8Array);
13
14
  return buffer.readInt16LE(0);
14
15
  });
15
- export const ushortParser = promiseCompose(createFixedLengthSequenceParser(2), (uint8Array) => {
16
+ export const ushortParser = promiseCompose(createFixedLengthSequenceParser(2), uint8Array => {
16
17
  const buffer = Buffer.from(uint8Array);
17
18
  return buffer.readUInt16LE(0);
18
19
  });
19
- export const intParser = promiseCompose(createFixedLengthSequenceParser(4), (uint8Array) => {
20
+ export const createExactUshortParser = (expectedValue) => parserCreatorCompose(() => ushortParser, ushortValue => async (parserContext) => {
21
+ parserContext.invariant(ushortValue === expectedValue, `Expected ushort value ${expectedValue}, got ${ushortValue}`);
22
+ return ushortValue;
23
+ })();
24
+ export const intParser = promiseCompose(createFixedLengthSequenceParser(4), uint8Array => {
20
25
  const buffer = Buffer.from(uint8Array);
21
26
  return buffer.readInt32LE(0);
22
27
  });
23
- export const uintParser = promiseCompose(createFixedLengthSequenceParser(4), (uint8Array) => {
28
+ export const uintParser = promiseCompose(createFixedLengthSequenceParser(4), uint8Array => {
24
29
  const buffer = Buffer.from(uint8Array);
25
30
  return buffer.readUInt32LE(0);
26
31
  });
27
- export const longParser = promiseCompose(createFixedLengthSequenceParser(8), (uint8Array) => {
32
+ export const longParser = promiseCompose(createFixedLengthSequenceParser(8), uint8Array => {
28
33
  const buffer = Buffer.from(uint8Array);
29
34
  return buffer.readBigInt64LE(0);
30
35
  });
31
- export const ulongParser = promiseCompose(createFixedLengthSequenceParser(8), (uint8Array) => {
36
+ export const ulongParser = promiseCompose(createFixedLengthSequenceParser(8), uint8Array => {
32
37
  const buffer = Buffer.from(uint8Array);
33
38
  return buffer.readBigUInt64LE(0);
34
39
  });
@@ -1,90 +1,106 @@
1
- import { Newtype } from 'newtype-ts';
2
- export interface IndexIntoStringIds extends Newtype<{
1
+ import { type Newtype } from 'newtype-ts';
2
+ export type IndexIntoStringIds = {} & Newtype<{
3
3
  readonly IndexIntoStringIds: unique symbol;
4
- }, number> {
5
- }
6
- export declare const isoIndexIntoStringIds: import("monocle-ts").Iso<IndexIntoStringIds, number>;
7
- export interface IndexIntoTypeIds extends Newtype<{
4
+ }, number>;
5
+ export declare const isoIndexIntoStringIds: import("monocle-ts").Iso<Newtype<{
6
+ readonly IndexIntoStringIds: unique symbol;
7
+ }, number>, number>;
8
+ export type IndexIntoTypeIds = {} & Newtype<{
9
+ readonly IndexIntoTypeIds: unique symbol;
10
+ }, number>;
11
+ export declare const isoIndexIntoTypeIds: import("monocle-ts").Iso<Newtype<{
8
12
  readonly IndexIntoTypeIds: unique symbol;
9
- }, number> {
10
- }
11
- export declare const isoIndexIntoTypeIds: import("monocle-ts").Iso<IndexIntoTypeIds, number>;
12
- export interface IndexIntoPrototypeIds extends Newtype<{
13
+ }, number>, number>;
14
+ export type IndexIntoPrototypeIds = {} & Newtype<{
15
+ readonly IndexIntoPrototypeIds: unique symbol;
16
+ }, number>;
17
+ export declare const isoIndexIntoPrototypeIds: import("monocle-ts").Iso<Newtype<{
13
18
  readonly IndexIntoPrototypeIds: unique symbol;
14
- }, number> {
15
- }
16
- export declare const isoIndexIntoPrototypeIds: import("monocle-ts").Iso<IndexIntoPrototypeIds, number>;
17
- export interface IndexIntoFieldIds extends Newtype<{
19
+ }, number>, number>;
20
+ export type IndexIntoFieldIds = {} & Newtype<{
18
21
  readonly IndexIntoFieldIds: unique symbol;
19
- }, number> {
20
- }
21
- export declare const isoIndexIntoFieldIds: import("monocle-ts").Iso<IndexIntoFieldIds, number>;
22
- export interface IndexIntoMethodIds extends Newtype<{
22
+ }, number>;
23
+ export declare const isoIndexIntoFieldIds: import("monocle-ts").Iso<Newtype<{
24
+ readonly IndexIntoFieldIds: unique symbol;
25
+ }, number>, number>;
26
+ export type IndexIntoMethodIds = {} & Newtype<{
27
+ readonly IndexIntoMethodIds: unique symbol;
28
+ }, number>;
29
+ export declare const isoIndexIntoMethodIds: import("monocle-ts").Iso<Newtype<{
23
30
  readonly IndexIntoMethodIds: unique symbol;
24
- }, number> {
25
- }
26
- export declare const isoIndexIntoMethodIds: import("monocle-ts").Iso<IndexIntoMethodIds, number>;
27
- export interface OffsetToStringDataItem extends Newtype<{
31
+ }, number>, number>;
32
+ export type OffsetToStringDataItem = {} & Newtype<{
28
33
  readonly OffsetToStringDataItem: unique symbol;
29
- }, number> {
30
- }
31
- export declare const isoOffsetToStringDataItem: import("monocle-ts").Iso<OffsetToStringDataItem, number>;
32
- export interface OffsetToTypeList extends Newtype<{
34
+ }, number>;
35
+ export declare const isoOffsetToStringDataItem: import("monocle-ts").Iso<Newtype<{
36
+ readonly OffsetToStringDataItem: unique symbol;
37
+ }, number>, number>;
38
+ export type OffsetToTypeList = {} & Newtype<{
39
+ readonly OffsetToTypeList: unique symbol;
40
+ }, number>;
41
+ export declare const isoOffsetToTypeList: import("monocle-ts").Iso<Newtype<{
33
42
  readonly OffsetToTypeList: unique symbol;
34
- }, number> {
35
- }
36
- export declare const isoOffsetToTypeList: import("monocle-ts").Iso<OffsetToTypeList, number>;
37
- export interface OffsetToAnnotationsDirectoryItem extends Newtype<{
43
+ }, number>, number>;
44
+ export type OffsetToAnnotationsDirectoryItem = {} & Newtype<{
38
45
  readonly OffsetToAnnotationsDirectoryItem: unique symbol;
39
- }, number> {
40
- }
41
- export declare const isoOffsetToAnnotationsDirectoryItem: import("monocle-ts").Iso<OffsetToAnnotationsDirectoryItem, number>;
42
- export interface OffsetToAnnotationSetItem extends Newtype<{
46
+ }, number>;
47
+ export declare const isoOffsetToAnnotationsDirectoryItem: import("monocle-ts").Iso<Newtype<{
48
+ readonly OffsetToAnnotationsDirectoryItem: unique symbol;
49
+ }, number>, number>;
50
+ export type OffsetToAnnotationSetItem = {} & Newtype<{
51
+ readonly OffsetToAnnotationSetItem: unique symbol;
52
+ }, number>;
53
+ export declare const isoOffsetToAnnotationSetItem: import("monocle-ts").Iso<Newtype<{
43
54
  readonly OffsetToAnnotationSetItem: unique symbol;
44
- }, number> {
45
- }
46
- export declare const isoOffsetToAnnotationSetItem: import("monocle-ts").Iso<OffsetToAnnotationSetItem, number>;
47
- export interface OffsetToAnnotationSetRefListItem extends Newtype<{
55
+ }, number>, number>;
56
+ export type OffsetToAnnotationSetRefListItem = {} & Newtype<{
48
57
  readonly OffsetToAnnotationSetRefListItem: unique symbol;
49
- }, number> {
50
- }
51
- export declare const isoOffsetToAnnotationSetRefListItem: import("monocle-ts").Iso<OffsetToAnnotationSetRefListItem, number>;
52
- export interface OffsetToClassDataItem extends Newtype<{
58
+ }, number>;
59
+ export declare const isoOffsetToAnnotationSetRefListItem: import("monocle-ts").Iso<Newtype<{
60
+ readonly OffsetToAnnotationSetRefListItem: unique symbol;
61
+ }, number>, number>;
62
+ export type OffsetToClassDataItem = {} & Newtype<{
63
+ readonly OffsetToClassDataItem: unique symbol;
64
+ }, number>;
65
+ export declare const isoOffsetToClassDataItem: import("monocle-ts").Iso<Newtype<{
53
66
  readonly OffsetToClassDataItem: unique symbol;
54
- }, number> {
55
- }
56
- export declare const isoOffsetToClassDataItem: import("monocle-ts").Iso<OffsetToClassDataItem, number>;
57
- export interface OffsetToEncodedArrayItem extends Newtype<{
67
+ }, number>, number>;
68
+ export type OffsetToEncodedArrayItem = {} & Newtype<{
69
+ readonly OffsetToEncodedArrayItem: unique symbol;
70
+ }, number>;
71
+ export declare const isoOffsetToEncodedArrayItem: import("monocle-ts").Iso<Newtype<{
58
72
  readonly OffsetToEncodedArrayItem: unique symbol;
59
- }, number> {
60
- }
61
- export declare const isoOffsetToEncodedArrayItem: import("monocle-ts").Iso<OffsetToEncodedArrayItem, number>;
62
- export interface OffsetToCodeItem extends Newtype<{
73
+ }, number>, number>;
74
+ export type OffsetToCodeItem = {} & Newtype<{
63
75
  readonly OffsetToCodeItem: unique symbol;
64
- }, number> {
65
- }
66
- export declare const isoOffsetToCodeItem: import("monocle-ts").Iso<OffsetToCodeItem, number>;
67
- export interface OffsetToDebugInfoItem extends Newtype<{
76
+ }, number>;
77
+ export declare const isoOffsetToCodeItem: import("monocle-ts").Iso<Newtype<{
78
+ readonly OffsetToCodeItem: unique symbol;
79
+ }, number>, number>;
80
+ export type OffsetToDebugInfoItem = {} & Newtype<{
81
+ readonly OffsetToDebugInfoItem: unique symbol;
82
+ }, number>;
83
+ export declare const isoOffsetToDebugInfoItem: import("monocle-ts").Iso<Newtype<{
68
84
  readonly OffsetToDebugInfoItem: unique symbol;
69
- }, number> {
70
- }
71
- export declare const isoOffsetToDebugInfoItem: import("monocle-ts").Iso<OffsetToDebugInfoItem, number>;
72
- export interface OffsetToAnnotationItem extends Newtype<{
85
+ }, number>, number>;
86
+ export type OffsetToAnnotationItem = {} & Newtype<{
73
87
  readonly OffsetToAnnotationItem: unique symbol;
74
- }, number> {
75
- }
76
- export declare const isoOffsetToAnnotationItem: import("monocle-ts").Iso<OffsetToAnnotationItem, number>;
77
- export interface OffsetFromEncodedCatchHandlerListToEncodedCatchHandler extends Newtype<{
88
+ }, number>;
89
+ export declare const isoOffsetToAnnotationItem: import("monocle-ts").Iso<Newtype<{
90
+ readonly OffsetToAnnotationItem: unique symbol;
91
+ }, number>, number>;
92
+ export type OffsetFromEncodedCatchHandlerListToEncodedCatchHandler = {} & Newtype<{
78
93
  readonly OffsetFromEncodedCatchHandlerListToEncodedCatchHandler: unique symbol;
79
- }, number> {
80
- }
81
- export declare const isoOffsetFromEncodedCatchHandlerListToEncodedCatchHandler: import("monocle-ts").Iso<OffsetFromEncodedCatchHandlerListToEncodedCatchHandler, number>;
82
- export interface TypedNumberArray<IndexType, ValueType> extends Newtype<{
83
- readonly TypedNumberArray: unique symbol;
84
- }, Array<ValueType>> {
94
+ }, number>;
95
+ export declare const isoOffsetFromEncodedCatchHandlerListToEncodedCatchHandler: import("monocle-ts").Iso<Newtype<{
96
+ readonly OffsetFromEncodedCatchHandlerListToEncodedCatchHandler: unique symbol;
97
+ }, number>, number>;
98
+ export type TypedNumberArray<IndexType, ValueType> = {
85
99
  get length(): number;
86
100
  at(index: IndexType): undefined | ValueType;
87
101
  map<NewValueType>(fn: (value: ValueType, index: IndexType) => NewValueType): TypedNumberArray<IndexType, NewValueType>;
88
102
  [Symbol.iterator](): IterableIterator<ValueType>;
89
- }
103
+ } & Newtype<{
104
+ readonly TypedNumberArray: unique symbol;
105
+ }, ValueType[]>;
90
106
  export declare const getIsoTypedNumberArray: <IndexType, ValueType>() => import("monocle-ts").Iso<TypedNumberArray<IndexType, ValueType>, ValueType[]>;
@@ -15,5 +15,4 @@ export const isoOffsetToCodeItem = iso();
15
15
  export const isoOffsetToDebugInfoItem = iso();
16
16
  export const isoOffsetToAnnotationItem = iso();
17
17
  export const isoOffsetFromEncodedCatchHandlerListToEncodedCatchHandler = iso();
18
- ;
19
18
  export const getIsoTypedNumberArray = () => iso();
@@ -1,5 +1,5 @@
1
1
  import { type Parser } from './parser.js';
2
- import { DalvikBytecode } from './dalvikBytecodeParser.js';
3
- import { DalvikExecutable } from './dalvikExecutable.js';
2
+ import { type DalvikBytecode } from './dalvikBytecodeParser.js';
3
+ import { type DalvikExecutable } from './dalvikExecutable.js';
4
4
  export declare const dalvikExecutableParser: Parser<DalvikExecutable<DalvikBytecode>, Uint8Array>;
5
5
  export declare const dalvikExecutableWithRawInstructionsParser: Parser<DalvikExecutable<Uint8Array>, Uint8Array>;