diff --git a/ext/node/polyfills/internal/fs/handle.ts b/ext/node/polyfills/internal/fs/handle.ts index 3bee7b2deb..d51453295f 100644 --- a/ext/node/polyfills/internal/fs/handle.ts +++ b/ext/node/polyfills/internal/fs/handle.ts @@ -4,6 +4,8 @@ import { EventEmitter } from "node:events"; import { Buffer } from "node:buffer"; import { Mode, promises, read, ReadStream, write, WriteStream } from "node:fs"; import type { ReadAsyncOptions } from "node:fs"; +import { createInterface } from "node:readline"; +import type { Interface as ReadlineInterface } from "node:readline"; import { core, primordials } from "ext:core/mod.js"; export type { BigIntStats, Stats } from "ext:deno_node/_fs/_fs_stat.ts"; import { @@ -219,6 +221,13 @@ export class FileHandle extends EventEmitter { return new WriteStream(undefined, { ...options, fd: this.fd }); } + readLines(options?: CreateReadStreamOptions): ReadlineInterface { + return createInterface({ + input: this.createReadStream({ ...options, autoClose: false }), + crlfDelay: Infinity, + }); + } + [SymbolAsyncDispose]() { return this.close(); } diff --git a/tests/node_compat/config.toml b/tests/node_compat/config.toml index 48e50fc349..35eae27b95 100644 --- a/tests/node_compat/config.toml +++ b/tests/node_compat/config.toml @@ -455,6 +455,7 @@ "parallel/test-fs-open-numeric-flags.js" = {} "parallel/test-fs-open.js" = {} "parallel/test-fs-promises-exists.js" = {} +"parallel/test-fs-promises-file-handle-readLines.mjs" = {} "parallel/test-fs-promises-readfile-empty.js" = {} "parallel/test-fs-promisified.js" = {} "parallel/test-fs-read-empty-buffer.js" = {}