Skip to content

Commit 1df7372

Browse files
authored
🤖 Merge PR DefinitelyTyped#72012 feat(node/stream/web): Add options to ReadableStreamBYOBReader.read() by @hkleungai
1 parent 15cd0b1 commit 1df7372

File tree

5 files changed

+75
-7
lines changed

5 files changed

+75
-7
lines changed

‎types/node/stream/web.d.ts‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,12 @@ declare module "stream/web" {
205205
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) */
206206
interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
207207
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) */
208-
read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
208+
read<T extends ArrayBufferView>(
209+
view: T,
210+
options?: {
211+
min?: number;
212+
},
213+
): Promise<ReadableStreamReadResult<T>>;
209214
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) */
210215
releaseLock(): void;
211216
}

‎types/node/test/stream.ts‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { performance } from "node:perf_hooks";
2020
import { stdout } from "node:process";
2121
import { arrayBuffer, blob, buffer, json, text } from "node:stream/consumers";
2222
import { finished as finishedPromise, pipeline as pipelinePromise } from "node:stream/promises";
23-
import { ReadableStream, TransformStream, WritableStream } from "node:stream/web";
23+
import { ReadableStream, ReadableStreamBYOBReader, TransformStream, WritableStream } from "node:stream/web";
2424
import { setInterval as every, setTimeout as wait } from "node:timers/promises";
2525
import { MessageChannel as NodeMC } from "node:worker_threads";
2626

@@ -810,5 +810,24 @@ async function testTransferringStreamWithPostMessage() {
810810
}
811811

812812
{
813-
new Blob(["1", "2"]).stream().getReader({ mode: "byob" });
813+
let byobReader = new Blob(["1", "2"]).stream().getReader({ mode: "byob" });
814+
byobReader = new ReadableStreamBYOBReader(new Blob([]).stream());
815+
816+
// $ExpectType Promise<void>
817+
byobReader.cancel();
818+
// $ExpectType Promise<void>
819+
byobReader.cancel("reason");
820+
821+
// $ExpectType Promise<undefined>
822+
byobReader.closed;
823+
824+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
825+
byobReader.read(new Uint8Array());
826+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
827+
byobReader.read(new Uint8Array(), {});
828+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
829+
byobReader.read(new Uint8Array(), { min: 1 });
830+
831+
// $ExpectType void
832+
byobReader.releaseLock();
814833
}

‎types/node/v18/test/stream.ts‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ import {
1313
import { promisify } from "node:util";
1414
import { constants, createGzip } from "node:zlib";
1515
import assert = require("node:assert");
16+
import { Blob } from "node:buffer";
1617
import { Http2ServerResponse } from "node:http2";
1718
import { performance } from "node:perf_hooks";
1819
import { stdout } from "node:process";
1920
import { arrayBuffer, blob, buffer, json, text } from "node:stream/consumers";
2021
import { finished as finishedPromise, pipeline as pipelinePromise } from "node:stream/promises";
21-
import { ReadableStream, TransformStream, WritableStream } from "node:stream/web";
22+
import { ReadableStream, ReadableStreamBYOBReader, TransformStream, WritableStream } from "node:stream/web";
2223
import { setInterval as every } from "node:timers/promises";
2324
import { MessageChannel as NodeMC } from "node:worker_threads";
2425

@@ -720,3 +721,22 @@ async function testTransferringStreamWithPostMessage() {
720721
err;
721722
});
722723
}
724+
725+
{
726+
let byobReader = new Blob(["1", "2"]).stream().getReader({ mode: "byob" });
727+
byobReader = new ReadableStreamBYOBReader(new Blob([]).stream());
728+
729+
// $ExpectType Promise<void>
730+
byobReader.cancel();
731+
// $ExpectType Promise<void>
732+
byobReader.cancel("reason");
733+
734+
// $ExpectType Promise<undefined>
735+
byobReader.closed;
736+
737+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
738+
byobReader.read(new Uint8Array());
739+
740+
// $ExpectType void
741+
byobReader.releaseLock();
742+
}

‎types/node/v20/stream/web.d.ts‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,12 @@ declare module "stream/web" {
205205
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) */
206206
interface ReadableStreamBYOBReader extends ReadableStreamGenericReader {
207207
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) */
208-
read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;
208+
read<T extends ArrayBufferView>(
209+
view: T,
210+
options?: {
211+
min?: number;
212+
},
213+
): Promise<ReadableStreamReadResult<T>>;
209214
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) */
210215
releaseLock(): void;
211216
}

‎types/node/v20/test/stream.ts‎

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { performance } from "node:perf_hooks";
2020
import { stdout } from "node:process";
2121
import { arrayBuffer, blob, buffer, json, text } from "node:stream/consumers";
2222
import { finished as finishedPromise, pipeline as pipelinePromise } from "node:stream/promises";
23-
import { ReadableStream, TransformStream, WritableStream } from "node:stream/web";
23+
import { ReadableStream, ReadableStreamBYOBReader, TransformStream, WritableStream } from "node:stream/web";
2424
import { setInterval as every, setTimeout as wait } from "node:timers/promises";
2525
import { MessageChannel as NodeMC } from "node:worker_threads";
2626

@@ -810,5 +810,24 @@ async function testTransferringStreamWithPostMessage() {
810810
}
811811

812812
{
813-
new Blob(["1", "2"]).stream().getReader({ mode: "byob" });
813+
let byobReader = new Blob(["1", "2"]).stream().getReader({ mode: "byob" });
814+
byobReader = new ReadableStreamBYOBReader(new Blob([]).stream());
815+
816+
// $ExpectType Promise<void>
817+
byobReader.cancel();
818+
// $ExpectType Promise<void>
819+
byobReader.cancel("reason");
820+
821+
// $ExpectType Promise<undefined>
822+
byobReader.closed;
823+
824+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
825+
byobReader.read(new Uint8Array());
826+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
827+
byobReader.read(new Uint8Array(), {});
828+
// $ExpectType Promise<ReadableStreamReadResult<Uint8Array<ArrayBuffer>>>
829+
byobReader.read(new Uint8Array(), { min: 1 });
830+
831+
// $ExpectType void
832+
byobReader.releaseLock();
814833
}

0 commit comments

Comments
 (0)