1 declare module "readline" {
2 import * as events from "events";
3 import * as stream from "stream";
13 class Interface extends events.EventEmitter {
14 readonly terminal: boolean;
16 // Need direct access to line/cursor data, for use in external processes
17 // see: https://github.com/nodejs/node/issues/30347
18 /** The current input data */
19 readonly line: string;
20 /** The current cursor position in the input line */
21 readonly cursor: number;
24 * NOTE: According to the documentation:
26 * > Instances of the `readline.Interface` class are constructed using the
27 * > `readline.createInterface()` method.
29 * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
31 protected constructor(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean);
33 * NOTE: According to the documentation:
35 * > Instances of the `readline.Interface` class are constructed using the
36 * > `readline.createInterface()` method.
38 * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
40 protected constructor(options: ReadLineOptions);
42 setPrompt(prompt: string): void;
43 prompt(preserveCursor?: boolean): void;
44 question(query: string, callback: (answer: string) => void): void;
48 write(data: string | Buffer, key?: Key): void;
51 * Returns the real position of the cursor in relation to the input
52 * prompt + string. Long input (wrapping) strings, as well as multiple
53 * line prompts are included in the calculations.
55 getCursorPos(): CursorPos;
68 addListener(event: string, listener: (...args: any[]) => void): this;
69 addListener(event: "close", listener: () => void): this;
70 addListener(event: "line", listener: (input: string) => void): this;
71 addListener(event: "pause", listener: () => void): this;
72 addListener(event: "resume", listener: () => void): this;
73 addListener(event: "SIGCONT", listener: () => void): this;
74 addListener(event: "SIGINT", listener: () => void): this;
75 addListener(event: "SIGTSTP", listener: () => void): this;
77 emit(event: string | symbol, ...args: any[]): boolean;
78 emit(event: "close"): boolean;
79 emit(event: "line", input: string): boolean;
80 emit(event: "pause"): boolean;
81 emit(event: "resume"): boolean;
82 emit(event: "SIGCONT"): boolean;
83 emit(event: "SIGINT"): boolean;
84 emit(event: "SIGTSTP"): boolean;
86 on(event: string, listener: (...args: any[]) => void): this;
87 on(event: "close", listener: () => void): this;
88 on(event: "line", listener: (input: string) => void): this;
89 on(event: "pause", listener: () => void): this;
90 on(event: "resume", listener: () => void): this;
91 on(event: "SIGCONT", listener: () => void): this;
92 on(event: "SIGINT", listener: () => void): this;
93 on(event: "SIGTSTP", listener: () => void): this;
95 once(event: string, listener: (...args: any[]) => void): this;
96 once(event: "close", listener: () => void): this;
97 once(event: "line", listener: (input: string) => void): this;
98 once(event: "pause", listener: () => void): this;
99 once(event: "resume", listener: () => void): this;
100 once(event: "SIGCONT", listener: () => void): this;
101 once(event: "SIGINT", listener: () => void): this;
102 once(event: "SIGTSTP", listener: () => void): this;
104 prependListener(event: string, listener: (...args: any[]) => void): this;
105 prependListener(event: "close", listener: () => void): this;
106 prependListener(event: "line", listener: (input: string) => void): this;
107 prependListener(event: "pause", listener: () => void): this;
108 prependListener(event: "resume", listener: () => void): this;
109 prependListener(event: "SIGCONT", listener: () => void): this;
110 prependListener(event: "SIGINT", listener: () => void): this;
111 prependListener(event: "SIGTSTP", listener: () => void): this;
113 prependOnceListener(event: string, listener: (...args: any[]) => void): this;
114 prependOnceListener(event: "close", listener: () => void): this;
115 prependOnceListener(event: "line", listener: (input: string) => void): this;
116 prependOnceListener(event: "pause", listener: () => void): this;
117 prependOnceListener(event: "resume", listener: () => void): this;
118 prependOnceListener(event: "SIGCONT", listener: () => void): this;
119 prependOnceListener(event: "SIGINT", listener: () => void): this;
120 prependOnceListener(event: "SIGTSTP", listener: () => void): this;
121 [Symbol.asyncIterator](): AsyncIterableIterator<string>;
124 type ReadLine = Interface; // type forwarded for backwards compatiblity
126 type Completer = (line: string) => CompleterResult;
127 type AsyncCompleter = (line: string, callback: (err?: null | Error, result?: CompleterResult) => void) => any;
129 type CompleterResult = [string[], string];
131 interface ReadLineOptions {
132 input: NodeJS.ReadableStream;
133 output?: NodeJS.WritableStream;
134 completer?: Completer | AsyncCompleter;
136 historySize?: number;
139 removeHistoryDuplicates?: boolean;
140 escapeCodeTimeout?: number;
144 function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): Interface;
145 function createInterface(options: ReadLineOptions): Interface;
146 function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void;
148 type Direction = -1 | 0 | 1;
150 interface CursorPos {
156 * Clears the current line of this WriteStream in a direction identified by `dir`.
158 function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean;
160 * Clears this `WriteStream` from the current cursor down.
162 function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean;
164 * Moves this WriteStream's cursor to the specified position.
166 function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean;
168 * Moves this WriteStream's cursor relative to its current position.
170 function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean;