From 938f175dbeffe85ca9e96b88f9ee599fe80ea42d Mon Sep 17 00:00:00 2001 From: wantaek Date: Thu, 29 Jan 2026 22:24:39 +0900 Subject: [PATCH] stream: add bytes() method to stream/consumers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add bytes() method to get Uint8Array from streams - Add tests for bytes() method in PassThrough and ObjectMode scenarios - Update documentation Fixes: https://github.com/nodejs/node/issues/59542 PR-URL: https://github.com/nodejs/node/pull/60426 Reviewed-By: Ethan Arrowood Reviewed-By: René Reviewed-By: Jake Yuesong Li Reviewed-By: Mattias Buelens Reviewed-By: Benjamin Gruenbaum Reviewed-By: Gürgün Dayıoğlu --- doc/api/webstreams.md | 37 ++++++++++++++++++++++++++ lib/stream/consumers.js | 10 +++++++ test/parallel/test-stream-consumers.js | 31 +++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/doc/api/webstreams.md b/doc/api/webstreams.md index ea54db0b58b..1f5bf94669e 100644 --- a/doc/api/webstreams.md +++ b/doc/api/webstreams.md @@ -1694,6 +1694,43 @@ buffer(readable).then((data) => { }); ``` +#### `streamConsumers.bytes(stream)` + + + +* `stream` {ReadableStream|stream.Readable|AsyncIterator} +* Returns: {Promise} Fulfills with a {Uint8Array} containing the full + contents of the stream. + +```mjs +import { bytes } from 'node:stream/consumers'; +import { Readable } from 'node:stream'; +import { Buffer } from 'node:buffer'; + +const dataBuffer = Buffer.from('hello world from consumers!'); + +const readable = Readable.from(dataBuffer); +const data = await bytes(readable); +console.log(`from readable: ${data.length}`); +// Prints: from readable: 27 +``` + +```cjs +const { bytes } = require('node:stream/consumers'); +const { Readable } = require('node:stream'); +const { Buffer } = require('node:buffer'); + +const dataBuffer = Buffer.from('hello world from consumers!'); + +const readable = Readable.from(dataBuffer); +bytes(readable).then((data) => { + console.log(`from readable: ${data.length}`); + // Prints: from readable: 27 +}); +``` + #### `streamConsumers.json(stream)`