zstdify 1.1.2 → 1.3.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 (67) hide show
  1. package/README.md +51 -2
  2. package/dist/bitstream/bitReaderReverse.d.ts +6 -0
  3. package/dist/bitstream/bitReaderReverse.js +51 -1
  4. package/dist/bitstream/bitReaderReverse.js.map +1 -1
  5. package/dist/bitstream/index.d.ts +1 -0
  6. package/dist/bitstream/index.js +1 -0
  7. package/dist/bitstream/index.js.map +1 -1
  8. package/dist/bitstream/reverseBitWriter.d.ts +1 -0
  9. package/dist/bitstream/reverseBitWriter.js +66 -0
  10. package/dist/bitstream/reverseBitWriter.js.map +1 -0
  11. package/dist/compress.js +47 -7
  12. package/dist/compress.js.map +1 -1
  13. package/dist/decode/debugTrace.d.ts +31 -0
  14. package/dist/decode/debugTrace.js +2 -0
  15. package/dist/decode/debugTrace.js.map +1 -0
  16. package/dist/decode/decompressFrame.d.ts +3 -1
  17. package/dist/decode/decompressFrame.js +153 -59
  18. package/dist/decode/decompressFrame.js.map +1 -1
  19. package/dist/decode/fusedSequences.d.ts +9 -0
  20. package/dist/decode/fusedSequences.js +26 -0
  21. package/dist/decode/fusedSequences.js.map +1 -0
  22. package/dist/decode/literals.js +164 -111
  23. package/dist/decode/literals.js.map +1 -1
  24. package/dist/decode/reconstruct.d.ts +33 -1
  25. package/dist/decode/reconstruct.js +591 -24
  26. package/dist/decode/reconstruct.js.map +1 -1
  27. package/dist/decode/sequences.d.ts +19 -7
  28. package/dist/decode/sequences.js +225 -133
  29. package/dist/decode/sequences.js.map +1 -1
  30. package/dist/decompress.d.ts +10 -0
  31. package/dist/decompress.js +5 -3
  32. package/dist/decompress.js.map +1 -1
  33. package/dist/encode/blockWriter.js +8 -2
  34. package/dist/encode/blockWriter.js.map +1 -1
  35. package/dist/encode/compressedBlock.d.ts +27 -1
  36. package/dist/encode/compressedBlock.js +594 -339
  37. package/dist/encode/compressedBlock.js.map +1 -1
  38. package/dist/encode/fastMatcher.d.ts +7 -0
  39. package/dist/encode/fastMatcher.js +13 -0
  40. package/dist/encode/fastMatcher.js.map +1 -0
  41. package/dist/encode/greedySequences.d.ts +9 -6
  42. package/dist/encode/greedySequences.js +21 -77
  43. package/dist/encode/greedySequences.js.map +1 -1
  44. package/dist/encode/lazyMatcher.d.ts +7 -0
  45. package/dist/encode/lazyMatcher.js +13 -0
  46. package/dist/encode/lazyMatcher.js.map +1 -0
  47. package/dist/encode/literalsEncoder.d.ts +14 -0
  48. package/dist/encode/literalsEncoder.js +343 -0
  49. package/dist/encode/literalsEncoder.js.map +1 -0
  50. package/dist/encode/optimalParser.d.ts +7 -0
  51. package/dist/encode/optimalParser.js +13 -0
  52. package/dist/encode/optimalParser.js.map +1 -0
  53. package/dist/encode/sequencePlanner.d.ts +23 -0
  54. package/dist/encode/sequencePlanner.js +280 -0
  55. package/dist/encode/sequencePlanner.js.map +1 -0
  56. package/dist/entropy/fse.d.ts +13 -6
  57. package/dist/entropy/fse.js +176 -13
  58. package/dist/entropy/fse.js.map +1 -1
  59. package/dist/entropy/huffman.d.ts +7 -5
  60. package/dist/entropy/huffman.js +18 -7
  61. package/dist/entropy/huffman.js.map +1 -1
  62. package/dist/entropy/index.d.ts +2 -2
  63. package/dist/entropy/weights.js +20 -14
  64. package/dist/entropy/weights.js.map +1 -1
  65. package/dist/index.d.ts +1 -1
  66. package/dist/index.js.map +1 -1
  67. package/package.json +1 -1
@@ -14,7 +14,7 @@ export function parseLiteralsSectionHeader(data, offset) {
14
14
  if (offset >= data.length) {
15
15
  throw new ZstdError('Literals section header truncated', 'corruption_detected');
16
16
  }
17
- const b0 = data[offset] ?? 0;
17
+ const b0 = data[offset];
18
18
  const blockType = (b0 & 3);
19
19
  const sizeFormat = (b0 >> 2) & 3;
20
20
  if (blockType === 0 || blockType === 1) {
@@ -29,7 +29,7 @@ export function parseLiteralsSectionHeader(data, offset) {
29
29
  if (offset + 2 > data.length) {
30
30
  throw new ZstdError('Literals section header truncated', 'corruption_detected');
31
31
  }
32
- const b1 = data[offset + 1] ?? 0;
32
+ const b1 = data[offset + 1];
33
33
  const regeneratedSize = (b0 >> 4) + (b1 << 4);
34
34
  return {
35
35
  header: { blockType, regeneratedSize, headerSize: 2, numStreams: 1 },
@@ -40,8 +40,8 @@ export function parseLiteralsSectionHeader(data, offset) {
40
40
  if (offset + 3 > data.length) {
41
41
  throw new ZstdError('Literals section header truncated', 'corruption_detected');
42
42
  }
43
- const b1 = data[offset + 1] ?? 0;
44
- const b2 = data[offset + 2] ?? 0;
43
+ const b1 = data[offset + 1];
44
+ const b2 = data[offset + 2];
45
45
  const regeneratedSize = (b0 >> 4) + (b1 << 4) + (b2 << 12);
46
46
  return {
47
47
  header: { blockType, regeneratedSize, headerSize: 3, numStreams: 1 },
@@ -79,7 +79,8 @@ export function decodeRawLiterals(data, offset, size) {
79
79
  if (offset + size > data.length) {
80
80
  throw new ZstdError('Raw literals truncated', 'corruption_detected');
81
81
  }
82
- return data.subarray(offset, offset + size).slice();
82
+ // Return a view to avoid extra copy; callers copy into destination as needed.
83
+ return data.subarray(offset, offset + size);
83
84
  }
84
85
  /**
85
86
  * Decode RLE literals block - single byte repeated.
@@ -88,7 +89,7 @@ export function decodeRLELiterals(data, offset, size) {
88
89
  if (offset >= data.length) {
89
90
  throw new ZstdError('RLE literals truncated', 'corruption_detected');
90
91
  }
91
- const byte = data[offset] ?? 0;
92
+ const byte = data[offset];
92
93
  const result = new Uint8Array(size);
93
94
  result.fill(byte);
94
95
  return result;
@@ -110,78 +111,184 @@ function weightsToHuffmanTable(weights) {
110
111
  throw new ZstdError('Invalid Huffman weights: cannot complete to power of 2', 'corruption_detected');
111
112
  }
112
113
  const lastWeight = 32 - Math.clz32(remainder);
113
- const fullWeights = [...weights, lastWeight];
114
- while (fullWeights.length < 256) {
115
- fullWeights.push(0);
114
+ const fullWeights = new Array(256).fill(0);
115
+ for (let i = 0; i < weights.length; i++) {
116
+ fullWeights[i] = weights[i] ?? 0;
116
117
  }
118
+ fullWeights[weights.length] = lastWeight;
117
119
  const numBits = weightsToNumBits(fullWeights, maxNumBits);
118
120
  const table = buildHuffmanDecodeTable(numBits, maxNumBits);
119
121
  return { table, maxNumBits };
120
122
  }
121
- function decodeHuffmanStreamToEnd(data, streamOffset, streamLength, table, maxNumBits) {
123
+ function decodeHuffmanStreamByCountInto(data, streamOffset, streamLength, table, maxNumBits, out, outOffset, numSymbols) {
124
+ if (numSymbols === 0)
125
+ return 0;
126
+ if (streamLength <= 0) {
127
+ throw new ZstdError('Huffman stream truncated', 'corruption_detected');
128
+ }
129
+ const reader = new BitReaderReverse(data, streamOffset, streamLength);
130
+ reader.skipPadding();
131
+ let written = 0;
132
+ for (let i = 0; i < numSymbols; i++) {
133
+ // Peek max bits to index the table, then consume only the symbol bit length.
134
+ const peek = reader.readBitsFast(maxNumBits);
135
+ if (peek < 0 || peek >= table.length) {
136
+ throw new ZstdError('Huffman invalid code', 'corruption_detected');
137
+ }
138
+ const numBits = table.numBits[peek];
139
+ if (numBits === 0) {
140
+ throw new ZstdError('Huffman invalid code', 'corruption_detected');
141
+ }
142
+ const overshoot = maxNumBits - numBits;
143
+ if (overshoot > 0) {
144
+ reader.unreadBits(overshoot);
145
+ }
146
+ out[outOffset + written] = table.symbol[peek];
147
+ written++;
148
+ }
149
+ return written;
150
+ }
151
+ function decodeHuffmanStreamToEndInto(data, streamOffset, streamLength, table, maxNumBits, out, outOffset) {
122
152
  if (streamLength <= 0) {
123
153
  throw new ZstdError('Huffman stream truncated', 'corruption_detected');
124
154
  }
125
155
  const stream = data.subarray(streamOffset, streamOffset + streamLength);
126
- const lastByte = stream[stream.length - 1] ?? 0;
156
+ const lastByte = stream[stream.length - 1];
127
157
  if (lastByte === 0) {
128
158
  throw new ZstdError('Huffman invalid end marker', 'corruption_detected');
129
159
  }
130
160
  const highestSetBit = 31 - Math.clz32(lastByte);
131
161
  const paddingBits = 8 - highestSetBit;
132
162
  let bitOffset = streamLength * 8 - paddingBits;
133
- const readBitsZeroExtended = (numBits) => {
134
- if (numBits <= 0)
135
- return 0;
136
- bitOffset -= numBits;
137
- let value = 0;
138
- for (let i = 0; i < numBits; i++) {
139
- const abs = bitOffset + i;
140
- if (abs < 0)
163
+ const streamBits = streamLength * 8;
164
+ const mask = (1 << maxNumBits) - 1;
165
+ let nextBitOffset = bitOffset - maxNumBits;
166
+ let state = 0;
167
+ if (nextBitOffset >= 0) {
168
+ const byteIndex = nextBitOffset >>> 3;
169
+ const bitInByte = nextBitOffset & 7;
170
+ const word0 = (stream[byteIndex] ?? 0) |
171
+ ((stream[byteIndex + 1] ?? 0) << 8) |
172
+ ((stream[byteIndex + 2] ?? 0) << 16) |
173
+ ((stream[byteIndex + 3] ?? 0) << 24);
174
+ if (bitInByte + maxNumBits <= 32) {
175
+ state = (word0 >>> bitInByte) & ((1 << maxNumBits) - 1);
176
+ }
177
+ else {
178
+ const low = word0 >>> bitInByte;
179
+ const highBits = maxNumBits - (32 - bitInByte);
180
+ const word1 = (stream[byteIndex + 4] ?? 0) |
181
+ ((stream[byteIndex + 5] ?? 0) << 8) |
182
+ ((stream[byteIndex + 6] ?? 0) << 16) |
183
+ ((stream[byteIndex + 7] ?? 0) << 24);
184
+ const high = (word1 & ((1 << highBits) - 1)) << (32 - bitInByte);
185
+ state = (low | high) >>> 0;
186
+ }
187
+ }
188
+ else {
189
+ for (let i = 0; i < maxNumBits; i++) {
190
+ const abs = nextBitOffset + i;
191
+ if (abs < 0 || abs >= streamBits)
141
192
  continue;
142
193
  const byteIndex = abs >>> 3;
143
194
  const bitInByte = abs & 7;
144
- const bit = ((stream[byteIndex] ?? 0) >>> bitInByte) & 1;
145
- value |= bit << i;
195
+ state |= ((stream[byteIndex] >>> bitInByte) & 1) << i;
146
196
  }
147
- return value;
148
- };
149
- const out = [];
150
- const mask = (1 << maxNumBits) - 1;
151
- let state = readBitsZeroExtended(maxNumBits);
197
+ state >>>= 0;
198
+ }
199
+ bitOffset = nextBitOffset;
200
+ let written = 0;
152
201
  while (bitOffset > -maxNumBits) {
153
- const row = table[state];
154
- if (!row) {
202
+ if (state < 0 || state >= table.length) {
203
+ throw new ZstdError('Huffman invalid code', 'corruption_detected');
204
+ }
205
+ const numBits = table.numBits[state];
206
+ if (numBits === 0) {
155
207
  throw new ZstdError('Huffman invalid code', 'corruption_detected');
156
208
  }
157
- out.push(row.symbol);
158
- const nb = row.numBits;
159
- const rest = nb > 0 ? readBitsZeroExtended(nb) : 0;
160
- state = ((state << nb) & mask) + rest;
209
+ if (outOffset + written >= out.length) {
210
+ throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
211
+ }
212
+ out[outOffset + written] = table.symbol[state];
213
+ written++;
214
+ let rest = 0;
215
+ nextBitOffset = bitOffset - numBits;
216
+ if (numBits > 0) {
217
+ if (nextBitOffset >= 0) {
218
+ const byteIndex = nextBitOffset >>> 3;
219
+ const bitInByte = nextBitOffset & 7;
220
+ const word0 = (stream[byteIndex] ?? 0) |
221
+ ((stream[byteIndex + 1] ?? 0) << 8) |
222
+ ((stream[byteIndex + 2] ?? 0) << 16) |
223
+ ((stream[byteIndex + 3] ?? 0) << 24);
224
+ if (bitInByte + numBits <= 32) {
225
+ rest = (word0 >>> bitInByte) & ((1 << numBits) - 1);
226
+ }
227
+ else {
228
+ const low = word0 >>> bitInByte;
229
+ const highBits = numBits - (32 - bitInByte);
230
+ const word1 = (stream[byteIndex + 4] ?? 0) |
231
+ ((stream[byteIndex + 5] ?? 0) << 8) |
232
+ ((stream[byteIndex + 6] ?? 0) << 16) |
233
+ ((stream[byteIndex + 7] ?? 0) << 24);
234
+ const high = (word1 & ((1 << highBits) - 1)) << (32 - bitInByte);
235
+ rest = (low | high) >>> 0;
236
+ }
237
+ }
238
+ else {
239
+ for (let i = 0; i < numBits; i++) {
240
+ const abs = nextBitOffset + i;
241
+ if (abs < 0 || abs >= streamBits)
242
+ continue;
243
+ const byteIndex = abs >>> 3;
244
+ const bitInByte = abs & 7;
245
+ rest |= ((stream[byteIndex] >>> bitInByte) & 1) << i;
246
+ }
247
+ rest >>>= 0;
248
+ }
249
+ }
250
+ bitOffset = nextBitOffset;
251
+ state = ((state << numBits) & mask) + rest;
161
252
  }
162
253
  if (bitOffset !== -maxNumBits) {
163
254
  throw new ZstdError('Huffman stream did not end cleanly', 'corruption_detected');
164
255
  }
165
- return new Uint8Array(out);
256
+ return written;
166
257
  }
167
- function decodeHuffmanStreamByCount(data, streamOffset, streamLength, table, maxNumBits, numSymbols) {
168
- if (numSymbols === 0)
169
- return new Uint8Array(0);
170
- if (streamLength <= 0) {
171
- throw new ZstdError('Huffman stream truncated', 'corruption_detected');
258
+ function parseFourStreamJumpTable(data, pos, totalStreamsSize) {
259
+ if (totalStreamsSize < 10) {
260
+ throw new ZstdError('4-stream mode requires at least 10 bytes', 'corruption_detected');
172
261
  }
173
- const reader = new BitReaderReverse(data, streamOffset, streamLength);
174
- reader.skipPadding();
175
- const out = new Uint8Array(numSymbols);
176
- for (let i = 0; i < numSymbols; i++) {
177
- const peek = reader.readBits(maxNumBits);
178
- const row = table[peek];
179
- if (!row) {
180
- throw new ZstdError('Huffman invalid code', 'corruption_detected');
181
- }
182
- out[i] = row.symbol;
262
+ const stream1Size = data[pos] | (data[pos + 1] << 8);
263
+ const stream2Size = data[pos + 2] | (data[pos + 3] << 8);
264
+ const stream3Size = data[pos + 4] | (data[pos + 5] << 8);
265
+ const stream4Size = totalStreamsSize - 6 - stream1Size - stream2Size - stream3Size;
266
+ if (stream4Size < 0) {
267
+ throw new ZstdError(`Invalid jump table in 4-stream literals: total=${totalStreamsSize} s1=${stream1Size} s2=${stream2Size} s3=${stream3Size}`, 'corruption_detected');
268
+ }
269
+ return {
270
+ stream1Size,
271
+ stream2Size,
272
+ stream3Size,
273
+ stream4Size,
274
+ streamOffset: pos + 6,
275
+ };
276
+ }
277
+ function decodeFourHuffmanStreamsInto(data, streamOffset, stream1Size, stream2Size, stream3Size, stream4Size, table, maxNumBits, out) {
278
+ let outPos = 0;
279
+ let pos = streamOffset;
280
+ const decodeOne = (size) => {
281
+ const written = decodeHuffmanStreamToEndInto(data, pos, size, table, maxNumBits, out, outPos);
282
+ outPos += written;
283
+ pos += size;
284
+ };
285
+ decodeOne(stream1Size);
286
+ decodeOne(stream2Size);
287
+ decodeOne(stream3Size);
288
+ decodeOne(stream4Size);
289
+ if (outPos !== out.length) {
290
+ throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
183
291
  }
184
- return out;
185
292
  }
186
293
  /**
187
294
  * Decode compressed literals (Huffman). Requires Huffman table from tree description.
@@ -192,7 +299,7 @@ export function decodeCompressedLiterals(data, offset, compressedSize, regenerat
192
299
  if (pos >= data.length) {
193
300
  throw new ZstdError('Huffman tree description truncated', 'corruption_detected');
194
301
  }
195
- const headerByte = data[pos] ?? 0;
302
+ const headerByte = data[pos];
196
303
  pos++;
197
304
  let weights;
198
305
  let treeBytes;
@@ -215,39 +322,12 @@ export function decodeCompressedLiterals(data, offset, compressedSize, regenerat
215
322
  throw new ZstdError('Invalid literals compressed size', 'corruption_detected');
216
323
  }
217
324
  const result = new Uint8Array(regeneratedSize);
218
- let outPos = 0;
219
325
  if (numStreams === 1) {
220
- const lit = decodeHuffmanStreamByCount(data, pos, totalStreamsSize, huffmanTable.table, huffmanTable.maxNumBits, regeneratedSize);
221
- result.set(lit);
326
+ decodeHuffmanStreamByCountInto(data, pos, totalStreamsSize, huffmanTable.table, huffmanTable.maxNumBits, result, 0, regeneratedSize);
222
327
  }
223
328
  else {
224
- if (totalStreamsSize < 10) {
225
- throw new ZstdError('4-stream mode requires at least 10 bytes', 'corruption_detected');
226
- }
227
- const s1 = (data[pos] ?? 0) | ((data[pos + 1] ?? 0) << 8);
228
- const s2 = (data[pos + 2] ?? 0) | ((data[pos + 3] ?? 0) << 8);
229
- const s3 = (data[pos + 4] ?? 0) | ((data[pos + 5] ?? 0) << 8);
230
- const stream1Size = s1;
231
- const stream2Size = s2;
232
- const stream3Size = s3;
233
- const stream4Size = totalStreamsSize - 6 - stream1Size - stream2Size - stream3Size;
234
- if (stream4Size < 0) {
235
- throw new ZstdError(`Invalid jump table in 4-stream literals: total=${totalStreamsSize} s1=${stream1Size} s2=${stream2Size} s3=${stream3Size}`, 'corruption_detected');
236
- }
237
- let streamOffset = pos + 6;
238
- const decodeStream = (size) => {
239
- const lit = decodeHuffmanStreamToEnd(data, streamOffset, size, huffmanTable.table, huffmanTable.maxNumBits);
240
- result.set(lit, outPos);
241
- outPos += lit.length;
242
- streamOffset += size;
243
- };
244
- decodeStream(stream1Size);
245
- decodeStream(stream2Size);
246
- decodeStream(stream3Size);
247
- decodeStream(stream4Size);
248
- if (outPos !== regeneratedSize) {
249
- throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
250
- }
329
+ const jump = parseFourStreamJumpTable(data, pos, totalStreamsSize);
330
+ decodeFourHuffmanStreamsInto(data, jump.streamOffset, jump.stream1Size, jump.stream2Size, jump.stream3Size, jump.stream4Size, huffmanTable.table, huffmanTable.maxNumBits, result);
251
331
  }
252
332
  return {
253
333
  literals: result,
@@ -260,40 +340,13 @@ export function decodeCompressedLiterals(data, offset, compressedSize, regenerat
260
340
  */
261
341
  export function decodeTreelessLiterals(data, offset, compressedSize, regeneratedSize, numStreams, huffmanTable) {
262
342
  const result = new Uint8Array(regeneratedSize);
263
- let outPos = 0;
264
- let pos = offset;
343
+ const pos = offset;
265
344
  if (numStreams === 1) {
266
- const lit = decodeHuffmanStreamByCount(data, pos, compressedSize, huffmanTable.table, huffmanTable.maxNumBits, regeneratedSize);
267
- result.set(lit);
345
+ decodeHuffmanStreamByCountInto(data, pos, compressedSize, huffmanTable.table, huffmanTable.maxNumBits, result, 0, regeneratedSize);
268
346
  }
269
347
  else {
270
- if (compressedSize < 10) {
271
- throw new ZstdError('4-stream mode requires at least 10 bytes', 'corruption_detected');
272
- }
273
- const s1 = (data[pos] ?? 0) | ((data[pos + 1] ?? 0) << 8);
274
- const s2 = (data[pos + 2] ?? 0) | ((data[pos + 3] ?? 0) << 8);
275
- const s3 = (data[pos + 4] ?? 0) | ((data[pos + 5] ?? 0) << 8);
276
- const stream1Size = s1;
277
- const stream2Size = s2;
278
- const stream3Size = s3;
279
- const stream4Size = compressedSize - 6 - stream1Size - stream2Size - stream3Size;
280
- if (stream4Size < 0) {
281
- throw new ZstdError(`Invalid jump table in 4-stream literals: total=${compressedSize} s1=${stream1Size} s2=${stream2Size} s3=${stream3Size}`, 'corruption_detected');
282
- }
283
- pos += 6;
284
- const decodeStream = (size) => {
285
- const lit = decodeHuffmanStreamToEnd(data, pos, size, huffmanTable.table, huffmanTable.maxNumBits);
286
- result.set(lit, outPos);
287
- outPos += lit.length;
288
- pos += size;
289
- };
290
- decodeStream(stream1Size);
291
- decodeStream(stream2Size);
292
- decodeStream(stream3Size);
293
- decodeStream(stream4Size);
294
- if (outPos !== regeneratedSize) {
295
- throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
296
- }
348
+ const jump = parseFourStreamJumpTable(data, pos, compressedSize);
349
+ decodeFourHuffmanStreamsInto(data, jump.streamOffset, jump.stream1Size, jump.stream2Size, jump.stream3Size, jump.stream4Size, huffmanTable.table, huffmanTable.maxNumBits, result);
297
350
  }
298
351
  return { literals: result, bytesRead: compressedSize };
299
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/decode/literals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/decode/literals.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,40 @@ export interface Sequence {
6
6
  offset: number;
7
7
  matchLength: number;
8
8
  }
9
+ export interface PackedSequences {
10
+ literalsLength: Uint32Array;
11
+ offset: Uint32Array;
12
+ matchLength: Uint32Array;
13
+ length: number;
14
+ }
15
+ export interface HistoryWindow {
16
+ buffer: Uint8Array;
17
+ length: number;
18
+ writePos: number;
19
+ }
20
+ export declare function createHistoryWindow(windowSize: number, initial?: Uint8Array): HistoryWindow;
21
+ /** Internal: reuse bag for decoder context. */
22
+ export interface DecoderReuseBag {
23
+ _history?: HistoryWindow;
24
+ _sequences?: PackedSequences;
25
+ _decodeMode?: 'fast' | 'reference';
26
+ _useFusedSequences?: boolean;
27
+ }
28
+ export declare function ensurePackedSequencesCapacity(existing: PackedSequences | undefined, minLength: number): PackedSequences;
29
+ export declare function packSequences(sequences: readonly Sequence[], reuse?: PackedSequences): PackedSequences;
30
+ export declare function packedSequencesToArray(sequences: PackedSequences): Sequence[];
31
+ /**
32
+ * Get or create a history window, reusing from bag when buffer is large enough.
33
+ * Caller may pass a mutable bag; it will be updated with the history used.
34
+ */
35
+ export declare function getOrCreateHistoryWindow(windowSize: number, initial: Uint8Array | undefined, reuse: DecoderReuseBag | undefined): HistoryWindow;
36
+ export declare function appendToHistoryWindow(history: HistoryWindow, chunk: Uint8Array): void;
37
+ export declare function appendRangeToHistoryWindow(history: HistoryWindow, source: Uint8Array, start: number, length: number): void;
38
+ export declare function appendRLEToHistoryWindow(history: HistoryWindow, byte: number, length: number): void;
39
+ export declare function executeSequencesInto(literals: Uint8Array, sequences: PackedSequences, windowSize: number, target: Uint8Array, targetOffset: number, repOffsets?: [number, number, number], historyInput?: HistoryWindow | Uint8Array, updateHistory?: boolean): number;
40
+ export declare function executeSequencesIntoFast(literals: Uint8Array, sequences: PackedSequences, windowSize: number, target: Uint8Array, targetOffset: number, repOffsets?: [number, number, number], historyInput?: HistoryWindow | Uint8Array, updateHistory?: boolean): number;
9
41
  /**
10
42
  * Execute sequences to produce decompressed output.
11
43
  * repOffsets: [Repeated_Offset1, Repeated_Offset2, Repeated_Offset3], updated in place.
12
44
  */
13
- export declare function executeSequences(literals: Uint8Array, sequences: Sequence[], windowSize: number, repOffsets?: [number, number, number], history?: Uint8Array): Uint8Array;
45
+ export declare function executeSequences(literals: Uint8Array, sequences: Sequence[], windowSize: number, repOffsets?: [number, number, number], historyInput?: HistoryWindow | Uint8Array): Uint8Array;