mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00

Adds optional dictionary support to zlib’s zstdCompress and zstdDecompress APIs. This enables better compression ratios when the dictionary matches expected input structure or content patterns. The implementation allows passing a `dictionary` buffer through the options object. Support was added to both streaming and convenience methods. Tests and documentation were also updated to reflect this new capability. Fixes: https://github.com/nodejs/node/issues/59105 PR-URL: https://github.com/nodejs/node/pull/59240 Reviewed-By: Anna Henningsen <anna@addaleax.net>
26 lines
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const zlib = require('zlib');
|
|
|
|
const dictionary = Buffer.from(
|
|
`Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
|
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.`
|
|
);
|
|
|
|
const input = Buffer.from(
|
|
`Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
|
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
|
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.`
|
|
);
|
|
|
|
zlib.zstdCompress(input, { dictionary }, common.mustSucceed((compressed) => {
|
|
assert(compressed.length < input.length);
|
|
zlib.zstdDecompress(compressed, { dictionary }, common.mustSucceed((decompressed) => {
|
|
assert.strictEqual(decompressed.toString(), input.toString());
|
|
}));
|
|
}));
|