Skip to content

Compression streams

How Elide supports CompressionStream and DecompressionStream: gzip, deflate and deflate-raw per the standard, plus Brotli and Zstandard formats.

On this page

CompressionStream and DecompressionStream are globals from the Compression Streams Standard. They take a format: gzip, deflate (zlib-wrapped), deflate-raw, brotli, or zstd.

Example

js
// compression.mjs
const input = new Blob(["elide ".repeat(100)]);
const compressed = await new Response(input.stream().pipeThrough(new CompressionStream("gzip"))).arrayBuffer();
console.log(input.size, "->", compressed.byteLength);

const restored = new Blob([compressed]).stream().pipeThrough(new DecompressionStream("gzip"));
console.log((await new Response(restored).text()).length);
utf-8 · js · Lines: 7

elide run compression.mjs prints:

text
600 -> 35
600
utf-8 · text · Lines: 2

Differences from browsers

  • brotli and zstd are Elide additions.
  • Formats are case-sensitive; an unknown format throws TypeError.
  • Chunks must be BufferSource values.
  • Malformed or truncated input rejects, as does decompressed output past a size limit.

For Buffer and callback APIs, see node:zlib.

Samples

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
CompressionStreamclassFullreadable, writable
DecompressionStreamclassFullreadable, writable

Was this page helpful?