From 8bdd364dd568f93097ecee41e66c74d16d75c015 Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Wed, 11 Sep 2024 18:08:40 +0900 Subject: fix(ext/node): add `FileHandle#writeFile` (#25555) This PR adds `writeFile` methods of `FileHandle` class https://nodejs.org/api/fs.html#filehandlewritefiledata-options --- ext/node/polyfills/internal/fs/handle.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'ext/node/polyfills/internal/fs') diff --git a/ext/node/polyfills/internal/fs/handle.ts b/ext/node/polyfills/internal/fs/handle.ts index e422e2ba0..fc3a7ae20 100644 --- a/ext/node/polyfills/internal/fs/handle.ts +++ b/ext/node/polyfills/internal/fs/handle.ts @@ -133,12 +133,28 @@ export class FileHandle extends EventEmitter { } } + writeFile(data, options): Promise { + return fsCall(promises.writeFile, this, data, options); + } + close(): Promise { // Note that Deno.close is not async return Promise.resolve(core.close(this.fd)); } } +function fsCall(fn, handle, ...args) { + if (handle.fd === -1) { + const err = new Error("file closed"); + throw Object.assign(err, { + code: "EBADF", + syscall: fn.name, + }); + } + + return fn(handle, ...args); +} + export default { FileHandle, }; -- cgit v1.2.3