node/lib/internal/webstreams
Matteo Collina ca406b2b9a
stream: fix Writable.toWeb() desiredSize for non-object-mode
Writable.toWeb() used a plain { highWaterMark } as the queuing
strategy for non-object-mode streams, which meant no size function
was provided. The WritableStream defaulted to counting each chunk
as size 1, so desiredSize was incorrect (e.g., a 3-byte Uint8Array
was counted as size 1 instead of 3).

Add a size() function to the strategy that mirrors how the Node.js
stream computes chunk length: byteLength for typed arrays, length
for strings/buffers, falling back to 1.

Fixes: https://github.com/nodejs/node/issues/56269
Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: https://github.com/nodejs/node/pull/62986
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2026-06-21 21:56:57 +00:00
..
adapters.js stream: fix Writable.toWeb() desiredSize for non-object-mode 2026-06-21 21:56:57 +00:00
compression.js stream: allow shared array buffer sources in writable webstream adapter 2026-04-13 15:42:29 +00:00
encoding.js
queuingstrategies.js stream: remove duplicated utility 2026-05-04 16:07:26 +00:00
readablestream.js stream: reduce allocations on WHATWG streams hot paths 2026-06-20 14:19:08 +00:00
transfer.js
transformstream.js stream: only pass the expected number of parameters to callbacks 2026-06-16 09:35:29 +00:00
util.js stream: reduce allocations on WHATWG streams hot paths 2026-06-20 14:19:08 +00:00
writablestream.js stream: reduce allocations on WHATWG streams hot paths 2026-06-20 14:19:08 +00:00