@futpib/parser 1.0.0 → 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 (380) 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} +7 -7
  7. package/build/androidPackageUnparser.d.ts +4 -0
  8. package/build/androidPackageUnparser.js +90 -0
  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/arbitraryFileSystemEntry.js +1 -1
  13. package/build/arbitraryZip.d.ts +1 -1
  14. package/build/arbitraryZip.js +13 -19
  15. package/build/arbitraryZipPermissions.d.ts +1 -8
  16. package/build/arbitraryZipPermissions.js +1 -16
  17. package/build/arbitraryZipStream.d.ts +1 -1
  18. package/build/arbitraryZipStream.js +3 -3
  19. package/build/arrayParser.d.ts +1 -1
  20. package/build/arrayParser.js +2 -2
  21. package/build/arrayParser.test.js +4 -4
  22. package/build/arrayUnparser.d.ts +2 -0
  23. package/build/arrayUnparser.js +8 -0
  24. package/build/backsmali.d.ts +1 -0
  25. package/build/backsmali.js +22 -0
  26. package/build/bsonParser.js +6 -2
  27. package/build/bsonParser.test.js +2 -2
  28. package/build/{parserInvariant.d.ts → customInvariant.d.ts} +1 -1
  29. package/build/{parserInvariant.js → customInvariant.js} +1 -1
  30. package/build/dalvikBytecodeParser/formatParsers.d.ts +97 -0
  31. package/build/dalvikBytecodeParser/formatParsers.js +169 -0
  32. package/build/dalvikBytecodeParser.d.ts +107 -0
  33. package/build/dalvikBytecodeParser.js +836 -0
  34. package/build/dalvikExecutable.d.ts +158 -0
  35. package/build/dalvikExecutable.js +20 -0
  36. package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +4 -0
  37. package/build/dalvikExecutableParser/stringSyntaxParser.js +76 -0
  38. package/build/dalvikExecutableParser/typeParsers.d.ts +10 -0
  39. package/build/dalvikExecutableParser/typeParsers.js +34 -0
  40. package/build/dalvikExecutableParser/typedNumbers.d.ts +90 -0
  41. package/build/dalvikExecutableParser/typedNumbers.js +19 -0
  42. package/build/dalvikExecutableParser.d.ts +5 -0
  43. package/build/dalvikExecutableParser.js +1439 -0
  44. package/build/dalvikExecutableParser.test.js +70 -0
  45. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +298 -0
  46. package/build/debugLogInputParser.d.ts +4 -0
  47. package/build/debugLogInputParser.js +16 -0
  48. package/build/debugLogParser.d.ts +1 -1
  49. package/build/debugLogParser.js +15 -4
  50. package/build/disjunctionParser.d.ts +2 -1
  51. package/build/disjunctionParser.js +4 -2
  52. package/build/elementParser.d.ts +2 -2
  53. package/build/elementParser.js +1 -1
  54. package/build/elementTerminatedArrayParser.d.ts +3 -0
  55. package/build/elementTerminatedArrayParser.js +18 -0
  56. package/build/elementTerminatedArrayParser.test.js +52 -0
  57. package/build/elementTerminatedSequenceArrayParser.d.ts +3 -0
  58. package/build/elementTerminatedSequenceArrayParser.js +32 -0
  59. package/build/elementTerminatedSequenceArrayParser.test.js +34 -0
  60. package/build/elementTerminatedSequenceParser.d.ts +3 -0
  61. package/build/elementTerminatedSequenceParser.js +27 -0
  62. package/build/elementTerminatedSequenceParser.test.js +34 -0
  63. package/build/endOfInputParser.d.ts +2 -2
  64. package/build/exactElementParser.d.ts +1 -1
  65. package/build/exactElementParser.js +10 -5
  66. package/build/exactSequenceParser.d.ts +2 -1
  67. package/build/exactSequenceParser.js +12 -2
  68. package/build/fetchCid.d.ts +1 -0
  69. package/build/fetchCid.js +107 -0
  70. package/build/fixedLengthSequenceParser.d.ts +1 -0
  71. package/build/fixedLengthSequenceParser.js +18 -1
  72. package/build/fixedLengthSequenceParser.test.js +41 -0
  73. package/build/hasExecutable.d.ts +1 -0
  74. package/build/hasExecutable.js +8 -0
  75. package/build/highResolutionTimer.d.ts +16 -0
  76. package/build/highResolutionTimer.js +42 -0
  77. package/build/index.d.ts +5 -2
  78. package/build/index.js +3 -0
  79. package/build/inputReader.d.ts +14 -3
  80. package/build/inputReader.js +43 -6
  81. package/build/inputReader.test.js +172 -7
  82. package/build/inputReaderState.d.ts +10 -0
  83. package/build/inputReaderState.js +16 -0
  84. package/build/inspect.d.ts +1 -0
  85. package/build/inspect.js +7 -0
  86. package/build/javaKeyStoreParser.d.ts +2 -0
  87. package/build/javaKeyStoreParser.js +67 -0
  88. package/build/javaKeyStoreParser.test.d.ts +1 -0
  89. package/build/javaKeyStoreParser.test.js +16 -0
  90. package/build/jsonParser.d.ts +2 -0
  91. package/build/jsonParser.js +13 -15
  92. package/build/jsonParser.test.js +2 -2
  93. package/build/leb128Parser.d.ts +7 -0
  94. package/build/leb128Parser.js +82 -0
  95. package/build/leb128Parser.test.d.ts +1 -0
  96. package/build/leb128Parser.test.js +107 -0
  97. package/build/listParser.d.ts +1 -1
  98. package/build/listParser.js +5 -5
  99. package/build/lookaheadParser.d.ts +2 -0
  100. package/build/lookaheadParser.js +14 -0
  101. package/build/{negativeLookahead.d.ts → negativeLookaheadParser.d.ts} +1 -1
  102. package/build/negativeLookaheadParser.js +24 -0
  103. package/build/negativeLookaheadParser.test.d.ts +1 -0
  104. package/build/negativeLookaheadParser.test.js +30 -0
  105. package/build/nonEmptyArrayParser.d.ts +2 -0
  106. package/build/nonEmptyArrayParser.js +32 -0
  107. package/build/nonEmptyArrayParser.test.d.ts +1 -0
  108. package/build/nonEmptyArrayParser.test.js +16 -0
  109. package/build/optionalParser.d.ts +1 -1
  110. package/build/optionalParser.js +2 -2
  111. package/build/parser.d.ts +13 -4
  112. package/build/parser.js +67 -32
  113. package/build/parser.test.js +94 -27
  114. package/build/parserAccessorParser.d.ts +1 -1
  115. package/build/parserAccessorParser.js +9 -1
  116. package/build/parserConsumedSequenceParser.d.ts +2 -0
  117. package/build/parserConsumedSequenceParser.js +22 -0
  118. package/build/parserContext.d.ts +20 -6
  119. package/build/parserContext.js +70 -40
  120. package/build/parserContext.test.js +34 -7
  121. package/build/parserCreatorCompose.d.ts +4 -3
  122. package/build/parserCreatorCompose.js +9 -3
  123. package/build/parserError.d.ts +6 -0
  124. package/build/parserError.js +6 -6
  125. package/build/parserImplementationInvariant.d.ts +1 -1
  126. package/build/parserImplementationInvariant.js +2 -2
  127. package/build/parserInputCompanion.d.ts +35 -0
  128. package/build/parserInputCompanion.js +68 -0
  129. package/build/promiseCompose.d.ts +1 -1
  130. package/build/promiseCompose.js +12 -1
  131. package/build/promiseSettled.d.ts +1 -0
  132. package/build/promiseSettled.js +4 -0
  133. package/build/quantifierParser.d.ts +2 -0
  134. package/build/quantifierParser.js +17 -0
  135. package/build/separatedArrayParser.d.ts +2 -0
  136. package/build/separatedArrayParser.js +39 -0
  137. package/build/separatedArrayParser.test.d.ts +1 -0
  138. package/build/separatedArrayParser.test.js +21 -0
  139. package/build/sequenceBuffer.d.ts +13 -3
  140. package/build/sequenceBuffer.js +60 -8
  141. package/build/sequenceBuffer.test.js +59 -2
  142. package/build/sequenceTerminatedSequenceParser.d.ts +5 -0
  143. package/build/sequenceTerminatedSequenceParser.js +32 -0
  144. package/build/sequenceTerminatedSequenceParser.test.d.ts +1 -0
  145. package/build/sequenceTerminatedSequenceParser.test.js +37 -0
  146. package/build/sequenceUnparser.d.ts +2 -0
  147. package/build/sequenceUnparser.js +6 -0
  148. package/build/skipParser.d.ts +1 -1
  149. package/build/skipParser.js +4 -2
  150. package/build/skipToParser.d.ts +2 -0
  151. package/build/skipToParser.js +11 -0
  152. package/build/sliceBoundedParser.d.ts +2 -2
  153. package/build/sliceBoundedParser.js +8 -3
  154. package/build/sliceBoundedParser.test.js +37 -3
  155. package/build/smali.d.ts +1 -0
  156. package/build/smali.js +17 -0
  157. package/build/smaliParser.d.ts +12 -0
  158. package/build/smaliParser.js +656 -0
  159. package/build/smaliParser.test.d.ts +1 -0
  160. package/build/smaliParser.test.js +115 -0
  161. package/build/terminatedArrayParser.d.ts +4 -2
  162. package/build/terminatedArrayParser.js +82 -5
  163. package/build/terminatedArrayParser.test.d.ts +1 -0
  164. package/build/terminatedArrayParser.test.js +131 -0
  165. package/build/toAsyncIterable.d.ts +1 -0
  166. package/build/toAsyncIterable.js +7 -0
  167. package/build/toAsyncIterator.d.ts +1 -0
  168. package/build/toAsyncIterator.js +33 -0
  169. package/build/tupleParser.d.ts +4 -0
  170. package/build/tupleParser.js +1 -5
  171. package/build/uint8Array.d.ts +1 -0
  172. package/build/uint8Array.js +7 -0
  173. package/build/unionParser.d.ts +2 -1
  174. package/build/unionParser.js +27 -12
  175. package/build/unionParser.test.d.ts +1 -0
  176. package/build/unionParser.test.js +60 -0
  177. package/build/unparser.d.ts +8 -0
  178. package/build/unparser.js +104 -0
  179. package/build/unparser.test.d.ts +1 -0
  180. package/build/unparser.test.js +150 -0
  181. package/build/unparserContext.d.ts +31 -0
  182. package/build/unparserContext.js +74 -0
  183. package/build/unparserError.d.ts +9 -0
  184. package/build/unparserError.js +9 -0
  185. package/build/unparserImplementationInvariant.d.ts +2 -0
  186. package/build/unparserImplementationInvariant.js +5 -0
  187. package/build/unparserOutputCompanion.d.ts +15 -0
  188. package/build/unparserOutputCompanion.js +13 -0
  189. package/build/zip.d.ts +9 -17
  190. package/build/zipParser.d.ts +20 -12
  191. package/build/zipParser.js +83 -71
  192. package/build/zipParser.test.js +2 -7
  193. package/build/zipUnparser.d.ts +8 -0
  194. package/build/zipUnparser.js +200 -0
  195. package/build/zipUnparser.test.d.ts +1 -0
  196. package/build/zipUnparser.test.js +80 -0
  197. package/package.json +26 -8
  198. package/src/allSettledStream.test.ts +40 -0
  199. package/src/allSettledStream.ts +47 -15
  200. package/src/androidPackage.ts +48 -0
  201. package/src/{apkParser.test.ts → androidPackageParser.test.ts} +7 -8
  202. package/src/androidPackageParser.test.ts.md +271 -0
  203. package/src/androidPackageParser.test.ts.snap +0 -0
  204. package/src/androidPackageParser.ts +440 -0
  205. package/src/androidPackageUnparser.test.ts +36 -0
  206. package/src/androidPackageUnparser.ts +120 -0
  207. package/src/arbitrarilySlicedAsyncInterable.ts +7 -2
  208. package/src/arbitraryFileSystemEntry.ts +2 -4
  209. package/src/arbitraryZip.ts +20 -27
  210. package/src/arbitraryZipPermissions.ts +0 -25
  211. package/src/arbitraryZipStream.ts +4 -4
  212. package/src/arrayParser.test.ts +4 -4
  213. package/src/arrayParser.ts +3 -2
  214. package/src/arrayUnparser.ts +13 -0
  215. package/src/backsmali.ts +30 -0
  216. package/src/bsonParser.test.ts +2 -2
  217. package/src/bsonParser.ts +16 -5
  218. package/src/{parserInvariant.ts → customInvariant.ts} +2 -2
  219. package/src/dalvikBytecodeParser/formatParsers.ts +421 -0
  220. package/src/dalvikBytecodeParser.ts +2074 -0
  221. package/src/dalvikExecutable.ts +220 -0
  222. package/src/dalvikExecutableParser/stringSyntaxParser.ts +145 -0
  223. package/src/dalvikExecutableParser/typeParsers.ts +65 -0
  224. package/src/dalvikExecutableParser/typedNumbers.ts +57 -0
  225. package/src/dalvikExecutableParser.test.ts +89 -0
  226. package/src/dalvikExecutableParser.test.ts.md +634 -0
  227. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  228. package/src/dalvikExecutableParser.ts +2768 -0
  229. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +346 -0
  230. package/src/debugLogInputParser.ts +28 -0
  231. package/src/debugLogParser.ts +20 -4
  232. package/src/disjunctionParser.ts +10 -5
  233. package/src/elementParser.ts +3 -3
  234. package/src/elementTerminatedArrayParser.test.ts +99 -0
  235. package/src/elementTerminatedArrayParser.ts +31 -0
  236. package/src/elementTerminatedSequenceArrayParser.test.ts +54 -0
  237. package/src/elementTerminatedSequenceArrayParser.ts +52 -0
  238. package/src/elementTerminatedSequenceParser.test.ts +54 -0
  239. package/src/elementTerminatedSequenceParser.ts +43 -0
  240. package/src/endOfInputParser.ts +4 -4
  241. package/src/exactElementParser.ts +18 -12
  242. package/src/exactSequenceParser.ts +24 -3
  243. package/src/fetchCid.ts +125 -0
  244. package/src/fixedLengthSequenceParser.test.ts +77 -0
  245. package/src/fixedLengthSequenceParser.ts +28 -1
  246. package/src/hasExecutable.ts +11 -0
  247. package/src/highResolutionTimer.ts +49 -0
  248. package/src/index.ts +15 -2
  249. package/src/inputReader.test.ts +216 -7
  250. package/src/inputReader.ts +80 -5
  251. package/src/inputReaderState.ts +33 -0
  252. package/src/inspect.ts +9 -0
  253. package/src/javaKeyStore.ts +0 -0
  254. package/src/javaKeyStoreParser.test.ts +22 -0
  255. package/src/javaKeyStoreParser.test.ts.md +103 -0
  256. package/src/javaKeyStoreParser.test.ts.snap +0 -0
  257. package/src/javaKeyStoreParser.ts +136 -0
  258. package/src/jsonParser.test.ts +2 -2
  259. package/src/jsonParser.ts +23 -34
  260. package/src/leb128Parser.test.ts +171 -0
  261. package/src/leb128Parser.ts +125 -0
  262. package/src/listParser.ts +6 -6
  263. package/src/lookaheadParser.ts +19 -0
  264. package/src/negativeLookaheadParser.test.ts +53 -0
  265. package/src/negativeLookaheadParser.ts +36 -0
  266. package/src/nonEmptyArrayParser.test.ts +20 -0
  267. package/src/nonEmptyArrayParser.ts +44 -0
  268. package/src/optionalParser.ts +4 -3
  269. package/src/parser.test.ts +148 -27
  270. package/src/parser.test.ts.md +21 -21
  271. package/src/parser.test.ts.snap +0 -0
  272. package/src/parser.ts +153 -49
  273. package/src/parserAccessorParser.ts +12 -2
  274. package/src/parserConsumedSequenceParser.ts +29 -0
  275. package/src/parserContext.test.ts +38 -7
  276. package/src/parserContext.ts +127 -51
  277. package/src/parserCreatorCompose.ts +25 -7
  278. package/src/parserError.ts +9 -6
  279. package/src/parserImplementationInvariant.ts +2 -2
  280. package/src/parserInputCompanion.ts +102 -0
  281. package/src/promiseCompose.ts +17 -3
  282. package/src/promiseSettled.ts +6 -0
  283. package/src/quantifierParser.ts +25 -0
  284. package/src/separatedArrayParser.test.ts +34 -0
  285. package/src/separatedArrayParser.ts +55 -0
  286. package/src/sequenceBuffer.test.ts +72 -2
  287. package/src/sequenceBuffer.ts +93 -7
  288. package/src/sequenceTerminatedSequenceParser.test.ts +60 -0
  289. package/src/sequenceTerminatedSequenceParser.ts +62 -0
  290. package/src/sequenceUnparser.ts +9 -0
  291. package/src/skipParser.ts +7 -5
  292. package/src/skipToParser.ts +16 -0
  293. package/src/sliceBoundedParser.test.ts +45 -3
  294. package/src/sliceBoundedParser.ts +21 -3
  295. package/src/smali.ts +24 -0
  296. package/src/smaliParser.test.ts +132 -0
  297. package/src/smaliParser.test.ts.md +2320 -0
  298. package/src/smaliParser.test.ts.snap +0 -0
  299. package/src/smaliParser.ts +1166 -0
  300. package/src/terminatedArrayParser.test.ts +258 -0
  301. package/src/terminatedArrayParser.ts +111 -6
  302. package/src/toAsyncIterable.ts +7 -0
  303. package/src/toAsyncIterator.ts +48 -0
  304. package/src/tupleParser.ts +8 -5
  305. package/src/uint8Array.ts +10 -0
  306. package/src/unionParser.test.ts +79 -0
  307. package/src/unionParser.ts +44 -16
  308. package/src/unparser.test.ts +221 -0
  309. package/src/unparser.ts +209 -0
  310. package/src/unparserContext.ts +127 -0
  311. package/src/unparserError.ts +12 -0
  312. package/src/unparserImplementationInvariant.ts +6 -0
  313. package/src/unparserOutputCompanion.ts +24 -0
  314. package/src/zip.ts +10 -22
  315. package/src/zipParser.test.ts +2 -8
  316. package/src/zipParser.ts +223 -146
  317. package/src/zipUnparser.test.ts +119 -0
  318. package/src/zipUnparser.ts +300 -0
  319. package/build/apk.d.ts +0 -13
  320. package/build/apkParser.d.ts +0 -3
  321. package/build/apkParser.js +0 -135
  322. package/build/arbitraryDosDate.d.ts +0 -2
  323. package/build/arbitraryDosDate.js +0 -8
  324. package/build/arbitraryZipEntry.d.ts +0 -3
  325. package/build/arbitraryZipEntry.js +0 -26
  326. package/build/createDisjunctionParser.d.ts +0 -2
  327. package/build/createDisjunctionParser.js +0 -47
  328. package/build/createExactParser.d.ts +0 -2
  329. package/build/createExactParser.js +0 -12
  330. package/build/createSequentialUnionParser.d.ts +0 -2
  331. package/build/createSequentialUnionParser.js +0 -69
  332. package/build/fixedLengthChunkParser.d.ts +0 -2
  333. package/build/fixedLengthChunkParser.js +0 -12
  334. package/build/fixedLengthParser.d.ts +0 -2
  335. package/build/fixedLengthParser.js +0 -12
  336. package/build/inputChunkBuffer.d.ts +0 -15
  337. package/build/inputChunkBuffer.js +0 -40
  338. package/build/inputChunkBuffer.test.js +0 -34
  339. package/build/inputCompanion.d.ts +0 -18
  340. package/build/inputCompanion.js +0 -28
  341. package/build/invariantDefined.d.ts +0 -1
  342. package/build/invariantDefined.js +0 -5
  343. package/build/invariantIdentity.d.ts +0 -3
  344. package/build/invariantIdentity.js +0 -5
  345. package/build/jsonParser2.d.ts +0 -3
  346. package/build/jsonParser2.js +0 -52
  347. package/build/jsonParser2.test.js +0 -22
  348. package/build/negativeLookahead.js +0 -20
  349. package/build/parserCompose.d.ts +0 -3
  350. package/build/parserCompose.js +0 -7
  351. package/build/parserImplementationInvariantInvariant.d.ts +0 -3
  352. package/build/parserImplementationInvariantInvariant.js +0 -15
  353. package/build/promiseFish.d.ts +0 -1
  354. package/build/promiseFish.js +0 -3
  355. package/build/sequenceParser.d.ts +0 -3
  356. package/build/sequenceParser.js +0 -10
  357. package/build/terminatedSequenceParser.d.ts +0 -2
  358. package/build/terminatedSequenceParser.js +0 -24
  359. package/build/zipEntry.d.ts +0 -28
  360. package/build/zipFile.d.ts +0 -32
  361. package/build/zipFileEntry.d.ts +0 -6
  362. package/src/apk.ts +0 -16
  363. package/src/apkParser.test.ts.md +0 -268
  364. package/src/apkParser.test.ts.snap +0 -0
  365. package/src/apkParser.ts +0 -327
  366. package/src/inputCompanion.ts +0 -43
  367. package/src/invariantDefined.ts +0 -6
  368. package/src/invariantIdentity.ts +0 -8
  369. package/src/negativeLookahead.ts +0 -26
  370. /package/build/{apk.js → androidPackage.js} +0 -0
  371. /package/build/{apkParser.test.d.ts → androidPackageParser.test.d.ts} +0 -0
  372. /package/build/{arbitraryDosPermissions.d.ts → androidPackageUnparser.test.d.ts} +0 -0
  373. /package/build/{arbitraryDosPermissions.js → dalvikExecutableParser.test.d.ts} +0 -0
  374. /package/build/{inputChunkBuffer.test.d.ts → dalvikExecutableParserAgainstSmaliParser.test.d.ts} +0 -0
  375. /package/build/{jsonParser2.test.d.ts → elementTerminatedArrayParser.test.d.ts} +0 -0
  376. /package/build/{parserParsingInvariant.d.ts → elementTerminatedSequenceArrayParser.test.d.ts} +0 -0
  377. /package/build/{parserParsingInvariant.js → elementTerminatedSequenceParser.test.d.ts} +0 -0
  378. /package/build/{zipEntry.js → fixedLengthSequenceParser.test.d.ts} +0 -0
  379. /package/build/{zipFile.js → javaKeyStore.d.ts} +0 -0
  380. /package/build/{zipFileEntry.js → javaKeyStore.js} +0 -0
@@ -1,268 +0,0 @@
1
- # Snapshot report for `src/apkParser.test.ts`
2
-
3
- The actual snapshot is saved in `apkParser.test.ts.snap`.
4
-
5
- Generated by [AVA](https://avajs.dev).
6
-
7
- ## apk bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu
8
-
9
- > Snapshot 1
10
-
11
- {
12
- comment: '',
13
- entries: [
14
- {
15
- comment: '',
16
- compression: 'deflate',
17
- content: Uint8Array [
18
- 38
19
- ],
20
- date: Date 1981-01-01 01:01:02 UTC {},
21
- path: 'META-INF/com/android/build/gradle/app-metadata.properties',
22
- permissions: {
23
- type: 'unix',
24
- unixPermissions: 420,
25
- },
26
- type: 'file',
27
- },
28
- {
29
- comment: '',
30
- compression: 'deflate',
31
- content: Uint8Array [
32
- 04
33
- ],
34
- date: Date 1981-01-01 01:01:02 UTC {},
35
- path: 'classes.dex',
36
- permissions: {
37
- type: 'unix',
38
- unixPermissions: 420,
39
- },
40
- type: 'file',
41
- },
42
- {
43
- comment: '',
44
- compression: 'deflate',
45
- content: Uint8Array [
46
- 24
47
- ],
48
- date: Date 1981-01-01 01:01:02 UTC {},
49
- path: 'AndroidManifest.xml',
50
- permissions: {
51
- dosPermissions: 0,
52
- type: 'dos',
53
- },
54
- type: 'file',
55
- },
56
- {
57
- comment: '',
58
- compression: 'store',
59
- content: Uint8Array [
60
- 28
61
- ],
62
- date: Date 1981-01-01 01:01:02 UTC {},
63
- path: 'resources.arsc',
64
- permissions: {
65
- dosPermissions: 0,
66
- type: 'dos',
67
- },
68
- type: 'file',
69
- },
70
- {
71
- comment: '',
72
- compression: 'deflate',
73
- content: Uint8Array [
74
- c2
75
- ],
76
- date: Date 1981-01-01 01:01:02 UTC {},
77
- path: 'META-INF/CERT.SF',
78
- permissions: {
79
- type: 'unix',
80
- unixPermissions: 420,
81
- },
82
- type: 'file',
83
- },
84
- {
85
- comment: '',
86
- compression: 'deflate',
87
- content: Uint8Array [
88
- 87
89
- ],
90
- date: Date 1981-01-01 01:01:02 UTC {},
91
- path: 'META-INF/CERT.RSA',
92
- permissions: {
93
- type: 'unix',
94
- unixPermissions: 420,
95
- },
96
- type: 'file',
97
- },
98
- {
99
- comment: '',
100
- compression: 'deflate',
101
- content: Uint8Array [
102
- 8b
103
- ],
104
- date: Date 1981-01-01 01:01:02 UTC {},
105
- path: 'META-INF/MANIFEST.MF',
106
- permissions: {
107
- type: 'unix',
108
- unixPermissions: 420,
109
- },
110
- type: 'file',
111
- },
112
- ],
113
- signingBlock: {
114
- pairs: [],
115
- signatureV2: [
116
- {
117
- publicKey: Uint8Array [
118
- 30820122 300d0609 2a864886 f70d0101 01050003 82010f00 3082010a 02820101
119
- 00d9e80b 234a3d22 9edb5b29 dc6304b4 af9cfebf ff1428ad dfdc39d8 98630c66
120
- 5fbf2761 3fa9e68a 481986b1 fbf2d261 e9601586 6d00cb32 da998310 bd6ed4f7
121
- 1eb43aad 8300b6a6 10c674fc a2e18424 49e43b30 958e7384 38da6185 8c1fa3ae
122
- 443062e7 0e08cc98 7ed316b0 d449691f f7ddb30a 5dc0a76e 63541180 24adb323
123
- 41865189 6f88092c 7e510d64 4a58b8e6 008a7e80 821fa071 a40bb6dc 03109c18
124
- d48b8304 d0e34576 9d21a329 71c349d3 ad4f44d1 2469e132 632f16ef 37e2c5d0
125
- fcfd1297 6f76b4b7 3be5a412 db8e9b84 877f05ab d6bb7406 e9ed1df6 94a8185f
126
- 2425dfda 330e9d83 7be2c34c 403ddb1b f0fbffdd b5e444aa 8cbbc76b 55ef718d
127
- e7020301 0001
128
- ],
129
- signatures: [
130
- {
131
- signature: Uint8Array [
132
- afe9f1db ef788d9c b374f659 00f6e1f2 d2fd3179 4614443a b00798ad d4808873
133
- cf91a1fc ffdd68c2 c4c035b4 22ec2c87 676626ab bb72ea1e cc9eed9e feeb7e4f
134
- b1ff0800 cabc5cd4 06a66f97 59d97d5c 0be5a4af df99e873 702c76c8 3f99c319
135
- f61870dc a47c2f4a be5f63f4 9935050a 1811a6c0 c97c3f84 a69f741d 510d6add
136
- 65e180a5 d7e9ec63 f04797a8 4f177cc3 ec240d43 776335de 77f57d90 e9e9c99b
137
- 0fb38afc 271b30e3 476ce4f0 5b6ca04c eace914c b4583031 f8038506 07a7c872
138
- ba8959d6 faea789a a8d96ded 0ea8aed4 29022190 543817c1 619fbf18 597106dd
139
- 7f97b127 9504a7a6 1ac6d1af 4d4ff633 cff1efa9 46d88682 b4201810 1ec50c53
140
- ],
141
- signatureAlgorithmId: 259,
142
- },
143
- ],
144
- signedData: {
145
- additionalAttributes: [],
146
- certificates: [
147
- Uint8Array [
148
- 308202e4 308201cc 02010130 0d06092a 864886f7 0d010105 05003037 31163014
149
- 06035504 030c0d41 6e64726f 69642044 65627567 3110300e 06035504 0a0c0741
150
- 6e64726f 6964310b 30090603 55040613 02555330 20170d32 31303532 35313033
151
- 3934395a 180f3230 35313035 31383130 33393439 5a303731 16301406 03550403
152
- 0c0d416e 64726f69 64204465 62756731 10300e06 0355040a 0c07416e 64726f69
153
- 64310b30 09060355 04061302 55533082 0122300d 06092a86 4886f70d 01010105
154
- 00038201 0f003082 010a0282 010100d9 e80b234a 3d229edb 5b29dc63 04b4af9c
155
- febfff14 28addfdc 39d89863 0c665fbf 27613fa9 e68a4819 86b1fbf2 d261e960
156
- 15866d00 cb32da99 8310bd6e d4f71eb4 3aad8300 b6a610c6 74fca2e1 842449e4
157
- 3b30958e 738438da 61858c1f a3ae4430 62e70e08 cc987ed3 16b0d449 691ff7dd
158
- b30a5dc0 a76e6354 118024ad b3234186 51896f88 092c7e51 0d644a58 b8e6008a
159
- 7e80821f a071a40b b6dc0310 9c18d48b 8304d0e3 45769d21 a32971c3 49d3ad4f
160
- 44d12469 e132632f 16ef37e2 c5d0fcfd 12976f76 b4b73be5 a412db8e 9b84877f
161
- 05abd6bb 7406e9ed 1df694a8 185f2425 dfda330e 9d837be2 c34c403d db1bf0fb
162
- ffddb5e4 44aa8cbb c76b55ef 718de702 03010001 300d0609 2a864886 f70d0101
163
- 05050003 82010100 a46b928b e1ebab3e 96f01510 c4c08aa7 1fc7e430 9e61057d
164
- a2992615 5abc1388 256617fb 6ece2fb6 9855c225 de33b828 a78b5796 a8e66f20
165
- 62b22568 171d4501 61f5de61 2eb3d75e 3367127d a6feb30d 3764cd44 c9dc2e0c
166
- 19b07260 154ff2aa 78c0d7f6 87e3417f 8694ecfd cdb448d9 cc4959f3 3face106
167
- 258b7c12 e863e397 79a6d6fa f9b08d77 061beb87 7c2e36ce 7e69e564 66d7685b
168
- 8460462e b8f0106c bf03eb18 dfcfef11 b7f9f7b5 b8ae6c0f b8cdbc0e ce7c1c68
169
- 17d6c538 7acaf796 2189c4ec fe569d1c 3c0d12bd a7630669 095e2727 4c549e76
170
- ed05d76f eaf75631 d93d80b3 14f03e53 1b1a3493 ccf756cf 023794f1 40bf9005
171
- c5ec180d 9dcbf468
172
- ],
173
- ],
174
- digests: [
175
- {
176
- digest: Uint8Array [
177
- 52308ebb b8a0f50c e32daa36 41a7640d 09d07ab5 9bbdbe18 9605d4a7 1897b69e
178
- ],
179
- signatureAlgorithmId: 259,
180
- },
181
- ],
182
- },
183
- },
184
- ],
185
- zeroPaddingLength: 2650,
186
- },
187
- }
188
-
189
- ## apk bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m
190
-
191
- > Snapshot 1
192
-
193
- {
194
- comment: '',
195
- entries: [
196
- {
197
- comment: '',
198
- compression: 'deflate',
199
- content: Uint8Array [
200
- 38
201
- ],
202
- date: Date 1981-01-01 01:01:02 UTC {},
203
- path: 'META-INF/com/android/build/gradle/app-metadata.properties',
204
- permissions: {
205
- type: 'unix',
206
- unixPermissions: 420,
207
- },
208
- type: 'file',
209
- },
210
- {
211
- comment: '',
212
- compression: 'deflate',
213
- content: Uint8Array [
214
- 78
215
- ],
216
- date: Date 1981-01-01 01:01:02 UTC {},
217
- path: 'META-INF/version-control-info.textproto',
218
- permissions: {
219
- type: 'unix',
220
- unixPermissions: 420,
221
- },
222
- type: 'file',
223
- },
224
- {
225
- comment: '',
226
- compression: 'deflate',
227
- content: Uint8Array [
228
- 88
229
- ],
230
- date: Date 1981-01-01 01:01:02 UTC {},
231
- path: 'classes.dex',
232
- permissions: {
233
- type: 'unix',
234
- unixPermissions: 420,
235
- },
236
- type: 'file',
237
- },
238
- {
239
- comment: '',
240
- compression: 'deflate',
241
- content: Uint8Array [
242
- f0
243
- ],
244
- date: Date 1981-01-01 01:01:02 UTC {},
245
- path: 'AndroidManifest.xml',
246
- permissions: {
247
- dosPermissions: 0,
248
- type: 'dos',
249
- },
250
- type: 'file',
251
- },
252
- {
253
- comment: '',
254
- compression: 'store',
255
- content: Uint8Array [
256
- 28
257
- ],
258
- date: Date 1981-01-01 01:01:02 UTC {},
259
- path: 'resources.arsc',
260
- permissions: {
261
- dosPermissions: 0,
262
- type: 'dos',
263
- },
264
- type: 'file',
265
- },
266
- ],
267
- signingBlock: undefined,
268
- }
Binary file
package/src/apkParser.ts DELETED
@@ -1,327 +0,0 @@
1
- import { createArrayParser } from "./arrayParser.js";
2
- import { createOptionalParser } from "./optionalParser.js";
3
- import { Parser, setParserName } from "./parser.js";
4
- import { promiseCompose } from "./promiseCompose.js";
5
- import { createTupleParser } from "./tupleParser.js";
6
- import { zip64EndOfCentralDirectoryLocatorParser, zip64EndOfCentralDirectoryRecordParser, zipArchiveDecryptionHeaderParser, zipArchiveExtraDataRecordParser, zipCentralDirectoryHeaderParser, zipEndOfCentralDirectoryRecordParser, zipFromZipSegments, zipLocalFileParser } from "./zipParser.js";
7
- import { Apk, ApkSigningBlock, ApkSigningBlockPair } from "./apk.js";
8
- import { createFixedLengthSequenceParser } from "./fixedLengthSequenceParser.js";
9
- import { parserCreatorCompose } from "./parserCreatorCompose.js";
10
- import { createExactSequenceParser } from "./exactSequenceParser.js";
11
- import { createSliceBoundedParser } from "./sliceBoundedParser.js";
12
- import { createDisjunctionParser } from "./disjunctionParser.js";
13
- import invariant from "invariant";
14
- import { createExactElementParser } from "./exactElementParser.js";
15
-
16
- // https://source.android.com/docs/security/features/apksigning/v2#apk-signing-block
17
-
18
- const uint32LEParser: Parser<number, Uint8Array> = promiseCompose(
19
- createFixedLengthSequenceParser(4),
20
- array => Buffer.from(array).readUInt32LE(),
21
- );
22
-
23
- setParserName(uint32LEParser, 'uint32LEParser');
24
-
25
- const uint64LEParser: Parser<bigint, Uint8Array> = promiseCompose(
26
- createFixedLengthSequenceParser(8),
27
- array => Buffer.from(array).readBigUInt64LE(),
28
- );
29
-
30
- setParserName(uint64LEParser, 'uint64LEParser');
31
-
32
- const createUint32LengthPrefixedParser = <T>(createInnerParser: (length: number) => Parser<T, Uint8Array>): Parser<T, Uint8Array> => parserCreatorCompose(
33
- () => uint32LEParser,
34
- length => createInnerParser(length),
35
- )();
36
-
37
- const createUint64LengthPrefixedParser = <T>(createInnerParser: (length: bigint) => Parser<T, Uint8Array>): Parser<T, Uint8Array> => parserCreatorCompose(
38
- () => uint64LEParser,
39
- length => createInnerParser(length),
40
- )();
41
-
42
- const createUint32LengthPrefixedSliceBoundedParser = <T>(innerParser: Parser<T, Uint8Array>): Parser<T, Uint8Array> => createUint32LengthPrefixedParser(
43
- length => createSliceBoundedParser(innerParser, length),
44
- );
45
-
46
- const createUint32LengthPrefixedSliceBoundedArrayParser = <T>(innerParser: Parser<T, Uint8Array>): Parser<T[], Uint8Array> => createUint32LengthPrefixedSliceBoundedParser(createArrayParser(innerParser));
47
-
48
- type ApkSigningBlockZeroPaddingPair = {
49
- type: 'zeroPadding',
50
- length: number,
51
- };
52
-
53
- const createApkSigningBlockZeroPaddingPairInnerParser = (length: number): Parser<ApkSigningBlockZeroPaddingPair, Uint8Array> => promiseCompose(
54
- createTupleParser([
55
- createExactSequenceParser<Uint8Array>(Buffer.from('77657242', 'hex')),
56
- createFixedLengthSequenceParser(length - 4),
57
- ]),
58
- ([ _magic, zeroPadding ]) => ({ type: 'zeroPadding', length: zeroPadding.length }),
59
- );
60
-
61
- type ApkSigningBlockSignatureV2Pair = {
62
- type: 'signatureV2',
63
- signers: ApkSignatureSchemeV2Signer[],
64
- };
65
-
66
- const createApkSigningBlockSignatureV2PairInnerParser = (length: number): Parser<ApkSigningBlockSignatureV2Pair, Uint8Array> => {
67
- const apkSigningBlockSignatureV2PairInnerParser = promiseCompose(
68
- createTupleParser([
69
- createExactSequenceParser<Uint8Array>(Buffer.from('1a870971', 'hex')),
70
- apkSignatureSchemeV2SignersParser,
71
- ]),
72
- ([ _magic, signers = [] ]) => ({ type: 'signatureV2' as const, signers }),
73
- );
74
-
75
- return setParserName(apkSigningBlockSignatureV2PairInnerParser, 'apkSigningBlockSignatureV2PairInnerParser');
76
- };
77
-
78
- type ApkSigningBlockGenericPair = {
79
- type: 'generic',
80
- pair: ApkSigningBlockPair,
81
- };
82
-
83
- const createApkSigningBlockGenericPairInnerParser = (length: number): Parser<ApkSigningBlockGenericPair, Uint8Array> => promiseCompose(
84
- createTupleParser([
85
- uint32LEParser,
86
- createFixedLengthSequenceParser(length - 4),
87
- ]),
88
- ([ id, value ]) => ({ type: 'generic', pair: { id, value } }),
89
- );
90
-
91
- type ApkSigningBlockPairType =
92
- | ApkSigningBlockZeroPaddingPair
93
- | ApkSigningBlockSignatureV2Pair
94
- | ApkSigningBlockGenericPair
95
- ;
96
-
97
- const createApkSigningBlockPairInnerParser = (length: number): Parser<ApkSigningBlockPairType, Uint8Array> => createDisjunctionParser([
98
- createApkSigningBlockZeroPaddingPairInnerParser(length),
99
- createApkSigningBlockSignatureV2PairInnerParser(length),
100
- createApkSigningBlockGenericPairInnerParser(length),
101
- ]);
102
-
103
- const apkSigningBlockPairParser: Parser<ApkSigningBlockPairType, Uint8Array> = createUint64LengthPrefixedParser(
104
- length => createApkSigningBlockPairInnerParser(Number(length)),
105
- );
106
-
107
- setParserName(apkSigningBlockPairParser, 'apkSigningBlockPairParser');
108
-
109
- const apkSigningBlockPairsParser: Parser<ApkSigningBlockPairType[], Uint8Array> = createArrayParser(apkSigningBlockPairParser);
110
-
111
- const apkSigningBlockParser: Parser<ApkSigningBlock, Uint8Array> = createUint64LengthPrefixedParser(
112
- sizeOfBlock => promiseCompose(
113
- createTupleParser([
114
- apkSigningBlockPairsParser,
115
- uint64LEParser,
116
- createExactSequenceParser<Uint8Array>(Buffer.from('APK Sig Block 42', 'utf8')),
117
- ]),
118
- async ([ pairs, sizeOfBlockRepeated, _magic ]) => {
119
- invariant(sizeOfBlock === sizeOfBlockRepeated, 'Size of block mismatch: %s !== %s.', sizeOfBlock, sizeOfBlockRepeated);
120
-
121
- const zeroPaddingPair = pairs.find(pair => pair.type === 'zeroPadding');
122
- const signatureV2Pair = pairs.find(pair => pair.type === 'signatureV2');
123
-
124
- const genericPairs = (
125
- pairs
126
- .filter(pair => (
127
- pair !== zeroPaddingPair
128
- && pair !== signatureV2Pair
129
- ))
130
- .map(pair => {
131
- invariant(pair.type === 'generic', 'Expected generic pair, got %s.', pair.type);
132
- return pair.pair;
133
- })
134
- );
135
-
136
- return {
137
- zeroPaddingLength: zeroPaddingPair?.length,
138
- signatureV2: signatureV2Pair?.signers,
139
- pairs: genericPairs,
140
- };
141
- },
142
- ),
143
- );
144
-
145
- type ApkSignatureSchemeV2Digest = {
146
- signatureAlgorithmId: number,
147
- digest: Uint8Array,
148
- };
149
-
150
- const apkSignatureSchemeV2DigestParser = createUint32LengthPrefixedParser<ApkSignatureSchemeV2Digest>(
151
- pairLength => promiseCompose(
152
- createTupleParser([
153
- uint32LEParser,
154
- createUint32LengthPrefixedParser(
155
- digestLength => createFixedLengthSequenceParser(digestLength),
156
- ),
157
- ]),
158
- ([ signatureAlgorithmId, digest ]) => ({ signatureAlgorithmId, digest }),
159
- ),
160
- );
161
-
162
- const apkSignatureSchemeV2DigestsParser = createUint32LengthPrefixedSliceBoundedArrayParser(
163
- apkSignatureSchemeV2DigestParser
164
- );
165
-
166
- const apkSignatureSchemeV2CertificateParser = createUint32LengthPrefixedParser(
167
- certificateLength => createFixedLengthSequenceParser(certificateLength),
168
- );
169
-
170
- const apkSignatureSchemeV2CertificatesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
171
- apkSignatureSchemeV2CertificateParser,
172
- );
173
-
174
- type ApkSignatureSchemeV2AdditionalAttribute = {
175
- id: number,
176
- value: Uint8Array,
177
- };
178
-
179
- const apkSignatureSchemeV2AdditionalAttributeParser = createUint32LengthPrefixedParser<ApkSignatureSchemeV2AdditionalAttribute>(
180
- pairLength => promiseCompose(
181
- createTupleParser([
182
- uint32LEParser,
183
- createFixedLengthSequenceParser(pairLength - 4),
184
- ]),
185
- ([ id, value ]) => ({ id, value }),
186
- ),
187
- );
188
-
189
- const apkSignatureSchemeV2AdditionalAttributesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
190
- apkSignatureSchemeV2AdditionalAttributeParser,
191
- );
192
-
193
- type ApkSignatureSchemeV2SignedData = {
194
- digests: ApkSignatureSchemeV2Digest[],
195
- certificates: Uint8Array[],
196
- additionalAttributes: ApkSignatureSchemeV2AdditionalAttribute[],
197
- };
198
-
199
- const apkSignatureSchemeV2SignedDataParser = createUint32LengthPrefixedSliceBoundedParser(
200
- promiseCompose(
201
- createTupleParser([
202
- apkSignatureSchemeV2DigestsParser,
203
- apkSignatureSchemeV2CertificatesParser,
204
- createOptionalParser(apkSignatureSchemeV2AdditionalAttributesParser),
205
- createArrayParser(createExactElementParser(0)),
206
- ]),
207
- ([
208
- digests = [],
209
- certificates = [],
210
- additionalAttributes = [],
211
- ]): ApkSignatureSchemeV2SignedData => ({
212
- digests,
213
- certificates,
214
- additionalAttributes,
215
- }),
216
- ),
217
- );
218
-
219
- setParserName(apkSignatureSchemeV2SignedDataParser, 'apkSignatureSchemeV2SignedDataParser');
220
-
221
- type ApkSignatureSchemeV2Signature = {
222
- signatureAlgorithmId: number,
223
- signature: Uint8Array,
224
- };
225
-
226
- const apkSignatureSchemeV2SignatureParser = createUint32LengthPrefixedParser(
227
- signatureLength => promiseCompose(
228
- createTupleParser([
229
- uint32LEParser,
230
- createUint32LengthPrefixedParser(
231
- signatureLength => createFixedLengthSequenceParser(signatureLength),
232
- ),
233
- ]),
234
- ([
235
- signatureAlgorithmId,
236
- signature,
237
- ]): ApkSignatureSchemeV2Signature => ({
238
- signatureAlgorithmId,
239
- signature,
240
- }),
241
- ),
242
- );
243
-
244
- const apkSignatureSchemeV2SignaturesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
245
- apkSignatureSchemeV2SignatureParser,
246
- );
247
-
248
- setParserName(apkSignatureSchemeV2SignaturesParser, 'apkSignatureSchemeV2SignaturesParser');
249
-
250
- const apkSignatureSchemeV2PublicKeyParser = createUint32LengthPrefixedParser(
251
- publicKeyLength => createFixedLengthSequenceParser(publicKeyLength),
252
- );
253
-
254
- setParserName(apkSignatureSchemeV2PublicKeyParser, 'apkSignatureSchemeV2PublicKeyParser');
255
-
256
- type ApkSignatureSchemeV2Signer = {
257
- signedData: ApkSignatureSchemeV2SignedData,
258
- signatures: ApkSignatureSchemeV2Signature[],
259
- publicKey?: Uint8Array,
260
- };
261
-
262
- const apkSignatureSchemeV2SignerParser = createUint32LengthPrefixedSliceBoundedParser(
263
- promiseCompose(
264
- createTupleParser([
265
- apkSignatureSchemeV2SignedDataParser,
266
- apkSignatureSchemeV2SignaturesParser,
267
- apkSignatureSchemeV2PublicKeyParser,
268
- ]),
269
- ([
270
- signedData,
271
- signatures = [],
272
- publicKey
273
- ]): ApkSignatureSchemeV2Signer => ({
274
- signedData,
275
- signatures,
276
- publicKey,
277
- }),
278
- ),
279
- );
280
-
281
- setParserName(apkSignatureSchemeV2SignerParser, 'apkSignatureSchemeV2SignerParser');
282
-
283
- const apkSignatureSchemeV2SignersParser = createUint32LengthPrefixedSliceBoundedArrayParser(
284
- apkSignatureSchemeV2SignerParser,
285
- );
286
-
287
- setParserName(apkSignatureSchemeV2SignersParser, 'apkSignatureSchemeV2SignersParser');
288
-
289
- const apkParser_ = createTupleParser([
290
- createArrayParser(zipLocalFileParser),
291
- createOptionalParser(zipArchiveDecryptionHeaderParser),
292
- createOptionalParser(zipArchiveExtraDataRecordParser),
293
- createOptionalParser(apkSigningBlockParser),
294
- createArrayParser(zipCentralDirectoryHeaderParser),
295
- createOptionalParser(zip64EndOfCentralDirectoryRecordParser),
296
- createOptionalParser(zip64EndOfCentralDirectoryLocatorParser),
297
- zipEndOfCentralDirectoryRecordParser,
298
- ]);
299
-
300
- setParserName(apkParser_, 'apkParser_');
301
-
302
- export const apkParser: Parser<Apk, Uint8Array> = promiseCompose(
303
- apkParser_,
304
- async ([
305
- zipLocalFiles,
306
- zipArchiveDecryptionHeader,
307
- zipArchiveExtraDataRecord,
308
- apkSigningBlock,
309
- zipCentralDirectoryHeaders,
310
- zip64EndOfCentralDirectoryRecord,
311
- zip64EndOfCentralDirectoryLocator,
312
- zipEndOfCentralDirectoryRecord,
313
- ]) => {
314
- const zip = await zipFromZipSegments({
315
- zipLocalFiles,
316
- zipCentralDirectoryHeaders,
317
- zipEndOfCentralDirectoryRecord,
318
- });
319
-
320
- return {
321
- ...zip,
322
- signingBlock: apkSigningBlock,
323
- };
324
- },
325
- );
326
-
327
- setParserName(apkParser, 'apkParser');
@@ -1,43 +0,0 @@
1
-
2
- export type InputCompanion<Sequence, Element> = {
3
- is(value: unknown): value is Sequence;
4
- from(elements: Element[]): Sequence;
5
- length(sequence: Sequence): number;
6
- at(sequence: Sequence, index: number): Element | undefined;
7
- };
8
-
9
- export const stringInputCompanion = new class StringInputCompanion implements InputCompanion<string, string> {
10
- is(value: unknown): value is string {
11
- return typeof value === 'string';
12
- }
13
-
14
- from(elements: string[]): string {
15
- return elements.join('');
16
- }
17
-
18
- length(sequence: string): number {
19
- return sequence.length;
20
- }
21
-
22
- at(sequence: string, index: number): string | undefined {
23
- return sequence.at(index);
24
- }
25
- }();
26
-
27
- export const uint8ArrayInputCompanion = new class Uint8ArrayInputCompanion implements InputCompanion<Uint8Array, number> {
28
- is(value: unknown): value is Uint8Array {
29
- return value instanceof Uint8Array
30
- }
31
-
32
- from(elements: number[]): Uint8Array {
33
- return new Uint8Array(elements);
34
- }
35
-
36
- length(sequence: Uint8Array): number {
37
- return sequence.length;
38
- }
39
-
40
- at(sequence: Uint8Array, index: number): number | undefined {
41
- return sequence.at(index);
42
- }
43
- }();
@@ -1,6 +0,0 @@
1
- import invariant from 'invariant';
2
-
3
- export function invariantDefined<T>(value: T, format: string, ...extra: any[]): Exclude<T, undefined> {
4
- invariant(value !== undefined, format, ...extra);
5
- return value as any;
6
- }
@@ -1,8 +0,0 @@
1
- import invariant from 'invariant';
2
-
3
- type Falsy = '' | 0 | false | undefined ;
4
-
5
- export function invariantIdentity<T>(value: T, format: string, ...extra: any[]): Exclude<T, Falsy> {
6
- invariant(value, format, ...extra);
7
- return value as any;
8
- }
@@ -1,26 +0,0 @@
1
- import { getParserName, Parser } from "./parser.js";
2
- import { ParserParsingFailedError } from "./parserError.js";
3
-
4
- export const createNegativeLookaheadParser = <Sequence>(
5
- childParser: Parser<unknown, Sequence>,
6
- ): Parser<void, Sequence> => {
7
- return async parserContext => {
8
- const childParserContext = parserContext.lookahead();
9
- try {
10
- await childParser(childParserContext);
11
- parserContext.invariant(
12
- false,
13
- 'Negative lookahead assertion failed for child parser %s.',
14
- getParserName(childParser),
15
- );
16
- } catch (error) {
17
- if (error instanceof ParserParsingFailedError) {
18
- return;
19
- }
20
-
21
- throw error;
22
- } finally {
23
- childParserContext.dispose();
24
- }
25
- };
26
- };
File without changes