readtastic
Version:
Readtastic is a fast, minimaslitic, light-weight, promise based tool for interacting with input stream line by line.
175 lines (161 loc) • 5.76 kB
TypeScript
// Copyright (c) 2024 BlazeInferno64 --> https://github.com/blazeinferno64.
//
// Author(s) -> BlazeInferno64
//
// Last updated: 23/12/2024
// Type definitions for 'readtastic'
import { Interface as ReadlineInterface } from 'readline';
interface interfaceObject {
/**
* The input stream (eg. process.stdin).
*/
input?: any;
/**
* The output stream (eg. process.stdout).
*/
output?: any;
}
interface AboutObject {
/**
* Name of the package.
*/
Name: string;
/**
* Name of the author.
*/
Author: string;
/**
* Version of the package.
*/
Version: string;
/**
* Description of the package.
*/
Description: string;
/**
* Repository of the package.
*/
Respository: string;
}
interface Readtastic {
/**
* Creates a new interface for reading input streams line by line.
*
* This method initializes a readline interface using the provided input and output streams.
* It allows for interactive line-by-line input processing.
*
* @param {interfaceObject} interfaceObj - An object containing the input and output streams.
* @param {any} interfaceObj.input - The input stream (e.g., `process.stdin`).
* @param {any} interfaceObj.output - The output stream (e.g., `process.stdout`).
*
* @example
* // Creates a new interface with process.stdin and process.stdout
* readtastic.parse_interface({
* input: process.stdin,
* output: process.stdout
* });
*/
parse_interface(interfaceObj: interfaceObject): void;
/**
* Provides a simplified promise-based interface for prompting questions.
*
* This method prompts the user with a question and returns their response.
* The response is parsed as JSON if possible; otherwise, it returns the raw string input.
*
* @param {string} question - The question to prompt the user with.
* @returns {Promise<string | object>} A promise that resolves to the user's response,
* either as a string or an object if the input was valid JSON.
*
* @example
* // Prompt example.
* const phrase = await readtastic.prompt("What do you think of readtastic? ");
* console.log(`You said: ${phrase}`); // Logging the answer of the prompt.
* console.log("Thanks for your valuable feedback!");
*/
prompt(question: string): Promise<string | object>;
/**
* Closes the readline interface, if it is currently open.
*
* This method terminates the input stream and releases any resources associated with the interface.
* After calling this method, the interface cannot be used to read input until it is reinitialized.
*
* @example
* // Close the readline interface.
* readtastic.close();
*
* @remarks
* It is important to call this method when you are done with input processing to ensure that
* resources are properly released and to avoid memory leaks.
*/
close(): void;
/**
* Resumes the readline interface if it has been paused.
*
* This method allows the interface to continue processing input after it has been paused.
* It is useful for resuming input collection after temporarily halting it.
*
* @example
* // Resume the readline interface.
* readtastic.resume();
*
* @remarks
* Ensure that the interface is paused before calling this method; otherwise, it will have no effect.
*/
resume(): void;
/**
* Pauses the readline interface, temporarily halting input processing.
*
* This method stops the interface from reading new input, allowing you to control when
* input collection occurs. It can be useful in scenarios where you need to process
* existing input before accepting more.
*
* @example
* // Pause the readline interface.
* readtastic.pause();
*
* @remarks
* To resume input processing after pausing, call the `resume` method.
*/
pause(): void;
/**
* Returns the package version number.
* @example
* // Simple example.
* console.log(readtastic.VERSION());
*/
VERSION(): string;
/**
* @returns {AboutObject<Object>} Returns a object which contains some info regarding readtastic.
* @example
* console.log(readtastic.about());
* // Logging the about object to the console.
*/
ABOUT(): AboutObject;
/**
* Adds a listener for the specified event.
* @param event - The name of the event to listen for.
* @param listener - The listener function to call when the event occurs.
* @example
* // on() example.
* readtastic.on('line', (input) => {
* console.log(`Received line: ${input}`);
* });
*/
on<K extends keyof ReadlineInterface>(event: K, listener: ReadlineInterface[K]): void;
}
/**
* Readtastic is a fast, minimalistic, lightweight, promise-based tool for interacting with input streams line by line.
*
* It simplifies the process of reading user input, making it easy to create interactive command-line applications.
*
* Learn more about it from [here](https://github.com/blazeinferno64/readtastic.js).
*
* @example
* // Require it in your project using CommonJS syntax:
* const readtastic = require("readtastic");
*
* // Or import it into your project if you're using ES modules:
* import readtastic from "readtastic";
*/
declare const readtastic: Readtastic;
export = readtastic;