stream: normalize Broadcast.from() byte inputs · nodejs/node@cb298cf · GitHub
Skip to content

Commit cb298cf

Browse files
trivikraduh95
authored andcommitted
stream: normalize Broadcast.from() byte inputs
Route non-Broadcastable inputs through from(). This makes strings and ArrayBuffer views byte inputs instead of generic iterables. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.5 PR-URL: #64082 Backport-PR-URL: #64675 Fixes: #64081 Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent bbbb4aa commit cb298cf

3 files changed

Lines changed: 34 additions & 7 deletions

File tree

lib/internal/streams/iter/broadcast.js

Lines changed: 8 additions & 5 deletions

test/parallel/test-stream-iter-broadcast-from.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,28 @@ async function testBroadcastFromStringChunks() {
4343
assert.strictEqual(data, 'foobar');
4444
}
4545

46+
async function testBroadcastFromStringInput() {
47+
const { broadcast: bc } = Broadcast.from('abc');
48+
const consumer = bc.push();
49+
const data = await text(consumer);
50+
assert.strictEqual(data, 'abc');
51+
}
52+
53+
async function testBroadcastFromUint8ArrayInput() {
54+
const { broadcast: bc } = Broadcast.from(new Uint8Array([97]));
55+
const consumer = bc.push();
56+
const data = await text(consumer);
57+
assert.strictEqual(data, 'a');
58+
}
59+
60+
async function testBroadcastFromDataViewInput() {
61+
const view = new DataView(new Uint8Array([104, 105]).buffer);
62+
const { broadcast: bc } = Broadcast.from(view);
63+
const consumer = bc.push();
64+
const data = await text(consumer);
65+
assert.strictEqual(data, 'hi');
66+
}
67+
4668
async function testBroadcastFromMultipleConsumers() {
4769
const source = from('shared-data');
4870
const { broadcast: bc } = Broadcast.from(source);
@@ -183,6 +205,9 @@ Promise.all([
183205
testBroadcastFromAsyncIterable(),
184206
testBroadcastFromNonArrayChunks(),
185207
testBroadcastFromStringChunks(),
208+
testBroadcastFromStringInput(),
209+
testBroadcastFromUint8ArrayInput(),
210+
testBroadcastFromDataViewInput(),
186211
testBroadcastFromMultipleConsumers(),
187212
testAbortSignal(),
188213
testAlreadyAbortedSignal(),

test/parallel/test-stream-iter-validation.js

Lines changed: 1 addition & 2 deletions

0 commit comments

Comments
 (0)