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;
							 | 
						||
| 
								 | 
							
								}
							 |