Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/js/node/fs.promises.ts
Original file line number Diff line number Diff line change
Expand Up @@ -815,7 +815,7 @@ function asyncWrap(fn: any, name: string) {

let bytesRead;
try {
({ bytesRead } = await handle.read(view, view.byteOffset, view.byteLength));
({ bytesRead } = await handle.read(view, 0, view.byteLength));
} catch (err) {
if (done) return;
await ondone();
Expand Down
17 changes: 17 additions & 0 deletions test/js/node/fs/fs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,23 @@ describe("FileHandle", () => {
reader.releaseLock();
});

it("FileHandle#readableWebStream BYOB reader accepts a subarray view", async () => {
using dir = tempDir("fh-readablewebstream-byob", {
"data.bin": Buffer.alloc(200, "X").toString(),
});
await using fh = await fs.promises.open(join(String(dir), "data.bin"));
const reader = fh.readableWebStream().getReader({ mode: "byob" });

const backing = new ArrayBuffer(1000);
const { value, done } = await reader.read(new Uint8Array(backing, 500, 100));

expect(done).toBe(false);
expect(value.byteOffset).toBe(500);
expect(value.byteLength).toBe(100);
expect(Buffer.from(value).toString()).toBe(Buffer.alloc(100, "X").toString());
reader.releaseLock();
});

it("FileHandle#createReadStream", async () => {
await using fd = await fs.promises.open(__filename);
const readable = fd.createReadStream();
Expand Down
Loading