argumental
Version:
Framework for building CLI apps with Node.js
230 lines (229 loc) • 10.7 kB
TypeScript
import { BuiltInValidators } from './validators';
import { Argumental } from '../types';
export declare class ArgumentalApp extends BuiltInValidators {
constructor(exitOnError?: boolean);
/** Global declaration flag. */
private _global;
/** Global declarations to prepend to all future command declarations (including top-level). */
private _globalDeclaration;
/** Shared declaration flag. */
private _shared;
/** Shared declarations to prepend to all future command declarations (excluding top-level). */
private _sharedDeclaration;
/** Command declarations. */
private _commands;
/** Current command declaration. */
private _currentCommand;
/** Current component type of the current command. */
private _currentComponent;
/** List of all command names and aliases for quick conflict checks. */
private _conflicts;
/** Application version. */
private _version;
/** Application name. */
private _name;
/** Parser. */
private _parser;
/** Logger. */
private _log;
/** Flag for displaying help without the --help option for plain top-level command. */
private _topLevelPlainHelp;
/** The last command order set. */
private _lastCommandOrder;
/** Custom event declarations. */
private _events;
/** Shared data object throughout the application. */
private _data;
/** Whether to end process on error or not. */
private _exitOnError;
/**
* Attaches an array of validators to the given component (argument or option's argument).
* @param component A reference to an argument or and option declaration.
* @param validators The array of validators.
* @param destructuringParams Whether the validators are defined with destructuring parameters.
*/
private _attachValidator;
/**
* Sets validators for an option or an argument.
* @param validators A single or an array of validators.
* @param destructuringParams Whether to use destructuring params for the validators.
*/
private _validate;
/**
* Mounts an action handler to the current command (or globally).
* @param handler The action handler to attach.
* @param destructuringParams Whether to use destructuring params for the validators.
*/
private _action;
/**
* Determines if argument already exists considering the global and shared flags.
* @param argument The argument declaration.
*/
private _doesArgumentAlreadyExist;
/**
* Determines if option already exists considering the global and shared flags.
* @param option The option declaration.
*/
private _doesOptionAlreadyExist;
/**
* Merges two event declarations (does not mutate objects).
* @param a First event declarations.
* @param b Second event declarations.
*/
private _mergeEvents;
/**
* Returns true if event is a default event.
* @param event The event name to check.
*/
private _isEventDefault;
/**
* Emits a context-based default event for a command.
* @param event The default event name.
* @param cmd The command name.
* @param data The event data.
*/
private _emitDefault;
/** Logs error and exits the process with code 1. */
private _exitWithError;
/** Shared data object throughout the application. */
data<T = any>(): T;
/**
* Configures Argumental with the provided options.
* @param options The configuration options.
*/
config(options: Argumental.Options): ArgumentalApp;
/**
* Sets the application version and defines the top-level option `-v --version`.
* @param version The application version.
*/
version(version: string): ArgumentalApp;
/**
* Makes any following argument, option, and action declaration globally applied to all commands (appended to previously declared commands and prepended to future command declarations) unless the command() function is called.
*/
get shared(): ArgumentalApp;
/**
* Makes any following argument, option, and action declaration globally applied to all commands excluding top-level (appended to previously declared commands and prepended to future command declarations) unless the command() function is called.
*/
get global(): ArgumentalApp;
/**
* Makes any following argument, option, and action declaration applied to top-level.
*/
get top(): ArgumentalApp;
/**
* Sets the description for a command, option, or argument.
* @param text The description text to display in help.
*/
description(text: string): ArgumentalApp;
/**
* Sets the required flag on an option.
* @param value The required flag value (defaults to true).
*/
required(value?: boolean): ArgumentalApp;
/**
* Sets the multi flag on an option.
* @param value The multi flag value (defaults to true).
*/
multi(value?: boolean): ArgumentalApp;
/**
* Sets the default value for an option or an argument.
* @param value The default value.
*/
default(value: any): ArgumentalApp;
/**
* Sets the immediate flag on an option.
* @param value The immediate flag value (defaults to true).
*/
immediate(value?: boolean): ArgumentalApp;
/**
* Sets validators for an option or an argument.
* @param validators A single or an array of validators.
*/
validate(validators: RegExp | Argumental.Validator | Array<RegExp | Argumental.Validator>): ArgumentalApp;
/**
* Alias for <code>validate()</code>.
*/
sanitize(sanitizers: RegExp | Argumental.Validator | Array<RegExp | Argumental.Validator>): ArgumentalApp;
/**
* Mounts an action handler to the current command (or globally).
* @param handler The action handler to attach.
*/
action(handler: Argumental.ActionHandler): ArgumentalApp;
/**
* Sets validators for an option or an argument.
* @param validators A single or an array of validators.
*/
validateDestruct(validators: RegExp | Argumental.ValidatorWithDestructuringParams | Array<RegExp | Argumental.ValidatorWithDestructuringParams>): ArgumentalApp;
/**
* Alias for <code>validate()</code>.
*/
sanitizeDestruct(sanitizers: RegExp | Argumental.ValidatorWithDestructuringParams | Array<RegExp | Argumental.ValidatorWithDestructuringParams>): ArgumentalApp;
/**
* Mounts an action handler to the current command (or globally).
* @param handler The action handler to attach.
*/
actionDestruct(handler: Argumental.ActionHandlerWithDestructuringParams): ArgumentalApp;
/**
* Defines a command. Any following argument, option, alias, or action declaration will be used for this command unless this function is called again.
* @param name Command name (can contain spaces).
* @param description The command description to display in help.
*/
command(name: string): ArgumentalApp;
command(name: string, description: string): ArgumentalApp;
/**
* Defines an alias for the current command.
* @param name The alias name.
*/
alias(name: string): ArgumentalApp;
/**
* Defines an argument for the current command (or globally).
* @param syntax The argument syntax (e.g. "<argument>", "[argument]").
* @param description The argument description to display in help.
* @param validators A single or an array of validators.
* @param defaultValue A default value to use for the argument (when argument is optional).
*/
argument(syntax: string): ArgumentalApp;
argument(syntax: string, description: string): ArgumentalApp;
argument(syntax: string, description: string, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>): ArgumentalApp;
argument(syntax: string, description: string, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>, defaultValue: any): ArgumentalApp;
/**
* Defines an option for the current command (or globally).
* @param syntax The option syntax (e.g. "--no-color", "-p --port <port_number>", "-l --logs [level]").
* @param description The option description to display in help.
* @param required A boolean indicating if option is required.
* @param validators A single or an array of validators.
* @param multi A boolean indicating whether this option can be repeated more than once (only practical for options with argument).
* @param defaultValue A default value to use for the option's argument (if defined).
* @param immediate Whether to stop parsing other components and run the action handlers when this option is provided (e.g. --help).
*/
option(syntax: string): ArgumentalApp;
option(syntax: string, description: string): ArgumentalApp;
option(syntax: string, description: string, required: boolean): ArgumentalApp;
option(syntax: string, description: string, required: boolean, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>): ArgumentalApp;
option(syntax: string, description: string, required: boolean, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>, multi: boolean): ArgumentalApp;
option(syntax: string, description: string, required: boolean, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>, multi: boolean, defaultValue: any): ArgumentalApp;
option(syntax: string, description: string, required: boolean, validators: Argumental.Validator | RegExp | Array<RegExp | Argumental.Validator>, multi: boolean, defaultValue: any, immediate: boolean): ArgumentalApp;
/**
* Registers an event handler.
* @param event The event name (case insensitive).
* @param handler The event handler to register.
*/
on(event: 'validators:before', handler: Argumental.EventHandler<Argumental.EventData<string>>): ArgumentalApp;
on(event: Exclude<keyof Argumental.EventDeclarations, 'validators:before'>, handler: Argumental.EventHandler<Argumental.EventData<any>>): ArgumentalApp;
on(event: string, handler: Argumental.EventHandler): ArgumentalApp;
/**
* Emits a custom event within the current context.
* @param event The event name (case insensitive).
* @param data The custom event data.
*/
emit(event: string, data?: any): Promise<void>;
/**
* Displays an error message in the console.
@param message An error message or object.
*/
error(message: string | Error): void;
/**
* Parses the process arguments (argv) and runs the app.
* @param argv Process arguments to parse.
*/
parse(argv: string[]): Promise<void>;
}