Compression Streams API
The Compression Streams API provides a JavaScript API for compressing and decompressing streams of data. It allows you to compress data directly in the browser without needing to send it to a server or use a heavy JavaScript library.
1. Supported Formats
The API supports the following compression formats:
gzipdeflatedeflate-raw
2. Compressing Data
To compress data, you use the CompressionStream interface. It is a Transform Stream that takes chunks of data as input and outputs compressed chunks.
async function compressData(readableStream) {
const compressedStream = readableStream.pipeThrough(
new CompressionStream('gzip')
);
return compressedStream;
}
Example: Compressing a String
async function compressString(str) {
// 1. Convert string to stream
const stream = new Blob([str]).stream();
// 2. Compress
const compressedStream = stream.pipeThrough(
new CompressionStream('gzip')
);
// 3. Convert stream back to Response/Blob/ArrayBuffer
const compressedResponse = new Response(compressedStream);
const blob = await compressedResponse.blob();
return blob;
}
3. Decompressing Data
To decompress data, you use the DecompressionStream interface.
async function decompressBlob(blob) {
const stream = blob.stream().pipeThrough(
new DecompressionStream('gzip')
);
const decompressedResponse = new Response(stream);
const text = await decompressedResponse.text();
return text;
}
programming/javascript/vanilla/javascript programming/javascript/vanilla/streams-api programming/javascript/vanilla/file-api