zstdify 1.3.1 → 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.
- package/README.md +10 -8
- package/dist/bitstream/bitReaderReverse.d.ts +15 -0
- package/dist/bitstream/bitReaderReverse.js +38 -0
- package/dist/bitstream/bitReaderReverse.js.map +1 -1
- package/dist/bitstream/reverseBitWriter.d.ts +15 -1
- package/dist/bitstream/reverseBitWriter.js +6 -7
- package/dist/bitstream/reverseBitWriter.js.map +1 -1
- package/dist/bitstream/varint.d.ts +2 -1
- package/dist/bitstream/varint.js +16 -8
- package/dist/bitstream/varint.js.map +1 -1
- package/dist/compress.js +8 -7
- package/dist/compress.js.map +1 -1
- package/dist/decode/block.d.ts +1 -0
- package/dist/decode/block.js +4 -0
- package/dist/decode/block.js.map +1 -1
- package/dist/decode/decompressFrame.js +25 -71
- package/dist/decode/decompressFrame.js.map +1 -1
- package/dist/decode/fusedSequences.d.ts +4 -5
- package/dist/decode/fusedSequences.js +403 -20
- package/dist/decode/fusedSequences.js.map +1 -1
- package/dist/decode/reconstruct.d.ts +0 -2
- package/dist/decode/reconstruct.js +87 -78
- package/dist/decode/reconstruct.js.map +1 -1
- package/dist/decode/sequences.js +19 -20
- package/dist/decode/sequences.js.map +1 -1
- package/dist/dictionary/compressorDictionary.d.ts +8 -0
- package/dist/dictionary/compressorDictionary.js +22 -14
- package/dist/dictionary/compressorDictionary.js.map +1 -1
- package/dist/encode/compressedBlock.d.ts +2 -2
- package/dist/encode/compressedBlock.js +100 -197
- package/dist/encode/compressedBlock.js.map +1 -1
- package/dist/encode/frameWriter.js +5 -1
- package/dist/encode/frameWriter.js.map +1 -1
- package/dist/encode/literalsEncoder.d.ts +2 -1
- package/dist/encode/literalsEncoder.js +289 -47
- package/dist/encode/literalsEncoder.js.map +1 -1
- package/dist/entropy/fse.d.ts +1 -1
- package/dist/entropy/fse.js +21 -1
- package/dist/entropy/fse.js.map +1 -1
- package/dist/entropy/huffman.d.ts +1 -1
- package/dist/entropy/huffman.js +2 -1
- package/dist/entropy/huffman.js.map +1 -1
- package/dist/frame/frameHeader.js +1 -1
- package/dist/frame/skippable.js +7 -2
- package/dist/frame/skippable.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -145,20 +145,22 @@ Throughput and compression ratio are compared against Node’s built-in `node:zl
|
|
|
145
145
|
|
|
146
146
|
## Throughput (MB/s)
|
|
147
147
|
|
|
148
|
+
## Throughput (MB/s)
|
|
149
|
+
|
|
148
150
|
| Payload | Category | Level | Compress zstdify | Compress Node | Decompress zstdify | Decompress Node | Decompress fzstd | Decompress zstddec |
|
|
149
151
|
|-------------|------|----------|-------|------------------|---------------|-------------------|------------------|---------------------|
|
|
150
|
-
| war-and-peace-txt | text | 6 |
|
|
151
|
-
| shakespeare-complete-txt | text | 6 |
|
|
152
|
-
| enwik8 | text | 6 |
|
|
153
|
-
| linux-kernel-tar | archive | 6 |
|
|
154
|
-
| apollo17-flightplan-pdf | document | 6 |
|
|
152
|
+
| war-and-peace-txt | text | 6 | 1.52 | 102.63 | 150.75 | 1019.58 | 256.78 | 922.89 |
|
|
153
|
+
| shakespeare-complete-txt | text | 6 | 1.35 | 96.08 | 142.93 | 970.29 | 240.50 | 887.62 |
|
|
154
|
+
| enwik8 | text | 6 | 1.70 | 120.36 | 149.69 | 1112.28 | 247.97 | 953.65 |
|
|
155
|
+
| linux-kernel-tar | archive | 6 | 2.72 | 177.01 | 232.84 | 1749.27 | 337.85 | 1448.23 |
|
|
156
|
+
| apollo17-flightplan-pdf | document | 6 | 5.18 | 272.59 | 444.49 | 2968.65 | 497.71 | 2417.05 |
|
|
155
157
|
|
|
156
158
|
## Compression ratio (compressed/original)
|
|
157
159
|
|
|
158
160
|
| Payload | Category | Level | zstdify | Node |
|
|
159
161
|
|-------------|----------|-------|---------|------|
|
|
160
|
-
| war-and-peace-txt | text | 6 | 0.
|
|
161
|
-
| shakespeare-complete-txt | text | 6 | 0.
|
|
162
|
+
| war-and-peace-txt | text | 6 | 0.4002 | 0.3280 |
|
|
163
|
+
| shakespeare-complete-txt | text | 6 | 0.4171 | 0.3480 |
|
|
162
164
|
| enwik8 | text | 6 | 0.3724 | 0.3248 |
|
|
163
165
|
| linux-kernel-tar | archive | 6 | 0.2259 | 0.1995 |
|
|
164
166
|
| apollo17-flightplan-pdf | document | 6 | 0.1315 | 0.1176 |
|
|
@@ -208,7 +210,7 @@ pnpm make-release:cli
|
|
|
208
210
|
## Acknowledgements
|
|
209
211
|
|
|
210
212
|
This project is made possible by the original [zstd](https://github.com/facebook/zstd) project by Meta and its contributors.
|
|
211
|
-
The monorepo, project, and CLI structure were bootstrapped from [hdrify](https://github.com/bhouston/hdrify), which made this project much easier to build. Many JavaScript optimization strategies were inspired by [fzstd](https://github.com/101arrowz/fzstd).
|
|
213
|
+
The monorepo, project, and CLI structure were bootstrapped from [hdrify](https://github.com/bhouston/hdrify), which made this project much easier to build. Many JavaScript optimization strategies were inspired by [fzstd](https://github.com/101arrowz/fzstd). We use [simple-zstd](https://www.npmjs.com/package/simple-zstd) for validation against the zstd cli tool.
|
|
212
214
|
|
|
213
215
|
# License
|
|
214
216
|
|
|
@@ -14,14 +14,29 @@ export declare class BitReaderReverse {
|
|
|
14
14
|
constructor(data: Uint8Array, startByteOffset: number, lengthBytes: number, skipBitsAtStart?: number);
|
|
15
15
|
/** Read n bits (1-32), LSB first from current position (reading backward) */
|
|
16
16
|
readBits(n: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Read n bits and throw if request crosses the logical stream start.
|
|
19
|
+
*
|
|
20
|
+
* Use strict reads for inputs that must fail fast on truncation/corruption.
|
|
21
|
+
* Keep readBits()/readBitsFast() for decode paths that intentionally rely on
|
|
22
|
+
* zstd-compatible zero-fill behavior near the stream start.
|
|
23
|
+
*/
|
|
24
|
+
readBitsStrict(n: number): number;
|
|
17
25
|
/**
|
|
18
26
|
* Fast path used by validated hot loops.
|
|
19
27
|
* Falls back to readBits() when the request crosses the logical stream start.
|
|
20
28
|
*/
|
|
21
29
|
readBitsFast(n: number): number;
|
|
30
|
+
/** Fast-path strict variant that forbids crossing stream start. */
|
|
31
|
+
readBitsFastStrict(n: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Hot-loop helper: read n bits quickly, returning 0 when n is 0.
|
|
34
|
+
*/
|
|
35
|
+
readBitsFastOrZero(n: number): number;
|
|
22
36
|
/** Skip trailing zero padding and end-mark bit from the stream tail. */
|
|
23
37
|
skipPadding(): void;
|
|
24
38
|
get position(): number;
|
|
39
|
+
get bitsRemaining(): number;
|
|
25
40
|
/** Skip the first n bits at the logical start (the end of the buffer when reading backward). */
|
|
26
41
|
skipBitsAtEnd(n: number): void;
|
|
27
42
|
/** Undo a previous readBits() by pushing the cursor forward. */
|
|
@@ -73,6 +73,22 @@ export class BitReaderReverse {
|
|
|
73
73
|
}
|
|
74
74
|
return value;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Read n bits and throw if request crosses the logical stream start.
|
|
78
|
+
*
|
|
79
|
+
* Use strict reads for inputs that must fail fast on truncation/corruption.
|
|
80
|
+
* Keep readBits()/readBitsFast() for decode paths that intentionally rely on
|
|
81
|
+
* zstd-compatible zero-fill behavior near the stream start.
|
|
82
|
+
*/
|
|
83
|
+
readBitsStrict(n) {
|
|
84
|
+
if (n < 1 || n > 32) {
|
|
85
|
+
throw new RangeError(`BitReaderReverse.readBitsStrict: n must be 1-32, got ${n}`);
|
|
86
|
+
}
|
|
87
|
+
if (n > this.bitsRemaining) {
|
|
88
|
+
throw new RangeError('BitReaderReverse: buffer underflow');
|
|
89
|
+
}
|
|
90
|
+
return this.readBits(n);
|
|
91
|
+
}
|
|
76
92
|
/**
|
|
77
93
|
* Fast path used by validated hot loops.
|
|
78
94
|
* Falls back to readBits() when the request crosses the logical stream start.
|
|
@@ -91,6 +107,25 @@ export class BitReaderReverse {
|
|
|
91
107
|
const word = byteIndex + 3 < this.dataLength ? readU32LEFast(this.data, byteIndex) : readU32LEBounded(this.data, byteIndex);
|
|
92
108
|
return ((word >>> bitInByte) & BIT_MASKS[n]) >>> 0;
|
|
93
109
|
}
|
|
110
|
+
/** Fast-path strict variant that forbids crossing stream start. */
|
|
111
|
+
readBitsFastStrict(n) {
|
|
112
|
+
if (n < 1 || n > 24) {
|
|
113
|
+
return this.readBitsStrict(n);
|
|
114
|
+
}
|
|
115
|
+
if (n > this.bitsRemaining) {
|
|
116
|
+
throw new RangeError('BitReaderReverse: buffer underflow');
|
|
117
|
+
}
|
|
118
|
+
return this.readBitsFast(n);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Hot-loop helper: read n bits quickly, returning 0 when n is 0.
|
|
122
|
+
*/
|
|
123
|
+
readBitsFastOrZero(n) {
|
|
124
|
+
if (n === 0) {
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
return this.readBitsFast(n);
|
|
128
|
+
}
|
|
94
129
|
/** Skip trailing zero padding and end-mark bit from the stream tail. */
|
|
95
130
|
skipPadding() {
|
|
96
131
|
if (this.endBit <= this.startBit) {
|
|
@@ -114,6 +149,9 @@ export class BitReaderReverse {
|
|
|
114
149
|
}
|
|
115
150
|
return (this.bitOffset - 1) >>> 3;
|
|
116
151
|
}
|
|
152
|
+
get bitsRemaining() {
|
|
153
|
+
return this.bitOffset - this.startBit;
|
|
154
|
+
}
|
|
117
155
|
/** Skip the first n bits at the logical start (the end of the buffer when reading backward). */
|
|
118
156
|
skipBitsAtEnd(n) {
|
|
119
157
|
if (n <= 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitReaderReverse.js","sourceRoot":"","sources":["../../src/bitstream/bitReaderReverse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bitReaderReverse.js","sourceRoot":"","sources":["../../src/bitstream/bitReaderReverse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* LSB-first bit writer used for reverse zstd bitstreams.
|
|
3
|
+
* Callers must write symbols in reverse decode order.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ReverseBitWriter {
|
|
6
|
+
private buffer;
|
|
7
|
+
private outputSize;
|
|
8
|
+
private writePos;
|
|
9
|
+
private bitContainer;
|
|
10
|
+
private bitCount;
|
|
11
|
+
reset(bitLength: number): void;
|
|
12
|
+
writeBits(n: number, bits: number): void;
|
|
13
|
+
finish(): Uint8Array;
|
|
14
|
+
}
|
|
15
|
+
export declare function encodeReverseBitstream(bitCounts: ArrayLike<number>, bitValues: ArrayLike<number>, writer?: ReverseBitWriter): Uint8Array;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* LSB-first bit writer used for reverse zstd bitstreams.
|
|
3
3
|
* Callers must write symbols in reverse decode order.
|
|
4
4
|
*/
|
|
5
|
-
class ReverseBitWriter {
|
|
5
|
+
export class ReverseBitWriter {
|
|
6
6
|
buffer = new Uint8Array(0);
|
|
7
7
|
outputSize = 0;
|
|
8
8
|
writePos = 0;
|
|
@@ -46,21 +46,20 @@ class ReverseBitWriter {
|
|
|
46
46
|
return this.buffer.slice(0, this.outputSize);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
export function encodeReverseBitstream(bitCounts, bitValues) {
|
|
49
|
+
export function encodeReverseBitstream(bitCounts, bitValues, writer = new ReverseBitWriter()) {
|
|
51
50
|
let bitLength = 1; // End marker bit.
|
|
52
51
|
for (let i = 0; i < bitCounts.length; i++) {
|
|
53
52
|
const n = bitCounts[i] ?? 0;
|
|
54
53
|
if (n > 0)
|
|
55
54
|
bitLength += n;
|
|
56
55
|
}
|
|
57
|
-
|
|
56
|
+
writer.reset(bitLength);
|
|
58
57
|
for (let i = bitCounts.length - 1; i >= 0; i--) {
|
|
59
58
|
const n = bitCounts[i] ?? 0;
|
|
60
59
|
if (n > 0)
|
|
61
|
-
|
|
60
|
+
writer.writeBits(n, bitValues[i] ?? 0);
|
|
62
61
|
}
|
|
63
|
-
|
|
64
|
-
return
|
|
62
|
+
writer.writeBits(1, 1);
|
|
63
|
+
return writer.finish();
|
|
65
64
|
}
|
|
66
65
|
//# sourceMappingURL=reverseBitWriter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverseBitWriter.js","sourceRoot":"","sources":["../../src/bitstream/reverseBitWriter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,gBAAgB;
|
|
1
|
+
{"version":3,"file":"reverseBitWriter.js","sourceRoot":"","sources":["../../src/bitstream/reverseBitWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Variable-length integer (varint) decode/encode per zstd format.
|
|
3
|
-
*
|
|
3
|
+
* This implementation supports unsigned 32-bit values (1-5 bytes).
|
|
4
|
+
* Little-endian, 7 bits per byte, high bit = continue.
|
|
4
5
|
*/
|
|
5
6
|
export declare function decodeVarint(data: Uint8Array, offset: number): {
|
|
6
7
|
value: number;
|
package/dist/bitstream/varint.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Variable-length integer (varint) decode/encode per zstd format.
|
|
3
|
-
*
|
|
3
|
+
* This implementation supports unsigned 32-bit values (1-5 bytes).
|
|
4
|
+
* Little-endian, 7 bits per byte, high bit = continue.
|
|
4
5
|
*/
|
|
5
6
|
export function decodeVarint(data, offset) {
|
|
7
|
+
if (!Number.isInteger(offset) || offset < 0) {
|
|
8
|
+
throw new RangeError(`decodeVarint: offset must be a non-negative integer, got ${offset}`);
|
|
9
|
+
}
|
|
6
10
|
let value = 0;
|
|
7
11
|
let shift = 0;
|
|
8
12
|
let pos = offset;
|
|
9
|
-
for (let i = 0; i <
|
|
13
|
+
for (let i = 0; i < 5; i++) {
|
|
10
14
|
if (pos >= data.length) {
|
|
11
15
|
throw new RangeError('decodeVarint: truncated input');
|
|
12
16
|
}
|
|
@@ -14,18 +18,22 @@ export function decodeVarint(data, offset) {
|
|
|
14
18
|
if (byte === undefined)
|
|
15
19
|
throw new RangeError('decodeVarint: truncated input');
|
|
16
20
|
pos++;
|
|
17
|
-
|
|
21
|
+
const chunk = byte & 0x7f;
|
|
22
|
+
if (shift === 28 && chunk > 0x0f) {
|
|
23
|
+
throw new RangeError('decodeVarint: value too large for uint32');
|
|
24
|
+
}
|
|
25
|
+
value += chunk * 2 ** shift;
|
|
18
26
|
if ((byte & 0x80) === 0) {
|
|
19
|
-
return { value, bytesRead: pos - offset };
|
|
27
|
+
return { value: value >>> 0, bytesRead: pos - offset };
|
|
20
28
|
}
|
|
21
29
|
shift += 7;
|
|
22
|
-
if (shift >= 56) {
|
|
23
|
-
throw new RangeError('decodeVarint: value too large');
|
|
24
|
-
}
|
|
25
30
|
}
|
|
26
|
-
throw new RangeError('decodeVarint: exceeds
|
|
31
|
+
throw new RangeError('decodeVarint: exceeds 5 bytes for uint32');
|
|
27
32
|
}
|
|
28
33
|
export function encodeVarint(value) {
|
|
34
|
+
if (!Number.isInteger(value) || value < 0 || value > 0xffff_ffff) {
|
|
35
|
+
throw new RangeError(`encodeVarint: value must be a uint32, got ${value}`);
|
|
36
|
+
}
|
|
29
37
|
const bytes = [];
|
|
30
38
|
let v = value >>> 0;
|
|
31
39
|
do {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"varint.js","sourceRoot":"","sources":["../../src/bitstream/varint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"varint.js","sourceRoot":"","sources":["../../src/bitstream/varint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,MAAc,EAAwC;IACnG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,UAAU,CAAC,4DAA4D,MAAM,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;QAC9E,GAAG,EAAE,CAAC;QACN,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1B,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC;QACzD,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;AAAA,CAClE;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAc;IACtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IAEpB,GAAG,CAAC;QACF,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC,MAAM,CAAC,CAAC;QACT,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,IAAI,IAAI,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IAElB,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAAA,CAC9B"}
|
package/dist/compress.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Compress input data using zstd.
|
|
3
3
|
* Level 0: raw blocks only (no compression, fast).
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { resolveDictionaryContextForCompression } from './dictionary/compressorDictionary.js';
|
|
6
6
|
import { writeRawBlock, writeRLEBlock } from './encode/blockWriter.js';
|
|
7
7
|
import { buildCompressedBlockPayload, writeCompressedBlock, } from './encode/compressedBlock.js';
|
|
8
8
|
import { writeFrameHeader } from './encode/frameWriter.js';
|
|
@@ -50,11 +50,10 @@ export function compress(input, options) {
|
|
|
50
50
|
const dictionary = options?.dictionary;
|
|
51
51
|
const dictionaryBytes = dictionary instanceof Uint8Array ? dictionary : dictionary?.bytes;
|
|
52
52
|
const providedDictionaryId = dictionary instanceof Uint8Array ? null : (dictionary?.id ?? null);
|
|
53
|
-
const
|
|
54
|
-
?
|
|
55
|
-
:
|
|
56
|
-
|
|
57
|
-
: providedDictionaryId;
|
|
53
|
+
const dictionaryContext = dictionaryBytes && dictionaryBytes.length > 0
|
|
54
|
+
? resolveDictionaryContextForCompression(dictionaryBytes, providedDictionaryId)
|
|
55
|
+
: null;
|
|
56
|
+
const dictionaryId = options?.noDictId ? null : (dictionaryContext?.dictionaryId ?? providedDictionaryId);
|
|
58
57
|
if (dictionaryId !== null && (!Number.isInteger(dictionaryId) || dictionaryId <= 0 || dictionaryId > 0xffff_ffff)) {
|
|
59
58
|
throw new ZstdError('dictionary.id must be a 32-bit positive integer', 'parameter_unsupported');
|
|
60
59
|
}
|
|
@@ -63,7 +62,9 @@ export function compress(input, options) {
|
|
|
63
62
|
let offset = 0;
|
|
64
63
|
const blockCount = input.length === 0 ? 1 : Math.ceil(input.length / BLOCK_MAX);
|
|
65
64
|
let blockIndex = 0;
|
|
66
|
-
let history =
|
|
65
|
+
let history = dictionaryContext && dictionaryContext.historyPrefix.length > 0
|
|
66
|
+
? dictionaryContext.historyPrefix.subarray(Math.max(0, dictionaryContext.historyPrefix.length - WINDOW_SIZE))
|
|
67
|
+
: new Uint8Array(0);
|
|
67
68
|
let repOffsets = [1, 4, 8];
|
|
68
69
|
const sequenceEntropyContext = { prevTables: null };
|
|
69
70
|
const sequencePlannerState = createSequencePlannerState();
|
package/dist/compress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"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"}
|
package/dist/decode/block.d.ts
CHANGED
package/dist/decode/block.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ZstdError } from '../errors.js';
|
|
5
5
|
export const BLOCK_HEADER_SIZE = 3;
|
|
6
|
+
export const MAX_BLOCK_SIZE = 128 * 1024;
|
|
6
7
|
function readU24LE(data, offset) {
|
|
7
8
|
if (offset + 3 > data.length) {
|
|
8
9
|
throw new RangeError(`readU24LE: offset ${offset} + 3 exceeds length ${data.length}`);
|
|
@@ -23,6 +24,9 @@ export function parseBlockHeader(data, offset) {
|
|
|
23
24
|
if (blockType === 3) {
|
|
24
25
|
throw new ZstdError('Reserved block type', 'corruption_detected');
|
|
25
26
|
}
|
|
27
|
+
if (blockSize > MAX_BLOCK_SIZE) {
|
|
28
|
+
throw new ZstdError('Block size exceeds maximum', 'corruption_detected');
|
|
29
|
+
}
|
|
26
30
|
return { lastBlock, blockType, blockSize };
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=block.js.map
|
package/dist/decode/block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/decode/block.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/decode/block.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;AAUzC,SAAS,SAAS,CAAC,IAAgB,EAAE,MAAc,EAAU;IAC3D,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,qBAAqB,MAAM,uBAAuB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAAA,CACjC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,MAAc,EAAe;IAC9E,IAAI,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAc,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,4BAA4B,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,CAC5C"}
|
|
@@ -5,13 +5,15 @@ 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
|
|
8
|
+
import { decodeAndExecuteSequencesInto } from './fusedSequences.js';
|
|
9
9
|
import { decodeCompressedLiterals, decodeRawLiterals, decodeRLELiterals, decodeTreelessLiterals, parseLiteralsSectionHeader, } from './literals.js';
|
|
10
|
-
import { appendRangeToHistoryWindow, appendRLEToHistoryWindow, appendToHistoryWindow,
|
|
11
|
-
import { decodeSequences } from './sequences.js';
|
|
10
|
+
import { appendRangeToHistoryWindow, appendRLEToHistoryWindow, appendToHistoryWindow, getOrCreateHistoryWindow, } from './reconstruct.js';
|
|
12
11
|
export function decompressFrame(data, offset, header, dictionary, maxSize, validateChecksum = true, reuseContext, debugTrace) {
|
|
13
12
|
let pos = offset + 4 + header.headerSize;
|
|
14
13
|
const knownOutputSize = header.contentSize ?? null;
|
|
14
|
+
if (knownOutputSize !== null && maxSize !== undefined && knownOutputSize > maxSize) {
|
|
15
|
+
throw new ZstdError('Decompressed size exceeds maxSize', 'parameter_unsupported');
|
|
16
|
+
}
|
|
15
17
|
let outputBuffer = knownOutputSize !== null ? new Uint8Array(knownOutputSize) : new Uint8Array(0);
|
|
16
18
|
let totalSize = 0;
|
|
17
19
|
const repOffsets = dictionary?.repOffsets
|
|
@@ -20,9 +22,6 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
20
22
|
const history = getOrCreateHistoryWindow(header.windowSize, dictionary?.historyPrefix, reuseContext);
|
|
21
23
|
let prevHuffmanTable = dictionary?.huffmanTable ?? null;
|
|
22
24
|
let prevSeqTables = dictionary?.sequenceTables ?? null;
|
|
23
|
-
const decodeMode = reuseContext?._decodeMode ?? 'fast';
|
|
24
|
-
const useFastPath = decodeMode !== 'reference';
|
|
25
|
-
const useFusedSequences = reuseContext?._useFusedSequences !== false;
|
|
26
25
|
const ensureOutputCapacity = (additional) => {
|
|
27
26
|
const needed = totalSize + additional;
|
|
28
27
|
if (needed <= outputBuffer.length) {
|
|
@@ -84,6 +83,9 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
84
83
|
pos += 1;
|
|
85
84
|
}
|
|
86
85
|
else if (block.blockType === 2) {
|
|
86
|
+
if (pos + block.blockSize > data.length) {
|
|
87
|
+
throw new ZstdError('Compressed block truncated', 'corruption_detected');
|
|
88
|
+
}
|
|
87
89
|
const blockContent = data.subarray(pos, pos + block.blockSize);
|
|
88
90
|
const { header: litHeader, dataOffset: litDataOffset } = parseLiteralsSectionHeader(blockContent, 0);
|
|
89
91
|
if (onBlockDecoded) {
|
|
@@ -127,72 +129,24 @@ export function decompressFrame(data, offset, header, dictionary, maxSize, valid
|
|
|
127
129
|
}
|
|
128
130
|
}
|
|
129
131
|
else {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
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;
|
|
194
|
-
}
|
|
132
|
+
// Decoded block output is bounded by zstd block max size (128 KiB).
|
|
133
|
+
ensureOutputCapacity(128 * 1024);
|
|
134
|
+
const start = totalSize;
|
|
135
|
+
const { written, tables, metadata } = decodeAndExecuteSequencesInto(blockContent, litBytesConsumed, seqSectionSize, prevSeqTables, literals, header.windowSize, outputBuffer, start, repOffsets, history, !block.lastBlock, !!onBlockDecoded);
|
|
136
|
+
prevSeqTables = tables;
|
|
137
|
+
if (onBlockDecoded) {
|
|
138
|
+
blockSequencesInfo = {
|
|
139
|
+
numSequences: metadata.numSequences,
|
|
140
|
+
llMode: metadata.llMode,
|
|
141
|
+
ofMode: metadata.ofMode,
|
|
142
|
+
mlMode: metadata.mlMode,
|
|
143
|
+
llTableLog: metadata.llTableLog,
|
|
144
|
+
ofTableLog: metadata.ofTableLog,
|
|
145
|
+
mlTableLog: metadata.mlTableLog,
|
|
146
|
+
repeatOffsetCandidateCount: metadata.repeatOffsetCandidateCount,
|
|
147
|
+
};
|
|
195
148
|
}
|
|
149
|
+
totalSize += written;
|
|
196
150
|
}
|
|
197
151
|
pos += block.blockSize;
|
|
198
152
|
}
|
|
@@ -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;AAE9C,OAAO,EAAE,6BAA6B,EAAE,
|
|
1
|
+
{"version":3,"file":"decompressFrame.js","sourceRoot":"","sources":["../../src/decode/decompressFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { PackedSequences } from './reconstruct.js';
|
|
2
1
|
import { type HistoryWindow } from './reconstruct.js';
|
|
3
|
-
import {
|
|
2
|
+
import type { SequenceSectionMetadata, SequenceTables } from './sequences.js';
|
|
4
3
|
export interface FusedDecodeExecuteResult {
|
|
5
4
|
written: number;
|
|
6
|
-
|
|
5
|
+
tables: SequenceTables;
|
|
6
|
+
metadata: SequenceSectionMetadata;
|
|
7
7
|
}
|
|
8
|
-
export declare function
|
|
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;
|