CompressionStream и DecompressionStream предоставляют записываемый вход и
читаемый выход.
| Формат | Токен |
|---|---|
| Gzip | gzip |
| Deflate с обёрткой zlib | deflate |
| Raw deflate | deflate-raw |
| Brotli | brotli |
| Zstandard | zstd |
Brotli и Zstandard — расширения Elide к стандартному набору форматов браузеров.
Сопоставление формата чувствительно к регистру; неизвестное значение приводит к 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);Входные данные должны быть значениями BufferSource. Повреждённые или неполные сжатые данные
приводят к отклонению преобразования. При распаковке также применяются ограничения безопасности хоста
на чрезмерный объём вывода.
API на функциях обратного вызова и Buffer описаны в разделе node:zlib.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
CompressionStream | class | Full | readable, writable |
DecompressionStream | class | Full | readable, writable |