@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,12 +0,0 @@
1
- import { parserImplementationInvariant } from './parserImplementationInvariant.js';
2
- export const createFixedLengthSequenceParser = (length) => {
3
- parserImplementationInvariant(length >= 0, 'Length must be non-negative got %s.', length);
4
- return async (parserContext) => {
5
- const elements = [];
6
- for (let i = 0; i < length; i++) {
7
- const element = await parserContext.read(0);
8
- elements.push(element);
9
- }
10
- return parserContext.from(elements);
11
- };
12
- };
@@ -1,15 +0,0 @@
1
- import { type InputCompanion } from './inputCompanion.js';
2
- export interface SequenceBuffer<Sequence, InputElement> {
3
- push(sequence: Sequence): void;
4
- peek(offset: number): InputElement | undefined;
5
- skip(offset: number): void;
6
- }
7
- export declare class SequenceBufferImplementation<Sequence, InputElement> implements SequenceBuffer<Sequence, InputElement> {
8
- private readonly _inputCompanion;
9
- private readonly _sequences;
10
- private _indexInFirstSequence;
11
- constructor(_inputCompanion: InputCompanion<Sequence, InputElement>);
12
- push(sequence: Sequence): void;
13
- peek(offset: number): InputElement | undefined;
14
- skip(offset: number): void;
15
- }
@@ -1,40 +0,0 @@
1
- import invariant from 'invariant';
2
- export class SequenceBufferImplementation {
3
- _inputCompanion;
4
- _sequences = [];
5
- _indexInFirstSequence = 0;
6
- constructor(_inputCompanion) {
7
- this._inputCompanion = _inputCompanion;
8
- }
9
- push(sequence) {
10
- this._sequences.push(sequence);
11
- while (this._sequences.length > 0) {
12
- const firstSequence = this._sequences[0];
13
- const firstSequenceLength = this._inputCompanion.length(firstSequence);
14
- if (firstSequenceLength === 0) {
15
- this._sequences.shift();
16
- continue;
17
- }
18
- if (this._indexInFirstSequence < firstSequenceLength) {
19
- break;
20
- }
21
- this._sequences.shift();
22
- this._indexInFirstSequence -= firstSequenceLength;
23
- }
24
- }
25
- peek(offset) {
26
- invariant(offset >= 0, 'Offset must be non-negative.');
27
- let index = this._indexInFirstSequence + offset;
28
- for (const sequence of this._sequences) {
29
- const sequenceLength = this._inputCompanion.length(sequence);
30
- if (index < sequenceLength) {
31
- return this._inputCompanion.at(sequence, index);
32
- }
33
- index -= sequenceLength;
34
- }
35
- return undefined;
36
- }
37
- skip(offset) {
38
- this._indexInFirstSequence += offset;
39
- }
40
- }
@@ -1,34 +0,0 @@
1
- import test from 'ava';
2
- import { SequenceBufferImplementation } from './sequenceBuffer.js';
3
- import { stringInputCompanion } from './inputCompanion.js';
4
- test('sequenceBuffer', t => {
5
- const sequenceBuffer = new SequenceBufferImplementation(stringInputCompanion);
6
- t.is(sequenceBuffer.peek(0), undefined);
7
- sequenceBuffer.push('');
8
- t.is(sequenceBuffer.peek(0), undefined);
9
- sequenceBuffer.push('abc');
10
- t.is(sequenceBuffer.peek(0), 'a');
11
- t.is(sequenceBuffer.peek(1), 'b');
12
- t.is(sequenceBuffer.peek(2), 'c');
13
- t.is(sequenceBuffer.peek(3), undefined);
14
- sequenceBuffer.push('def');
15
- t.is(sequenceBuffer.peek(0), 'a');
16
- t.is(sequenceBuffer.peek(3), 'd');
17
- t.is(sequenceBuffer.peek(6), undefined);
18
- sequenceBuffer.push('');
19
- t.is(sequenceBuffer.peek(0), 'a');
20
- t.is(sequenceBuffer.peek(3), 'd');
21
- t.is(sequenceBuffer.peek(6), undefined);
22
- sequenceBuffer.skip(1);
23
- t.is(sequenceBuffer.peek(0), 'b');
24
- t.is(sequenceBuffer.peek(3), 'e');
25
- t.is(sequenceBuffer.peek(5), undefined);
26
- sequenceBuffer.skip(3);
27
- t.is(sequenceBuffer.peek(0), 'e');
28
- t.is(sequenceBuffer.peek(2), undefined);
29
- sequenceBuffer.push('gh');
30
- t.is(sequenceBuffer.peek(0), 'e');
31
- t.is(sequenceBuffer.peek(2), 'g');
32
- t.is(sequenceBuffer.peek(3), 'h');
33
- t.is(sequenceBuffer.peek(4), undefined);
34
- });
@@ -1,18 +0,0 @@
1
- export type InputCompanion<Sequence, Element> = {
2
- is(value: unknown): value is Sequence;
3
- from(elements: Element[]): Sequence;
4
- length(sequence: Sequence): number;
5
- at(sequence: Sequence, index: number): Element | undefined;
6
- };
7
- export declare const stringInputCompanion: {
8
- is(value: unknown): value is string;
9
- from(elements: string[]): string;
10
- length(sequence: string): number;
11
- at(sequence: string, index: number): string | undefined;
12
- };
13
- export declare const uint8ArrayInputCompanion: {
14
- is(value: unknown): value is Uint8Array;
15
- from(elements: number[]): Uint8Array;
16
- length(sequence: Uint8Array): number;
17
- at(sequence: Uint8Array, index: number): number | undefined;
18
- };
@@ -1,28 +0,0 @@
1
- export const stringInputCompanion = new class StringInputCompanion {
2
- is(value) {
3
- return typeof value === 'string';
4
- }
5
- from(elements) {
6
- return elements.join('');
7
- }
8
- length(sequence) {
9
- return sequence.length;
10
- }
11
- at(sequence, index) {
12
- return sequence.at(index);
13
- }
14
- }();
15
- export const uint8ArrayInputCompanion = new class Uint8ArrayInputCompanion {
16
- is(value) {
17
- return value instanceof Uint8Array;
18
- }
19
- from(elements) {
20
- return new Uint8Array(elements);
21
- }
22
- length(sequence) {
23
- return sequence.length;
24
- }
25
- at(sequence, index) {
26
- return sequence.at(index);
27
- }
28
- }();
@@ -1 +0,0 @@
1
- export declare function invariantDefined<T>(value: T, format: string, ...extra: any[]): Exclude<T, undefined>;
@@ -1,5 +0,0 @@
1
- import invariant from 'invariant';
2
- export function invariantDefined(value, format, ...extra) {
3
- invariant(value !== undefined, format, ...extra);
4
- return value;
5
- }
@@ -1,3 +0,0 @@
1
- type Falsy = '' | 0 | false | undefined;
2
- export declare function invariantIdentity<T>(value: T, format: string, ...extra: any[]): Exclude<T, Falsy>;
3
- export {};
@@ -1,5 +0,0 @@
1
- import invariant from 'invariant';
2
- export function invariantIdentity(value, format, ...extra) {
3
- invariant(value, format, ...extra);
4
- return value;
5
- }
@@ -1,3 +0,0 @@
1
- import { type JsonValue } from 'type-fest';
2
- import { type Parser } from './parser.js';
3
- export declare const jsonValueParser2: Parser<JsonValue, string>;
@@ -1,52 +0,0 @@
1
- import { parserParsingInvariant } from './parserParsingInvariant.js';
2
- import { createUnionParser } from './unionParser.js';
3
- import { createExactSequenceParser } from './exactSequenceParser.js';
4
- import { promiseCompose } from './promiseCompose.js';
5
- const jsonStringParser = async (inputContext) => {
6
- await inputContext.read(0);
7
- await inputContext.read(0);
8
- return '';
9
- };
10
- const jsonDummyParser = async (inputContext) => {
11
- await inputContext.read(0);
12
- parserParsingInvariant(false, 'dummy');
13
- return 0;
14
- };
15
- const jsonNullParser = promiseCompose(createExactSequenceParser('null'), () => null);
16
- Object.defineProperty(jsonNullParser, 'name', { value: 'jsonNullParser' });
17
- const jsonPrimitiveParser = createUnionParser([
18
- jsonDummyParser,
19
- jsonDummyParser,
20
- jsonDummyParser,
21
- jsonDummyParser,
22
- jsonNullParser,
23
- ]);
24
- Object.defineProperty(jsonPrimitiveParser, 'name', { value: 'jsonPrimitiveParser' });
25
- const jsonObjectParser = async (inputContext) => {
26
- const value = {};
27
- const firstCharacter = await inputContext.read(0);
28
- parserParsingInvariant(firstCharacter === '{', 'Expected "{", got "%s"', firstCharacter);
29
- const key = await jsonStringParser(inputContext);
30
- const colon = await inputContext.read(0);
31
- parserParsingInvariant(colon === ':', 'Expected ":", got "%s"', colon);
32
- const keyValue = await jsonValueParser2(inputContext);
33
- Object.defineProperty(value, key, {
34
- value: keyValue,
35
- enumerable: true,
36
- });
37
- const commaOrClosingBrace = await inputContext.peek(0);
38
- parserParsingInvariant((commaOrClosingBrace === ','
39
- || commaOrClosingBrace === '}'), 'Expected "," or "}", got "%s"', commaOrClosingBrace);
40
- if (commaOrClosingBrace === '}') {
41
- inputContext.skip(1);
42
- return value;
43
- }
44
- parserParsingInvariant(commaOrClosingBrace === ',', 'Expected ",", got "%s"', commaOrClosingBrace);
45
- inputContext.skip(1);
46
- return value;
47
- };
48
- export const jsonValueParser2 = createUnionParser([
49
- jsonObjectParser,
50
- jsonPrimitiveParser,
51
- ]);
52
- Object.defineProperty(jsonValueParser2, 'name', { value: 'jsonValueParser2' });
@@ -1,22 +0,0 @@
1
- import { testProp, fc } from '@fast-check/ava';
2
- import { jsonValueParser2 } from './jsonParser2.js';
3
- import { runParser } from './parser.js';
4
- import { arbitrarilySlicedAsyncIterator } from './arbitrarilySlicedAsyncInterator.js';
5
- import { stringInputCompanion } from './inputCompanion.js';
6
- testProp('json', [
7
- arbitrarilySlicedAsyncIterator(fc.json()),
8
- ], async (t, [jsonString, jsonStringChunkIterator]) => {
9
- if (jsonString !== '{"":null}') {
10
- throw new Error('This test is only for the JSON string \'{"":null}\'.');
11
- }
12
- const actual = await runParser(jsonValueParser2, jsonStringChunkIterator, stringInputCompanion);
13
- const expected = JSON.parse(jsonString);
14
- t.deepEqual(actual, expected);
15
- }, {
16
- verbose: true,
17
- examples: [
18
- [['{"":null}', (async function* () {
19
- yield* ['{"":null}'];
20
- })()[Symbol.asyncIterator]()]],
21
- ],
22
- });
@@ -1,20 +0,0 @@
1
- import { getParserName } from "./parser.js";
2
- import { ParserParsingFailedError } from "./parserError.js";
3
- export const createNegativeLookaheadParser = (childParser) => {
4
- return async (parserContext) => {
5
- const childParserContext = parserContext.lookahead();
6
- try {
7
- await childParser(childParserContext);
8
- parserContext.invariant(false, 'Negative lookahead assertion failed for child parser %s.', getParserName(childParser));
9
- }
10
- catch (error) {
11
- if (error instanceof ParserParsingFailedError) {
12
- return;
13
- }
14
- throw error;
15
- }
16
- finally {
17
- childParserContext.dispose();
18
- }
19
- };
20
- };
@@ -1,3 +0,0 @@
1
- import { Parser } from "./parser.js";
2
- import { DeriveSequenceElement } from "./sequence.js";
3
- export declare function parserCreatorCompose<OutputA, OutputB, Sequence, Element = DeriveSequenceElement<Sequence>>(f1: Parser<OutputA, Sequence, Element>, f2: (outputA: OutputA) => Parser<OutputB, Sequence, Element>): Parser<OutputB, Sequence, Element>;
@@ -1,7 +0,0 @@
1
- export function parserCreatorCompose(f1, f2) {
2
- return async (parserContext) => {
3
- const outputA = await f1(parserContext);
4
- const parserB = f2(outputA);
5
- return parserB(parserContext);
6
- };
7
- }
@@ -1,3 +0,0 @@
1
- type Falsy = '' | 0 | false | undefined;
2
- export declare function parserImplementationInvariant<T>(value: T, formatOrFormatLines: string | string[], ...extra: any[]): Exclude<T, Falsy>;
3
- export {};
@@ -1,15 +0,0 @@
1
- import invariant from 'invariant';
2
- import { ParserImplementationInvariantError } from './parserError.js';
3
- export function parserImplementationInvariant(value, formatOrFormatLines, ...extra) {
4
- const format = Array.isArray(formatOrFormatLines) ? formatOrFormatLines.join('\n') : formatOrFormatLines;
5
- try {
6
- invariant(value, format, ...extra);
7
- return value;
8
- }
9
- catch (error) {
10
- if (error instanceof Error) {
11
- throw new ParserImplementationInvariantError(error.message);
12
- }
13
- throw error;
14
- }
15
- }
@@ -1 +0,0 @@
1
- export declare function promiseCompose<A, B, C>(f1: (a: A) => Promise<B>, f2: (b: B) => Promise<C>): (a: A) => Promise<C>;
@@ -1,3 +0,0 @@
1
- export function promiseCompose(f1, f2) {
2
- return a => f1(a).then(f2);
3
- }
@@ -1,3 +0,0 @@
1
- import { type Parser } from './parser.js';
2
- export declare function createTupleParser<A, B, Sequence>([parserA, parserB]: [Parser<A, Sequence>, Parser<B, Sequence>]): Parser<[A, B], Sequence>;
3
- export declare function createTupleParser<A, B, C, Sequence>([parserA, parserB, parserC]: [Parser<A, Sequence>, Parser<B, Sequence>, Parser<C, Sequence>]): Parser<[A, B, C], Sequence>;
@@ -1,10 +0,0 @@
1
- export function createTupleParser(parsers) {
2
- return async (parserContext) => {
3
- const values = [];
4
- for (const parser of parsers) {
5
- const value = await parser(parserContext);
6
- values.push(value);
7
- }
8
- return values;
9
- };
10
- }
@@ -1,2 +0,0 @@
1
- import { Parser } from "./parser.js";
2
- export declare const createTerminatedArrayParser: <ElementOutput, TerminatorOutput, Sequence>(elementParser: Parser<ElementOutput, Sequence>, terminatorParser: Parser<unknown, Sequence>) => Parser<[ElementOutput[], TerminatorOutput], Sequence>;
@@ -1,24 +0,0 @@
1
- import { promiseCompose } from "./promiseCompose.js";
2
- import { createUnionParser } from "./unionParser.js";
3
- class Terminated {
4
- value;
5
- constructor(value) {
6
- this.value = value;
7
- }
8
- }
9
- export const createTerminatedArrayParser = (elementParser, terminatorParser) => {
10
- const elementOrTerminatorParser = createUnionParser([
11
- elementParser,
12
- promiseCompose(terminatorParser, terminatorValue => new Terminated(terminatorValue)),
13
- ]);
14
- return async (parserContext) => {
15
- const elements = [];
16
- while (true) {
17
- const elementOrTerminator = await elementOrTerminatorParser(parserContext);
18
- if (elementOrTerminator instanceof Terminated) {
19
- return [elements, elementOrTerminator.value];
20
- }
21
- elements.push(elementOrTerminator);
22
- }
23
- };
24
- };
@@ -1,28 +0,0 @@
1
- export type ZipStoreCompression = {
2
- type: 'store';
3
- };
4
- export type ZipDeflateCompression = {
5
- type: 'deflate';
6
- level: number;
7
- };
8
- export type ZipCompression = ZipStoreCompression | ZipDeflateCompression;
9
- export type ZipFileEntry = {
10
- type: 'file';
11
- name: string;
12
- date: Date;
13
- comment: string;
14
- unixPermissions: number;
15
- dosPermissions: number;
16
- compression: ZipCompression;
17
- content: Uint8Array;
18
- };
19
- export type ZipDirectoryEntry = {
20
- type: 'directory';
21
- name: string;
22
- date: Date;
23
- comment: string;
24
- unixPermissions: number;
25
- dosPermissions: number;
26
- entries: ZipEntry[];
27
- };
28
- export type ZipEntry = ZipFileEntry | ZipDirectoryEntry;
@@ -1,32 +0,0 @@
1
- export type ZipStoreCompression = {
2
- type: 'store';
3
- };
4
- export type ZipDeflateCompression = {
5
- type: 'deflate';
6
- level: number;
7
- };
8
- export type ZipCompression = ZipStoreCompression | ZipDeflateCompression;
9
- export type ZipFileEntry = {
10
- type: 'file';
11
- name: string;
12
- date: Date;
13
- comment: Uint8Array;
14
- unixPermissions: number;
15
- dosPermissions: number;
16
- compression: ZipCompression;
17
- content: Uint8Array;
18
- };
19
- export type ZipDirectoryEntry = {
20
- type: 'directory';
21
- name: string;
22
- date: Date;
23
- comment: Uint8Array;
24
- unixPermissions: number;
25
- dosPermissions: number;
26
- entries: ZipEntry[];
27
- };
28
- export type ZipEntry = ZipFileEntry | ZipDirectoryEntry;
29
- export type ZipFile = {
30
- root: ZipDirectoryEntry;
31
- comment: Uint8Array;
32
- };
@@ -1,6 +0,0 @@
1
- export type ZipFileEntry = {
2
- type: 'file';
3
- name: string;
4
- date: Date;
5
- content: Uint8Array;
6
- };
package/src/apk.ts DELETED
@@ -1,16 +0,0 @@
1
- import { Zip } from './zip.js';
2
-
3
- export type ApkSigningBlockPair = {
4
- id: number;
5
- value: Uint8Array;
6
- };
7
-
8
- export type ApkSigningBlock = {
9
- zeroPaddingLength?: number;
10
- signatureV2?: unknown;
11
- pairs: ApkSigningBlockPair[];
12
- };
13
-
14
- export type Apk = Zip & {
15
- signingBlock?: ApkSigningBlock;
16
- };