diff --git a/explainer.md b/explainer.md index 4a48c1f..39173b7 100644 --- a/explainer.md +++ b/explainer.md @@ -93,31 +93,13 @@ there are a number of benefits to a built-in capability: const compressedReadableStream = inputReadableStream.pipeThrough(new CompressionStream('gzip')); ``` -### Deflate-compress an ArrayBuffer to a Uint8Array +### Deflate-compress an ArrayBuffer ```javascript -async function compressArrayBuffer(input) { - const cs = new CompressionStream('deflate'); - const writer = cs.writable.getWriter(); - writer.write(input); - writer.close(); - const output = []; - const reader = cs.readable.getReader(); - let totalSize = 0; - while (true) { - const { value, done } = await reader.read(); - if (done) - break; - output.push(value); - totalSize += value.byteLength; - } - const concatenated = new Uint8Array(totalSize); - let offset = 0; - for (const array of output) { - concatenated.set(array, offset); - offset += array.byteLength; - } - return concatenated; +function compressArrayBuffer(input) { + const stream = new Response(input).body + .pipeThrough(new CompressionStream('deflate')); + return new Response(stream).arrayBuffer(); } ```