CompressionStream und DecompressionStream stellen eine beschreibbare Eingabe und
eine lesbare Ausgabe bereit.
| Format | Token |
|---|---|
| Gzip | gzip |
| Deflate mit Zlib-Wrapper | deflate |
| Rohes Deflate | deflate-raw |
| Brotli | brotli |
| Zstandard | zstd |
Brotli und Zstandard sind Elide-Erweiterungen der Standard-Formatmenge von Browsern.
Der Formatabgleich beachtet Groß- und Kleinschreibung; ein unbekannter Wert wirft
TypeError.
async function collect(stream, input) {
const writer = stream.writable.getWriter();
const reader = stream.readable.getReader();
const chunks = [];
const reading = (async () => {
while (true) {
const { value, done } = await reader.read();
if (done) break;
chunks.push(value);
}
})();
await writer.write(input);
await writer.close();
await reading;
const size = chunks.reduce((total, chunk) => total + chunk.byteLength, 0);
const output = new Uint8Array(size);
let offset = 0;
for (const chunk of chunks) {
output.set(chunk, offset);
offset += chunk.byteLength;
}
return output;
}
const input = new TextEncoder().encode("hello");
const compressed = await collect(new CompressionStream("gzip"), input);
const restored = await collect(new DecompressionStream("gzip"), compressed);Eingaben müssen BufferSource-Werte sein. Fehlerhafte oder unvollständige
komprimierte Daten führen zur Ablehnung der Transformation. Die Dekomprimierung
wendet außerdem Sicherheitsgrenzen des Hosts auf übermäßige Ausgabe an.
APIs mit Callbacks und Buffern sind unter node:zlib beschrieben.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
CompressionStream | class | Full | readable, writable |
DecompressionStream | class | Full | readable, writable |