Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / protobufjs / node_modules / @types / node / repl.d.ts
1 declare module "repl" {
2     import { Interface, Completer, AsyncCompleter } from "readline";
3     import { Context } from "vm";
4     import { InspectOptions } from "util";
5
6     interface ReplOptions {
7         /**
8          * The input prompt to display.
9          * Default: `"> "`
10          */
11         prompt?: string;
12         /**
13          * The `Readable` stream from which REPL input will be read.
14          * Default: `process.stdin`
15          */
16         input?: NodeJS.ReadableStream;
17         /**
18          * The `Writable` stream to which REPL output will be written.
19          * Default: `process.stdout`
20          */
21         output?: NodeJS.WritableStream;
22         /**
23          * If `true`, specifies that the output should be treated as a TTY terminal, and have
24          * ANSI/VT100 escape codes written to it.
25          * Default: checking the value of the `isTTY` property on the output stream upon
26          * instantiation.
27          */
28         terminal?: boolean;
29         /**
30          * The function to be used when evaluating each given line of input.
31          * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can
32          * error with `repl.Recoverable` to indicate the input was incomplete and prompt for
33          * additional lines.
34          *
35          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_default_evaluation
36          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_custom_evaluation_functions
37          */
38         eval?: REPLEval;
39         /**
40          * Defines if the repl prints output previews or not.
41          * @default `true` Always `false` in case `terminal` is falsy.
42          */
43         preview?: boolean;
44         /**
45          * If `true`, specifies that the default `writer` function should include ANSI color
46          * styling to REPL output. If a custom `writer` function is provided then this has no
47          * effect.
48          * Default: the REPL instance's `terminal` value.
49          */
50         useColors?: boolean;
51         /**
52          * If `true`, specifies that the default evaluation function will use the JavaScript
53          * `global` as the context as opposed to creating a new separate context for the REPL
54          * instance. The node CLI REPL sets this value to `true`.
55          * Default: `false`.
56          */
57         useGlobal?: boolean;
58         /**
59          * If `true`, specifies that the default writer will not output the return value of a
60          * command if it evaluates to `undefined`.
61          * Default: `false`.
62          */
63         ignoreUndefined?: boolean;
64         /**
65          * The function to invoke to format the output of each command before writing to `output`.
66          * Default: a wrapper for `util.inspect`.
67          *
68          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_customizing_repl_output
69          */
70         writer?: REPLWriter;
71         /**
72          * An optional function used for custom Tab auto completion.
73          *
74          * @see https://nodejs.org/dist/latest-v11.x/docs/api/readline.html#readline_use_of_the_completer_function
75          */
76         completer?: Completer | AsyncCompleter;
77         /**
78          * A flag that specifies whether the default evaluator executes all JavaScript commands in
79          * strict mode or default (sloppy) mode.
80          * Accepted values are:
81          * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
82          * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
83          *   prefacing every repl statement with `'use strict'`.
84          */
85         replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
86         /**
87          * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is
88          * pressed. This cannot be used together with a custom `eval` function.
89          * Default: `false`.
90          */
91         breakEvalOnSigint?: boolean;
92     }
93
94     type REPLEval = (this: REPLServer, evalCmd: string, context: Context, file: string, cb: (err: Error | null, result: any) => void) => void;
95     type REPLWriter = (this: REPLServer, obj: any) => string;
96
97     /**
98      * This is the default "writer" value, if none is passed in the REPL options,
99      * and it can be overridden by custom print functions.
100      */
101     const writer: REPLWriter & { options: InspectOptions };
102
103     type REPLCommandAction = (this: REPLServer, text: string) => void;
104
105     interface REPLCommand {
106         /**
107          * Help text to be displayed when `.help` is entered.
108          */
109         help?: string;
110         /**
111          * The function to execute, optionally accepting a single string argument.
112          */
113         action: REPLCommandAction;
114     }
115
116     /**
117      * Provides a customizable Read-Eval-Print-Loop (REPL).
118      *
119      * Instances of `repl.REPLServer` will accept individual lines of user input, evaluate those
120      * according to a user-defined evaluation function, then output the result. Input and output
121      * may be from `stdin` and `stdout`, respectively, or may be connected to any Node.js `stream`.
122      *
123      * Instances of `repl.REPLServer` support automatic completion of inputs, simplistic Emacs-style
124      * line editing, multi-line inputs, ANSI-styled output, saving and restoring current REPL session
125      * state, error recovery, and customizable evaluation functions.
126      *
127      * Instances of `repl.REPLServer` are created using the `repl.start()` method and _should not_
128      * be created directly using the JavaScript `new` keyword.
129      *
130      * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_repl
131      */
132     class REPLServer extends Interface {
133         /**
134          * The `vm.Context` provided to the `eval` function to be used for JavaScript
135          * evaluation.
136          */
137         readonly context: Context;
138         /**
139          * Outdated alias for `input`.
140          */
141         readonly inputStream: NodeJS.ReadableStream;
142         /**
143          * Outdated alias for `output`.
144          */
145         readonly outputStream: NodeJS.WritableStream;
146         /**
147          * The `Readable` stream from which REPL input will be read.
148          */
149         readonly input: NodeJS.ReadableStream;
150         /**
151          * The `Writable` stream to which REPL output will be written.
152          */
153         readonly output: NodeJS.WritableStream;
154         /**
155          * The commands registered via `replServer.defineCommand()`.
156          */
157         readonly commands: NodeJS.ReadOnlyDict<REPLCommand>;
158         /**
159          * A value indicating whether the REPL is currently in "editor mode".
160          *
161          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_commands_and_special_keys
162          */
163         readonly editorMode: boolean;
164         /**
165          * A value indicating whether the `_` variable has been assigned.
166          *
167          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
168          */
169         readonly underscoreAssigned: boolean;
170         /**
171          * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL).
172          *
173          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
174          */
175         readonly last: any;
176         /**
177          * A value indicating whether the `_error` variable has been assigned.
178          *
179          * @since v9.8.0
180          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
181          */
182         readonly underscoreErrAssigned: boolean;
183         /**
184          * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL).
185          *
186          * @since v9.8.0
187          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
188          */
189         readonly lastError: any;
190         /**
191          * Specified in the REPL options, this is the function to be used when evaluating each
192          * given line of input. If not specified in the REPL options, this is an async wrapper
193          * for the JavaScript `eval()` function.
194          */
195         readonly eval: REPLEval;
196         /**
197          * Specified in the REPL options, this is a value indicating whether the default
198          * `writer` function should include ANSI color styling to REPL output.
199          */
200         readonly useColors: boolean;
201         /**
202          * Specified in the REPL options, this is a value indicating whether the default `eval`
203          * function will use the JavaScript `global` as the context as opposed to creating a new
204          * separate context for the REPL instance.
205          */
206         readonly useGlobal: boolean;
207         /**
208          * Specified in the REPL options, this is a value indicating whether the default `writer`
209          * function should output the result of a command if it evaluates to `undefined`.
210          */
211         readonly ignoreUndefined: boolean;
212         /**
213          * Specified in the REPL options, this is the function to invoke to format the output of
214          * each command before writing to `outputStream`. If not specified in the REPL options,
215          * this will be a wrapper for `util.inspect`.
216          */
217         readonly writer: REPLWriter;
218         /**
219          * Specified in the REPL options, this is the function to use for custom Tab auto-completion.
220          */
221         readonly completer: Completer | AsyncCompleter;
222         /**
223          * Specified in the REPL options, this is a flag that specifies whether the default `eval`
224          * function should execute all JavaScript commands in strict mode or default (sloppy) mode.
225          * Possible values are:
226          * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
227          * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
228          *    prefacing every repl statement with `'use strict'`.
229          */
230         readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
231
232         /**
233          * NOTE: According to the documentation:
234          *
235          * > Instances of `repl.REPLServer` are created using the `repl.start()` method and
236          * > _should not_ be created directly using the JavaScript `new` keyword.
237          *
238          * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS.
239          *
240          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_class_replserver
241          */
242         private constructor();
243
244         /**
245          * Used to add new `.`-prefixed commands to the REPL instance. Such commands are invoked
246          * by typing a `.` followed by the `keyword`.
247          *
248          * @param keyword The command keyword (_without_ a leading `.` character).
249          * @param cmd The function to invoke when the command is processed.
250          *
251          * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_replserver_definecommand_keyword_cmd
252          */
253         defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void;
254         /**
255          * Readies the REPL instance for input from the user, printing the configured `prompt` to a
256          * new line in the `output` and resuming the `input` to accept new input.
257          *
258          * When multi-line input is being entered, an ellipsis is printed rather than the 'prompt'.
259          *
260          * This method is primarily intended to be called from within the action function for
261          * commands registered using the `replServer.defineCommand()` method.
262          *
263          * @param preserveCursor When `true`, the cursor placement will not be reset to `0`.
264          */
265         displayPrompt(preserveCursor?: boolean): void;
266         /**
267          * Clears any command that has been buffered but not yet executed.
268          *
269          * This method is primarily intended to be called from within the action function for
270          * commands registered using the `replServer.defineCommand()` method.
271          *
272          * @since v9.0.0
273          */
274         clearBufferedCommand(): void;
275
276         /**
277          * Initializes a history log file for the REPL instance. When executing the
278          * Node.js binary and using the command line REPL, a history file is initialized
279          * by default. However, this is not the case when creating a REPL
280          * programmatically. Use this method to initialize a history log file when working
281          * with REPL instances programmatically.
282          * @param path The path to the history file
283          */
284         setupHistory(path: string, cb: (err: Error | null, repl: this) => void): void;
285
286         /**
287          * events.EventEmitter
288          * 1. close - inherited from `readline.Interface`
289          * 2. line - inherited from `readline.Interface`
290          * 3. pause - inherited from `readline.Interface`
291          * 4. resume - inherited from `readline.Interface`
292          * 5. SIGCONT - inherited from `readline.Interface`
293          * 6. SIGINT - inherited from `readline.Interface`
294          * 7. SIGTSTP - inherited from `readline.Interface`
295          * 8. exit
296          * 9. reset
297          */
298
299         addListener(event: string, listener: (...args: any[]) => void): this;
300         addListener(event: "close", listener: () => void): this;
301         addListener(event: "line", listener: (input: string) => void): this;
302         addListener(event: "pause", listener: () => void): this;
303         addListener(event: "resume", listener: () => void): this;
304         addListener(event: "SIGCONT", listener: () => void): this;
305         addListener(event: "SIGINT", listener: () => void): this;
306         addListener(event: "SIGTSTP", listener: () => void): this;
307         addListener(event: "exit", listener: () => void): this;
308         addListener(event: "reset", listener: (context: Context) => void): this;
309
310         emit(event: string | symbol, ...args: any[]): boolean;
311         emit(event: "close"): boolean;
312         emit(event: "line", input: string): boolean;
313         emit(event: "pause"): boolean;
314         emit(event: "resume"): boolean;
315         emit(event: "SIGCONT"): boolean;
316         emit(event: "SIGINT"): boolean;
317         emit(event: "SIGTSTP"): boolean;
318         emit(event: "exit"): boolean;
319         emit(event: "reset", context: Context): boolean;
320
321         on(event: string, listener: (...args: any[]) => void): this;
322         on(event: "close", listener: () => void): this;
323         on(event: "line", listener: (input: string) => void): this;
324         on(event: "pause", listener: () => void): this;
325         on(event: "resume", listener: () => void): this;
326         on(event: "SIGCONT", listener: () => void): this;
327         on(event: "SIGINT", listener: () => void): this;
328         on(event: "SIGTSTP", listener: () => void): this;
329         on(event: "exit", listener: () => void): this;
330         on(event: "reset", listener: (context: Context) => void): this;
331
332         once(event: string, listener: (...args: any[]) => void): this;
333         once(event: "close", listener: () => void): this;
334         once(event: "line", listener: (input: string) => void): this;
335         once(event: "pause", listener: () => void): this;
336         once(event: "resume", listener: () => void): this;
337         once(event: "SIGCONT", listener: () => void): this;
338         once(event: "SIGINT", listener: () => void): this;
339         once(event: "SIGTSTP", listener: () => void): this;
340         once(event: "exit", listener: () => void): this;
341         once(event: "reset", listener: (context: Context) => void): this;
342
343         prependListener(event: string, listener: (...args: any[]) => void): this;
344         prependListener(event: "close", listener: () => void): this;
345         prependListener(event: "line", listener: (input: string) => void): this;
346         prependListener(event: "pause", listener: () => void): this;
347         prependListener(event: "resume", listener: () => void): this;
348         prependListener(event: "SIGCONT", listener: () => void): this;
349         prependListener(event: "SIGINT", listener: () => void): this;
350         prependListener(event: "SIGTSTP", listener: () => void): this;
351         prependListener(event: "exit", listener: () => void): this;
352         prependListener(event: "reset", listener: (context: Context) => void): this;
353
354         prependOnceListener(event: string, listener: (...args: any[]) => void): this;
355         prependOnceListener(event: "close", listener: () => void): this;
356         prependOnceListener(event: "line", listener: (input: string) => void): this;
357         prependOnceListener(event: "pause", listener: () => void): this;
358         prependOnceListener(event: "resume", listener: () => void): this;
359         prependOnceListener(event: "SIGCONT", listener: () => void): this;
360         prependOnceListener(event: "SIGINT", listener: () => void): this;
361         prependOnceListener(event: "SIGTSTP", listener: () => void): this;
362         prependOnceListener(event: "exit", listener: () => void): this;
363         prependOnceListener(event: "reset", listener: (context: Context) => void): this;
364     }
365
366     /**
367      * A flag passed in the REPL options. Evaluates expressions in sloppy mode.
368      */
369     const REPL_MODE_SLOPPY: unique symbol;
370
371     /**
372      * A flag passed in the REPL options. Evaluates expressions in strict mode.
373      * This is equivalent to prefacing every repl statement with `'use strict'`.
374      */
375     const REPL_MODE_STRICT: unique symbol;
376
377     /**
378      * Creates and starts a `repl.REPLServer` instance.
379      *
380      * @param options The options for the `REPLServer`. If `options` is a string, then it specifies
381      * the input prompt.
382      */
383     function start(options?: string | ReplOptions): REPLServer;
384
385     /**
386      * Indicates a recoverable error that a `REPLServer` can use to support multi-line input.
387      *
388      * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_recoverable_errors
389      */
390     class Recoverable extends SyntaxError {
391         err: Error;
392
393         constructor(err: Error);
394     }
395 }