171 lines
5.4 KiB
Haxe
171 lines
5.4 KiB
Haxe
/*
|
|
* Copyright (C)2014-2020 Haxe Foundation
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
package js.node.readline;
|
|
|
|
import js.node.Buffer;
|
|
import js.node.events.EventEmitter;
|
|
|
|
/**
|
|
Enumeration of events emitted by the `Interface` objects.
|
|
**/
|
|
@:enum abstract InterfaceEvent<T:haxe.Constraints.Function>(Event<T>) to Event<T> {
|
|
/**
|
|
The `'close'` event is emitted when one of the following occur:
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_close
|
|
**/
|
|
var Close:InterfaceEvent<Void->Void> = "close";
|
|
|
|
/**
|
|
The `'line'` event is emitted whenever the `input` stream receives an end-of-line input (`\n`, `\r`, or `\r\n`).
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_line
|
|
**/
|
|
var Line:InterfaceEvent<String->Void> = "line";
|
|
|
|
/**
|
|
The `'pause'` event is emitted when one of the following occur:
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_pause
|
|
**/
|
|
var Pause:InterfaceEvent<Void->Void> = "pause";
|
|
|
|
/**
|
|
The `'resume'` event is emitted whenever the `input` stream is resumed.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_resume
|
|
**/
|
|
var Resume:InterfaceEvent<Void->Void> = "resume";
|
|
|
|
/**
|
|
The `'SIGCONT'` event is emitted when a Node.js process previously moved into the background using `<ctrl>-Z`
|
|
(i.e. `SIGTSTP`) is then brought back to the foreground using `fg(1p)`.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_sigcont
|
|
**/
|
|
var SIGCONT:InterfaceEvent<Void->Void> = "SIGCONT";
|
|
|
|
/**
|
|
The `'SIGINT'` event is emitted whenever the `input` stream receives a `<ctrl>-C` input, known typically as
|
|
`SIGINT`.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_sigint
|
|
**/
|
|
var SIGINT:InterfaceEvent<Void->Void> = "SIGINT";
|
|
|
|
/**
|
|
The `'SIGTSTP'` event is emitted when the `input` stream receives a `<ctrl>-Z` input, typically known as
|
|
`SIGTSTP`.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_event_sigtstp
|
|
**/
|
|
var SIGTSTP:InterfaceEvent<Void->Void> = "SIGTSTP";
|
|
}
|
|
|
|
/**
|
|
Instances of the `readline.Interface` class are constructed using the `readline.createInterface()` method.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_class_interface
|
|
**/
|
|
extern class Interface extends EventEmitter<Interface> {
|
|
/**
|
|
The `rl.close()` method closes the `readline.Interface` instance and relinquishes control over the `input` and
|
|
`output` streams.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_close
|
|
**/
|
|
function close():Void;
|
|
|
|
/**
|
|
The `rl.pause()` method pauses the `input` stream, allowing it to be resumed later if necessary.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_pause
|
|
**/
|
|
function pause():Void;
|
|
|
|
/**
|
|
The `rl.prompt()` method writes the `readline.Interface` instances configured `prompt` to a new line in `output`
|
|
in order to provide a user with a new location at which to provide input.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_prompt_preservecursor
|
|
**/
|
|
function prompt(?preserveCursor:Bool):Void;
|
|
|
|
/**
|
|
The `rl.question()` method displays the `query` by writing it to the `output`, waits for user `input` to be
|
|
provided on input, then invokes the `callback` function passing the provided input as the first argument.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_question_query_callback
|
|
**/
|
|
function question(query:String, callback:String->Void):Void;
|
|
|
|
/**
|
|
The `rl.resume()` method resumes the `input` stream if it has been paused.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_resume
|
|
**/
|
|
function resume():Void;
|
|
|
|
/**
|
|
The `rl.setPrompt()` method sets the prompt that will be written to `output` whenever `rl.prompt()` is called.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_setprompt_prompt
|
|
**/
|
|
function setPrompt(prompt:String):Void;
|
|
|
|
/**
|
|
The `rl.write()` method write either `data` or a key sequence identified by `key` to the `output`.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_write_data_key
|
|
**/
|
|
@:overload(function(data:Buffer, ?key:InterfaceWriteKey):Void {})
|
|
function write(data:String, ?key:InterfaceWriteKey):Void;
|
|
}
|
|
|
|
/**
|
|
Key sequence passed as the `key` argument to `Interface.write`.
|
|
|
|
@see https://nodejs.org/api/readline.html#readline_rl_write_data_key
|
|
**/
|
|
typedef InterfaceWriteKey = {
|
|
/**
|
|
`true` to indicate the <ctrl> key.
|
|
**/
|
|
@:optional var ctrl:Bool;
|
|
|
|
/**
|
|
`true` to indicate the <Meta> key.
|
|
*/
|
|
@:optional var meta:Bool;
|
|
|
|
/**
|
|
`true` to indicate the <Shift> key.
|
|
**/
|
|
@:optional var shift:Bool;
|
|
|
|
/**
|
|
The name of the a key.
|
|
**/
|
|
var name:String;
|
|
}
|