Skip to main content

Class: ReadlineInterface

A readline interface for interactive line editing.

Supports full line editing with Emacs-style key bindings, history navigation, tab completion, and syntax colorization when connected to a terminal. Falls back to simple line-buffered input for non-TTY streams.

Extends​

  • Disposable

Constructors​

Constructor​

new ReadlineInterface(): ReadlineInterface

Returns​

ReadlineInterface

Properties​

cursor​

readonly cursor: number

The current cursor position in the line buffer (read-only).


history​

history: string[]

The history array. Can be read or replaced.


line​

readonly line: string

The current line buffer (read-only).


multiline​

multiline: boolean

Whether multiline mode is enabled.

Methods​

[asyncIterator]()​

[asyncIterator](): AsyncIterableIterator<string>

Async iterator that yields lines until EOF or close.

Returns​

AsyncIterableIterator<string>


addHistoryEntry()​

addHistoryEntry(entry): void

Add an entry to the history.

The entry is trimmed and deduplicated against the last history entry.

Parameters​

entry​

string

The history entry to add.

Returns​

void


clearLine()​

clearLine(): void

Clear the current line on the terminal. No-op if not a terminal.

Returns​

void


close()​

close(): void

Close the interface.

Restores terminal mode, releases stream locks, and resolves any pending readline with null. Ends async iteration.

Aliased as Symbol.dispose, so using rl = createInterface(...) closes the interface at scope exit.

Returns​

void


moveCursor()​

moveCursor(dx): void

Move the cursor by a delta on the terminal.

Parameters​

dx​

number

Number of positions to move (positive = right, negative = left).

Returns​

void


question()​

question(prompt): Promise<string | null>

Display a one-shot prompt and read a line.

Like readline but temporarily overrides the prompt string.

Parameters​

prompt​

string

The prompt to display.

Returns​

Promise<string | null>


readline()​

readline(): Promise<string | null>

Read a single line from input.

Displays the configured prompt and waits for the user to submit a line. Returns null on EOF (Ctrl+D on empty line) or after close is called.

Returns​

Promise<string | null>


write()​

write(text): void

Write text to the output stream.

Parameters​

text​

string

The text to write.

Returns​

void