7z-iterator 1.3.0 → 1.4.0

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 (97) hide show
  1. package/dist/cjs/index.d.cts +3 -1
  2. package/dist/cjs/index.d.ts +3 -1
  3. package/dist/cjs/index.js +10 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/lzma/index.d.cts +18 -0
  6. package/dist/cjs/lzma/index.d.ts +18 -0
  7. package/dist/cjs/lzma/index.js +20 -0
  8. package/dist/cjs/lzma/index.js.map +1 -1
  9. package/dist/cjs/lzma/stream/transforms.d.cts +8 -0
  10. package/dist/cjs/lzma/stream/transforms.d.ts +8 -0
  11. package/dist/cjs/lzma/stream/transforms.js +66 -6
  12. package/dist/cjs/lzma/stream/transforms.js.map +1 -1
  13. package/dist/cjs/lzma/sync/Lzma2Decoder.d.cts +37 -4
  14. package/dist/cjs/lzma/sync/Lzma2Decoder.d.ts +37 -4
  15. package/dist/cjs/lzma/sync/Lzma2Decoder.js +100 -4
  16. package/dist/cjs/lzma/sync/Lzma2Decoder.js.map +1 -1
  17. package/dist/cjs/lzma/sync/LzmaDecoder.d.cts +18 -3
  18. package/dist/cjs/lzma/sync/LzmaDecoder.d.ts +18 -3
  19. package/dist/cjs/lzma/sync/LzmaDecoder.js +146 -6
  20. package/dist/cjs/lzma/sync/LzmaDecoder.js.map +1 -1
  21. package/dist/cjs/lzma/types.d.cts +7 -0
  22. package/dist/cjs/lzma/types.d.ts +7 -0
  23. package/dist/cjs/lzma/types.js.map +1 -1
  24. package/dist/cjs/sevenz/codecs/Aes.d.cts +1 -1
  25. package/dist/cjs/sevenz/codecs/Aes.d.ts +1 -1
  26. package/dist/cjs/sevenz/codecs/Aes.js.map +1 -1
  27. package/dist/cjs/sevenz/codecs/BZip2.d.cts +1 -1
  28. package/dist/cjs/sevenz/codecs/BZip2.d.ts +1 -1
  29. package/dist/cjs/sevenz/codecs/BZip2.js.map +1 -1
  30. package/dist/cjs/sevenz/codecs/Bcj2.d.cts +1 -1
  31. package/dist/cjs/sevenz/codecs/Bcj2.d.ts +1 -1
  32. package/dist/cjs/sevenz/codecs/Bcj2.js.map +1 -1
  33. package/dist/cjs/sevenz/codecs/BcjArm64.d.cts +1 -1
  34. package/dist/cjs/sevenz/codecs/BcjArm64.d.ts +1 -1
  35. package/dist/cjs/sevenz/codecs/BcjArm64.js.map +1 -1
  36. package/dist/cjs/sevenz/codecs/BcjArmt.d.cts +1 -1
  37. package/dist/cjs/sevenz/codecs/BcjArmt.d.ts +1 -1
  38. package/dist/cjs/sevenz/codecs/BcjArmt.js.map +1 -1
  39. package/dist/cjs/sevenz/codecs/BcjIa64.d.cts +1 -1
  40. package/dist/cjs/sevenz/codecs/BcjIa64.d.ts +1 -1
  41. package/dist/cjs/sevenz/codecs/BcjIa64.js.map +1 -1
  42. package/dist/cjs/sevenz/codecs/BcjPpc.d.cts +1 -1
  43. package/dist/cjs/sevenz/codecs/BcjPpc.d.ts +1 -1
  44. package/dist/cjs/sevenz/codecs/BcjPpc.js.map +1 -1
  45. package/dist/cjs/sevenz/codecs/BcjSparc.d.cts +1 -1
  46. package/dist/cjs/sevenz/codecs/BcjSparc.d.ts +1 -1
  47. package/dist/cjs/sevenz/codecs/BcjSparc.js.map +1 -1
  48. package/dist/cjs/sevenz/codecs/Lzma.js.map +1 -1
  49. package/dist/cjs/sevenz/codecs/Lzma2.js.map +1 -1
  50. package/dist/cjs/sevenz/codecs/index.d.cts +1 -1
  51. package/dist/cjs/sevenz/codecs/index.d.ts +1 -1
  52. package/dist/cjs/sevenz/codecs/index.js.map +1 -1
  53. package/dist/cjs/xz/Decoder.d.cts +25 -0
  54. package/dist/cjs/xz/Decoder.d.ts +25 -0
  55. package/dist/cjs/xz/Decoder.js +194 -0
  56. package/dist/cjs/xz/Decoder.js.map +1 -0
  57. package/dist/esm/index.d.ts +3 -1
  58. package/dist/esm/index.js +2 -1
  59. package/dist/esm/index.js.map +1 -1
  60. package/dist/esm/lzma/index.d.ts +18 -0
  61. package/dist/esm/lzma/index.js +29 -0
  62. package/dist/esm/lzma/index.js.map +1 -1
  63. package/dist/esm/lzma/stream/transforms.d.ts +8 -0
  64. package/dist/esm/lzma/stream/transforms.js +46 -7
  65. package/dist/esm/lzma/stream/transforms.js.map +1 -1
  66. package/dist/esm/lzma/sync/Lzma2Decoder.d.ts +37 -4
  67. package/dist/esm/lzma/sync/Lzma2Decoder.js +102 -6
  68. package/dist/esm/lzma/sync/Lzma2Decoder.js.map +1 -1
  69. package/dist/esm/lzma/sync/LzmaDecoder.d.ts +18 -3
  70. package/dist/esm/lzma/sync/LzmaDecoder.js +147 -7
  71. package/dist/esm/lzma/sync/LzmaDecoder.js.map +1 -1
  72. package/dist/esm/lzma/types.d.ts +7 -0
  73. package/dist/esm/lzma/types.js.map +1 -1
  74. package/dist/esm/sevenz/codecs/Aes.d.ts +1 -1
  75. package/dist/esm/sevenz/codecs/Aes.js.map +1 -1
  76. package/dist/esm/sevenz/codecs/BZip2.d.ts +1 -1
  77. package/dist/esm/sevenz/codecs/BZip2.js.map +1 -1
  78. package/dist/esm/sevenz/codecs/Bcj2.d.ts +1 -1
  79. package/dist/esm/sevenz/codecs/Bcj2.js.map +1 -1
  80. package/dist/esm/sevenz/codecs/BcjArm64.d.ts +1 -1
  81. package/dist/esm/sevenz/codecs/BcjArm64.js.map +1 -1
  82. package/dist/esm/sevenz/codecs/BcjArmt.d.ts +1 -1
  83. package/dist/esm/sevenz/codecs/BcjArmt.js.map +1 -1
  84. package/dist/esm/sevenz/codecs/BcjIa64.d.ts +1 -1
  85. package/dist/esm/sevenz/codecs/BcjIa64.js.map +1 -1
  86. package/dist/esm/sevenz/codecs/BcjPpc.d.ts +1 -1
  87. package/dist/esm/sevenz/codecs/BcjPpc.js.map +1 -1
  88. package/dist/esm/sevenz/codecs/BcjSparc.d.ts +1 -1
  89. package/dist/esm/sevenz/codecs/BcjSparc.js.map +1 -1
  90. package/dist/esm/sevenz/codecs/Lzma.js.map +1 -1
  91. package/dist/esm/sevenz/codecs/Lzma2.js.map +1 -1
  92. package/dist/esm/sevenz/codecs/index.d.ts +1 -1
  93. package/dist/esm/sevenz/codecs/index.js.map +1 -1
  94. package/dist/esm/xz/Decoder.d.ts +25 -0
  95. package/dist/esm/xz/Decoder.js +185 -0
  96. package/dist/esm/xz/Decoder.js.map +1 -0
  97. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/sync/Lzma2Decoder.ts"],"sourcesContent":["/**\n * Synchronous LZMA2 Decoder\n *\n * LZMA2 is a container format that wraps LZMA chunks with framing.\n * Decodes LZMA2 data from a buffer.\n */\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\nimport { parseLzma2ChunkHeader } from '../Lzma2ChunkParser.ts';\nimport { parseLzma2DictionarySize } from '../types.ts';\nimport { LzmaDecoder } from './LzmaDecoder.ts';\n\n/**\n * Synchronous LZMA2 decoder\n */\nexport class Lzma2Decoder {\n private lzmaDecoder: LzmaDecoder;\n private dictionarySize: number;\n private propsSet: boolean;\n\n constructor(properties: Buffer | Uint8Array) {\n if (!properties || properties.length < 1) {\n throw new Error('LZMA2 requires properties byte');\n }\n\n this.dictionarySize = parseLzma2DictionarySize(properties[0]);\n this.lzmaDecoder = new LzmaDecoder();\n this.lzmaDecoder.setDictionarySize(this.dictionarySize);\n this.propsSet = false;\n }\n\n /**\n * Decode LZMA2 data\n * @param input - LZMA2 compressed data\n * @param unpackSize - Expected output size (optional, for pre-allocation)\n * @returns Decompressed data\n */\n decode(input: Buffer, unpackSize?: number): Buffer {\n // Pre-allocate output buffer if size is known\n let outputBuffer: Buffer | null = null;\n let outputPos = 0;\n const outputChunks: Buffer[] = [];\n\n if (unpackSize && unpackSize > 0) {\n outputBuffer = allocBufferUnsafe(unpackSize);\n }\n\n let offset = 0;\n\n while (offset < input.length) {\n const result = parseLzma2ChunkHeader(input, offset);\n\n if (!result.success) {\n throw new Error('Truncated LZMA2 chunk header');\n }\n\n const chunk = result.chunk;\n\n if (chunk.type === 'end') {\n break;\n }\n\n // Validate we have enough data for the chunk\n const dataSize = chunk.type === 'uncompressed' ? chunk.uncompSize : chunk.compSize;\n if (offset + chunk.headerSize + dataSize > input.length) {\n throw new Error(`Truncated LZMA2 ${chunk.type} data`);\n }\n\n // Handle dictionary reset\n if (chunk.dictReset) {\n this.lzmaDecoder.resetDictionary();\n }\n\n const dataOffset = offset + chunk.headerSize;\n\n if (chunk.type === 'uncompressed') {\n const uncompData = input.slice(dataOffset, dataOffset + chunk.uncompSize);\n\n // Copy to output\n if (outputBuffer) {\n uncompData.copy(outputBuffer, outputPos);\n outputPos += uncompData.length;\n } else {\n outputChunks.push(uncompData);\n }\n\n // Feed uncompressed data to dictionary so subsequent LZMA chunks can reference it\n this.lzmaDecoder.feedUncompressed(uncompData);\n\n offset = dataOffset + chunk.uncompSize;\n } else {\n // LZMA compressed chunk\n\n // Apply new properties if present\n if (chunk.newProps) {\n const { lc, lp, pb } = chunk.newProps;\n if (!this.lzmaDecoder.setLcLpPb(lc, lp, pb)) {\n throw new Error(`Invalid LZMA properties: lc=${lc} lp=${lp} pb=${pb}`);\n }\n this.propsSet = true;\n }\n\n if (!this.propsSet) {\n throw new Error('LZMA chunk without properties');\n }\n\n // Reset probabilities if state reset\n if (chunk.stateReset) {\n this.lzmaDecoder.resetProbabilities();\n }\n\n // Determine solid mode - preserve dictionary if not resetting state or if only resetting state (not dict)\n const useSolid = !chunk.stateReset || (chunk.stateReset && !chunk.dictReset);\n\n // Decode LZMA chunk\n const chunkData = input.slice(dataOffset, dataOffset + chunk.compSize);\n const decoded = this.lzmaDecoder.decode(chunkData, 0, chunk.uncompSize, useSolid);\n\n // Copy to output\n if (outputBuffer) {\n decoded.copy(outputBuffer, outputPos);\n outputPos += decoded.length;\n } else {\n outputChunks.push(decoded);\n }\n\n offset = dataOffset + chunk.compSize;\n }\n }\n\n // Return pre-allocated buffer or concatenated chunks\n if (outputBuffer) {\n return outputPos < outputBuffer.length ? outputBuffer.slice(0, outputPos) : outputBuffer;\n }\n return Buffer.concat(outputChunks);\n }\n}\n\n/**\n * Decode LZMA2 data synchronously\n * @param input - LZMA2 compressed data\n * @param properties - 1-byte properties (dictionary size)\n * @param unpackSize - Expected output size (optional)\n * @returns Decompressed data\n */\nexport function decodeLzma2(input: Buffer, properties: Buffer | Uint8Array, unpackSize?: number): Buffer {\n const decoder = new Lzma2Decoder(properties);\n return decoder.decode(input, unpackSize);\n}\n"],"names":["Lzma2Decoder","decodeLzma2","properties","length","Error","dictionarySize","parseLzma2DictionarySize","lzmaDecoder","LzmaDecoder","setDictionarySize","propsSet","decode","input","unpackSize","outputBuffer","outputPos","outputChunks","allocBufferUnsafe","offset","result","parseLzma2ChunkHeader","success","chunk","type","dataSize","uncompSize","compSize","headerSize","dictReset","resetDictionary","dataOffset","uncompData","slice","copy","push","feedUncompressed","newProps","lc","lp","pb","setLcLpPb","stateReset","resetProbabilities","useSolid","chunkData","decoded","Buffer","concat","decoder"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/sync/Lzma2Decoder.ts"],"sourcesContent":["/**\n * Synchronous LZMA2 Decoder\n *\n * LZMA2 is a container format that wraps LZMA chunks with framing.\n * Decodes LZMA2 data from a buffer.\n */\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\nimport { parseLzma2ChunkHeader } from '../Lzma2ChunkParser.ts';\nimport { type OutputSink, parseLzma2DictionarySize } from '../types.ts';\nimport { LzmaDecoder } from './LzmaDecoder.ts';\n\n/**\n * Synchronous LZMA2 decoder\n */\nexport class Lzma2Decoder {\n private lzmaDecoder: LzmaDecoder;\n private dictionarySize: number;\n private propsSet: boolean;\n\n constructor(properties: Buffer | Uint8Array, outputSink?: OutputSink) {\n if (!properties || properties.length < 1) {\n throw new Error('LZMA2 requires properties byte');\n }\n\n this.dictionarySize = parseLzma2DictionarySize(properties[0]);\n this.lzmaDecoder = new LzmaDecoder(outputSink);\n this.lzmaDecoder.setDictionarySize(this.dictionarySize);\n this.propsSet = false;\n }\n\n /**\n * Reset the dictionary (for stream boundaries)\n */\n resetDictionary(): void {\n this.lzmaDecoder.resetDictionary();\n }\n\n /**\n * Reset all probability models (for stream boundaries)\n */\n resetProbabilities(): void {\n this.lzmaDecoder.resetProbabilities();\n }\n\n /**\n * Set LZMA properties\n */\n setLcLpPb(lc: number, lp: number, pb: number): boolean {\n return this.lzmaDecoder.setLcLpPb(lc, lp, pb);\n }\n\n /**\n * Feed uncompressed data to the dictionary (for subsequent LZMA chunks)\n */\n feedUncompressed(data: Buffer): void {\n this.lzmaDecoder.feedUncompressed(data);\n }\n\n /**\n * Decode raw LZMA data (used internally for LZMA2 chunks)\n * @param input - LZMA compressed data\n * @param offset - Input offset\n * @param outSize - Expected output size\n * @param solid - Use solid mode\n * @returns Decompressed data\n */\n decodeLzmaData(input: Buffer, offset: number, outSize: number, solid = false): Buffer {\n return this.lzmaDecoder.decode(input, offset, outSize, solid);\n }\n\n /**\n * Decode LZMA2 data with streaming output\n * @param input - LZMA2 compressed data\n * @returns Total number of bytes written to sink\n */\n decodeWithSink(input: Buffer): number {\n let totalBytes = 0;\n let offset = 0;\n\n while (offset < input.length) {\n const result = parseLzma2ChunkHeader(input, offset);\n\n if (!result.success) {\n throw new Error('Truncated LZMA2 chunk header');\n }\n\n const chunk = result.chunk;\n\n if (chunk.type === 'end') {\n break;\n }\n\n // Validate we have enough data for the chunk\n const dataSize = chunk.type === 'uncompressed' ? chunk.uncompSize : chunk.compSize;\n if (offset + chunk.headerSize + dataSize > input.length) {\n throw new Error(`Truncated LZMA2 ${chunk.type} data`);\n }\n\n // Handle dictionary reset\n if (chunk.dictReset) {\n this.lzmaDecoder.resetDictionary();\n }\n\n const dataOffset = offset + chunk.headerSize;\n\n if (chunk.type === 'uncompressed') {\n const uncompData = input.slice(dataOffset, dataOffset + chunk.uncompSize);\n\n // Feed uncompressed data to dictionary so subsequent LZMA chunks can reference it\n this.lzmaDecoder.feedUncompressed(uncompData);\n\n totalBytes += uncompData.length;\n offset = dataOffset + chunk.uncompSize;\n } else {\n // LZMA compressed chunk\n\n // Apply new properties if present\n if (chunk.newProps) {\n const { lc, lp, pb } = chunk.newProps;\n if (!this.lzmaDecoder.setLcLpPb(lc, lp, pb)) {\n throw new Error(`Invalid LZMA properties: lc=${lc} lp=${lp} pb=${pb}`);\n }\n this.propsSet = true;\n }\n\n if (!this.propsSet) {\n throw new Error('LZMA chunk without properties');\n }\n\n // Reset probabilities if state reset\n if (chunk.stateReset) {\n this.lzmaDecoder.resetProbabilities();\n }\n\n // Determine solid mode\n const useSolid = !chunk.stateReset || (chunk.stateReset && !chunk.dictReset);\n\n // Decode LZMA chunk directly to sink\n totalBytes += this.lzmaDecoder.decodeWithSink(input, dataOffset, chunk.uncompSize, useSolid);\n\n offset = dataOffset + chunk.compSize;\n }\n }\n\n // Flush any remaining data in the OutWindow\n this.lzmaDecoder.flushOutWindow();\n\n return totalBytes;\n }\n\n /**\n * Decode LZMA2 data\n * @param input - LZMA2 compressed data\n * @param unpackSize - Expected output size (optional, for pre-allocation)\n * @returns Decompressed data\n */\n decode(input: Buffer, unpackSize?: number): Buffer {\n // Pre-allocate output buffer if size is known\n let outputBuffer: Buffer | null = null;\n let outputPos = 0;\n const outputChunks: Buffer[] = [];\n\n if (unpackSize && unpackSize > 0) {\n outputBuffer = allocBufferUnsafe(unpackSize);\n }\n\n let offset = 0;\n\n while (offset < input.length) {\n const result = parseLzma2ChunkHeader(input, offset);\n\n if (!result.success) {\n throw new Error('Truncated LZMA2 chunk header');\n }\n\n const chunk = result.chunk;\n\n if (chunk.type === 'end') {\n break;\n }\n\n // Validate we have enough data for the chunk\n const dataSize = chunk.type === 'uncompressed' ? chunk.uncompSize : chunk.compSize;\n if (offset + chunk.headerSize + dataSize > input.length) {\n throw new Error(`Truncated LZMA2 ${chunk.type} data`);\n }\n\n // Handle dictionary reset\n if (chunk.dictReset) {\n this.lzmaDecoder.resetDictionary();\n }\n\n const dataOffset = offset + chunk.headerSize;\n\n if (chunk.type === 'uncompressed') {\n const uncompData = input.slice(dataOffset, dataOffset + chunk.uncompSize);\n\n // Copy to output\n if (outputBuffer) {\n uncompData.copy(outputBuffer, outputPos);\n outputPos += uncompData.length;\n } else {\n outputChunks.push(uncompData);\n }\n\n // Feed uncompressed data to dictionary so subsequent LZMA chunks can reference it\n this.lzmaDecoder.feedUncompressed(uncompData);\n\n offset = dataOffset + chunk.uncompSize;\n } else {\n // LZMA compressed chunk\n\n // Apply new properties if present\n if (chunk.newProps) {\n const { lc, lp, pb } = chunk.newProps;\n if (!this.lzmaDecoder.setLcLpPb(lc, lp, pb)) {\n throw new Error(`Invalid LZMA properties: lc=${lc} lp=${lp} pb=${pb}`);\n }\n this.propsSet = true;\n }\n\n if (!this.propsSet) {\n throw new Error('LZMA chunk without properties');\n }\n\n // Reset probabilities if state reset\n if (chunk.stateReset) {\n this.lzmaDecoder.resetProbabilities();\n }\n\n // Determine solid mode - preserve dictionary if not resetting state or if only resetting state (not dict)\n const useSolid = !chunk.stateReset || (chunk.stateReset && !chunk.dictReset);\n\n // Decode LZMA chunk\n const chunkData = input.slice(dataOffset, dataOffset + chunk.compSize);\n const decoded = this.lzmaDecoder.decode(chunkData, 0, chunk.uncompSize, useSolid);\n\n // Copy to output\n if (outputBuffer) {\n decoded.copy(outputBuffer, outputPos);\n outputPos += decoded.length;\n } else {\n outputChunks.push(decoded);\n }\n\n offset = dataOffset + chunk.compSize;\n }\n }\n\n // Return pre-allocated buffer or concatenated chunks\n if (outputBuffer) {\n return outputPos < outputBuffer.length ? outputBuffer.slice(0, outputPos) : outputBuffer;\n }\n return Buffer.concat(outputChunks);\n }\n}\n\n/**\n * Decode LZMA2 data synchronously\n * @param input - LZMA2 compressed data\n * @param properties - 1-byte properties (dictionary size)\n * @param unpackSize - Expected output size (optional, autodetects if not provided)\n * @param outputSink - Optional output sink for zero-copy decoding (returns bytes written)\n * @returns Decompressed data (or bytes written if outputSink provided)\n */\nexport function decodeLzma2(input: Buffer, properties: Buffer | Uint8Array, unpackSize?: number, outputSink?: OutputSink): Buffer | number {\n const decoder = new Lzma2Decoder(properties, outputSink);\n if (outputSink) {\n // Zero-copy mode: write to sink during decode\n return decoder.decodeWithSink(input);\n }\n // Buffering mode: returns Buffer (zero-copy)\n return decoder.decode(input, unpackSize);\n}\n"],"names":["Lzma2Decoder","decodeLzma2","properties","outputSink","length","Error","dictionarySize","parseLzma2DictionarySize","lzmaDecoder","LzmaDecoder","setDictionarySize","propsSet","resetDictionary","resetProbabilities","setLcLpPb","lc","lp","pb","feedUncompressed","data","decodeLzmaData","input","offset","outSize","solid","decode","decodeWithSink","totalBytes","result","parseLzma2ChunkHeader","success","chunk","type","dataSize","uncompSize","compSize","headerSize","dictReset","dataOffset","uncompData","slice","newProps","stateReset","useSolid","flushOutWindow","unpackSize","outputBuffer","outputPos","outputChunks","allocBufferUnsafe","copy","push","chunkData","decoded","Buffer","concat","decoder"],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Decodes LZMA1 compressed data from a buffer.
5
5
  * All operations are synchronous.
6
6
  */
7
+ import { type OutputSink } from '../types.js';
7
8
  /**
8
9
  * Synchronous LZMA1 decoder
9
10
  */
@@ -32,7 +33,7 @@ export declare class LzmaDecoder {
32
33
  private rep3;
33
34
  private prevByte;
34
35
  private totalPos;
35
- constructor();
36
+ constructor(outputSink?: OutputSink);
36
37
  /**
37
38
  * Set dictionary size
38
39
  */
@@ -62,6 +63,19 @@ export declare class LzmaDecoder {
62
63
  * This updates the sliding window so subsequent LZMA chunks can reference this data.
63
64
  */
64
65
  feedUncompressed(data: Buffer): void;
66
+ /**
67
+ * Flush any remaining data in the OutWindow to the sink
68
+ */
69
+ flushOutWindow(): void;
70
+ /**
71
+ * Decode LZMA data with streaming output (no buffer accumulation)
72
+ * @param input - Compressed input buffer
73
+ * @param inputOffset - Offset into input buffer
74
+ * @param outSize - Expected output size
75
+ * @param solid - If true, preserve state from previous decode
76
+ * @returns Number of bytes written to sink
77
+ */
78
+ decodeWithSink(input: Buffer, inputOffset: number, outSize: number, solid?: boolean): number;
65
79
  /**
66
80
  * Decode LZMA data
67
81
  * @param input - Compressed input buffer
@@ -77,6 +91,7 @@ export declare class LzmaDecoder {
77
91
  * @param input - Compressed data (without 5-byte properties header)
78
92
  * @param properties - 5-byte LZMA properties
79
93
  * @param outSize - Expected output size
80
- * @returns Decompressed data
94
+ * @param outputSink - Optional output sink for zero-copy decoding (returns bytes written)
95
+ * @returns Decompressed data (or bytes written if outputSink provided)
81
96
  */
82
- export declare function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number): Buffer;
97
+ export declare function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number, outputSink?: OutputSink): Buffer | number;
@@ -4,6 +4,7 @@
4
4
  * Decodes LZMA1 compressed data from a buffer.
5
5
  * All operations are synchronous.
6
6
  */
7
+ import { type OutputSink } from '../types.js';
7
8
  /**
8
9
  * Synchronous LZMA1 decoder
9
10
  */
@@ -32,7 +33,7 @@ export declare class LzmaDecoder {
32
33
  private rep3;
33
34
  private prevByte;
34
35
  private totalPos;
35
- constructor();
36
+ constructor(outputSink?: OutputSink);
36
37
  /**
37
38
  * Set dictionary size
38
39
  */
@@ -62,6 +63,19 @@ export declare class LzmaDecoder {
62
63
  * This updates the sliding window so subsequent LZMA chunks can reference this data.
63
64
  */
64
65
  feedUncompressed(data: Buffer): void;
66
+ /**
67
+ * Flush any remaining data in the OutWindow to the sink
68
+ */
69
+ flushOutWindow(): void;
70
+ /**
71
+ * Decode LZMA data with streaming output (no buffer accumulation)
72
+ * @param input - Compressed input buffer
73
+ * @param inputOffset - Offset into input buffer
74
+ * @param outSize - Expected output size
75
+ * @param solid - If true, preserve state from previous decode
76
+ * @returns Number of bytes written to sink
77
+ */
78
+ decodeWithSink(input: Buffer, inputOffset: number, outSize: number, solid?: boolean): number;
65
79
  /**
66
80
  * Decode LZMA data
67
81
  * @param input - Compressed input buffer
@@ -77,6 +91,7 @@ export declare class LzmaDecoder {
77
91
  * @param input - Compressed data (without 5-byte properties header)
78
92
  * @param properties - 5-byte LZMA properties
79
93
  * @param outSize - Expected output size
80
- * @returns Decompressed data
94
+ * @param outputSink - Optional output sink for zero-copy decoding (returns bytes written)
95
+ * @returns Decompressed data (or bytes written if outputSink provided)
81
96
  */
82
- export declare function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number): Buffer;
97
+ export declare function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number, outputSink?: OutputSink): Buffer | number;
@@ -148,11 +148,13 @@ function _class_call_check(instance, Constructor) {
148
148
  * Output window (sliding dictionary)
149
149
  */ var OutWindow = /*#__PURE__*/ function() {
150
150
  "use strict";
151
- function OutWindow() {
151
+ function OutWindow(sink) {
152
152
  _class_call_check(this, OutWindow);
153
153
  this.buffer = (0, _extractbaseiterator.allocBufferUnsafe)(0); // Replaced by create() before use
154
154
  this.windowSize = 0;
155
155
  this.pos = 0;
156
+ this.sink = sink;
157
+ this.streamPos = 0;
156
158
  }
157
159
  var _proto = OutWindow.prototype;
158
160
  _proto.create = function create(windowSize) {
@@ -161,16 +163,31 @@ function _class_call_check(instance, Constructor) {
161
163
  }
162
164
  this.windowSize = windowSize;
163
165
  this.pos = 0;
166
+ this.streamPos = 0;
164
167
  };
165
168
  _proto.init = function init(solid) {
166
169
  if (!solid) {
167
170
  this.pos = 0;
171
+ this.streamPos = 0;
168
172
  }
169
173
  };
170
174
  _proto.putByte = function putByte(b) {
171
175
  this.buffer[this.pos++] = b;
172
176
  if (this.pos >= this.windowSize) {
173
- this.pos = 0;
177
+ if (this.sink) {
178
+ this.flush();
179
+ this.pos = 0;
180
+ } else {
181
+ this.pos = 0;
182
+ }
183
+ }
184
+ };
185
+ _proto.flush = function flush() {
186
+ var size = this.pos - this.streamPos;
187
+ if (size > 0 && this.sink) {
188
+ var chunk = this.buffer.slice(this.streamPos, this.streamPos + size);
189
+ this.sink.write(chunk);
190
+ this.streamPos = this.pos;
174
191
  }
175
192
  };
176
193
  _proto.getByte = function getByte(distance) {
@@ -209,9 +226,9 @@ function _class_call_check(instance, Constructor) {
209
226
  }();
210
227
  var LzmaDecoder = /*#__PURE__*/ function() {
211
228
  "use strict";
212
- function LzmaDecoder() {
229
+ function LzmaDecoder(outputSink) {
213
230
  _class_call_check(this, LzmaDecoder);
214
- this.outWindow = new OutWindow();
231
+ this.outWindow = new OutWindow(outputSink);
215
232
  this.rangeDecoder = new _RangeDecoderts.RangeDecoder();
216
233
  this.isMatchDecoders = (0, _typests.initBitModels)(null, _typests.kNumStates << _typests.kNumPosStatesBitsMax);
217
234
  this.isRepDecoders = (0, _typests.initBitModels)(null, _typests.kNumStates);
@@ -318,6 +335,122 @@ var LzmaDecoder = /*#__PURE__*/ function() {
318
335
  }
319
336
  };
320
337
  /**
338
+ * Flush any remaining data in the OutWindow to the sink
339
+ */ _proto.flushOutWindow = function flushOutWindow() {
340
+ this.outWindow.flush();
341
+ };
342
+ /**
343
+ * Decode LZMA data with streaming output (no buffer accumulation)
344
+ * @param input - Compressed input buffer
345
+ * @param inputOffset - Offset into input buffer
346
+ * @param outSize - Expected output size
347
+ * @param solid - If true, preserve state from previous decode
348
+ * @returns Number of bytes written to sink
349
+ */ _proto.decodeWithSink = function decodeWithSink(input, inputOffset, outSize) {
350
+ var solid = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
351
+ this.rangeDecoder.setInput(input, inputOffset);
352
+ if (!solid) {
353
+ this.outWindow.init(false);
354
+ this.initProbabilities();
355
+ this.state = 0;
356
+ this.rep0 = 0;
357
+ this.rep1 = 0;
358
+ this.rep2 = 0;
359
+ this.rep3 = 0;
360
+ this.prevByte = 0;
361
+ this.totalPos = 0;
362
+ } else {
363
+ this.outWindow.init(true);
364
+ }
365
+ var outPos = 0;
366
+ var cumPos = this.totalPos;
367
+ while(outPos < outSize){
368
+ var posState = cumPos & this.posStateMask;
369
+ if (this.rangeDecoder.decodeBit(this.isMatchDecoders, (this.state << _typests.kNumPosStatesBitsMax) + posState) === 0) {
370
+ // Literal
371
+ var decoder2 = this.literalDecoder.getDecoder(cumPos, this.prevByte);
372
+ if (!(0, _typests.stateIsCharState)(this.state)) {
373
+ this.prevByte = decoder2.decodeWithMatchByte(this.rangeDecoder, this.outWindow.getByte(this.rep0));
374
+ } else {
375
+ this.prevByte = decoder2.decodeNormal(this.rangeDecoder);
376
+ }
377
+ this.outWindow.putByte(this.prevByte);
378
+ outPos++;
379
+ this.state = (0, _typests.stateUpdateChar)(this.state);
380
+ cumPos++;
381
+ } else {
382
+ // Match or rep
383
+ var len = void 0;
384
+ if (this.rangeDecoder.decodeBit(this.isRepDecoders, this.state) === 1) {
385
+ // Rep match
386
+ len = 0;
387
+ if (this.rangeDecoder.decodeBit(this.isRepG0Decoders, this.state) === 0) {
388
+ if (this.rangeDecoder.decodeBit(this.isRep0LongDecoders, (this.state << _typests.kNumPosStatesBitsMax) + posState) === 0) {
389
+ this.state = (0, _typests.stateUpdateShortRep)(this.state);
390
+ len = 1;
391
+ }
392
+ } else {
393
+ var distance = void 0;
394
+ if (this.rangeDecoder.decodeBit(this.isRepG1Decoders, this.state) === 0) {
395
+ distance = this.rep1;
396
+ } else {
397
+ if (this.rangeDecoder.decodeBit(this.isRepG2Decoders, this.state) === 0) {
398
+ distance = this.rep2;
399
+ } else {
400
+ distance = this.rep3;
401
+ this.rep3 = this.rep2;
402
+ }
403
+ this.rep2 = this.rep1;
404
+ }
405
+ this.rep1 = this.rep0;
406
+ this.rep0 = distance;
407
+ }
408
+ if (len === 0) {
409
+ len = _typests.kMatchMinLen + this.repLenDecoder.decode(this.rangeDecoder, posState);
410
+ this.state = (0, _typests.stateUpdateRep)(this.state);
411
+ }
412
+ } else {
413
+ // Normal match
414
+ this.rep3 = this.rep2;
415
+ this.rep2 = this.rep1;
416
+ this.rep1 = this.rep0;
417
+ len = _typests.kMatchMinLen + this.lenDecoder.decode(this.rangeDecoder, posState);
418
+ this.state = (0, _typests.stateUpdateMatch)(this.state);
419
+ var posSlot = this.posSlotDecoder[(0, _typests.getLenToPosState)(len)].decode(this.rangeDecoder);
420
+ if (posSlot >= _typests.kStartPosModelIndex) {
421
+ var numDirectBits = (posSlot >> 1) - 1;
422
+ this.rep0 = (2 | posSlot & 1) << numDirectBits;
423
+ if (posSlot < _typests.kEndPosModelIndex) {
424
+ this.rep0 += (0, _RangeDecoderts.reverseDecodeFromArray)(this.posDecoders, this.rep0 - posSlot - 1, this.rangeDecoder, numDirectBits);
425
+ } else {
426
+ this.rep0 += this.rangeDecoder.decodeDirectBits(numDirectBits - _typests.kNumAlignBits) << _typests.kNumAlignBits;
427
+ this.rep0 += this.posAlignDecoder.reverseDecode(this.rangeDecoder);
428
+ if (this.rep0 < 0) {
429
+ if (this.rep0 === -1) break;
430
+ throw new Error('LZMA: Invalid distance');
431
+ }
432
+ }
433
+ } else {
434
+ this.rep0 = posSlot;
435
+ }
436
+ }
437
+ if (this.rep0 >= cumPos || this.rep0 >= this.dictionarySizeCheck) {
438
+ throw new Error('LZMA: Invalid distance');
439
+ }
440
+ // Copy match bytes
441
+ for(var i = 0; i < len; i++){
442
+ var b = this.outWindow.getByte(this.rep0);
443
+ this.outWindow.putByte(b);
444
+ outPos++;
445
+ }
446
+ cumPos += len;
447
+ this.prevByte = this.outWindow.getByte(0);
448
+ }
449
+ }
450
+ this.totalPos = cumPos;
451
+ return outPos;
452
+ };
453
+ /**
321
454
  * Decode LZMA data
322
455
  * @param input - Compressed input buffer
323
456
  * @param inputOffset - Offset into input buffer
@@ -432,9 +565,16 @@ var LzmaDecoder = /*#__PURE__*/ function() {
432
565
  };
433
566
  return LzmaDecoder;
434
567
  }();
435
- function decodeLzma(input, properties, outSize) {
436
- var decoder = new LzmaDecoder();
568
+ function decodeLzma(input, properties, outSize, outputSink) {
569
+ var decoder = new LzmaDecoder(outputSink);
437
570
  decoder.setDecoderProperties(properties);
571
+ if (outputSink) {
572
+ // Zero-copy mode: write to sink during decode
573
+ var bytesWritten = decoder.decodeWithSink(input, 0, outSize, false);
574
+ decoder.flushOutWindow();
575
+ return bytesWritten;
576
+ }
577
+ // Buffering mode: pre-allocated buffer, direct writes (zero-copy)
438
578
  return decoder.decode(input, 0, outSize, false);
439
579
  }
440
580
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/sync/LzmaDecoder.ts"],"sourcesContent":["/**\n * Synchronous LZMA1 Decoder\n *\n * Decodes LZMA1 compressed data from a buffer.\n * All operations are synchronous.\n */\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\nimport {\n getLenToPosState,\n initBitModels,\n kEndPosModelIndex,\n kMatchMinLen,\n kNumAlignBits,\n kNumFullDistances,\n kNumLenToPosStates,\n kNumLitContextBitsMax,\n kNumPosSlotBits,\n kNumPosStatesBitsMax,\n kNumStates,\n kStartPosModelIndex,\n parseProperties,\n stateIsCharState,\n stateUpdateChar,\n stateUpdateMatch,\n stateUpdateRep,\n stateUpdateShortRep,\n} from '../types.ts';\nimport { BitTreeDecoder, RangeDecoder, reverseDecodeFromArray } from './RangeDecoder.ts';\n\n/**\n * Length decoder for match/rep lengths\n */\nclass LenDecoder {\n private choice: Uint16Array;\n private lowCoder: BitTreeDecoder[];\n private midCoder: BitTreeDecoder[];\n private highCoder: BitTreeDecoder;\n private numPosStates: number;\n\n constructor() {\n this.choice = initBitModels(null, 2);\n this.lowCoder = [];\n this.midCoder = [];\n this.highCoder = new BitTreeDecoder(8);\n this.numPosStates = 0;\n }\n\n create(numPosStates: number): void {\n for (; this.numPosStates < numPosStates; this.numPosStates++) {\n this.lowCoder[this.numPosStates] = new BitTreeDecoder(3);\n this.midCoder[this.numPosStates] = new BitTreeDecoder(3);\n }\n }\n\n init(): void {\n initBitModels(this.choice);\n for (let i = this.numPosStates - 1; i >= 0; i--) {\n this.lowCoder[i].init();\n this.midCoder[i].init();\n }\n this.highCoder.init();\n }\n\n decode(rangeDecoder: RangeDecoder, posState: number): number {\n if (rangeDecoder.decodeBit(this.choice, 0) === 0) {\n return this.lowCoder[posState].decode(rangeDecoder);\n }\n if (rangeDecoder.decodeBit(this.choice, 1) === 0) {\n return 8 + this.midCoder[posState].decode(rangeDecoder);\n }\n return 16 + this.highCoder.decode(rangeDecoder);\n }\n}\n\n/**\n * Single literal decoder (decodes one byte)\n */\nclass LiteralDecoder2 {\n private decoders: Uint16Array;\n\n constructor() {\n this.decoders = initBitModels(null, 0x300);\n }\n\n init(): void {\n initBitModels(this.decoders);\n }\n\n decodeNormal(rangeDecoder: RangeDecoder): number {\n let symbol = 1;\n do {\n symbol = (symbol << 1) | rangeDecoder.decodeBit(this.decoders, symbol);\n } while (symbol < 0x100);\n return symbol & 0xff;\n }\n\n decodeWithMatchByte(rangeDecoder: RangeDecoder, matchByte: number): number {\n let symbol = 1;\n do {\n const matchBit = (matchByte >> 7) & 1;\n matchByte <<= 1;\n const bit = rangeDecoder.decodeBit(this.decoders, ((1 + matchBit) << 8) + symbol);\n symbol = (symbol << 1) | bit;\n if (matchBit !== bit) {\n while (symbol < 0x100) {\n symbol = (symbol << 1) | rangeDecoder.decodeBit(this.decoders, symbol);\n }\n break;\n }\n } while (symbol < 0x100);\n return symbol & 0xff;\n }\n}\n\n/**\n * Literal decoder (array of single decoders)\n */\nclass LiteralDecoder {\n private numPosBits: number;\n private numPrevBits: number;\n private posMask: number;\n private coders: (LiteralDecoder2 | undefined)[];\n\n constructor() {\n this.numPosBits = 0;\n this.numPrevBits = 0;\n this.posMask = 0;\n this.coders = [];\n }\n\n create(numPosBits: number, numPrevBits: number): void {\n if (this.coders.length > 0 && this.numPrevBits === numPrevBits && this.numPosBits === numPosBits) {\n return;\n }\n this.numPosBits = numPosBits;\n this.posMask = (1 << numPosBits) - 1;\n this.numPrevBits = numPrevBits;\n this.coders = [];\n }\n\n init(): void {\n for (let i = 0; i < this.coders.length; i++) {\n if (this.coders[i]) {\n this.coders[i]?.init();\n }\n }\n }\n\n getDecoder(pos: number, prevByte: number): LiteralDecoder2 {\n const index = ((pos & this.posMask) << this.numPrevBits) + ((prevByte & 0xff) >>> (8 - this.numPrevBits));\n let decoder = this.coders[index];\n if (!decoder) {\n decoder = new LiteralDecoder2();\n this.coders[index] = decoder;\n }\n return decoder;\n }\n}\n\n/**\n * Output window (sliding dictionary)\n */\nclass OutWindow {\n private buffer: Buffer;\n private windowSize: number;\n private pos: number;\n\n constructor() {\n this.buffer = allocBufferUnsafe(0); // Replaced by create() before use\n this.windowSize = 0;\n this.pos = 0;\n }\n\n create(windowSize: number): void {\n if (!this.buffer || this.windowSize !== windowSize) {\n this.buffer = allocBufferUnsafe(windowSize);\n }\n this.windowSize = windowSize;\n this.pos = 0;\n }\n\n init(solid: boolean): void {\n if (!solid) {\n this.pos = 0;\n }\n }\n\n putByte(b: number): void {\n this.buffer[this.pos++] = b;\n if (this.pos >= this.windowSize) {\n this.pos = 0;\n }\n }\n\n getByte(distance: number): number {\n let pos = this.pos - distance - 1;\n if (pos < 0) {\n pos += this.windowSize;\n }\n return this.buffer[pos];\n }\n\n copyBlock(distance: number, len: number): void {\n let pos = this.pos - distance - 1;\n if (pos < 0) {\n pos += this.windowSize;\n }\n for (let i = 0; i < len; i++) {\n if (pos >= this.windowSize) {\n pos = 0;\n }\n this.putByte(this.buffer[pos++]);\n }\n }\n\n /**\n * Copy decoded data to output buffer\n */\n copyTo(output: Buffer, outputOffset: number, count: number): void {\n const srcPos = this.pos - count;\n if (srcPos < 0) {\n // Wrap around case - data spans end and beginning of buffer\n const firstPart = -srcPos;\n this.buffer.copy(output, outputOffset, this.windowSize + srcPos, this.windowSize);\n this.buffer.copy(output, outputOffset + firstPart, 0, count - firstPart);\n } else {\n this.buffer.copy(output, outputOffset, srcPos, srcPos + count);\n }\n }\n}\n\n/**\n * Synchronous LZMA1 decoder\n */\nexport class LzmaDecoder {\n private outWindow: OutWindow;\n private rangeDecoder: RangeDecoder;\n\n // Probability models\n private isMatchDecoders: Uint16Array;\n private isRepDecoders: Uint16Array;\n private isRepG0Decoders: Uint16Array;\n private isRepG1Decoders: Uint16Array;\n private isRepG2Decoders: Uint16Array;\n private isRep0LongDecoders: Uint16Array;\n private posSlotDecoder: BitTreeDecoder[];\n private posDecoders: Uint16Array;\n private posAlignDecoder: BitTreeDecoder;\n private lenDecoder: LenDecoder;\n private repLenDecoder: LenDecoder;\n private literalDecoder: LiteralDecoder;\n\n // Properties\n private dictionarySize: number;\n private dictionarySizeCheck: number;\n private posStateMask: number;\n\n // State (preserved across solid calls)\n private state: number;\n private rep0: number;\n private rep1: number;\n private rep2: number;\n private rep3: number;\n private prevByte: number;\n private totalPos: number;\n\n constructor() {\n this.outWindow = new OutWindow();\n this.rangeDecoder = new RangeDecoder();\n\n this.isMatchDecoders = initBitModels(null, kNumStates << kNumPosStatesBitsMax);\n this.isRepDecoders = initBitModels(null, kNumStates);\n this.isRepG0Decoders = initBitModels(null, kNumStates);\n this.isRepG1Decoders = initBitModels(null, kNumStates);\n this.isRepG2Decoders = initBitModels(null, kNumStates);\n this.isRep0LongDecoders = initBitModels(null, kNumStates << kNumPosStatesBitsMax);\n this.posSlotDecoder = [];\n this.posDecoders = initBitModels(null, kNumFullDistances - kEndPosModelIndex);\n this.posAlignDecoder = new BitTreeDecoder(kNumAlignBits);\n this.lenDecoder = new LenDecoder();\n this.repLenDecoder = new LenDecoder();\n this.literalDecoder = new LiteralDecoder();\n\n for (let i = 0; i < kNumLenToPosStates; i++) {\n this.posSlotDecoder[i] = new BitTreeDecoder(kNumPosSlotBits);\n }\n\n this.dictionarySize = -1;\n this.dictionarySizeCheck = -1;\n this.posStateMask = 0;\n\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n this.prevByte = 0;\n this.totalPos = 0;\n }\n\n /**\n * Set dictionary size\n */\n setDictionarySize(dictionarySize: number): boolean {\n if (dictionarySize < 0) return false;\n if (this.dictionarySize !== dictionarySize) {\n this.dictionarySize = dictionarySize;\n this.dictionarySizeCheck = Math.max(dictionarySize, 1);\n this.outWindow.create(Math.max(this.dictionarySizeCheck, 1 << 12));\n }\n return true;\n }\n\n /**\n * Set lc, lp, pb properties\n */\n setLcLpPb(lc: number, lp: number, pb: number): boolean {\n if (lc > kNumLitContextBitsMax || lp > 4 || pb > kNumPosStatesBitsMax) {\n return false;\n }\n const numPosStates = 1 << pb;\n this.literalDecoder.create(lp, lc);\n this.lenDecoder.create(numPosStates);\n this.repLenDecoder.create(numPosStates);\n this.posStateMask = numPosStates - 1;\n return true;\n }\n\n /**\n * Set decoder properties from 5-byte buffer\n */\n setDecoderProperties(properties: Buffer | Uint8Array): boolean {\n const props = parseProperties(properties);\n if (!this.setLcLpPb(props.lc, props.lp, props.pb)) return false;\n return this.setDictionarySize(props.dictionarySize);\n }\n\n /**\n * Initialize probability tables\n */\n private initProbabilities(): void {\n initBitModels(this.isMatchDecoders);\n initBitModels(this.isRepDecoders);\n initBitModels(this.isRepG0Decoders);\n initBitModels(this.isRepG1Decoders);\n initBitModels(this.isRepG2Decoders);\n initBitModels(this.isRep0LongDecoders);\n initBitModels(this.posDecoders);\n this.literalDecoder.init();\n for (let i = kNumLenToPosStates - 1; i >= 0; i--) {\n this.posSlotDecoder[i].init();\n }\n this.lenDecoder.init();\n this.repLenDecoder.init();\n this.posAlignDecoder.init();\n }\n\n /**\n * Reset probabilities only (for LZMA2 state reset)\n */\n resetProbabilities(): void {\n this.initProbabilities();\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n }\n\n /**\n * Reset dictionary position (for LZMA2 dictionary reset)\n */\n resetDictionary(): void {\n this.outWindow.init(false);\n this.totalPos = 0;\n }\n\n /**\n * Feed uncompressed data into the dictionary (for LZMA2 uncompressed chunks)\n * This updates the sliding window so subsequent LZMA chunks can reference this data.\n */\n feedUncompressed(data: Buffer): void {\n for (let i = 0; i < data.length; i++) {\n this.outWindow.putByte(data[i]);\n }\n this.totalPos += data.length;\n if (data.length > 0) {\n this.prevByte = data[data.length - 1];\n }\n }\n\n /**\n * Decode LZMA data\n * @param input - Compressed input buffer\n * @param inputOffset - Offset into input buffer\n * @param outSize - Expected output size\n * @param solid - If true, preserve state from previous decode\n * @returns Decompressed data\n */\n decode(input: Buffer, inputOffset: number, outSize: number, solid = false): Buffer {\n this.rangeDecoder.setInput(input, inputOffset);\n\n if (!solid) {\n this.outWindow.init(false);\n this.initProbabilities();\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n this.prevByte = 0;\n this.totalPos = 0;\n } else {\n // Solid mode: preserve dictionary state but reinitialize range decoder\n this.outWindow.init(true);\n }\n\n const output = allocBufferUnsafe(outSize);\n let outPos = 0;\n let cumPos = this.totalPos;\n\n while (outPos < outSize) {\n const posState = cumPos & this.posStateMask;\n\n if (this.rangeDecoder.decodeBit(this.isMatchDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n // Literal\n const decoder2 = this.literalDecoder.getDecoder(cumPos, this.prevByte);\n if (!stateIsCharState(this.state)) {\n this.prevByte = decoder2.decodeWithMatchByte(this.rangeDecoder, this.outWindow.getByte(this.rep0));\n } else {\n this.prevByte = decoder2.decodeNormal(this.rangeDecoder);\n }\n this.outWindow.putByte(this.prevByte);\n output[outPos++] = this.prevByte;\n this.state = stateUpdateChar(this.state);\n cumPos++;\n } else {\n // Match or rep\n let len: number;\n\n if (this.rangeDecoder.decodeBit(this.isRepDecoders, this.state) === 1) {\n // Rep match\n len = 0;\n if (this.rangeDecoder.decodeBit(this.isRepG0Decoders, this.state) === 0) {\n if (this.rangeDecoder.decodeBit(this.isRep0LongDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n this.state = stateUpdateShortRep(this.state);\n len = 1;\n }\n } else {\n let distance: number;\n if (this.rangeDecoder.decodeBit(this.isRepG1Decoders, this.state) === 0) {\n distance = this.rep1;\n } else {\n if (this.rangeDecoder.decodeBit(this.isRepG2Decoders, this.state) === 0) {\n distance = this.rep2;\n } else {\n distance = this.rep3;\n this.rep3 = this.rep2;\n }\n this.rep2 = this.rep1;\n }\n this.rep1 = this.rep0;\n this.rep0 = distance;\n }\n if (len === 0) {\n len = kMatchMinLen + this.repLenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateRep(this.state);\n }\n } else {\n // Normal match\n this.rep3 = this.rep2;\n this.rep2 = this.rep1;\n this.rep1 = this.rep0;\n len = kMatchMinLen + this.lenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateMatch(this.state);\n\n const posSlot = this.posSlotDecoder[getLenToPosState(len)].decode(this.rangeDecoder);\n if (posSlot >= kStartPosModelIndex) {\n const numDirectBits = (posSlot >> 1) - 1;\n this.rep0 = (2 | (posSlot & 1)) << numDirectBits;\n if (posSlot < kEndPosModelIndex) {\n this.rep0 += reverseDecodeFromArray(this.posDecoders, this.rep0 - posSlot - 1, this.rangeDecoder, numDirectBits);\n } else {\n this.rep0 += this.rangeDecoder.decodeDirectBits(numDirectBits - kNumAlignBits) << kNumAlignBits;\n this.rep0 += this.posAlignDecoder.reverseDecode(this.rangeDecoder);\n if (this.rep0 < 0) {\n if (this.rep0 === -1) break; // End marker\n throw new Error('LZMA: Invalid distance');\n }\n }\n } else {\n this.rep0 = posSlot;\n }\n }\n\n if (this.rep0 >= cumPos || this.rep0 >= this.dictionarySizeCheck) {\n throw new Error('LZMA: Invalid distance');\n }\n\n // Copy match bytes\n for (let i = 0; i < len; i++) {\n const b = this.outWindow.getByte(this.rep0);\n this.outWindow.putByte(b);\n output[outPos++] = b;\n }\n cumPos += len;\n this.prevByte = this.outWindow.getByte(0);\n }\n }\n\n this.totalPos = cumPos;\n return output;\n }\n}\n\n/**\n * Decode LZMA1 data synchronously\n * @param input - Compressed data (without 5-byte properties header)\n * @param properties - 5-byte LZMA properties\n * @param outSize - Expected output size\n * @returns Decompressed data\n */\nexport function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number): Buffer {\n const decoder = new LzmaDecoder();\n decoder.setDecoderProperties(properties);\n return decoder.decode(input, 0, outSize, false);\n}\n"],"names":["LzmaDecoder","decodeLzma","LenDecoder","choice","initBitModels","lowCoder","midCoder","highCoder","BitTreeDecoder","numPosStates","create","init","i","decode","rangeDecoder","posState","decodeBit","LiteralDecoder2","decoders","decodeNormal","symbol","decodeWithMatchByte","matchByte","matchBit","bit","LiteralDecoder","numPosBits","numPrevBits","posMask","coders","length","getDecoder","pos","prevByte","index","decoder","OutWindow","buffer","allocBufferUnsafe","windowSize","solid","putByte","b","getByte","distance","copyBlock","len","copyTo","output","outputOffset","count","srcPos","firstPart","copy","outWindow","RangeDecoder","isMatchDecoders","kNumStates","kNumPosStatesBitsMax","isRepDecoders","isRepG0Decoders","isRepG1Decoders","isRepG2Decoders","isRep0LongDecoders","posSlotDecoder","posDecoders","kNumFullDistances","kEndPosModelIndex","posAlignDecoder","kNumAlignBits","lenDecoder","repLenDecoder","literalDecoder","kNumLenToPosStates","kNumPosSlotBits","dictionarySize","dictionarySizeCheck","posStateMask","state","rep0","rep1","rep2","rep3","totalPos","setDictionarySize","Math","max","setLcLpPb","lc","lp","pb","kNumLitContextBitsMax","setDecoderProperties","properties","props","parseProperties","initProbabilities","resetProbabilities","resetDictionary","feedUncompressed","data","input","inputOffset","outSize","setInput","outPos","cumPos","decoder2","stateIsCharState","stateUpdateChar","stateUpdateShortRep","kMatchMinLen","stateUpdateRep","stateUpdateMatch","posSlot","getLenToPosState","kStartPosModelIndex","numDirectBits","reverseDecodeFromArray","decodeDirectBits","reverseDecode","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/sync/LzmaDecoder.ts"],"sourcesContent":["/**\n * Synchronous LZMA1 Decoder\n *\n * Decodes LZMA1 compressed data from a buffer.\n * All operations are synchronous.\n */\n\nimport { allocBufferUnsafe } from 'extract-base-iterator';\nimport {\n getLenToPosState,\n initBitModels,\n kEndPosModelIndex,\n kMatchMinLen,\n kNumAlignBits,\n kNumFullDistances,\n kNumLenToPosStates,\n kNumLitContextBitsMax,\n kNumPosSlotBits,\n kNumPosStatesBitsMax,\n kNumStates,\n kStartPosModelIndex,\n type OutputSink,\n parseProperties,\n stateIsCharState,\n stateUpdateChar,\n stateUpdateMatch,\n stateUpdateRep,\n stateUpdateShortRep,\n} from '../types.ts';\nimport { BitTreeDecoder, RangeDecoder, reverseDecodeFromArray } from './RangeDecoder.ts';\n\n/**\n * Length decoder for match/rep lengths\n */\nclass LenDecoder {\n private choice: Uint16Array;\n private lowCoder: BitTreeDecoder[];\n private midCoder: BitTreeDecoder[];\n private highCoder: BitTreeDecoder;\n private numPosStates: number;\n\n constructor() {\n this.choice = initBitModels(null, 2);\n this.lowCoder = [];\n this.midCoder = [];\n this.highCoder = new BitTreeDecoder(8);\n this.numPosStates = 0;\n }\n\n create(numPosStates: number): void {\n for (; this.numPosStates < numPosStates; this.numPosStates++) {\n this.lowCoder[this.numPosStates] = new BitTreeDecoder(3);\n this.midCoder[this.numPosStates] = new BitTreeDecoder(3);\n }\n }\n\n init(): void {\n initBitModels(this.choice);\n for (let i = this.numPosStates - 1; i >= 0; i--) {\n this.lowCoder[i].init();\n this.midCoder[i].init();\n }\n this.highCoder.init();\n }\n\n decode(rangeDecoder: RangeDecoder, posState: number): number {\n if (rangeDecoder.decodeBit(this.choice, 0) === 0) {\n return this.lowCoder[posState].decode(rangeDecoder);\n }\n if (rangeDecoder.decodeBit(this.choice, 1) === 0) {\n return 8 + this.midCoder[posState].decode(rangeDecoder);\n }\n return 16 + this.highCoder.decode(rangeDecoder);\n }\n}\n\n/**\n * Single literal decoder (decodes one byte)\n */\nclass LiteralDecoder2 {\n private decoders: Uint16Array;\n\n constructor() {\n this.decoders = initBitModels(null, 0x300);\n }\n\n init(): void {\n initBitModels(this.decoders);\n }\n\n decodeNormal(rangeDecoder: RangeDecoder): number {\n let symbol = 1;\n do {\n symbol = (symbol << 1) | rangeDecoder.decodeBit(this.decoders, symbol);\n } while (symbol < 0x100);\n return symbol & 0xff;\n }\n\n decodeWithMatchByte(rangeDecoder: RangeDecoder, matchByte: number): number {\n let symbol = 1;\n do {\n const matchBit = (matchByte >> 7) & 1;\n matchByte <<= 1;\n const bit = rangeDecoder.decodeBit(this.decoders, ((1 + matchBit) << 8) + symbol);\n symbol = (symbol << 1) | bit;\n if (matchBit !== bit) {\n while (symbol < 0x100) {\n symbol = (symbol << 1) | rangeDecoder.decodeBit(this.decoders, symbol);\n }\n break;\n }\n } while (symbol < 0x100);\n return symbol & 0xff;\n }\n}\n\n/**\n * Literal decoder (array of single decoders)\n */\nclass LiteralDecoder {\n private numPosBits: number;\n private numPrevBits: number;\n private posMask: number;\n private coders: (LiteralDecoder2 | undefined)[];\n\n constructor() {\n this.numPosBits = 0;\n this.numPrevBits = 0;\n this.posMask = 0;\n this.coders = [];\n }\n\n create(numPosBits: number, numPrevBits: number): void {\n if (this.coders.length > 0 && this.numPrevBits === numPrevBits && this.numPosBits === numPosBits) {\n return;\n }\n this.numPosBits = numPosBits;\n this.posMask = (1 << numPosBits) - 1;\n this.numPrevBits = numPrevBits;\n this.coders = [];\n }\n\n init(): void {\n for (let i = 0; i < this.coders.length; i++) {\n if (this.coders[i]) {\n this.coders[i]?.init();\n }\n }\n }\n\n getDecoder(pos: number, prevByte: number): LiteralDecoder2 {\n const index = ((pos & this.posMask) << this.numPrevBits) + ((prevByte & 0xff) >>> (8 - this.numPrevBits));\n let decoder = this.coders[index];\n if (!decoder) {\n decoder = new LiteralDecoder2();\n this.coders[index] = decoder;\n }\n return decoder;\n }\n}\n\n/**\n * Output window (sliding dictionary)\n */\nclass OutWindow {\n private buffer: Buffer;\n private windowSize: number;\n private pos: number;\n private sink?: {\n write(buffer: Buffer): void;\n };\n private streamPos: number;\n\n constructor(sink?: OutputSink) {\n this.buffer = allocBufferUnsafe(0); // Replaced by create() before use\n this.windowSize = 0;\n this.pos = 0;\n this.sink = sink;\n this.streamPos = 0;\n }\n\n create(windowSize: number): void {\n if (!this.buffer || this.windowSize !== windowSize) {\n this.buffer = allocBufferUnsafe(windowSize);\n }\n this.windowSize = windowSize;\n this.pos = 0;\n this.streamPos = 0;\n }\n\n init(solid: boolean): void {\n if (!solid) {\n this.pos = 0;\n this.streamPos = 0;\n }\n }\n\n putByte(b: number): void {\n this.buffer[this.pos++] = b;\n if (this.pos >= this.windowSize) {\n if (this.sink) {\n this.flush();\n this.pos = 0;\n } else {\n this.pos = 0;\n }\n }\n }\n\n flush(): void {\n const size = this.pos - this.streamPos;\n if (size > 0 && this.sink) {\n const chunk = this.buffer.slice(this.streamPos, this.streamPos + size);\n this.sink.write(chunk);\n this.streamPos = this.pos;\n }\n }\n\n getByte(distance: number): number {\n let pos = this.pos - distance - 1;\n if (pos < 0) {\n pos += this.windowSize;\n }\n return this.buffer[pos];\n }\n\n copyBlock(distance: number, len: number): void {\n let pos = this.pos - distance - 1;\n if (pos < 0) {\n pos += this.windowSize;\n }\n for (let i = 0; i < len; i++) {\n if (pos >= this.windowSize) {\n pos = 0;\n }\n this.putByte(this.buffer[pos++]);\n }\n }\n\n /**\n * Copy decoded data to output buffer\n */\n copyTo(output: Buffer, outputOffset: number, count: number): void {\n const srcPos = this.pos - count;\n if (srcPos < 0) {\n // Wrap around case - data spans end and beginning of buffer\n const firstPart = -srcPos;\n this.buffer.copy(output, outputOffset, this.windowSize + srcPos, this.windowSize);\n this.buffer.copy(output, outputOffset + firstPart, 0, count - firstPart);\n } else {\n this.buffer.copy(output, outputOffset, srcPos, srcPos + count);\n }\n }\n}\n\n/**\n * Synchronous LZMA1 decoder\n */\nexport class LzmaDecoder {\n private outWindow: OutWindow;\n private rangeDecoder: RangeDecoder;\n\n // Probability models\n private isMatchDecoders: Uint16Array;\n private isRepDecoders: Uint16Array;\n private isRepG0Decoders: Uint16Array;\n private isRepG1Decoders: Uint16Array;\n private isRepG2Decoders: Uint16Array;\n private isRep0LongDecoders: Uint16Array;\n private posSlotDecoder: BitTreeDecoder[];\n private posDecoders: Uint16Array;\n private posAlignDecoder: BitTreeDecoder;\n private lenDecoder: LenDecoder;\n private repLenDecoder: LenDecoder;\n private literalDecoder: LiteralDecoder;\n\n // Properties\n private dictionarySize: number;\n private dictionarySizeCheck: number;\n private posStateMask: number;\n\n // State (preserved across solid calls)\n private state: number;\n private rep0: number;\n private rep1: number;\n private rep2: number;\n private rep3: number;\n private prevByte: number;\n private totalPos: number;\n\n constructor(outputSink?: OutputSink) {\n this.outWindow = new OutWindow(outputSink);\n this.rangeDecoder = new RangeDecoder();\n\n this.isMatchDecoders = initBitModels(null, kNumStates << kNumPosStatesBitsMax);\n this.isRepDecoders = initBitModels(null, kNumStates);\n this.isRepG0Decoders = initBitModels(null, kNumStates);\n this.isRepG1Decoders = initBitModels(null, kNumStates);\n this.isRepG2Decoders = initBitModels(null, kNumStates);\n this.isRep0LongDecoders = initBitModels(null, kNumStates << kNumPosStatesBitsMax);\n this.posSlotDecoder = [];\n this.posDecoders = initBitModels(null, kNumFullDistances - kEndPosModelIndex);\n this.posAlignDecoder = new BitTreeDecoder(kNumAlignBits);\n this.lenDecoder = new LenDecoder();\n this.repLenDecoder = new LenDecoder();\n this.literalDecoder = new LiteralDecoder();\n\n for (let i = 0; i < kNumLenToPosStates; i++) {\n this.posSlotDecoder[i] = new BitTreeDecoder(kNumPosSlotBits);\n }\n\n this.dictionarySize = -1;\n this.dictionarySizeCheck = -1;\n this.posStateMask = 0;\n\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n this.prevByte = 0;\n this.totalPos = 0;\n }\n\n /**\n * Set dictionary size\n */\n setDictionarySize(dictionarySize: number): boolean {\n if (dictionarySize < 0) return false;\n if (this.dictionarySize !== dictionarySize) {\n this.dictionarySize = dictionarySize;\n this.dictionarySizeCheck = Math.max(dictionarySize, 1);\n this.outWindow.create(Math.max(this.dictionarySizeCheck, 1 << 12));\n }\n return true;\n }\n\n /**\n * Set lc, lp, pb properties\n */\n setLcLpPb(lc: number, lp: number, pb: number): boolean {\n if (lc > kNumLitContextBitsMax || lp > 4 || pb > kNumPosStatesBitsMax) {\n return false;\n }\n const numPosStates = 1 << pb;\n this.literalDecoder.create(lp, lc);\n this.lenDecoder.create(numPosStates);\n this.repLenDecoder.create(numPosStates);\n this.posStateMask = numPosStates - 1;\n return true;\n }\n\n /**\n * Set decoder properties from 5-byte buffer\n */\n setDecoderProperties(properties: Buffer | Uint8Array): boolean {\n const props = parseProperties(properties);\n if (!this.setLcLpPb(props.lc, props.lp, props.pb)) return false;\n return this.setDictionarySize(props.dictionarySize);\n }\n\n /**\n * Initialize probability tables\n */\n private initProbabilities(): void {\n initBitModels(this.isMatchDecoders);\n initBitModels(this.isRepDecoders);\n initBitModels(this.isRepG0Decoders);\n initBitModels(this.isRepG1Decoders);\n initBitModels(this.isRepG2Decoders);\n initBitModels(this.isRep0LongDecoders);\n initBitModels(this.posDecoders);\n this.literalDecoder.init();\n for (let i = kNumLenToPosStates - 1; i >= 0; i--) {\n this.posSlotDecoder[i].init();\n }\n this.lenDecoder.init();\n this.repLenDecoder.init();\n this.posAlignDecoder.init();\n }\n\n /**\n * Reset probabilities only (for LZMA2 state reset)\n */\n resetProbabilities(): void {\n this.initProbabilities();\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n }\n\n /**\n * Reset dictionary position (for LZMA2 dictionary reset)\n */\n resetDictionary(): void {\n this.outWindow.init(false);\n this.totalPos = 0;\n }\n\n /**\n * Feed uncompressed data into the dictionary (for LZMA2 uncompressed chunks)\n * This updates the sliding window so subsequent LZMA chunks can reference this data.\n */\n feedUncompressed(data: Buffer): void {\n for (let i = 0; i < data.length; i++) {\n this.outWindow.putByte(data[i]);\n }\n this.totalPos += data.length;\n if (data.length > 0) {\n this.prevByte = data[data.length - 1];\n }\n }\n\n /**\n * Flush any remaining data in the OutWindow to the sink\n */\n flushOutWindow(): void {\n this.outWindow.flush();\n }\n\n /**\n * Decode LZMA data with streaming output (no buffer accumulation)\n * @param input - Compressed input buffer\n * @param inputOffset - Offset into input buffer\n * @param outSize - Expected output size\n * @param solid - If true, preserve state from previous decode\n * @returns Number of bytes written to sink\n */\n decodeWithSink(input: Buffer, inputOffset: number, outSize: number, solid = false): number {\n this.rangeDecoder.setInput(input, inputOffset);\n\n if (!solid) {\n this.outWindow.init(false);\n this.initProbabilities();\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n this.prevByte = 0;\n this.totalPos = 0;\n } else {\n this.outWindow.init(true);\n }\n\n let outPos = 0;\n let cumPos = this.totalPos;\n\n while (outPos < outSize) {\n const posState = cumPos & this.posStateMask;\n\n if (this.rangeDecoder.decodeBit(this.isMatchDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n // Literal\n const decoder2 = this.literalDecoder.getDecoder(cumPos, this.prevByte);\n if (!stateIsCharState(this.state)) {\n this.prevByte = decoder2.decodeWithMatchByte(this.rangeDecoder, this.outWindow.getByte(this.rep0));\n } else {\n this.prevByte = decoder2.decodeNormal(this.rangeDecoder);\n }\n this.outWindow.putByte(this.prevByte);\n outPos++;\n this.state = stateUpdateChar(this.state);\n cumPos++;\n } else {\n // Match or rep\n let len: number;\n\n if (this.rangeDecoder.decodeBit(this.isRepDecoders, this.state) === 1) {\n // Rep match\n len = 0;\n if (this.rangeDecoder.decodeBit(this.isRepG0Decoders, this.state) === 0) {\n if (this.rangeDecoder.decodeBit(this.isRep0LongDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n this.state = stateUpdateShortRep(this.state);\n len = 1;\n }\n } else {\n let distance: number;\n if (this.rangeDecoder.decodeBit(this.isRepG1Decoders, this.state) === 0) {\n distance = this.rep1;\n } else {\n if (this.rangeDecoder.decodeBit(this.isRepG2Decoders, this.state) === 0) {\n distance = this.rep2;\n } else {\n distance = this.rep3;\n this.rep3 = this.rep2;\n }\n this.rep2 = this.rep1;\n }\n this.rep1 = this.rep0;\n this.rep0 = distance;\n }\n if (len === 0) {\n len = kMatchMinLen + this.repLenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateRep(this.state);\n }\n } else {\n // Normal match\n this.rep3 = this.rep2;\n this.rep2 = this.rep1;\n this.rep1 = this.rep0;\n len = kMatchMinLen + this.lenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateMatch(this.state);\n\n const posSlot = this.posSlotDecoder[getLenToPosState(len)].decode(this.rangeDecoder);\n if (posSlot >= kStartPosModelIndex) {\n const numDirectBits = (posSlot >> 1) - 1;\n this.rep0 = (2 | (posSlot & 1)) << numDirectBits;\n if (posSlot < kEndPosModelIndex) {\n this.rep0 += reverseDecodeFromArray(this.posDecoders, this.rep0 - posSlot - 1, this.rangeDecoder, numDirectBits);\n } else {\n this.rep0 += this.rangeDecoder.decodeDirectBits(numDirectBits - kNumAlignBits) << kNumAlignBits;\n this.rep0 += this.posAlignDecoder.reverseDecode(this.rangeDecoder);\n if (this.rep0 < 0) {\n if (this.rep0 === -1) break;\n throw new Error('LZMA: Invalid distance');\n }\n }\n } else {\n this.rep0 = posSlot;\n }\n }\n\n if (this.rep0 >= cumPos || this.rep0 >= this.dictionarySizeCheck) {\n throw new Error('LZMA: Invalid distance');\n }\n\n // Copy match bytes\n for (let i = 0; i < len; i++) {\n const b = this.outWindow.getByte(this.rep0);\n this.outWindow.putByte(b);\n outPos++;\n }\n cumPos += len;\n this.prevByte = this.outWindow.getByte(0);\n }\n }\n\n this.totalPos = cumPos;\n return outPos;\n }\n\n /**\n * Decode LZMA data\n * @param input - Compressed input buffer\n * @param inputOffset - Offset into input buffer\n * @param outSize - Expected output size\n * @param solid - If true, preserve state from previous decode\n * @returns Decompressed data\n */\n decode(input: Buffer, inputOffset: number, outSize: number, solid = false): Buffer {\n this.rangeDecoder.setInput(input, inputOffset);\n\n if (!solid) {\n this.outWindow.init(false);\n this.initProbabilities();\n this.state = 0;\n this.rep0 = 0;\n this.rep1 = 0;\n this.rep2 = 0;\n this.rep3 = 0;\n this.prevByte = 0;\n this.totalPos = 0;\n } else {\n // Solid mode: preserve dictionary state but reinitialize range decoder\n this.outWindow.init(true);\n }\n\n const output = allocBufferUnsafe(outSize);\n let outPos = 0;\n let cumPos = this.totalPos;\n\n while (outPos < outSize) {\n const posState = cumPos & this.posStateMask;\n\n if (this.rangeDecoder.decodeBit(this.isMatchDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n // Literal\n const decoder2 = this.literalDecoder.getDecoder(cumPos, this.prevByte);\n if (!stateIsCharState(this.state)) {\n this.prevByte = decoder2.decodeWithMatchByte(this.rangeDecoder, this.outWindow.getByte(this.rep0));\n } else {\n this.prevByte = decoder2.decodeNormal(this.rangeDecoder);\n }\n this.outWindow.putByte(this.prevByte);\n output[outPos++] = this.prevByte;\n this.state = stateUpdateChar(this.state);\n cumPos++;\n } else {\n // Match or rep\n let len: number;\n\n if (this.rangeDecoder.decodeBit(this.isRepDecoders, this.state) === 1) {\n // Rep match\n len = 0;\n if (this.rangeDecoder.decodeBit(this.isRepG0Decoders, this.state) === 0) {\n if (this.rangeDecoder.decodeBit(this.isRep0LongDecoders, (this.state << kNumPosStatesBitsMax) + posState) === 0) {\n this.state = stateUpdateShortRep(this.state);\n len = 1;\n }\n } else {\n let distance: number;\n if (this.rangeDecoder.decodeBit(this.isRepG1Decoders, this.state) === 0) {\n distance = this.rep1;\n } else {\n if (this.rangeDecoder.decodeBit(this.isRepG2Decoders, this.state) === 0) {\n distance = this.rep2;\n } else {\n distance = this.rep3;\n this.rep3 = this.rep2;\n }\n this.rep2 = this.rep1;\n }\n this.rep1 = this.rep0;\n this.rep0 = distance;\n }\n if (len === 0) {\n len = kMatchMinLen + this.repLenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateRep(this.state);\n }\n } else {\n // Normal match\n this.rep3 = this.rep2;\n this.rep2 = this.rep1;\n this.rep1 = this.rep0;\n len = kMatchMinLen + this.lenDecoder.decode(this.rangeDecoder, posState);\n this.state = stateUpdateMatch(this.state);\n\n const posSlot = this.posSlotDecoder[getLenToPosState(len)].decode(this.rangeDecoder);\n if (posSlot >= kStartPosModelIndex) {\n const numDirectBits = (posSlot >> 1) - 1;\n this.rep0 = (2 | (posSlot & 1)) << numDirectBits;\n if (posSlot < kEndPosModelIndex) {\n this.rep0 += reverseDecodeFromArray(this.posDecoders, this.rep0 - posSlot - 1, this.rangeDecoder, numDirectBits);\n } else {\n this.rep0 += this.rangeDecoder.decodeDirectBits(numDirectBits - kNumAlignBits) << kNumAlignBits;\n this.rep0 += this.posAlignDecoder.reverseDecode(this.rangeDecoder);\n if (this.rep0 < 0) {\n if (this.rep0 === -1) break; // End marker\n throw new Error('LZMA: Invalid distance');\n }\n }\n } else {\n this.rep0 = posSlot;\n }\n }\n\n if (this.rep0 >= cumPos || this.rep0 >= this.dictionarySizeCheck) {\n throw new Error('LZMA: Invalid distance');\n }\n\n // Copy match bytes\n for (let i = 0; i < len; i++) {\n const b = this.outWindow.getByte(this.rep0);\n this.outWindow.putByte(b);\n output[outPos++] = b;\n }\n cumPos += len;\n this.prevByte = this.outWindow.getByte(0);\n }\n }\n\n this.totalPos = cumPos;\n return output;\n }\n}\n\n/**\n * Decode LZMA1 data synchronously\n * @param input - Compressed data (without 5-byte properties header)\n * @param properties - 5-byte LZMA properties\n * @param outSize - Expected output size\n * @param outputSink - Optional output sink for zero-copy decoding (returns bytes written)\n * @returns Decompressed data (or bytes written if outputSink provided)\n */\nexport function decodeLzma(input: Buffer, properties: Buffer | Uint8Array, outSize: number, outputSink?: OutputSink): Buffer | number {\n const decoder = new LzmaDecoder(outputSink);\n decoder.setDecoderProperties(properties);\n if (outputSink) {\n // Zero-copy mode: write to sink during decode\n const bytesWritten = decoder.decodeWithSink(input, 0, outSize, false);\n decoder.flushOutWindow();\n return bytesWritten;\n }\n // Buffering mode: pre-allocated buffer, direct writes (zero-copy)\n return decoder.decode(input, 0, outSize, false);\n}\n"],"names":["LzmaDecoder","decodeLzma","LenDecoder","choice","initBitModels","lowCoder","midCoder","highCoder","BitTreeDecoder","numPosStates","create","init","i","decode","rangeDecoder","posState","decodeBit","LiteralDecoder2","decoders","decodeNormal","symbol","decodeWithMatchByte","matchByte","matchBit","bit","LiteralDecoder","numPosBits","numPrevBits","posMask","coders","length","getDecoder","pos","prevByte","index","decoder","OutWindow","sink","buffer","allocBufferUnsafe","windowSize","streamPos","solid","putByte","b","flush","size","chunk","slice","write","getByte","distance","copyBlock","len","copyTo","output","outputOffset","count","srcPos","firstPart","copy","outputSink","outWindow","RangeDecoder","isMatchDecoders","kNumStates","kNumPosStatesBitsMax","isRepDecoders","isRepG0Decoders","isRepG1Decoders","isRepG2Decoders","isRep0LongDecoders","posSlotDecoder","posDecoders","kNumFullDistances","kEndPosModelIndex","posAlignDecoder","kNumAlignBits","lenDecoder","repLenDecoder","literalDecoder","kNumLenToPosStates","kNumPosSlotBits","dictionarySize","dictionarySizeCheck","posStateMask","state","rep0","rep1","rep2","rep3","totalPos","setDictionarySize","Math","max","setLcLpPb","lc","lp","pb","kNumLitContextBitsMax","setDecoderProperties","properties","props","parseProperties","initProbabilities","resetProbabilities","resetDictionary","feedUncompressed","data","flushOutWindow","decodeWithSink","input","inputOffset","outSize","setInput","outPos","cumPos","decoder2","stateIsCharState","stateUpdateChar","stateUpdateShortRep","kMatchMinLen","stateUpdateRep","stateUpdateMatch","posSlot","getLenToPosState","kStartPosModelIndex","numDirectBits","reverseDecodeFromArray","decodeDirectBits","reverseDecode","Error","bytesWritten"],"mappings":"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"}
@@ -108,3 +108,10 @@ export declare function lzma2IsUncompressed(control: number): boolean;
108
108
  * Parse LZMA2 dictionary size from property byte
109
109
  */
110
110
  export declare function parseLzma2DictionarySize(prop: number): number;
111
+ /**
112
+ * Output sink interface for fast streaming decode
113
+ * Can be a Buffer (with write method) or a stream with write() method
114
+ */
115
+ export interface OutputSink {
116
+ write(buffer: Buffer): void;
117
+ }
@@ -108,3 +108,10 @@ export declare function lzma2IsUncompressed(control: number): boolean;
108
108
  * Parse LZMA2 dictionary size from property byte
109
109
  */
110
110
  export declare function parseLzma2DictionarySize(prop: number): number;
111
+ /**
112
+ * Output sink interface for fast streaming decode
113
+ * Can be a Buffer (with write method) or a stream with write() method
114
+ */
115
+ export interface OutputSink {
116
+ write(buffer: Buffer): void;
117
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/types.ts"],"sourcesContent":["/**\n * LZMA Types and Constants\n *\n * Shared types, constants, and state transition functions for LZMA decoding.\n * Based on the LZMA SDK specification.\n */\n\n// LZMA State Machine Constants\nexport const kNumRepDistances = 4;\nexport const kNumStates = 12;\n\n// Position slot constants\nexport const kNumPosSlotBits = 6;\nexport const kDicLogSizeMin = 0;\nexport const kNumLenToPosStatesBits = 2;\nexport const kNumLenToPosStates = 1 << kNumLenToPosStatesBits; // 4\n\n// Match length constants\nexport const kMatchMinLen = 2;\nexport const kNumLowLenBits = 3;\nexport const kNumMidLenBits = 3;\nexport const kNumHighLenBits = 8;\nexport const kNumLowLenSymbols = 1 << kNumLowLenBits; // 8\nexport const kNumMidLenSymbols = 1 << kNumMidLenBits; // 8\nexport const kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols + (1 << kNumHighLenBits); // 272\nexport const kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1; // 273\n\n// Alignment constants\nexport const kNumAlignBits = 4;\nexport const kAlignTableSize = 1 << kNumAlignBits; // 16\nexport const kAlignMask = kAlignTableSize - 1; // 15\n\n// Position model constants\nexport const kStartPosModelIndex = 4;\nexport const kEndPosModelIndex = 14;\nexport const kNumPosModels = kEndPosModelIndex - kStartPosModelIndex; // 10\nexport const kNumFullDistances = 1 << (kEndPosModelIndex >>> 1); // 128\n\n// Literal/pos state constants\nexport const kNumLitPosStatesBitsEncodingMax = 4;\nexport const kNumLitContextBitsMax = 8;\nexport const kNumPosStatesBitsMax = 4;\nexport const kNumPosStatesMax = 1 << kNumPosStatesBitsMax; // 16\nexport const kNumPosStatesBitsEncodingMax = 4;\nexport const kNumPosStatesEncodingMax = 1 << kNumPosStatesBitsEncodingMax; // 16\n\n// Range coder probability constants\nexport const kNumBitModelTotalBits = 11;\nexport const kBitModelTotal = 1 << kNumBitModelTotalBits; // 2048\nexport const kNumMoveBits = 5;\nexport const kProbInitValue = kBitModelTotal >>> 1; // 1024\n\n/**\n * State transition: after literal byte\n */\nexport function stateUpdateChar(state: number): number {\n if (state < 4) return 0;\n if (state < 10) return state - 3;\n return state - 6;\n}\n\n/**\n * State transition: after match\n */\nexport function stateUpdateMatch(state: number): number {\n return state < 7 ? 7 : 10;\n}\n\n/**\n * State transition: after rep (repeated match)\n */\nexport function stateUpdateRep(state: number): number {\n return state < 7 ? 8 : 11;\n}\n\n/**\n * State transition: after short rep\n */\nexport function stateUpdateShortRep(state: number): number {\n return state < 7 ? 9 : 11;\n}\n\n/**\n * Check if state indicates previous symbol was a character (literal)\n */\nexport function stateIsCharState(state: number): boolean {\n return state < 7;\n}\n\n/**\n * Get length-to-position state index\n */\nexport function getLenToPosState(len: number): number {\n len -= kMatchMinLen;\n return len < kNumLenToPosStates ? len : kNumLenToPosStates - 1;\n}\n\n/**\n * Initialize probability array with default values\n * @param probs - Array to initialize (or null to create new)\n * @param count - Number of probabilities\n * @returns Initialized probability array\n */\nexport function initBitModels(probs: Uint16Array | null, count?: number): Uint16Array {\n if (probs === null) {\n if (count === undefined) {\n throw new Error('count required when probs is null');\n }\n probs = new Uint16Array(count);\n }\n for (let i = 0; i < probs.length; i++) {\n probs[i] = kProbInitValue;\n }\n return probs;\n}\n\n/**\n * LZMA properties parsed from the 5-byte header\n */\nexport interface LzmaProperties {\n /** Literal context bits (0-8) */\n lc: number;\n /** Literal pos bits (0-4) */\n lp: number;\n /** Pos bits (0-4) */\n pb: number;\n /** Dictionary size in bytes */\n dictionarySize: number;\n}\n\n/**\n * Parse LZMA properties from a 5-byte buffer\n */\nexport function parseProperties(properties: Buffer | Uint8Array): LzmaProperties {\n if (properties.length < 5) {\n throw new Error('LZMA properties must be at least 5 bytes');\n }\n\n const d = properties[0] & 0xff;\n const lc = d % 9;\n const remainder = ~~(d / 9);\n const lp = remainder % 5;\n const pb = ~~(remainder / 5);\n\n if (lc > kNumLitContextBitsMax || lp > 4 || pb > kNumPosStatesBitsMax) {\n throw new Error('Invalid LZMA properties');\n }\n\n let dictionarySize = 0;\n for (let i = 0; i < 4; i++) {\n dictionarySize |= (properties[1 + i] & 0xff) << (i * 8);\n }\n\n return { lc, lp, pb, dictionarySize };\n}\n\n/**\n * LZMA2 control byte meanings\n */\nexport const LZMA2_CONTROL = {\n END: 0x00,\n UNCOMPRESSED_RESET_DIC: 0x01,\n UNCOMPRESSED: 0x02,\n LZMA_RESET_STATE_NEW_PROP: 0xe0,\n} as const;\n\n/**\n * Check if LZMA2 control byte indicates reset state (new properties)\n */\nexport function lzma2NeedsNewProps(control: number): boolean {\n return control >= 0xe0;\n}\n\n/**\n * Check if LZMA2 control byte indicates reset probabilities\n */\nexport function lzma2NeedsResetProbs(control: number): boolean {\n return control >= 0xa0;\n}\n\n/**\n * Check if LZMA2 control byte indicates uncompressed chunk\n */\nexport function lzma2IsUncompressed(control: number): boolean {\n return control < 0x80;\n}\n\n/**\n * Parse LZMA2 dictionary size from property byte\n */\nexport function parseLzma2DictionarySize(prop: number): number {\n if (prop > 40) {\n throw new Error('Invalid LZMA2 dictionary size property');\n }\n if (prop === 40) {\n return 0xffffffff;\n }\n const base = 2 | (prop & 1);\n const exp = (prop >>> 1) + 11;\n return base << exp;\n}\n"],"names":["LZMA2_CONTROL","getLenToPosState","initBitModels","kAlignMask","kAlignTableSize","kBitModelTotal","kDicLogSizeMin","kEndPosModelIndex","kMatchMaxLen","kMatchMinLen","kNumAlignBits","kNumBitModelTotalBits","kNumFullDistances","kNumHighLenBits","kNumLenSymbols","kNumLenToPosStates","kNumLenToPosStatesBits","kNumLitContextBitsMax","kNumLitPosStatesBitsEncodingMax","kNumLowLenBits","kNumLowLenSymbols","kNumMidLenBits","kNumMidLenSymbols","kNumMoveBits","kNumPosModels","kNumPosSlotBits","kNumPosStatesBitsEncodingMax","kNumPosStatesBitsMax","kNumPosStatesEncodingMax","kNumPosStatesMax","kNumRepDistances","kNumStates","kProbInitValue","kStartPosModelIndex","lzma2IsUncompressed","lzma2NeedsNewProps","lzma2NeedsResetProbs","parseLzma2DictionarySize","parseProperties","stateIsCharState","stateUpdateChar","stateUpdateMatch","stateUpdateRep","stateUpdateShortRep","state","len","probs","count","undefined","Error","Uint16Array","i","length","properties","d","lc","remainder","lp","pb","dictionarySize","END","UNCOMPRESSED_RESET_DIC","UNCOMPRESSED","LZMA_RESET_STATE_NEW_PROP","control","prop","base","exp"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/7z-iterator/src/lzma/types.ts"],"sourcesContent":["/**\n * LZMA Types and Constants\n *\n * Shared types, constants, and state transition functions for LZMA decoding.\n * Based on the LZMA SDK specification.\n */\n\n// LZMA State Machine Constants\nexport const kNumRepDistances = 4;\nexport const kNumStates = 12;\n\n// Position slot constants\nexport const kNumPosSlotBits = 6;\nexport const kDicLogSizeMin = 0;\nexport const kNumLenToPosStatesBits = 2;\nexport const kNumLenToPosStates = 1 << kNumLenToPosStatesBits; // 4\n\n// Match length constants\nexport const kMatchMinLen = 2;\nexport const kNumLowLenBits = 3;\nexport const kNumMidLenBits = 3;\nexport const kNumHighLenBits = 8;\nexport const kNumLowLenSymbols = 1 << kNumLowLenBits; // 8\nexport const kNumMidLenSymbols = 1 << kNumMidLenBits; // 8\nexport const kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols + (1 << kNumHighLenBits); // 272\nexport const kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1; // 273\n\n// Alignment constants\nexport const kNumAlignBits = 4;\nexport const kAlignTableSize = 1 << kNumAlignBits; // 16\nexport const kAlignMask = kAlignTableSize - 1; // 15\n\n// Position model constants\nexport const kStartPosModelIndex = 4;\nexport const kEndPosModelIndex = 14;\nexport const kNumPosModels = kEndPosModelIndex - kStartPosModelIndex; // 10\nexport const kNumFullDistances = 1 << (kEndPosModelIndex >>> 1); // 128\n\n// Literal/pos state constants\nexport const kNumLitPosStatesBitsEncodingMax = 4;\nexport const kNumLitContextBitsMax = 8;\nexport const kNumPosStatesBitsMax = 4;\nexport const kNumPosStatesMax = 1 << kNumPosStatesBitsMax; // 16\nexport const kNumPosStatesBitsEncodingMax = 4;\nexport const kNumPosStatesEncodingMax = 1 << kNumPosStatesBitsEncodingMax; // 16\n\n// Range coder probability constants\nexport const kNumBitModelTotalBits = 11;\nexport const kBitModelTotal = 1 << kNumBitModelTotalBits; // 2048\nexport const kNumMoveBits = 5;\nexport const kProbInitValue = kBitModelTotal >>> 1; // 1024\n\n/**\n * State transition: after literal byte\n */\nexport function stateUpdateChar(state: number): number {\n if (state < 4) return 0;\n if (state < 10) return state - 3;\n return state - 6;\n}\n\n/**\n * State transition: after match\n */\nexport function stateUpdateMatch(state: number): number {\n return state < 7 ? 7 : 10;\n}\n\n/**\n * State transition: after rep (repeated match)\n */\nexport function stateUpdateRep(state: number): number {\n return state < 7 ? 8 : 11;\n}\n\n/**\n * State transition: after short rep\n */\nexport function stateUpdateShortRep(state: number): number {\n return state < 7 ? 9 : 11;\n}\n\n/**\n * Check if state indicates previous symbol was a character (literal)\n */\nexport function stateIsCharState(state: number): boolean {\n return state < 7;\n}\n\n/**\n * Get length-to-position state index\n */\nexport function getLenToPosState(len: number): number {\n len -= kMatchMinLen;\n return len < kNumLenToPosStates ? len : kNumLenToPosStates - 1;\n}\n\n/**\n * Initialize probability array with default values\n * @param probs - Array to initialize (or null to create new)\n * @param count - Number of probabilities\n * @returns Initialized probability array\n */\nexport function initBitModels(probs: Uint16Array | null, count?: number): Uint16Array {\n if (probs === null) {\n if (count === undefined) {\n throw new Error('count required when probs is null');\n }\n probs = new Uint16Array(count);\n }\n for (let i = 0; i < probs.length; i++) {\n probs[i] = kProbInitValue;\n }\n return probs;\n}\n\n/**\n * LZMA properties parsed from the 5-byte header\n */\nexport interface LzmaProperties {\n /** Literal context bits (0-8) */\n lc: number;\n /** Literal pos bits (0-4) */\n lp: number;\n /** Pos bits (0-4) */\n pb: number;\n /** Dictionary size in bytes */\n dictionarySize: number;\n}\n\n/**\n * Parse LZMA properties from a 5-byte buffer\n */\nexport function parseProperties(properties: Buffer | Uint8Array): LzmaProperties {\n if (properties.length < 5) {\n throw new Error('LZMA properties must be at least 5 bytes');\n }\n\n const d = properties[0] & 0xff;\n const lc = d % 9;\n const remainder = ~~(d / 9);\n const lp = remainder % 5;\n const pb = ~~(remainder / 5);\n\n if (lc > kNumLitContextBitsMax || lp > 4 || pb > kNumPosStatesBitsMax) {\n throw new Error('Invalid LZMA properties');\n }\n\n let dictionarySize = 0;\n for (let i = 0; i < 4; i++) {\n dictionarySize |= (properties[1 + i] & 0xff) << (i * 8);\n }\n\n return { lc, lp, pb, dictionarySize };\n}\n\n/**\n * LZMA2 control byte meanings\n */\nexport const LZMA2_CONTROL = {\n END: 0x00,\n UNCOMPRESSED_RESET_DIC: 0x01,\n UNCOMPRESSED: 0x02,\n LZMA_RESET_STATE_NEW_PROP: 0xe0,\n} as const;\n\n/**\n * Check if LZMA2 control byte indicates reset state (new properties)\n */\nexport function lzma2NeedsNewProps(control: number): boolean {\n return control >= 0xe0;\n}\n\n/**\n * Check if LZMA2 control byte indicates reset probabilities\n */\nexport function lzma2NeedsResetProbs(control: number): boolean {\n return control >= 0xa0;\n}\n\n/**\n * Check if LZMA2 control byte indicates uncompressed chunk\n */\nexport function lzma2IsUncompressed(control: number): boolean {\n return control < 0x80;\n}\n\n/**\n * Parse LZMA2 dictionary size from property byte\n */\nexport function parseLzma2DictionarySize(prop: number): number {\n if (prop > 40) {\n throw new Error('Invalid LZMA2 dictionary size property');\n }\n if (prop === 40) {\n return 0xffffffff;\n }\n const base = 2 | (prop & 1);\n const exp = (prop >>> 1) + 11;\n return base << exp;\n}\n\n/**\n * Output sink interface for fast streaming decode\n * Can be a Buffer (with write method) or a stream with write() method\n */\nexport interface OutputSink {\n write(buffer: Buffer): void;\n}\n"],"names":["LZMA2_CONTROL","getLenToPosState","initBitModels","kAlignMask","kAlignTableSize","kBitModelTotal","kDicLogSizeMin","kEndPosModelIndex","kMatchMaxLen","kMatchMinLen","kNumAlignBits","kNumBitModelTotalBits","kNumFullDistances","kNumHighLenBits","kNumLenSymbols","kNumLenToPosStates","kNumLenToPosStatesBits","kNumLitContextBitsMax","kNumLitPosStatesBitsEncodingMax","kNumLowLenBits","kNumLowLenSymbols","kNumMidLenBits","kNumMidLenSymbols","kNumMoveBits","kNumPosModels","kNumPosSlotBits","kNumPosStatesBitsEncodingMax","kNumPosStatesBitsMax","kNumPosStatesEncodingMax","kNumPosStatesMax","kNumRepDistances","kNumStates","kProbInitValue","kStartPosModelIndex","lzma2IsUncompressed","lzma2NeedsNewProps","lzma2NeedsResetProbs","parseLzma2DictionarySize","parseProperties","stateIsCharState","stateUpdateChar","stateUpdateMatch","stateUpdateRep","stateUpdateShortRep","state","len","probs","count","undefined","Error","Uint16Array","i","length","properties","d","lc","remainder","lp","pb","dictionarySize","END","UNCOMPRESSED_RESET_DIC","UNCOMPRESSED","LZMA_RESET_STATE_NEW_PROP","control","prop","base","exp"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Transform } from 'readable-stream';
1
+ import type { Transform } from 'stream';
2
2
  /**
3
3
  * Set the password for AES decryption
4
4
  */
@@ -1,4 +1,4 @@
1
- import type { Transform } from 'readable-stream';
1
+ import type { Transform } from 'stream';
2
2
  /**
3
3
  * Set the password for AES decryption
4
4
  */