From pako
pako is a JavaScript port of zlib. comprs reads and writes the same three formats, gzip, zlib and raw deflate, with native code in Node.js, Deno and Bun and WebAssembly in browsers, and adds zstd, brotli and LZ4.
import pako from 'pako';const compressed = pako.gzip(data, { level: 9 });const restored = pako.ungzip(compressed);import { compressSync, decompressSync } from '@derodero24/comprs/next';const compressed = compressSync(data, { format: 'gzip', level: 9 });const restored = decompressSync(compressed, { format: 'gzip' });| pako | comprs (@derodero24/comprs/next) |
comprs (package root) |
|---|---|---|
gzip(data, { level }) |
compressSync(data, { format: 'gzip', level }) |
gzipCompress(data, level) |
ungzip(data) |
decompressSync(data, { format: 'gzip' }) |
gzipDecompress(data) |
deflate(data) (zlib) |
compressSync(data, { format: 'deflate' }) |
none |
inflate(data) (zlib or gzip) |
decompressSync(data), which detects zlib and gzip |
none |
deflateRaw(data) |
compressSync(data, { format: 'deflate-raw' }) |
deflateCompress(data) |
inflateRaw(data) |
decompressSync(data, { format: 'deflate-raw' }) |
deflateDecompress(data) |
new Deflate(), push() (zlib) |
new CompressionStream('deflate') |
none |
new Deflate({ raw: true }) |
new CompressionStream('deflate-raw'), or a DeflateCompressContext |
createDeflateCompressStream() |
new Deflate({ gzip: true }) |
new CompressionStream('gzip'), or a GzipCompressContext |
createGzipCompressStream() |
gzip(data, { header: { name } }) |
compressSync(data, { format: 'gzip', gzipHeader: { filename } }) |
gzipCompressWithHeader(data, { filename }) |
- zlib and raw deflate. pako’s
deflate()writes zlib data, as'deflate'of the unified API does. ThedeflateCompress()function of the package root writes raw deflate, like pako’sdeflateRaw(). - Results. The unified API returns a
Uint8Array, as pako does. The functions of the package root return a Node.jsBufferin the native addon, which is aUint8Arraytoo. - Strings. comprs takes and returns bytes only: encode a string with
new TextEncoder().encode(text), and decode the result withnew TextDecoder().decode(bytes). - Errors. comprs throws an
Errorwith a code for invalid, truncated and oversized data, and stops at a decompression limit of 256 MiB by default. - Dictionaries. pako’s deflate dictionaries have no counterpart in comprs, which has dictionaries for zstd and brotli instead.