@futpib/parser 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.github/copilot-instructions.md +149 -0
  2. package/.github/workflows/copilot-setup-steps.yml +18 -0
  3. package/.github/workflows/main.yml +29 -8
  4. package/.yarn/releases/yarn-4.9.4.cjs +942 -0
  5. package/.yarnrc.yml +1 -1
  6. package/build/allSettledStream.js +1 -1
  7. package/build/allSettledStream.test.js +2 -2
  8. package/build/androidPackageParser.d.ts +1 -1
  9. package/build/androidPackageParser.js +5 -3
  10. package/build/androidPackageParser.test.js +7 -7
  11. package/build/androidPackageUnparser.d.ts +2 -2
  12. package/build/androidPackageUnparser.js +18 -14
  13. package/build/androidPackageUnparser.test.js +7 -7
  14. package/build/arbitrarilySlicedAsyncInterator.js +2 -1
  15. package/build/arbitraryDalvikBytecode.d.ts +4 -0
  16. package/build/arbitraryDalvikBytecode.js +640 -0
  17. package/build/arbitraryDalvikExecutable.d.ts +3 -0
  18. package/build/arbitraryDalvikExecutable.js +282 -0
  19. package/build/arbitraryDosDateTime.js +1 -0
  20. package/build/arbitraryZipStream.js +1 -1
  21. package/build/arrayParser.js +2 -2
  22. package/build/arrayUnparser.d.ts +1 -1
  23. package/build/backsmali.d.ts +3 -1
  24. package/build/backsmali.js +31 -3
  25. package/build/bash.d.ts +84 -0
  26. package/build/bash.js +1 -0
  27. package/build/bashParser.d.ts +6 -0
  28. package/build/bashParser.js +294 -0
  29. package/build/bashParser.test.d.ts +1 -0
  30. package/build/bashParser.test.js +181 -0
  31. package/build/customInvariant.d.ts +2 -1
  32. package/build/customInvariant.js +4 -6
  33. package/build/dalvikBytecodeParser/formatParsers.d.ts +76 -2
  34. package/build/dalvikBytecodeParser/formatParsers.js +146 -11
  35. package/build/dalvikBytecodeParser/formatSizes.d.ts +34 -0
  36. package/build/dalvikBytecodeParser/formatSizes.js +34 -0
  37. package/build/dalvikBytecodeParser/operationFormats.d.ts +225 -0
  38. package/build/dalvikBytecodeParser/operationFormats.js +225 -0
  39. package/build/dalvikBytecodeParser.d.ts +1105 -5
  40. package/build/dalvikBytecodeParser.js +658 -205
  41. package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +152 -0
  42. package/build/dalvikBytecodeUnparser/formatUnparsers.js +225 -0
  43. package/build/dalvikBytecodeUnparser.d.ts +3 -0
  44. package/build/dalvikBytecodeUnparser.js +642 -0
  45. package/build/dalvikBytecodeUnparser.test.d.ts +1 -0
  46. package/build/dalvikBytecodeUnparser.test.js +25 -0
  47. package/build/dalvikExecutable.d.ts +65 -8
  48. package/build/dalvikExecutable.js +36 -0
  49. package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +1 -1
  50. package/build/dalvikExecutableParser/stringSyntaxParser.js +17 -17
  51. package/build/dalvikExecutableParser/typeParsers.d.ts +2 -1
  52. package/build/dalvikExecutableParser/typeParsers.js +16 -11
  53. package/build/dalvikExecutableParser/typedNumbers.d.ts +85 -69
  54. package/build/dalvikExecutableParser/typedNumbers.js +0 -1
  55. package/build/dalvikExecutableParser.d.ts +2 -2
  56. package/build/dalvikExecutableParser.js +655 -337
  57. package/build/dalvikExecutableParser.test.js +24 -22
  58. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +223 -246
  59. package/build/dalvikExecutableUnparser/annotationUnparsers.d.ts +14 -0
  60. package/build/dalvikExecutableUnparser/annotationUnparsers.js +97 -0
  61. package/build/dalvikExecutableUnparser/poolBuilders.d.ts +49 -0
  62. package/build/dalvikExecutableUnparser/poolBuilders.js +140 -0
  63. package/build/dalvikExecutableUnparser/poolScanners.d.ts +4 -0
  64. package/build/dalvikExecutableUnparser/poolScanners.js +220 -0
  65. package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +25 -0
  66. package/build/dalvikExecutableUnparser/sectionUnparsers.js +581 -0
  67. package/build/dalvikExecutableUnparser/utils.d.ts +10 -0
  68. package/build/dalvikExecutableUnparser/utils.js +108 -0
  69. package/build/dalvikExecutableUnparser.d.ts +4 -0
  70. package/build/dalvikExecutableUnparser.js +406 -0
  71. package/build/dalvikExecutableUnparser.test.d.ts +1 -0
  72. package/build/dalvikExecutableUnparser.test.js +31 -0
  73. package/build/debugLogInputParser.js +1 -1
  74. package/build/disjunctionParser.d.ts +2 -2
  75. package/build/disjunctionParser.js +2 -2
  76. package/build/elementTerminatedArrayParser.d.ts +2 -2
  77. package/build/elementTerminatedArrayParser.js +1 -1
  78. package/build/elementTerminatedArrayParser.test.js +5 -5
  79. package/build/elementTerminatedSequenceArrayParser.d.ts +2 -2
  80. package/build/elementTerminatedSequenceArrayParser.js +1 -1
  81. package/build/elementTerminatedSequenceArrayParser.test.js +2 -2
  82. package/build/elementTerminatedSequenceParser.d.ts +2 -2
  83. package/build/elementTerminatedSequenceParser.js +1 -1
  84. package/build/elementTerminatedSequenceParser.test.js +2 -2
  85. package/build/endOfInputParser.d.ts +1 -1
  86. package/build/exactElementSwitchParser.d.ts +3 -0
  87. package/build/exactElementSwitchParser.js +22 -0
  88. package/build/fetchCid.js +2 -6
  89. package/build/fetchCid.test.d.ts +1 -0
  90. package/build/fetchCid.test.js +16 -0
  91. package/build/fixedLengthSequenceParser.test.js +2 -2
  92. package/build/hasExecutable.js +2 -2
  93. package/build/highResolutionTimer.js +1 -1
  94. package/build/index.d.ts +24 -2
  95. package/build/index.js +22 -1
  96. package/build/inputReader.d.ts +1 -1
  97. package/build/inputReader.test.js +33 -45
  98. package/build/javaKeyStoreParser.test.js +6 -6
  99. package/build/jsonParser.js +8 -8
  100. package/build/lazyMessageError.d.ts +48 -0
  101. package/build/lazyMessageError.js +53 -0
  102. package/build/lazyMessageError.test.d.ts +1 -0
  103. package/build/lazyMessageError.test.js +15 -0
  104. package/build/leb128Parser.d.ts +1 -1
  105. package/build/leb128Parser.js +10 -10
  106. package/build/leb128Parser.test.js +7 -7
  107. package/build/negativeLookaheadParser.js +2 -2
  108. package/build/negativeLookaheadParser.test.js +4 -4
  109. package/build/noStackCaptureOverheadError.d.ts +4 -0
  110. package/build/noStackCaptureOverheadError.js +9 -0
  111. package/build/noStackCaptureOverheadError.test.d.ts +1 -0
  112. package/build/noStackCaptureOverheadError.test.js +15 -0
  113. package/build/nonEmptyArrayParser.js +2 -2
  114. package/build/nonEmptyArrayParser.test.js +2 -1
  115. package/build/optionalParser.js +2 -2
  116. package/build/parser.d.ts +2 -1
  117. package/build/parser.js +23 -8
  118. package/build/parser.test.js +78 -29
  119. package/build/parserConsumedSequenceParser.d.ts +1 -1
  120. package/build/parserConsumedSequenceParser.js +2 -2
  121. package/build/parserContext.d.ts +8 -6
  122. package/build/parserContext.js +60 -33
  123. package/build/parserContext.test.js +7 -3
  124. package/build/parserError.d.ts +603 -44
  125. package/build/parserError.js +98 -53
  126. package/build/parserImplementationInvariant.d.ts +1 -1
  127. package/build/parserImplementationInvariant.js +2 -2
  128. package/build/parserInputCompanion.js +2 -2
  129. package/build/promiseCompose.js +1 -2
  130. package/build/regexpParser.d.ts +2 -0
  131. package/build/regexpParser.js +71 -0
  132. package/build/regexpParser.test.d.ts +1 -0
  133. package/build/regexpParser.test.js +83 -0
  134. package/build/regularExpression.d.ts +63 -0
  135. package/build/regularExpression.js +1 -0
  136. package/build/regularExpressionParser.d.ts +3 -0
  137. package/build/regularExpressionParser.js +580 -0
  138. package/build/regularExpressionParser.test.d.ts +1 -0
  139. package/build/regularExpressionParser.test.js +89 -0
  140. package/build/separatedArrayParser.js +2 -2
  141. package/build/separatedNonEmptyArrayParser.d.ts +2 -0
  142. package/build/separatedNonEmptyArrayParser.js +40 -0
  143. package/build/separatedNonEmptyArrayParser.test.d.ts +1 -0
  144. package/build/separatedNonEmptyArrayParser.test.js +66 -0
  145. package/build/sequenceBuffer.js +1 -1
  146. package/build/sequenceTerminatedSequenceParser.d.ts +2 -2
  147. package/build/sequenceTerminatedSequenceParser.js +3 -3
  148. package/build/sequenceTerminatedSequenceParser.test.js +1 -1
  149. package/build/sequenceUnparser.d.ts +1 -1
  150. package/build/skipToParser.d.ts +1 -1
  151. package/build/skipToParser.js +2 -2
  152. package/build/sliceBoundedParser.test.js +4 -9
  153. package/build/smali.d.ts +1 -1
  154. package/build/smali.js +6 -2
  155. package/build/smaliParser.d.ts +62 -6
  156. package/build/smaliParser.js +1721 -296
  157. package/build/smaliParser.test.js +338 -43
  158. package/build/stringFromAsyncIterable.d.ts +1 -0
  159. package/build/stringFromAsyncIterable.js +7 -0
  160. package/build/terminatedArrayParser.js +4 -4
  161. package/build/terminatedArrayParser.test.js +7 -7
  162. package/build/toAsyncIterator.js +4 -4
  163. package/build/unionParser.d.ts +1 -1
  164. package/build/unionParser.js +2 -2
  165. package/build/unionParser.test.js +3 -3
  166. package/build/unparser.d.ts +3 -3
  167. package/build/unparser.js +6 -4
  168. package/build/unparser.test.js +7 -19
  169. package/build/unparserContext.d.ts +2 -2
  170. package/build/unparserContext.js +2 -3
  171. package/build/unparserError.d.ts +2 -1
  172. package/build/unparserError.js +2 -1
  173. package/build/unparserImplementationInvariant.d.ts +1 -1
  174. package/build/unparserOutputCompanion.d.ts +1 -1
  175. package/build/unparserOutputCompanion.js +1 -1
  176. package/build/zipParser.js +1 -1
  177. package/build/zipUnparser.d.ts +3 -3
  178. package/build/zipUnparser.js +9 -19
  179. package/build/zipUnparser.test.js +1 -1
  180. package/package.json +20 -26
  181. package/src/allSettledStream.test.ts +2 -2
  182. package/src/allSettledStream.ts +3 -3
  183. package/src/androidPackageParser.test.ts +17 -19
  184. package/src/androidPackageParser.ts +129 -171
  185. package/src/androidPackageUnparser.test.ts +19 -21
  186. package/src/androidPackageUnparser.ts +23 -17
  187. package/src/arbitrarilySlicedAsyncInterable.ts +1 -1
  188. package/src/arbitrarilySlicedAsyncInterator.ts +4 -4
  189. package/src/arbitraryDalvikBytecode.ts +992 -0
  190. package/src/arbitraryDalvikExecutable.ts +434 -0
  191. package/src/arbitraryDosDateTime.ts +1 -0
  192. package/src/arbitraryZipStream.ts +1 -1
  193. package/src/arrayParser.ts +2 -2
  194. package/src/arrayUnparser.ts +2 -2
  195. package/src/backsmali.ts +48 -4
  196. package/src/bash.ts +120 -0
  197. package/src/bashParser.test.ts +332 -0
  198. package/src/bashParser.ts +461 -0
  199. package/src/bsonParser.test.ts +12 -14
  200. package/src/customInvariant.ts +8 -12
  201. package/src/dalvikBytecodeParser/formatParsers.ts +376 -17
  202. package/src/dalvikBytecodeParser/formatSizes.ts +35 -0
  203. package/src/dalvikBytecodeParser/operationFormats.ts +226 -0
  204. package/src/dalvikBytecodeParser.ts +1042 -243
  205. package/src/dalvikBytecodeUnparser/formatUnparsers.ts +442 -0
  206. package/src/dalvikBytecodeUnparser.test.ts +44 -0
  207. package/src/dalvikBytecodeUnparser.ts +758 -0
  208. package/src/dalvikExecutable.ts +110 -48
  209. package/src/dalvikExecutableParser/stringSyntaxParser.ts +33 -33
  210. package/src/dalvikExecutableParser/typeParsers.ts +23 -14
  211. package/src/dalvikExecutableParser/typedNumbers.ts +19 -19
  212. package/src/dalvikExecutableParser.test.ts +60 -60
  213. package/src/dalvikExecutableParser.test.ts.md +6 -6
  214. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  215. package/src/dalvikExecutableParser.ts +911 -434
  216. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +256 -239
  217. package/src/dalvikExecutableUnparser/annotationUnparsers.ts +135 -0
  218. package/src/dalvikExecutableUnparser/poolBuilders.ts +189 -0
  219. package/src/dalvikExecutableUnparser/poolScanners.ts +297 -0
  220. package/src/dalvikExecutableUnparser/sectionUnparsers.ts +683 -0
  221. package/src/dalvikExecutableUnparser/utils.ts +149 -0
  222. package/src/dalvikExecutableUnparser.test.ts +57 -0
  223. package/src/dalvikExecutableUnparser.ts +581 -0
  224. package/src/debugLogInputParser.ts +1 -1
  225. package/src/disjunctionParser.ts +5 -5
  226. package/src/elementTerminatedArrayParser.test.ts +8 -8
  227. package/src/elementTerminatedArrayParser.ts +2 -2
  228. package/src/elementTerminatedSequenceArrayParser.test.ts +4 -6
  229. package/src/elementTerminatedSequenceArrayParser.ts +2 -2
  230. package/src/elementTerminatedSequenceParser.test.ts +4 -6
  231. package/src/elementTerminatedSequenceParser.ts +2 -2
  232. package/src/endOfInputParser.ts +1 -1
  233. package/src/exactElementSwitchParser.ts +41 -0
  234. package/src/fetchCid.test.ts +20 -0
  235. package/src/fetchCid.ts +3 -7
  236. package/src/fixedLengthSequenceParser.test.ts +10 -12
  237. package/src/hasExecutable.ts +2 -2
  238. package/src/highResolutionTimer.ts +1 -1
  239. package/src/index.ts +113 -2
  240. package/src/inputReader.test.ts +39 -52
  241. package/src/inputReader.ts +2 -4
  242. package/src/inputReaderState.ts +1 -1
  243. package/src/inspect.ts +1 -1
  244. package/src/javaKeyStoreParser.test.ts +12 -14
  245. package/src/javaKeyStoreParser.ts +2 -6
  246. package/src/jsonParser.test.ts +2 -4
  247. package/src/jsonParser.ts +34 -38
  248. package/src/lazyMessageError.test.ts +21 -0
  249. package/src/lazyMessageError.ts +88 -0
  250. package/src/leb128Parser.test.ts +25 -23
  251. package/src/leb128Parser.ts +19 -19
  252. package/src/negativeLookaheadParser.test.ts +7 -11
  253. package/src/negativeLookaheadParser.ts +2 -2
  254. package/src/noStackCaptureOverheadError.test.ts +17 -0
  255. package/src/noStackCaptureOverheadError.ts +12 -0
  256. package/src/nonEmptyArrayParser.test.ts +3 -2
  257. package/src/nonEmptyArrayParser.ts +2 -2
  258. package/src/optionalParser.ts +2 -2
  259. package/src/parser.test.ts +96 -43
  260. package/src/parser.test.ts.md +13 -6
  261. package/src/parser.test.ts.snap +0 -0
  262. package/src/parser.ts +35 -12
  263. package/src/parserAccessorParser.ts +1 -1
  264. package/src/parserConsumedSequenceParser.ts +3 -3
  265. package/src/parserContext.test.ts +7 -3
  266. package/src/parserContext.ts +82 -48
  267. package/src/parserError.ts +143 -63
  268. package/src/parserImplementationInvariant.ts +3 -3
  269. package/src/parserInputCompanion.ts +2 -2
  270. package/src/promiseCompose.ts +2 -2
  271. package/src/regexpParser.test.ts +186 -0
  272. package/src/regexpParser.ts +94 -0
  273. package/src/regularExpression.ts +24 -0
  274. package/src/regularExpressionParser.test.ts +102 -0
  275. package/src/regularExpressionParser.ts +921 -0
  276. package/src/separatedArrayParser.ts +3 -3
  277. package/src/separatedNonEmptyArrayParser.test.ts +117 -0
  278. package/src/separatedNonEmptyArrayParser.ts +61 -0
  279. package/src/sequenceBuffer.test.ts +9 -9
  280. package/src/sequenceBuffer.ts +4 -4
  281. package/src/sequenceTerminatedSequenceParser.test.ts +3 -5
  282. package/src/sequenceTerminatedSequenceParser.ts +4 -4
  283. package/src/sequenceUnparser.ts +2 -2
  284. package/src/skipToParser.ts +2 -2
  285. package/src/sliceBoundedParser.test.ts +4 -12
  286. package/src/sliceBoundedParser.ts +2 -2
  287. package/src/smali.ts +8 -3
  288. package/src/smaliParser.test.ts +377 -66
  289. package/src/smaliParser.test.ts.md +1635 -48
  290. package/src/smaliParser.test.ts.snap +0 -0
  291. package/src/smaliParser.ts +2751 -569
  292. package/src/stringFromAsyncIterable.ts +9 -0
  293. package/src/terminatedArrayParser.test.ts +11 -11
  294. package/src/terminatedArrayParser.ts +5 -7
  295. package/src/toAsyncIterator.ts +8 -8
  296. package/src/uint8Array.ts +2 -3
  297. package/src/unionParser.test.ts +22 -23
  298. package/src/unionParser.ts +6 -8
  299. package/src/unparser.test.ts +18 -34
  300. package/src/unparser.ts +13 -9
  301. package/src/unparserContext.ts +9 -13
  302. package/src/unparserError.ts +2 -1
  303. package/src/unparserImplementationInvariant.ts +1 -1
  304. package/src/unparserOutputCompanion.ts +1 -1
  305. package/src/zip.ts +2 -6
  306. package/src/zipParser.ts +10 -18
  307. package/src/zipUnparser.test.ts +1 -1
  308. package/src/zipUnparser.ts +52 -64
  309. package/tsconfig.json +7 -1
  310. package/xo.config.ts +15 -0
  311. package/.yarn/releases/yarn-4.5.3.cjs +0 -934
@@ -1,8 +1,8 @@
1
1
  import test from 'ava';
2
2
  import * as fc from 'fast-check';
3
+ import { testProp } from '@fast-check/ava';
3
4
  import { runUnparser } from './unparser.js';
4
5
  import { stringUnparserOutputCompanion } from './unparserOutputCompanion.js';
5
- import { testProp } from '@fast-check/ava';
6
6
  test('writeLater', async (t) => {
7
7
  const stringToBeWrittenBefore = 'before writeLater\n';
8
8
  const stringToBeWrittenLater = 'written later\n';
@@ -92,12 +92,10 @@ testProp('writeLater positions and lengths', [
92
92
  const numberUnparser = async function* (input, unparserContext) {
93
93
  yield input.toString().padStart(8, '0');
94
94
  };
95
- const createLengthPrefixedUnparser = (unparser) => {
96
- return async function* (input, unparserContext) {
97
- const length = yield* unparserContext.writeLater(8);
98
- yield* unparser(input, unparserContext);
99
- yield* unparserContext.writeEarlier(length, numberUnparser, unparserContext.position - length.positionEnd);
100
- };
95
+ const createLengthPrefixedUnparser = (unparser) => async function* (input, unparserContext) {
96
+ const length = yield* unparserContext.writeLater(8);
97
+ yield* unparser(input, unparserContext);
98
+ yield* unparserContext.writeEarlier(length, numberUnparser, unparserContext.position - length.positionEnd);
101
99
  };
102
100
  const unparser0 = createLengthPrefixedUnparser(async function* (input, unparserContext) {
103
101
  yield input;
@@ -109,22 +107,12 @@ testProp('writeLater positions and lengths', [
109
107
  });
110
108
  const unparser2 = createLengthPrefixedUnparser(async function* (input, unparserContext) {
111
109
  for (const stringArray2 of input) {
112
- if (typeof stringArray2 === 'string') {
113
- yield* unparser0(stringArray2, unparserContext);
114
- }
115
- else {
116
- yield* unparser1(stringArray2, unparserContext);
117
- }
110
+ yield* (typeof stringArray2 === 'string' ? unparser0(stringArray2, unparserContext) : unparser1(stringArray2, unparserContext));
118
111
  }
119
112
  });
120
113
  const unparser3 = createLengthPrefixedUnparser(async function* (input, unparserContext) {
121
114
  for (const stringArray3 of input) {
122
- if (typeof stringArray3 === 'string') {
123
- yield* unparser0(stringArray3, unparserContext);
124
- }
125
- else {
126
- yield* unparser2(stringArray3, unparserContext);
127
- }
115
+ yield* (typeof stringArray3 === 'string' ? unparser0(stringArray3, unparserContext) : unparser2(stringArray3, unparserContext));
128
116
  }
129
117
  });
130
118
  const stringsAsyncIterable = runUnparser(unparser3, stringArray3, stringUnparserOutputCompanion);
@@ -1,5 +1,5 @@
1
- import { Unparser, UnparserResult } from "./unparser.js";
2
- import { UnparserOutputCompanion } from "./unparserOutputCompanion.js";
1
+ import { type Unparser, type UnparserResult } from './unparser.js';
2
+ import { type UnparserOutputCompanion } from './unparserOutputCompanion.js';
3
3
  export type UnparserContext<Sequence, Element> = {
4
4
  get position(): number;
5
5
  writeLater(length: number): AsyncIterable<WriteLater<Sequence, Element>, WriteLater<Sequence, Element>>;
@@ -1,6 +1,5 @@
1
- /* eslint-disable prefer-arrow-callback */
2
- import { unparserImplementationInvariant } from "./unparserImplementationInvariant.js";
3
- import { parserImplementationInvariant } from "./parserImplementationInvariant.js";
1
+ import { unparserImplementationInvariant } from './unparserImplementationInvariant.js';
2
+ import { parserImplementationInvariant } from './parserImplementationInvariant.js';
4
3
  export class WriteLater extends Error {
5
4
  _position;
6
5
  _length;
@@ -1,4 +1,5 @@
1
- export declare class UnparserError extends Error {
1
+ import { NormalLazyMessageError } from "./lazyMessageError.js";
2
+ export declare class UnparserError extends NormalLazyMessageError {
2
3
  name: string;
3
4
  }
4
5
  export declare class UnparserImplementationError extends UnparserError {
@@ -1,4 +1,5 @@
1
- export class UnparserError extends Error {
1
+ import { NormalLazyMessageError } from "./lazyMessageError.js";
2
+ export class UnparserError extends NormalLazyMessageError {
2
3
  name = 'UnparserError';
3
4
  }
4
5
  export class UnparserImplementationError extends UnparserError {
@@ -1,2 +1,2 @@
1
1
  import { type Falsy, type ValueOrAccessor } from './customInvariant.js';
2
- export declare function unparserImplementationInvariant<T>(value: T, format: ValueOrAccessor<string | string[]>, ...formatArguments: any[]): Exclude<T, Falsy>;
2
+ export declare function unparserImplementationInvariant<T>(value: T, format: ValueOrAccessor<string | string[]>, ...formatArguments: unknown[]): Exclude<T, Falsy>;
@@ -1,4 +1,4 @@
1
- import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from "./parserInputCompanion.js";
1
+ import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
2
2
  export type UnparserOutputCompanion<Sequence, Element> = {
3
3
  is(value: unknown): value is Sequence;
4
4
  from(elements: Element[]): Sequence;
@@ -1,4 +1,4 @@
1
- import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from "./parserInputCompanion.js";
1
+ import { StringParserInputCompanion, Uint8ArrayParserInputCompanion } from './parserInputCompanion.js';
2
2
  export class StringUnparserOutputCompanion extends StringParserInputCompanion {
3
3
  concat(sequences) {
4
4
  return sequences.join('');
@@ -69,7 +69,7 @@ const zipDataDescriptorSignatureParser = createExactSequenceParser(zipDataDescri
69
69
  const zipDataDescriptorParser = promiseCompose(createTupleParser([
70
70
  createNegativeLookaheadParser(zipLocalFileHeaderSignatureParser),
71
71
  // FIXME: optional in spec
72
- //createOptionalParser(zipDataDescriptorSignatureParser),
72
+ // createOptionalParser(zipDataDescriptorSignatureParser),
73
73
  zipDataDescriptorSignatureParser,
74
74
  uint32LEParser,
75
75
  uint32LEParser,
@@ -1,6 +1,6 @@
1
- import { Unparser } from "./unparser.js";
2
- import { Zip } from "./zip.js";
3
- import { ZipEndOfCentralDirectoryRecord } from './zipParser.js';
1
+ import { type Unparser } from './unparser.js';
2
+ import { type Zip } from './zip.js';
3
+ import { type ZipEndOfCentralDirectoryRecord } from './zipParser.js';
4
4
  export declare const zipEndOfCentralDirectoryRecordUnparser: Unparser<ZipEndOfCentralDirectoryRecord, Uint8Array>;
5
5
  export declare const createZipUnparser: ({ dataDescriptor, }?: {
6
6
  dataDescriptor?: boolean;
@@ -28,12 +28,7 @@ const dosDateTimeUnparser = async function* (date, unparserContext) {
28
28
  | (date.getUTCFullYear() - 1980) << 9), unparserContext);
29
29
  };
30
30
  const zipCompressionMethodUnparser = async function* (compressionMethod, unparserContext) {
31
- if (compressionMethod === 'store') {
32
- yield* uint16LEUnparser(0, unparserContext);
33
- }
34
- else {
35
- yield* uint16LEUnparser(8, unparserContext);
36
- }
31
+ yield* (compressionMethod === 'store' ? uint16LEUnparser(0, unparserContext) : uint16LEUnparser(8, unparserContext));
37
32
  };
38
33
  export const zipEndOfCentralDirectoryRecordUnparser = async function* (zipEndOfCentralDirectoryRecord, unparserContext) {
39
34
  yield Buffer.from('504b0506', 'hex');
@@ -131,25 +126,20 @@ export const createZipUnparser = ({ dataDescriptor = false, } = {}) => async fun
131
126
  for (const zipEntry of zip.entries) {
132
127
  yield Buffer.from('504b0102', 'hex');
133
128
  if (zipEntry.hostSystem === 'unix') {
134
- yield 0; // zip specification version
135
- yield 3; // host system
129
+ yield 0; // Zip specification version
130
+ yield 3; // Host system
136
131
  }
137
132
  else {
138
133
  yield 0;
139
134
  yield 0;
140
135
  }
141
- yield* uint16LEUnparser(0, unparserContext); // version needed to extract
142
- yield* uint16LEUnparser(0, unparserContext); // general purpose bit flag
143
- if (zipEntry.type === 'file') {
144
- yield* zipCompressionMethodUnparser(zipEntry.compression, unparserContext);
145
- }
146
- else {
147
- yield* uint16LEUnparser(0, unparserContext);
148
- }
136
+ yield* uint16LEUnparser(0, unparserContext); // Version needed to extract
137
+ yield* uint16LEUnparser(0, unparserContext); // General purpose bit flag
138
+ yield* (zipEntry.type === 'file' ? zipCompressionMethodUnparser(zipEntry.compression, unparserContext) : uint16LEUnparser(0, unparserContext));
149
139
  yield* dosDateTimeUnparser(zipEntry.date, unparserContext);
150
140
  if (zipEntry.type === 'file') {
151
141
  const compressedContent = await compressedContentByZipFileEntry.get(zipEntry);
152
- yield* uint32LEUnparser(0, unparserContext); // crc32 // TODO
142
+ yield* uint32LEUnparser(0, unparserContext); // Crc32 // TODO
153
143
  yield* uint32LEUnparser(compressedContent.length, unparserContext);
154
144
  yield* uint32LEUnparser(zipEntry.content.length, unparserContext);
155
145
  }
@@ -165,8 +155,8 @@ export const createZipUnparser = ({ dataDescriptor = false, } = {}) => async fun
165
155
  yield* uint16LEUnparser(extraFieldBuffer.length, unparserContext);
166
156
  const fileCommentBuffer = Buffer.from(zipEntry.comment, 'utf8');
167
157
  yield* uint16LEUnparser(fileCommentBuffer.length, unparserContext);
168
- yield* uint16LEUnparser(0, unparserContext); // disk number start
169
- yield* uint16LEUnparser(0, unparserContext); // internal file attributes
158
+ yield* uint16LEUnparser(0, unparserContext); // Disk number start
159
+ yield* uint16LEUnparser(0, unparserContext); // Internal file attributes
170
160
  if (zipEntry.hostSystem === 'unix') {
171
161
  yield* uint32LEUnparser((0
172
162
  | (zipEntry.type === 'directory'
@@ -1,7 +1,7 @@
1
+ import fsPromises from 'node:fs/promises';
1
2
  import { fc, testProp } from '@fast-check/ava';
2
3
  import { temporaryFile } from 'tempy';
3
4
  import { execa } from 'execa';
4
- import fsPromises from 'node:fs/promises';
5
5
  import { runUnparser } from './unparser.js';
6
6
  import { createZipUnparser } from './zipUnparser.js';
7
7
  import { uint8ArrayUnparserOutputCompanion } from './unparserOutputCompanion.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futpib/parser",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "main": "build/index.js",
5
5
  "license": "GPL-3.0-only",
6
6
  "type": "module",
@@ -18,46 +18,40 @@
18
18
  },
19
19
  "compile": false
20
20
  },
21
- "verbose": true
21
+ "verbose": true,
22
+ "timeout": "60s"
22
23
  },
23
24
  "devDependencies": {
24
- "@ava/typescript": "^5.0.0",
25
- "@fast-check/ava": "^2.0.1",
25
+ "@ava/typescript": "^6.0.0",
26
+ "@fast-check/ava": "^2.0.2",
27
+ "@gruhn/regex-utils": "^2.7.3",
26
28
  "@types/invariant": "^2.2.37",
27
- "@types/node": "^22.10.2",
28
- "ava": "^6.2.0",
29
- "bson": "^6.10.1",
29
+ "@types/node": "^24.4.0",
30
+ "ava": "^6.4.1",
31
+ "bson": "^6.10.4",
30
32
  "c8": "^10.1.3",
31
33
  "coveralls": "^3.1.1",
32
34
  "env-paths": "^3.0.0",
33
- "eslint-config-xo-typescript-overrides": "^1.6.1",
34
- "execa": "^9.5.2",
35
- "fast-check": "^3.23.2",
35
+ "eslint-config-xo-typescript-overrides": "^2.0.3",
36
+ "execa": "^9.6.0",
37
+ "fast-check": "^4.3.0",
36
38
  "invariant": "^2.2.4",
37
39
  "jszip": "^3.10.1",
38
40
  "leb128": "^0.0.5",
39
- "mutf-8": "^1.1.4",
40
- "p-memoize": "^7.1.1",
41
+ "mutf-8": "^1.2.2",
42
+ "p-memoize": "^8.0.0",
41
43
  "tempy": "^3.1.0",
42
- "type-fest": "^4.30.1",
43
- "typescript": "^5.7.2",
44
- "xo": "^0.60.0"
44
+ "type-fest": "^5.0.0",
45
+ "typescript": "^5.9.2",
46
+ "xo": "^1.2.2"
45
47
  },
46
- "xo": {
47
- "extends": [
48
- "eslint-config-xo-typescript-overrides"
49
- ],
50
- "rules": {
51
- "ava/no-ignored-test-files": "off"
52
- }
53
- },
54
- "packageManager": "yarn@4.5.3",
48
+ "packageManager": "yarn@4.9.4",
55
49
  "dependencies": {
56
- "fp-ts": "^2.16.9",
50
+ "fp-ts": "^2.16.11",
57
51
  "mem": "^10.0.0",
58
52
  "monocle-ts": "^2.3.13",
59
53
  "newtype-ts": "^0.3.5",
60
- "p-mutex": "^0.1.0"
54
+ "p-mutex": "^1.0.0"
61
55
  },
62
56
  "peerDependencies": {
63
57
  "mutf-8": "^1.1.4"
@@ -65,8 +65,8 @@ test('allSettledStream reader cancel', async t => {
65
65
  0,
66
66
  40,
67
67
  30,
68
- ].map((delay) => ({
69
- promise: new Promise<number>((resolve) => {
68
+ ].map(delay => ({
69
+ promise: new Promise<number>(resolve => {
70
70
  setTimeout(() => {
71
71
  resolve(delay);
72
72
  }, delay);
@@ -1,4 +1,4 @@
1
- import { promiseSettled } from "./promiseSettled.js";
1
+ import { promiseSettled } from './promiseSettled.js';
2
2
 
3
3
  type AllSettledStreamFulfilledResult<T, Context> = {
4
4
  status: 'fulfilled';
@@ -39,8 +39,8 @@ export function allSettledStream<T, Context>(tasks: Array<AllSettledStreamTask<T
39
39
 
40
40
  if (
41
41
  promiseSettledResult.status === 'rejected'
42
- && promiseSettledResult.reason instanceof Error
43
- && promiseSettledResult.reason.stack
42
+ && promiseSettledResult.reason instanceof Error
43
+ && promiseSettledResult.reason.stack
44
44
  ) {
45
45
  promiseSettledResult.reason.stack += `\n${startStack}`;
46
46
  }
@@ -4,26 +4,24 @@ import { runParser } from './parser.js';
4
4
  import { androidPackageParser } from './androidPackageParser.js';
5
5
  import { fetchCid } from './fetchCid.js';
6
6
 
7
- for (const androidPackageCid of [
8
- 'bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu',
9
- 'bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m',
10
- ]) {
11
- test(
12
- 'androidPackage ' + androidPackageCid,
13
- async t => {
14
- const androidPackageStream = await fetchCid(androidPackageCid);
7
+ const androidPackageMacro = test.macro({
8
+ title: (providedTitle, androidPackageCid: string) => providedTitle ?? `androidPackage ${androidPackageCid}`,
9
+ async exec(t, androidPackageCid: string) {
10
+ const androidPackageStream = await fetchCid(androidPackageCid);
15
11
 
16
- const actual = await runParser(androidPackageParser, androidPackageStream, uint8ArrayParserInputCompanion, {
17
- errorJoinMode: 'all',
18
- });
12
+ const actual = await runParser(androidPackageParser, androidPackageStream, uint8ArrayParserInputCompanion, {
13
+ errorJoinMode: 'all',
14
+ });
19
15
 
20
- for (const entry of actual.entries) {
21
- if (entry.type === 'file') {
22
- entry.content = new Uint8Array([ entry.content.length ]);
23
- }
16
+ for (const entry of actual.entries) {
17
+ if (entry.type === 'file') {
18
+ entry.content = new Uint8Array([ entry.content.length ]);
24
19
  }
20
+ }
25
21
 
26
- t.snapshot(actual);
27
- },
28
- );
29
- }
22
+ t.snapshot(actual);
23
+ },
24
+ });
25
+
26
+ test(androidPackageMacro, 'bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu');
27
+ test(androidPackageMacro, 'bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m');