zstdify 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 (53) hide show
  1. package/README.md +24 -4
  2. package/dist/bitstream/bitReaderReverse.d.ts +15 -0
  3. package/dist/bitstream/bitReaderReverse.js +41 -1
  4. package/dist/bitstream/bitReaderReverse.js.map +1 -1
  5. package/dist/bitstream/index.d.ts +1 -1
  6. package/dist/bitstream/index.js +1 -1
  7. package/dist/bitstream/index.js.map +1 -1
  8. package/dist/bitstream/reverseBitWriter.d.ts +15 -1
  9. package/dist/bitstream/reverseBitWriter.js +6 -7
  10. package/dist/bitstream/reverseBitWriter.js.map +1 -1
  11. package/dist/bitstream/varint.d.ts +2 -1
  12. package/dist/bitstream/varint.js +16 -8
  13. package/dist/bitstream/varint.js.map +1 -1
  14. package/dist/compress.js +8 -7
  15. package/dist/compress.js.map +1 -1
  16. package/dist/decode/block.d.ts +1 -0
  17. package/dist/decode/block.js +4 -0
  18. package/dist/decode/block.js.map +1 -1
  19. package/dist/decode/decompressFrame.js +25 -71
  20. package/dist/decode/decompressFrame.js.map +1 -1
  21. package/dist/decode/fusedSequences.d.ts +4 -5
  22. package/dist/decode/fusedSequences.js +403 -20
  23. package/dist/decode/fusedSequences.js.map +1 -1
  24. package/dist/decode/reconstruct.d.ts +0 -2
  25. package/dist/decode/reconstruct.js +87 -78
  26. package/dist/decode/reconstruct.js.map +1 -1
  27. package/dist/decode/sequences.js +19 -20
  28. package/dist/decode/sequences.js.map +1 -1
  29. package/dist/dictionary/compressorDictionary.d.ts +8 -0
  30. package/dist/dictionary/compressorDictionary.js +22 -14
  31. package/dist/dictionary/compressorDictionary.js.map +1 -1
  32. package/dist/encode/compressedBlock.d.ts +2 -2
  33. package/dist/encode/compressedBlock.js +107 -198
  34. package/dist/encode/compressedBlock.js.map +1 -1
  35. package/dist/encode/fastMatcher.js.map +1 -1
  36. package/dist/encode/frameWriter.js +5 -1
  37. package/dist/encode/frameWriter.js.map +1 -1
  38. package/dist/encode/lazyMatcher.js.map +1 -1
  39. package/dist/encode/literalsEncoder.d.ts +2 -1
  40. package/dist/encode/literalsEncoder.js +289 -47
  41. package/dist/encode/literalsEncoder.js.map +1 -1
  42. package/dist/encode/optimalParser.js.map +1 -1
  43. package/dist/encode/sequencePlanner.js.map +1 -1
  44. package/dist/entropy/fse.d.ts +1 -1
  45. package/dist/entropy/fse.js +21 -1
  46. package/dist/entropy/fse.js.map +1 -1
  47. package/dist/entropy/huffman.d.ts +1 -1
  48. package/dist/entropy/huffman.js +2 -1
  49. package/dist/entropy/huffman.js.map +1 -1
  50. package/dist/frame/frameHeader.js +1 -1
  51. package/dist/frame/skippable.js +7 -2
  52. package/dist/frame/skippable.js.map +1 -1
  53. package/package.json +1 -1
@@ -1,9 +1,8 @@
1
- import type { PackedSequences } from './reconstruct.js';
2
1
  import { type HistoryWindow } from './reconstruct.js';
3
- import { type DecodeSequencesResult, type SequenceTables } from './sequences.js';
2
+ import type { SequenceSectionMetadata, SequenceTables } from './sequences.js';
4
3
  export interface FusedDecodeExecuteResult {
5
4
  written: number;
6
- seqResult: DecodeSequencesResult;
5
+ tables: SequenceTables;
6
+ metadata: SequenceSectionMetadata;
7
7
  }
8
- export declare function shouldUseFusedSequencePath(seqSize: number, literalsLength: number, windowSize: number, updateHistory: boolean): boolean;
9
- export declare function decodeAndExecuteSequencesInto(blockContent: Uint8Array, seqOffset: number, seqSize: number, prevSeqTables: SequenceTables | null, sequenceReuse: PackedSequences | undefined, literals: Uint8Array, windowSize: number, ensureOutputCapacity: (additional: number) => void, getOutputBuffer: () => Uint8Array, outputStart: number, repOffsets: [number, number, number], history: HistoryWindow, updateHistory: boolean): FusedDecodeExecuteResult;
8
+ export declare function decodeAndExecuteSequencesInto(blockContent: Uint8Array, seqOffset: number, seqSize: number, prevSeqTables: SequenceTables | null, literals: Uint8Array, windowSize: number, output: Uint8Array, outputStart: number, repOffsets: [number, number, number], history: HistoryWindow, updateHistory: boolean, collectMetadata?: boolean): FusedDecodeExecuteResult;
@@ -1,26 +1,409 @@
1
- import { executeSequencesIntoFast } from './reconstruct.js';
2
- import { decodeSequences } from './sequences.js';
3
- export function shouldUseFusedSequencePath(seqSize, literalsLength, windowSize, updateHistory) {
4
- if (seqSize < 4) {
5
- return false;
1
+ import { BitReaderReverse } from '../bitstream/bitReaderReverse.js';
2
+ import { buildFSEDecodeTable, readNCount } from '../entropy/fse.js';
3
+ import { LITERALS_LENGTH_DEFAULT_DISTRIBUTION, LITERALS_LENGTH_TABLE_LOG, MATCH_LENGTH_DEFAULT_DISTRIBUTION, MATCH_LENGTH_TABLE_LOG, OFFSET_CODE_DEFAULT_DISTRIBUTION, OFFSET_CODE_TABLE_LOG, } from '../entropy/predefined.js';
4
+ import { ZstdError } from '../errors.js';
5
+ import { appendRangeToHistoryWindow } from './reconstruct.js';
6
+ const LL_BASELINE = new Int32Array([
7
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 18, 20, 22, 24, 28, 32, 40, 48, 64, 128, 256, 512, 1024, 2048,
8
+ 4096, 8192, 16384, 32768, 65536,
9
+ ]);
10
+ const LL_NUMBITS = new Uint8Array([
11
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
12
+ ]);
13
+ const ML_BASELINE = new Int32Array([
14
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
15
+ 34, 35, 37, 39, 41, 43, 47, 51, 59, 67, 83, 99, 131, 259, 515, 1027, 2051, 4099, 8195, 16387, 32771, 65539,
16
+ ]);
17
+ const ML_NUMBITS = new Uint8Array([
18
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3,
19
+ 3, 4, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
20
+ ]);
21
+ const DEFAULT_LL_TABLE = buildFSEDecodeTable(LITERALS_LENGTH_DEFAULT_DISTRIBUTION, LITERALS_LENGTH_TABLE_LOG);
22
+ const DEFAULT_OF_TABLE = buildFSEDecodeTable(OFFSET_CODE_DEFAULT_DISTRIBUTION, OFFSET_CODE_TABLE_LOG);
23
+ const DEFAULT_ML_TABLE = buildFSEDecodeTable(MATCH_LENGTH_DEFAULT_DISTRIBUTION, MATCH_LENGTH_TABLE_LOG);
24
+ const RLE_TABLE_CACHE_5 = new Array(256);
25
+ const RLE_TABLE_CACHE_6 = new Array(256);
26
+ const FAST_LITERAL_COPY_LOOP_THRESHOLD = 8;
27
+ const FAST_SMALL_OFFSET_LOOP_THRESHOLD = 16;
28
+ const FAST_HISTORY_COPY_LOOP_THRESHOLD = 16;
29
+ function buildRLETable(symbol, tableLog) {
30
+ const cache = tableLog === 5 ? RLE_TABLE_CACHE_5 : tableLog === 6 ? RLE_TABLE_CACHE_6 : null;
31
+ if (cache) {
32
+ const cached = cache[symbol];
33
+ if (cached) {
34
+ return cached;
35
+ }
6
36
  }
7
- if (literalsLength === 0) {
8
- return false;
37
+ const tableSize = 1 << tableLog;
38
+ const symbolByState = new Uint16Array(tableSize);
39
+ const bitsByState = new Uint8Array(tableSize);
40
+ const baselineByState = new Int32Array(tableSize);
41
+ for (let i = 0; i < tableSize; i++) {
42
+ symbolByState[i] = symbol;
43
+ bitsByState[i] = tableLog;
9
44
  }
10
- // For very large windows with history tracking enabled, the non-fused route can be more stable.
11
- if (updateHistory && windowSize > 8 * 1024 * 1024) {
12
- return false;
45
+ const table = {
46
+ symbol: symbolByState,
47
+ numBits: bitsByState,
48
+ baseline: baselineByState,
49
+ tableLog,
50
+ length: tableSize,
51
+ };
52
+ if (cache) {
53
+ cache[symbol] = table;
13
54
  }
14
- return true;
55
+ return table;
15
56
  }
16
- export function decodeAndExecuteSequencesInto(blockContent, seqOffset, seqSize, prevSeqTables, sequenceReuse, literals, windowSize, ensureOutputCapacity, getOutputBuffer, outputStart, repOffsets, history, updateHistory) {
17
- const seqResult = decodeSequences(blockContent, seqOffset, seqSize, prevSeqTables, sequenceReuse);
18
- if (seqResult.sequences.length === 0) {
19
- return { written: 0, seqResult };
20
- }
21
- ensureOutputCapacity(literals.length + seqResult.metadata.totalMatchLength);
22
- const output = getOutputBuffer();
23
- const written = executeSequencesIntoFast(literals, seqResult.sequences, windowSize, output, outputStart, repOffsets, history, updateHistory);
24
- return { written, seqResult };
57
+ export function decodeAndExecuteSequencesInto(blockContent, seqOffset, seqSize, prevSeqTables, literals, windowSize, output, outputStart, repOffsets, history, updateHistory, collectMetadata = true) {
58
+ if (seqSize < 2) {
59
+ throw new ZstdError('Sequences section too short', 'corruption_detected');
60
+ }
61
+ const sectionStart = seqOffset;
62
+ let pos = sectionStart;
63
+ let numSequences = blockContent[pos];
64
+ pos++;
65
+ if (numSequences >= 128) {
66
+ if (numSequences === 255) {
67
+ if (pos + 2 > sectionStart + seqSize) {
68
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
69
+ }
70
+ numSequences = blockContent[pos] + (blockContent[pos + 1] << 8) + 0x7f00;
71
+ pos += 2;
72
+ }
73
+ else {
74
+ if (pos >= sectionStart + seqSize) {
75
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
76
+ }
77
+ numSequences = ((numSequences - 0x80) << 8) + blockContent[pos];
78
+ pos++;
79
+ }
80
+ }
81
+ let llMode = 0;
82
+ let ofMode = 0;
83
+ let mlMode = 0;
84
+ let llTable = DEFAULT_LL_TABLE;
85
+ let llTableLog = LITERALS_LENGTH_TABLE_LOG;
86
+ let ofTable = DEFAULT_OF_TABLE;
87
+ let ofTableLog = OFFSET_CODE_TABLE_LOG;
88
+ let mlTable = DEFAULT_ML_TABLE;
89
+ let mlTableLog = MATCH_LENGTH_TABLE_LOG;
90
+ if (numSequences > 0) {
91
+ if (pos >= sectionStart + seqSize) {
92
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
93
+ }
94
+ const modesByte = blockContent[pos];
95
+ pos++;
96
+ llMode = ((modesByte >> 6) & 3);
97
+ ofMode = ((modesByte >> 4) & 3);
98
+ mlMode = ((modesByte >> 2) & 3);
99
+ if ((modesByte & 3) !== 0) {
100
+ throw new ZstdError('Reserved bits set in sequences modes', 'corruption_detected');
101
+ }
102
+ if (llMode === 1) {
103
+ if (pos >= sectionStart + seqSize)
104
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
105
+ llTable = buildRLETable(blockContent[pos], 6);
106
+ llTableLog = 6;
107
+ pos++;
108
+ }
109
+ else if (llMode === 2) {
110
+ const result = readNCount(blockContent, pos, 35, 9);
111
+ pos += result.bytesRead;
112
+ llTable = buildFSEDecodeTable(result.normalizedCounter, result.tableLog);
113
+ llTableLog = result.tableLog;
114
+ }
115
+ else if (llMode === 3) {
116
+ if (!prevSeqTables)
117
+ throw new ZstdError('Repeat_Mode without previous table', 'corruption_detected');
118
+ llTable = prevSeqTables.llTable;
119
+ llTableLog = prevSeqTables.llTableLog;
120
+ }
121
+ if (ofMode === 1) {
122
+ if (pos >= sectionStart + seqSize)
123
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
124
+ ofTable = buildRLETable(blockContent[pos], 5);
125
+ ofTableLog = 5;
126
+ pos++;
127
+ }
128
+ else if (ofMode === 2) {
129
+ const result = readNCount(blockContent, pos, 31, 8);
130
+ pos += result.bytesRead;
131
+ ofTable = buildFSEDecodeTable(result.normalizedCounter, result.tableLog);
132
+ ofTableLog = result.tableLog;
133
+ }
134
+ else if (ofMode === 3) {
135
+ if (!prevSeqTables)
136
+ throw new ZstdError('Repeat_Mode without previous table', 'corruption_detected');
137
+ ofTable = prevSeqTables.ofTable;
138
+ ofTableLog = prevSeqTables.ofTableLog;
139
+ }
140
+ if (mlMode === 1) {
141
+ if (pos >= sectionStart + seqSize)
142
+ throw new ZstdError('Sequences section truncated', 'corruption_detected');
143
+ mlTable = buildRLETable(blockContent[pos], 6);
144
+ mlTableLog = 6;
145
+ pos++;
146
+ }
147
+ else if (mlMode === 2) {
148
+ const result = readNCount(blockContent, pos, 52, 9);
149
+ pos += result.bytesRead;
150
+ mlTable = buildFSEDecodeTable(result.normalizedCounter, result.tableLog);
151
+ mlTableLog = result.tableLog;
152
+ }
153
+ else if (mlMode === 3) {
154
+ if (!prevSeqTables)
155
+ throw new ZstdError('Repeat_Mode without previous table', 'corruption_detected');
156
+ mlTable = prevSeqTables.mlTable;
157
+ mlTableLog = prevSeqTables.mlTableLog;
158
+ }
159
+ }
160
+ let outPos = outputStart;
161
+ let litPos = 0;
162
+ let totalMatchLength = 0;
163
+ let repeatOffsetCandidateCount = 0;
164
+ let rep0 = repOffsets[0];
165
+ let rep1 = repOffsets[1];
166
+ let rep2 = repOffsets[2];
167
+ const historyLength = history.length;
168
+ const historyCap = history.buffer.length;
169
+ const historyOldestPos = historyCap > 0 ? (history.writePos - historyLength + historyCap) % historyCap : 0;
170
+ const historyBuffer = history.buffer;
171
+ if (numSequences > 0) {
172
+ const bitstreamSize = sectionStart + seqSize - pos;
173
+ if (bitstreamSize < 1) {
174
+ throw new ZstdError('Sequences bitstream empty', 'corruption_detected');
175
+ }
176
+ const reader = new BitReaderReverse(blockContent, pos, bitstreamSize);
177
+ reader.skipPadding();
178
+ let stateLL = llTableLog > 0 ? reader.readBits(llTableLog) : 0;
179
+ let stateOF = ofTableLog > 0 ? reader.readBits(ofTableLog) : 0;
180
+ let stateML = mlTableLog > 0 ? reader.readBits(mlTableLog) : 0;
181
+ const llTableLength = llTable.length;
182
+ const ofTableLength = ofTable.length;
183
+ const mlTableLength = mlTable.length;
184
+ if (stateOF >>> 0 >= ofTableLength || stateML >>> 0 >= mlTableLength || stateLL >>> 0 >= llTableLength) {
185
+ throw new ZstdError('FSE invalid state', 'corruption_detected');
186
+ }
187
+ const llSymbolByState = llTable.symbol;
188
+ const ofSymbolByState = ofTable.symbol;
189
+ const mlSymbolByState = mlTable.symbol;
190
+ const llNumBitsByState = llTable.numBits;
191
+ const ofNumBitsByState = ofTable.numBits;
192
+ const mlNumBitsByState = mlTable.numBits;
193
+ const llBaselineByState = llTable.baseline;
194
+ const ofBaselineByState = ofTable.baseline;
195
+ const mlBaselineByState = mlTable.baseline;
196
+ const lastSequenceIndex = numSequences - 1;
197
+ for (let i = 0; i <= lastSequenceIndex; i++) {
198
+ const offsetCode = ofSymbolByState[stateOF];
199
+ const mlCode = mlSymbolByState[stateML];
200
+ const llCode = llSymbolByState[stateLL];
201
+ const offsetValue = (1 << offsetCode) + reader.readBitsFastOrZero(offsetCode);
202
+ if (mlCode >= ML_BASELINE.length)
203
+ throw new ZstdError('Invalid match length code', 'corruption_detected');
204
+ if (llCode >= LL_BASELINE.length)
205
+ throw new ZstdError('Invalid literals length code', 'corruption_detected');
206
+ const mlNumBits = ML_NUMBITS[mlCode];
207
+ const mlBase = ML_BASELINE[mlCode];
208
+ const matchLength = mlBase + reader.readBitsFastOrZero(mlNumBits);
209
+ const llNumBits = LL_NUMBITS[llCode];
210
+ const llBase = LL_BASELINE[llCode];
211
+ const literalsLength = llCode <= 15 ? llCode : llBase + reader.readBitsFastOrZero(llNumBits);
212
+ if (collectMetadata) {
213
+ if (offsetValue <= 2 || (offsetValue === 3 && literalsLength > 0)) {
214
+ repeatOffsetCandidateCount++;
215
+ }
216
+ totalMatchLength += matchLength;
217
+ }
218
+ if (literalsLength > 0) {
219
+ const litEnd = litPos + literalsLength;
220
+ if (litEnd > literals.length) {
221
+ throw new ZstdError('Literals overrun while executing sequence', 'corruption_detected');
222
+ }
223
+ if (literalsLength <= FAST_LITERAL_COPY_LOOP_THRESHOLD) {
224
+ for (let j = 0; j < literalsLength; j++) {
225
+ output[outPos + j] = literals[litPos + j];
226
+ }
227
+ }
228
+ else {
229
+ output.set(literals.subarray(litPos, litEnd), outPos);
230
+ }
231
+ outPos += literalsLength;
232
+ litPos = litEnd;
233
+ }
234
+ const ll0 = literalsLength === 0;
235
+ let offset;
236
+ let repeatIndex = null;
237
+ const isNonRepeat = offsetValue > 3 || (offsetValue === 3 && ll0);
238
+ if (isNonRepeat) {
239
+ if (offsetValue === 3) {
240
+ offset = rep0 - 1;
241
+ if (offset === 0) {
242
+ throw new ZstdError('Invalid match offset: repeat1-1 is 0', 'corruption_detected');
243
+ }
244
+ }
245
+ else {
246
+ offset = offsetValue - 3;
247
+ }
248
+ }
249
+ else {
250
+ if (ll0) {
251
+ repeatIndex = offsetValue === 1 ? 1 : 2;
252
+ }
253
+ else {
254
+ repeatIndex = (offsetValue - 1);
255
+ }
256
+ offset = repeatIndex === 0 ? rep0 : repeatIndex === 1 ? rep1 : rep2;
257
+ }
258
+ const produced = outPos - outputStart;
259
+ const producedPlusHistory = produced + historyLength;
260
+ const maxReachBack = producedPlusHistory < windowSize ? producedPlusHistory : windowSize;
261
+ if (offset <= 0 || offset > maxReachBack) {
262
+ throw new ZstdError(`Invalid match offset: offset=${offset} maxReachBack=${maxReachBack} produced=${produced} history=${historyLength} window=${windowSize}`, 'corruption_detected');
263
+ }
264
+ const historyBytesNeeded = offset > produced ? offset - produced : 0;
265
+ if (matchLength > 0) {
266
+ if (historyBytesNeeded === 0) {
267
+ const copyStart = outPos - offset;
268
+ if (offset >= matchLength) {
269
+ output.copyWithin(outPos, copyStart, copyStart + matchLength);
270
+ outPos += matchLength;
271
+ }
272
+ else if (offset <= FAST_SMALL_OFFSET_LOOP_THRESHOLD) {
273
+ for (let j = 0; j < matchLength; j++) {
274
+ output[outPos + j] = output[outPos - offset + j];
275
+ }
276
+ outPos += matchLength;
277
+ }
278
+ else {
279
+ let copied = offset;
280
+ output.copyWithin(outPos, copyStart, copyStart + copied);
281
+ outPos += copied;
282
+ while (copied < matchLength) {
283
+ const toCopy = Math.min(copied, matchLength - copied);
284
+ output.copyWithin(outPos, outPos - copied, outPos - copied + toCopy);
285
+ outPos += toCopy;
286
+ copied += toCopy;
287
+ }
288
+ }
289
+ }
290
+ else {
291
+ if (historyCap === 0) {
292
+ throw new ZstdError('Invalid history read', 'corruption_detected');
293
+ }
294
+ const historyCopyLen = Math.min(historyBytesNeeded, matchLength);
295
+ const historyStart = historyLength - historyBytesNeeded;
296
+ if (historyStart < 0 || historyStart + historyCopyLen > historyLength) {
297
+ throw new ZstdError('Invalid history read', 'corruption_detected');
298
+ }
299
+ let physicalStart = historyOldestPos + historyStart;
300
+ if (physicalStart >= historyCap) {
301
+ physicalStart -= historyCap;
302
+ }
303
+ const firstHistoryChunk = Math.min(historyCopyLen, historyCap - physicalStart);
304
+ const remainingHistoryChunk = historyCopyLen - firstHistoryChunk;
305
+ if (historyCopyLen <= FAST_HISTORY_COPY_LOOP_THRESHOLD) {
306
+ let phys = physicalStart;
307
+ for (let j = 0; j < historyCopyLen; j++) {
308
+ output[outPos + j] = historyBuffer[phys];
309
+ phys = phys + 1 === historyCap ? 0 : phys + 1;
310
+ }
311
+ outPos += historyCopyLen;
312
+ }
313
+ else {
314
+ output.set(historyBuffer.subarray(physicalStart, physicalStart + firstHistoryChunk), outPos);
315
+ outPos += firstHistoryChunk;
316
+ if (remainingHistoryChunk > 0) {
317
+ output.set(historyBuffer.subarray(0, remainingHistoryChunk), outPos);
318
+ outPos += remainingHistoryChunk;
319
+ }
320
+ }
321
+ const matchRemaining = matchLength - historyCopyLen;
322
+ if (matchRemaining > 0) {
323
+ const copyStart = outPos - offset;
324
+ if (offset >= matchRemaining) {
325
+ output.copyWithin(outPos, copyStart, copyStart + matchRemaining);
326
+ outPos += matchRemaining;
327
+ }
328
+ else if (offset <= FAST_SMALL_OFFSET_LOOP_THRESHOLD) {
329
+ for (let j = 0; j < matchRemaining; j++) {
330
+ output[outPos + j] = output[outPos - offset + j];
331
+ }
332
+ outPos += matchRemaining;
333
+ }
334
+ else {
335
+ let copied = offset;
336
+ output.copyWithin(outPos, copyStart, copyStart + copied);
337
+ outPos += copied;
338
+ while (copied < matchRemaining) {
339
+ const toCopy = Math.min(copied, matchRemaining - copied);
340
+ output.copyWithin(outPos, outPos - copied, outPos - copied + toCopy);
341
+ outPos += toCopy;
342
+ copied += toCopy;
343
+ }
344
+ }
345
+ }
346
+ }
347
+ }
348
+ if (isNonRepeat) {
349
+ rep2 = rep1;
350
+ rep1 = rep0;
351
+ rep0 = offset;
352
+ }
353
+ else if (repeatIndex === 1) {
354
+ rep1 = rep0;
355
+ rep0 = offset;
356
+ }
357
+ else if (repeatIndex === 2) {
358
+ rep2 = rep1;
359
+ rep1 = rep0;
360
+ rep0 = offset;
361
+ }
362
+ if (i < lastSequenceIndex) {
363
+ const llBits = llNumBitsByState[stateLL];
364
+ const mlBits = mlNumBitsByState[stateML];
365
+ const ofBits = ofNumBitsByState[stateOF];
366
+ stateLL = llBaselineByState[stateLL] + reader.readBitsFastOrZero(llBits);
367
+ stateML = mlBaselineByState[stateML] + reader.readBitsFastOrZero(mlBits);
368
+ stateOF = ofBaselineByState[stateOF] + reader.readBitsFastOrZero(ofBits);
369
+ if (stateOF >>> 0 >= ofTableLength || stateML >>> 0 >= mlTableLength || stateLL >>> 0 >= llTableLength) {
370
+ throw new ZstdError('FSE invalid state', 'corruption_detected');
371
+ }
372
+ }
373
+ }
374
+ }
375
+ if (litPos < literals.length) {
376
+ const remaining = literals.length - litPos;
377
+ if (remaining <= FAST_LITERAL_COPY_LOOP_THRESHOLD) {
378
+ for (let i = 0; i < remaining; i++) {
379
+ output[outPos + i] = literals[litPos + i];
380
+ }
381
+ }
382
+ else {
383
+ output.set(literals.subarray(litPos), outPos);
384
+ }
385
+ outPos += remaining;
386
+ }
387
+ if (updateHistory && outPos > outputStart) {
388
+ appendRangeToHistoryWindow(history, output, outputStart, outPos - outputStart);
389
+ }
390
+ repOffsets[0] = rep0;
391
+ repOffsets[1] = rep1;
392
+ repOffsets[2] = rep2;
393
+ return {
394
+ written: outPos - outputStart,
395
+ tables: { llTable, llTableLog, ofTable, ofTableLog, mlTable, mlTableLog },
396
+ metadata: {
397
+ numSequences,
398
+ llMode,
399
+ ofMode,
400
+ mlMode,
401
+ llTableLog,
402
+ ofTableLog,
403
+ mlTableLog,
404
+ totalMatchLength,
405
+ repeatOffsetCandidateCount,
406
+ },
407
+ };
25
408
  }
26
409
  //# sourceMappingURL=fusedSequences.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fusedSequences.js","sourceRoot":"","sources":["../../src/decode/fusedSequences.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAsB,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAmD,MAAM,gBAAgB,CAAC;AAOlG,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,aAAsB,EACb;IACT,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,gGAAgG;IAChG,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb;AAED,MAAM,UAAU,6BAA6B,CAC3C,YAAwB,EACxB,SAAiB,EACjB,OAAe,EACf,aAAoC,EACpC,aAA0C,EAC1C,QAAoB,EACpB,UAAkB,EAClB,oBAAkD,EAClD,eAAiC,EACjC,WAAmB,EACnB,UAAoC,EACpC,OAAsB,EACtB,aAAsB,EACI;IAC1B,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAClG,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACnC,CAAC;IACD,oBAAoB,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,wBAAwB,CACtC,QAAQ,EACR,SAAS,CAAC,SAAS,EACnB,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,aAAa,CACd,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAAA,CAC/B"}
1
+ {"version":3,"file":"fusedSequences.js","sourceRoot":"","sources":["../../src/decode/fusedSequences.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,6 @@ export declare function createHistoryWindow(windowSize: number, initial?: Uint8A
22
22
  export interface DecoderReuseBag {
23
23
  _history?: HistoryWindow;
24
24
  _sequences?: PackedSequences;
25
- _decodeMode?: 'fast' | 'reference';
26
- _useFusedSequences?: boolean;
27
25
  }
28
26
  export declare function ensurePackedSequencesCapacity(existing: PackedSequences | undefined, minLength: number): PackedSequences;
29
27
  export declare function packSequences(sequences: readonly Sequence[], reuse?: PackedSequences): PackedSequences;