zstdify 1.2.0 → 1.3.1
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.
- package/README.md +47 -9
- package/dist/bitstream/bitReaderReverse.d.ts +6 -0
- package/dist/bitstream/bitReaderReverse.js +38 -12
- package/dist/bitstream/bitReaderReverse.js.map +1 -1
- package/dist/bitstream/index.d.ts +1 -0
- package/dist/bitstream/index.js +1 -0
- package/dist/bitstream/index.js.map +1 -1
- package/dist/bitstream/reverseBitWriter.d.ts +1 -0
- package/dist/bitstream/reverseBitWriter.js +66 -0
- package/dist/bitstream/reverseBitWriter.js.map +1 -0
- package/dist/compress.js +46 -5
- package/dist/compress.js.map +1 -1
- package/dist/decode/debugTrace.d.ts +31 -0
- package/dist/decode/debugTrace.js +2 -0
- package/dist/decode/debugTrace.js.map +1 -0
- package/dist/decode/decompressFrame.d.ts +2 -1
- package/dist/decode/decompressFrame.js +96 -18
- package/dist/decode/decompressFrame.js.map +1 -1
- package/dist/decode/fusedSequences.d.ts +9 -0
- package/dist/decode/fusedSequences.js +26 -0
- package/dist/decode/fusedSequences.js.map +1 -0
- package/dist/decode/literals.js +129 -79
- package/dist/decode/literals.js.map +1 -1
- package/dist/decode/reconstruct.d.ts +14 -2
- package/dist/decode/reconstruct.js +378 -21
- package/dist/decode/reconstruct.js.map +1 -1
- package/dist/decode/sequences.d.ts +19 -7
- package/dist/decode/sequences.js +127 -48
- package/dist/decode/sequences.js.map +1 -1
- package/dist/decompress.d.ts +3 -0
- package/dist/decompress.js +1 -1
- package/dist/decompress.js.map +1 -1
- package/dist/encode/compressedBlock.d.ts +27 -1
- package/dist/encode/compressedBlock.js +573 -367
- package/dist/encode/compressedBlock.js.map +1 -1
- package/dist/encode/fastMatcher.d.ts +7 -0
- package/dist/encode/fastMatcher.js +13 -0
- package/dist/encode/fastMatcher.js.map +1 -0
- package/dist/encode/greedySequences.d.ts +9 -6
- package/dist/encode/greedySequences.js +22 -101
- package/dist/encode/greedySequences.js.map +1 -1
- package/dist/encode/lazyMatcher.d.ts +7 -0
- package/dist/encode/lazyMatcher.js +13 -0
- package/dist/encode/lazyMatcher.js.map +1 -0
- package/dist/encode/literalsEncoder.d.ts +14 -0
- package/dist/encode/literalsEncoder.js +343 -0
- package/dist/encode/literalsEncoder.js.map +1 -0
- package/dist/encode/optimalParser.d.ts +7 -0
- package/dist/encode/optimalParser.js +13 -0
- package/dist/encode/optimalParser.js.map +1 -0
- package/dist/encode/sequencePlanner.d.ts +23 -0
- package/dist/encode/sequencePlanner.js +280 -0
- package/dist/encode/sequencePlanner.js.map +1 -0
- package/dist/entropy/fse.d.ts +13 -6
- package/dist/entropy/fse.js +175 -8
- package/dist/entropy/fse.js.map +1 -1
- package/dist/entropy/huffman.d.ts +7 -5
- package/dist/entropy/huffman.js +18 -7
- package/dist/entropy/huffman.js.map +1 -1
- package/dist/entropy/index.d.ts +2 -2
- package/dist/entropy/weights.js +20 -14
- package/dist/entropy/weights.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,10 +5,11 @@ import { readU32LE } from '../bitstream/littleEndian.js';
|
|
|
5
5
|
import { ZstdError } from '../errors.js';
|
|
6
6
|
import { validateContentChecksum } from '../frame/checksum.js';
|
|
7
7
|
import { parseBlockHeader } from './block.js';
|
|
8
|
+
import { decodeAndExecuteSequencesInto, shouldUseFusedSequencePath } from './fusedSequences.js';
|
|
8
9
|
import { decodeCompressedLiterals, decodeRawLiterals, decodeRLELiterals, decodeTreelessLiterals, parseLiteralsSectionHeader, } from './literals.js';
|
|
9
|
-
import { appendRangeToHistoryWindow, appendRLEToHistoryWindow, appendToHistoryWindow, executeSequencesInto, getOrCreateHistoryWindow, } from './reconstruct.js';
|
|
10
|
+
import { appendRangeToHistoryWindow, appendRLEToHistoryWindow, appendToHistoryWindow, executeSequencesInto, executeSequencesIntoFast, getOrCreateHistoryWindow, } from './reconstruct.js';
|
|
10
11
|
import { decodeSequences } from './sequences.js';
|
|
11
|
-
export function decompressFrame(data, offset, header, dictionary, maxSize, validateChecksum = true, reuseContext) {
|
|
12
|
+
export function decompressFrame(data, offset, header, dictionary, maxSize, validateChecksum = true, reuseContext, debugTrace) {
|
|
12
13
|
let pos = offset + 4 + header.headerSize;
|
|
13
14
|
const knownOutputSize = header.contentSize ?? null;
|
|
14
15
|
let outputBuffer = knownOutputSize !== null ? new Uint8Array(knownOutputSize) : new Uint8Array(0);
|
|
@@ -19,6 +20,9 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
19
20
|
const history = getOrCreateHistoryWindow(header.windowSize, dictionary?.historyPrefix, reuseContext);
|
|
20
21
|
let prevHuffmanTable = dictionary?.huffmanTable ?? null;
|
|
21
22
|
let prevSeqTables = dictionary?.sequenceTables ?? null;
|
|
23
|
+
const decodeMode = reuseContext?._decodeMode ?? 'fast';
|
|
24
|
+
const useFastPath = decodeMode !== 'reference';
|
|
25
|
+
const useFusedSequences = reuseContext?._useFusedSequences !== false;
|
|
22
26
|
const ensureOutputCapacity = (additional) => {
|
|
23
27
|
const needed = totalSize + additional;
|
|
24
28
|
if (needed <= outputBuffer.length) {
|
|
@@ -42,12 +46,18 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
42
46
|
outputBuffer.set(chunk, totalSize);
|
|
43
47
|
totalSize += chunk.length;
|
|
44
48
|
};
|
|
49
|
+
let blockIndex = 0;
|
|
50
|
+
const onBlockDecoded = debugTrace?.onBlockDecoded;
|
|
45
51
|
while (true) {
|
|
46
52
|
if (pos + 3 > data.length) {
|
|
47
53
|
throw new ZstdError('Block header truncated', 'corruption_detected');
|
|
48
54
|
}
|
|
55
|
+
const blockHeaderPos = pos;
|
|
49
56
|
const block = parseBlockHeader(data, pos);
|
|
50
57
|
pos += 3;
|
|
58
|
+
const blockOutputStart = totalSize;
|
|
59
|
+
let blockLiteralsInfo;
|
|
60
|
+
let blockSequencesInfo;
|
|
51
61
|
if (block.blockType === 0) {
|
|
52
62
|
if (pos + block.blockSize > data.length) {
|
|
53
63
|
throw new ZstdError('Raw literals truncated', 'corruption_detected');
|
|
@@ -76,6 +86,15 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
76
86
|
else if (block.blockType === 2) {
|
|
77
87
|
const blockContent = data.subarray(pos, pos + block.blockSize);
|
|
78
88
|
const { header: litHeader, dataOffset: litDataOffset } = parseLiteralsSectionHeader(blockContent, 0);
|
|
89
|
+
if (onBlockDecoded) {
|
|
90
|
+
blockLiteralsInfo = {
|
|
91
|
+
blockType: litHeader.blockType,
|
|
92
|
+
regeneratedSize: litHeader.regeneratedSize,
|
|
93
|
+
compressedSize: litHeader.compressedSize,
|
|
94
|
+
numStreams: litHeader.numStreams,
|
|
95
|
+
headerSize: litHeader.headerSize,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
79
98
|
let literals;
|
|
80
99
|
let litBytesConsumed;
|
|
81
100
|
if (litHeader.blockType === 0) {
|
|
@@ -108,26 +127,71 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
108
127
|
}
|
|
109
128
|
}
|
|
110
129
|
else {
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
130
|
+
const canUseFusedPath = useFastPath &&
|
|
131
|
+
useFusedSequences &&
|
|
132
|
+
shouldUseFusedSequencePath(seqSectionSize, literals.length, header.windowSize, !block.lastBlock);
|
|
133
|
+
if (canUseFusedPath) {
|
|
134
|
+
const start = totalSize;
|
|
135
|
+
const { written, seqResult } = decodeAndExecuteSequencesInto(blockContent, litBytesConsumed, seqSectionSize, prevSeqTables, reuseContext?._sequences, literals, header.windowSize, ensureOutputCapacity, () => outputBuffer, start, repOffsets, history, !block.lastBlock);
|
|
136
|
+
if (reuseContext) {
|
|
137
|
+
reuseContext._sequences = seqResult.sequences;
|
|
138
|
+
}
|
|
139
|
+
prevSeqTables = seqResult.tables;
|
|
140
|
+
if (onBlockDecoded) {
|
|
141
|
+
blockSequencesInfo = {
|
|
142
|
+
numSequences: seqResult.metadata.numSequences,
|
|
143
|
+
llMode: seqResult.metadata.llMode,
|
|
144
|
+
ofMode: seqResult.metadata.ofMode,
|
|
145
|
+
mlMode: seqResult.metadata.mlMode,
|
|
146
|
+
llTableLog: seqResult.metadata.llTableLog,
|
|
147
|
+
ofTableLog: seqResult.metadata.ofTableLog,
|
|
148
|
+
mlTableLog: seqResult.metadata.mlTableLog,
|
|
149
|
+
repeatOffsetCandidateCount: seqResult.metadata.repeatOffsetCandidateCount,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (seqResult.sequences.length === 0) {
|
|
153
|
+
appendOutput(literals);
|
|
154
|
+
if (!block.lastBlock) {
|
|
155
|
+
appendToHistoryWindow(history, literals);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
totalSize += written;
|
|
120
160
|
}
|
|
121
161
|
}
|
|
122
162
|
else {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
163
|
+
const seqResult = decodeSequences(blockContent, litBytesConsumed, seqSectionSize, prevSeqTables, reuseContext?._sequences);
|
|
164
|
+
if (reuseContext) {
|
|
165
|
+
reuseContext._sequences = seqResult.sequences;
|
|
166
|
+
}
|
|
167
|
+
prevSeqTables = seqResult.tables;
|
|
168
|
+
if (onBlockDecoded) {
|
|
169
|
+
blockSequencesInfo = {
|
|
170
|
+
numSequences: seqResult.metadata.numSequences,
|
|
171
|
+
llMode: seqResult.metadata.llMode,
|
|
172
|
+
ofMode: seqResult.metadata.ofMode,
|
|
173
|
+
mlMode: seqResult.metadata.mlMode,
|
|
174
|
+
llTableLog: seqResult.metadata.llTableLog,
|
|
175
|
+
ofTableLog: seqResult.metadata.ofTableLog,
|
|
176
|
+
mlTableLog: seqResult.metadata.mlTableLog,
|
|
177
|
+
repeatOffsetCandidateCount: seqResult.metadata.repeatOffsetCandidateCount,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (seqResult.sequences.length === 0) {
|
|
181
|
+
appendOutput(literals);
|
|
182
|
+
if (!block.lastBlock) {
|
|
183
|
+
appendToHistoryWindow(history, literals);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
const decodedSize = literals.length + seqResult.metadata.totalMatchLength;
|
|
188
|
+
ensureOutputCapacity(decodedSize);
|
|
189
|
+
const start = totalSize;
|
|
190
|
+
const written = useFastPath
|
|
191
|
+
? executeSequencesIntoFast(literals, seqResult.sequences, header.windowSize, outputBuffer, start, repOffsets, history, !block.lastBlock)
|
|
192
|
+
: executeSequencesInto(literals, seqResult.sequences, header.windowSize, outputBuffer, start, repOffsets, history, !block.lastBlock);
|
|
193
|
+
totalSize += written;
|
|
126
194
|
}
|
|
127
|
-
ensureOutputCapacity(decodedSize);
|
|
128
|
-
const start = totalSize;
|
|
129
|
-
const written = executeSequencesInto(literals, seqResult.sequences, header.windowSize, outputBuffer, start, repOffsets, history, !block.lastBlock);
|
|
130
|
-
totalSize += written;
|
|
131
195
|
}
|
|
132
196
|
}
|
|
133
197
|
pos += block.blockSize;
|
|
@@ -135,6 +199,20 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
135
199
|
else {
|
|
136
200
|
throw new ZstdError('Unsupported block type', 'corruption_detected');
|
|
137
201
|
}
|
|
202
|
+
if (onBlockDecoded) {
|
|
203
|
+
onBlockDecoded({
|
|
204
|
+
blockIndex,
|
|
205
|
+
blockType: block.blockType,
|
|
206
|
+
blockSize: block.blockSize,
|
|
207
|
+
lastBlock: block.lastBlock,
|
|
208
|
+
inputOffset: blockHeaderPos,
|
|
209
|
+
outputStart: blockOutputStart,
|
|
210
|
+
outputEnd: totalSize,
|
|
211
|
+
literals: blockLiteralsInfo,
|
|
212
|
+
sequences: blockSequencesInfo,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
blockIndex++;
|
|
138
216
|
if (maxSize !== undefined && totalSize > maxSize) {
|
|
139
217
|
throw new ZstdError('Decompressed size exceeds maxSize', 'parameter_unsupported');
|
|
140
218
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompressFrame.js","sourceRoot":"","sources":["../../src/decode/decompressFrame.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"decompressFrame.js","sourceRoot":"","sources":["../../src/decode/decompressFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PackedSequences } from './reconstruct.js';
|
|
2
|
+
import { type HistoryWindow } from './reconstruct.js';
|
|
3
|
+
import { type DecodeSequencesResult, type SequenceTables } from './sequences.js';
|
|
4
|
+
export interface FusedDecodeExecuteResult {
|
|
5
|
+
written: number;
|
|
6
|
+
seqResult: DecodeSequencesResult;
|
|
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;
|
|
@@ -0,0 +1,26 @@
|
|
|
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;
|
|
6
|
+
}
|
|
7
|
+
if (literalsLength === 0) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
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;
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
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 };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fusedSequences.js.map
|
|
@@ -0,0 +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,EAA8B,eAAe,EAAuB,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"}
|
package/dist/decode/literals.js
CHANGED
|
@@ -130,12 +130,20 @@ function decodeHuffmanStreamByCountInto(data, streamOffset, streamLength, table,
|
|
|
130
130
|
reader.skipPadding();
|
|
131
131
|
let written = 0;
|
|
132
132
|
for (let i = 0; i < numSymbols; i++) {
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
if (
|
|
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
136
|
throw new ZstdError('Huffman invalid code', 'corruption_detected');
|
|
137
137
|
}
|
|
138
|
-
|
|
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];
|
|
139
147
|
written++;
|
|
140
148
|
}
|
|
141
149
|
return written;
|
|
@@ -152,44 +160,136 @@ function decodeHuffmanStreamToEndInto(data, streamOffset, streamLength, table, m
|
|
|
152
160
|
const highestSetBit = 31 - Math.clz32(lastByte);
|
|
153
161
|
const paddingBits = 8 - highestSetBit;
|
|
154
162
|
let bitOffset = streamLength * 8 - paddingBits;
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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)
|
|
163
192
|
continue;
|
|
164
193
|
const byteIndex = abs >>> 3;
|
|
165
194
|
const bitInByte = abs & 7;
|
|
166
|
-
|
|
167
|
-
value |= bit << i;
|
|
195
|
+
state |= ((stream[byteIndex] >>> bitInByte) & 1) << i;
|
|
168
196
|
}
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
let state = readBitsZeroExtended(maxNumBits);
|
|
197
|
+
state >>>= 0;
|
|
198
|
+
}
|
|
199
|
+
bitOffset = nextBitOffset;
|
|
173
200
|
let written = 0;
|
|
174
201
|
while (bitOffset > -maxNumBits) {
|
|
175
|
-
|
|
176
|
-
|
|
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) {
|
|
177
207
|
throw new ZstdError('Huffman invalid code', 'corruption_detected');
|
|
178
208
|
}
|
|
179
209
|
if (outOffset + written >= out.length) {
|
|
180
210
|
throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
|
|
181
211
|
}
|
|
182
|
-
out[outOffset + written] =
|
|
212
|
+
out[outOffset + written] = table.symbol[state];
|
|
183
213
|
written++;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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;
|
|
187
252
|
}
|
|
188
253
|
if (bitOffset !== -maxNumBits) {
|
|
189
254
|
throw new ZstdError('Huffman stream did not end cleanly', 'corruption_detected');
|
|
190
255
|
}
|
|
191
256
|
return written;
|
|
192
257
|
}
|
|
258
|
+
function parseFourStreamJumpTable(data, pos, totalStreamsSize) {
|
|
259
|
+
if (totalStreamsSize < 10) {
|
|
260
|
+
throw new ZstdError('4-stream mode requires at least 10 bytes', 'corruption_detected');
|
|
261
|
+
}
|
|
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');
|
|
291
|
+
}
|
|
292
|
+
}
|
|
193
293
|
/**
|
|
194
294
|
* Decode compressed literals (Huffman). Requires Huffman table from tree description.
|
|
195
295
|
*/
|
|
@@ -222,37 +322,12 @@ export function decodeCompressedLiterals(data, offset, compressedSize, regenerat
|
|
|
222
322
|
throw new ZstdError('Invalid literals compressed size', 'corruption_detected');
|
|
223
323
|
}
|
|
224
324
|
const result = new Uint8Array(regeneratedSize);
|
|
225
|
-
let outPos = 0;
|
|
226
325
|
if (numStreams === 1) {
|
|
227
326
|
decodeHuffmanStreamByCountInto(data, pos, totalStreamsSize, huffmanTable.table, huffmanTable.maxNumBits, result, 0, regeneratedSize);
|
|
228
327
|
}
|
|
229
328
|
else {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
const s1 = data[pos] | (data[pos + 1] << 8);
|
|
234
|
-
const s2 = data[pos + 2] | (data[pos + 3] << 8);
|
|
235
|
-
const s3 = data[pos + 4] | (data[pos + 5] << 8);
|
|
236
|
-
const stream1Size = s1;
|
|
237
|
-
const stream2Size = s2;
|
|
238
|
-
const stream3Size = s3;
|
|
239
|
-
const stream4Size = totalStreamsSize - 6 - stream1Size - stream2Size - stream3Size;
|
|
240
|
-
if (stream4Size < 0) {
|
|
241
|
-
throw new ZstdError(`Invalid jump table in 4-stream literals: total=${totalStreamsSize} s1=${stream1Size} s2=${stream2Size} s3=${stream3Size}`, 'corruption_detected');
|
|
242
|
-
}
|
|
243
|
-
let streamOffset = pos + 6;
|
|
244
|
-
const decodeStream = (size) => {
|
|
245
|
-
const written = decodeHuffmanStreamToEndInto(data, streamOffset, size, huffmanTable.table, huffmanTable.maxNumBits, result, outPos);
|
|
246
|
-
outPos += written;
|
|
247
|
-
streamOffset += size;
|
|
248
|
-
};
|
|
249
|
-
decodeStream(stream1Size);
|
|
250
|
-
decodeStream(stream2Size);
|
|
251
|
-
decodeStream(stream3Size);
|
|
252
|
-
decodeStream(stream4Size);
|
|
253
|
-
if (outPos !== regeneratedSize) {
|
|
254
|
-
throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
|
|
255
|
-
}
|
|
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);
|
|
256
331
|
}
|
|
257
332
|
return {
|
|
258
333
|
literals: result,
|
|
@@ -265,38 +340,13 @@ export function decodeCompressedLiterals(data, offset, compressedSize, regenerat
|
|
|
265
340
|
*/
|
|
266
341
|
export function decodeTreelessLiterals(data, offset, compressedSize, regeneratedSize, numStreams, huffmanTable) {
|
|
267
342
|
const result = new Uint8Array(regeneratedSize);
|
|
268
|
-
|
|
269
|
-
let pos = offset;
|
|
343
|
+
const pos = offset;
|
|
270
344
|
if (numStreams === 1) {
|
|
271
345
|
decodeHuffmanStreamByCountInto(data, pos, compressedSize, huffmanTable.table, huffmanTable.maxNumBits, result, 0, regeneratedSize);
|
|
272
346
|
}
|
|
273
347
|
else {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
const s1 = data[pos] | (data[pos + 1] << 8);
|
|
278
|
-
const s2 = data[pos + 2] | (data[pos + 3] << 8);
|
|
279
|
-
const s3 = data[pos + 4] | (data[pos + 5] << 8);
|
|
280
|
-
const stream1Size = s1;
|
|
281
|
-
const stream2Size = s2;
|
|
282
|
-
const stream3Size = s3;
|
|
283
|
-
const stream4Size = compressedSize - 6 - stream1Size - stream2Size - stream3Size;
|
|
284
|
-
if (stream4Size < 0) {
|
|
285
|
-
throw new ZstdError(`Invalid jump table in 4-stream literals: total=${compressedSize} s1=${stream1Size} s2=${stream2Size} s3=${stream3Size}`, 'corruption_detected');
|
|
286
|
-
}
|
|
287
|
-
pos += 6;
|
|
288
|
-
const decodeStream = (size) => {
|
|
289
|
-
const written = decodeHuffmanStreamToEndInto(data, pos, size, huffmanTable.table, huffmanTable.maxNumBits, result, outPos);
|
|
290
|
-
outPos += written;
|
|
291
|
-
pos += size;
|
|
292
|
-
};
|
|
293
|
-
decodeStream(stream1Size);
|
|
294
|
-
decodeStream(stream2Size);
|
|
295
|
-
decodeStream(stream3Size);
|
|
296
|
-
decodeStream(stream4Size);
|
|
297
|
-
if (outPos !== regeneratedSize) {
|
|
298
|
-
throw new ZstdError('Huffman literals size mismatch', 'corruption_detected');
|
|
299
|
-
}
|
|
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);
|
|
300
350
|
}
|
|
301
351
|
return { literals: result, bytesRead: compressedSize };
|
|
302
352
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/decode/literals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAYzC;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAgB,EAChB,MAAc,EACyC;IACvD,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC;IACzB,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAsB,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBACpE,UAAU,EAAE,MAAM,GAAG,CAAC;aACvB,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,IAAI,SAAS,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO;gBACL,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBACpE,UAAU,EAAE,MAAM,GAAG,CAAC;aACvB,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,IAAI,SAAS,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO;gBACL,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBACpE,UAAU,EAAE,MAAM,GAAG,CAAC;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAsB,CAAC;QAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,eAAe,KAAK,SAAS,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,qBAAqB,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAE,CAAW,CAAC,CAAC,CAAE,CAAW,CAAC;QAClE,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC5C,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,SAAS,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;QAClF,CAAC;QACD,OAAO;YACL,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE;YAC9E,UAAU,EAAE,MAAM,GAAG,UAAU;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,qBAAqB,CAAC,CAAC;AAAA,CAC/E;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,MAAc,EAAE,IAAY,EAAc;IAC5F,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC;IACD,8EAA8E;IAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAAA,CAC7C;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,MAAc,EAAE,IAAY,EAAc;IAC5F,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAAA,CACf;AAED,SAAS,qBAAqB,CAAC,OAAiB,EAG9C;IACA,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC;YAAE,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;IACrC,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,SAAS,CAAC,wDAAwD,EAAE,qBAAqB,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;IAEzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAAA,CAC9B;AAED,SAAS,8BAA8B,CACrC,IAAgB,EAChB,YAAoB,EACpB,YAAoB,EACpB,KAAiD,EACjD,UAAkB,EAClB,GAAe,EACf,SAAiB,EACjB,UAAkB,EACV;IACR,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,SAAS,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,CAAC,WAAW,EAAE,CAAC;IACrB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,SAAS,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QACrE,CAAC;QACD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CAChB;AAED,SAAS,4BAA4B,CACnC,IAAgB,EAChB,YAAoB,EACpB,YAAoB,EACpB,KAAiD,EACjD,UAAkB,EAClB,GAAe,EACf,SAAiB,EACT;IACR,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,SAAS,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC5C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CAAC,4BAA4B,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC;IACtC,IAAI,SAAS,GAAG,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC;IAE/C,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC;QACxD,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAC3B,SAAS,IAAI,OAAO,CAAC;QACrB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,YAAY,GAAG,CAAC;gBAAE,SAAS;YACjD,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAE,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;YACnD,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IAAA,CACd,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,SAAS,GAAG,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,SAAS,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,SAAS,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;QAC/E,CAAC;QACD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,CAAC;IACD,IAAI,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,oCAAoC,EAAE,qBAAqB,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CAChB;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,MAAc,EACd,cAAsB,EACtB,eAAuB,EACvB,UAAiB,EAKjB;IACA,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,IAAI,YAAuF,CAAC;IAE5F,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,oCAAoC,EAAE,qBAAqB,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC;IAC9B,GAAG,EAAE,CAAC;IAEN,IAAI,OAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IAEtB,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC;QACpC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC,CAAC;QACZ,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAC1B,GAAG,IAAI,SAAS,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,CAAC;QACZ,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAC1B,GAAG,IAAI,UAAU,CAAC;IACpB,CAAC;IAED,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAC;IACpD,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,kCAAkC,EAAE,qBAAqB,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,8BAA8B,CAC5B,IAAI,EACJ,GAAG,EACH,gBAAgB,EAChB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,UAAU,EACvB,MAAM,EACN,CAAC,EACD,eAAe,CAChB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,gBAAgB,GAAG,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,0CAA0C,EAAE,qBAAqB,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,gBAAgB,GAAG,CAAC,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;QACnF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CACjB,kDAAkD,gBAAgB,OAAO,WAAW,OAAO,WAAW,OAAO,WAAW,EAAE,EAC1H,qBAAqB,CACtB,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;QAE3B,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,4BAA4B,CAC1C,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,UAAU,EACvB,MAAM,EACN,MAAM,CACP,CAAC;YACF,MAAM,IAAI,OAAO,CAAC;YAClB,YAAY,IAAI,IAAI,CAAC;QAAA,CACtB,CAAC;QAEF,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,YAAY;QACZ,SAAS,EAAE,cAAc;KAC1B,CAAC;AAAA,CACH;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAgB,EAChB,MAAc,EACd,cAAsB,EACtB,eAAuB,EACvB,UAAiB,EACjB,YAAuF,EAC1C;IAC7C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,8BAA8B,CAC5B,IAAI,EACJ,GAAG,EACH,cAAc,EACd,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,UAAU,EACvB,MAAM,EACN,CAAC,EACD,eAAe,CAChB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,0CAA0C,EAAE,qBAAqB,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,cAAc,GAAG,CAAC,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;QACjF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CACjB,kDAAkD,cAAc,OAAO,WAAW,OAAO,WAAW,OAAO,WAAW,EAAE,EACxH,qBAAqB,CACtB,CAAC;QACJ,CAAC;QAED,GAAG,IAAI,CAAC,CAAC;QAET,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,4BAA4B,CAC1C,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,UAAU,EACvB,MAAM,EACN,MAAM,CACP,CAAC;YACF,MAAM,IAAI,OAAO,CAAC;YAClB,GAAG,IAAI,IAAI,CAAC;QAAA,CACb,CAAC;QAEF,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAAA,CACxD"}
|
|
1
|
+
{"version":3,"file":"literals.js","sourceRoot":"","sources":["../../src/decode/literals.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,12 @@ 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
|
+
}
|
|
9
15
|
export interface HistoryWindow {
|
|
10
16
|
buffer: Uint8Array;
|
|
11
17
|
length: number;
|
|
@@ -15,8 +21,13 @@ export declare function createHistoryWindow(windowSize: number, initial?: Uint8A
|
|
|
15
21
|
/** Internal: reuse bag for decoder context. */
|
|
16
22
|
export interface DecoderReuseBag {
|
|
17
23
|
_history?: HistoryWindow;
|
|
18
|
-
_sequences?:
|
|
24
|
+
_sequences?: PackedSequences;
|
|
25
|
+
_decodeMode?: 'fast' | 'reference';
|
|
26
|
+
_useFusedSequences?: boolean;
|
|
19
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[];
|
|
20
31
|
/**
|
|
21
32
|
* Get or create a history window, reusing from bag when buffer is large enough.
|
|
22
33
|
* Caller may pass a mutable bag; it will be updated with the history used.
|
|
@@ -25,7 +36,8 @@ export declare function getOrCreateHistoryWindow(windowSize: number, initial: Ui
|
|
|
25
36
|
export declare function appendToHistoryWindow(history: HistoryWindow, chunk: Uint8Array): void;
|
|
26
37
|
export declare function appendRangeToHistoryWindow(history: HistoryWindow, source: Uint8Array, start: number, length: number): void;
|
|
27
38
|
export declare function appendRLEToHistoryWindow(history: HistoryWindow, byte: number, length: number): void;
|
|
28
|
-
export declare function executeSequencesInto(literals: Uint8Array, sequences:
|
|
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;
|
|
29
41
|
/**
|
|
30
42
|
* Execute sequences to produce decompressed output.
|
|
31
43
|
* repOffsets: [Repeated_Offset1, Repeated_Offset2, Repeated_Offset3], updated in place.
|