///
import { KawkahCore } from './core';
import { IKawkahParserOptions, IKawkahParserResult, IKawhakParserBaseOptions, KawkahParserType } from 'kawkah-parser';
import { IAnsiStyles } from 'colurs';
import { ITablurColumn } from 'tablur';
import { SpawnOptions } from 'child_process';
export { IKawkahParserOptions, IKawkahParserResult };
export { IAnsiStyles } from 'colurs';
export declare type AnsiStyles = keyof IAnsiStyles;
export declare type RecordMap = T & Record;
export declare type JoinMap = T & U;
export interface IKawkahMap {
[key: string]: T;
}
export interface ITest {
}
export declare type KawkahHandler = (val: any, context?: KawkahCore) => any;
export declare type KawkahIsTypeHandler = (val: any) => boolean;
export declare type KawkahAction = (...args: any[]) => void;
export declare type KawkahResultAction = (result?: IKawkahResult, context?: KawkahCore) => void;
export declare type KawkahOptionType = KawkahParserType;
export declare type KawkahMiddlewareOld = (result?: IKawkahResult, command?: IKawkahCommandInternal, context?: KawkahCore) => any;
export declare type KawkahCallback = (err?: Error, data?: any) => void;
export declare type KawkahHelpHandler = (groups?: string[], context?: KawkahCore) => void;
export declare type KawkahLogHandler = (type?: any, message?: any, ...args: any[]) => void;
export declare type KawkahCompletionsCallback = (completions: any[]) => void;
export declare type KawkahCompletionsHandler = (query: IKawkahCompletionQuery, done?: KawkahCompletionsCallback) => any[];
export declare type KawkahValidateHandler = (val?: any, key?: string, event?: IKawkahMiddlewareEventOption, context?: KawkahCore) => string | boolean | Error;
export declare type KawkahValidate = RegExp | KawkahValidateHandler | IKawkahValidateConfig;
export declare type KawkahParser = (argv: string | string[], options?: IKawkahOptionsInternal) => IKawkahResult;
export declare type KawkahFormatMessageCallback = (key: string, data: IKawkahFormatMessage) => string;
export declare type KawkahReduceCallback = (current: T, accumulator: U, index: number, array: T[]) => U;
export declare type KawkahCommandKeys = keyof IKawkahCommand;
export declare type KawkahCommandInternalKeys = keyof IKawkahCommandInternal;
export declare type KawkahOptionKeys = keyof IKawkahOption;
export declare type KawkahOptionInternalKeys = keyof IKawkahOptionInternal;
export declare type KawkahOptionsKeys = keyof IKawkahOptions;
export declare type KawkahOptionsInternalKeys = keyof IKawkahOptionsInternal;
export declare type KawkahHelpMetadataKeys = keyof IKawkahHelpMetadata;
export declare type KawkahStyleKeys = keyof IKawkahStyles;
export declare type KawkahThemeSytleKeys = keyof IKawkahTheme;
export declare type KawkahThemeKeys = keyof IKawkahThemes;
export declare type KawkahAnsiType = string | AnsiStyles | AnsiStyles[];
export declare type SpawnOptionKeys = keyof SpawnOptions;
export declare type KawkahResultMiddleware = (result: IKawkahResult, event?: IKawkahMiddlewareEventResult, context?: KawkahCore) => IKawkahResult | Error;
export declare type KawkahOptionMiddleware = (val: any, key?: string, event?: IKawkahMiddlewareEventOption, context?: KawkahCore) => any;
export declare type KawkahMiddleware = (val: any, ...args: any[]) => T;
export declare type KawkahMiddlwareHandler = KawkahResultMiddleware | KawkahOptionMiddleware | KawkahMiddleware;
export declare enum KawkahMiddlewareGroup {
AfterParsed = "AfterParsed",
BeforeValidate = "BeforeValidate",
Validate = "Validate",
AfterValidate = "AfterValidate",
BeforeAction = "BeforeAction"
}
export interface IKawkahMiddleware {
readonly name: string;
group?: KawkahMiddlewareGroup;
commands?: string[];
enabled?: boolean;
extend?: boolean;
handler: KawkahMiddlwareHandler;
[key: string]: any;
}
export declare enum KawkahHelpScheme {
None = "none",
Default = "default",
Commands = "commands"
}
export declare enum KawkahGroupType {
Commands = "commands",
Arguments = "arguments",
Flags = "flags",
Examples = "examples"
}
export declare enum KawkahEvent {
Error = "Error",
Warning = "Warning",
Notify = "Notify",
Ok = "Ok",
Help = "Help",
Catch = "Catch"
}
export interface IKawkahValidateConfig {
message?: string;
handler?: RegExp | KawkahValidateHandler;
}
export interface IKawkahDemandDeny {
handler?: RegExp | KawkahValidateHandler;
keys?: string | string[];
match?: number;
}
export interface IKawkahTheme {
header?: KawkahAnsiType;
label?: KawkahAnsiType;
command?: KawkahAnsiType;
title?: KawkahAnsiType;
usage?: KawkahAnsiType;
alias?: KawkahAnsiType;
argument?: KawkahAnsiType;
flag?: KawkahAnsiType;
describe?: KawkahAnsiType;
describeCommand?: KawkahAnsiType;
about?: KawkahAnsiType;
type?: KawkahAnsiType;
variadic?: KawkahAnsiType;
required?: KawkahAnsiType;
footer?: KawkahAnsiType;
example?: KawkahAnsiType;
}
export interface IKawkahThemeInternal {
header?: AnsiStyles[];
label?: AnsiStyles[];
command?: AnsiStyles[];
title?: AnsiStyles[];
usage?: AnsiStyles[];
alias?: AnsiStyles[];
argument?: AnsiStyles[];
flag?: AnsiStyles[];
describe?: AnsiStyles[];
describeCommand?: AnsiStyles[];
about?: AnsiStyles[];
type?: AnsiStyles[];
variadic?: AnsiStyles[];
required?: AnsiStyles[];
footer?: AnsiStyles[];
example?: AnsiStyles[];
}
export interface IKawkahThemes {
default: IKawkahTheme;
dim: IKawkahTheme;
bright: IKawkahTheme;
}
export interface IKawkahStyles {
primary?: KawkahAnsiType;
accent?: KawkahAnsiType;
muted?: KawkahAnsiType;
error?: KawkahAnsiType;
warning?: KawkahAnsiType;
notify?: KawkahAnsiType;
ok?: KawkahAnsiType;
}
export interface IKawkahLocaleMap {
toArray(...filters: any[]): any[];
format(str: string, ...args: any[]): string;
}
export interface IKawkahHelpMetadata {
header?: string | string[] | ITablurColumn | ITablurColumn[];
footer?: string | string[] | ITablurColumn | ITablurColumn[];
}
export interface IKawkahFormatMessage {
match: string;
key: string;
raw: any;
val: any;
obj: IKawkahMap;
colorize: boolean;
}
export interface IKawkahCompletionQuery {
line?: string[];
words?: number;
point?: number;
partial?: string;
lastPartial?: string;
prev?: string;
last?: string;
}
export interface IKawkahAssert {
type(val: any, type: string, err: string | Error): any;
equals(val: any, comparator: any, err: string | Error): any;
notEquals(val: any, comparator: any, err: string | Error): any;
}
export interface IKawkahGroup {
title?: string;
isCommand?: string;
items?: string | string[];
indent?: number;
sort?: boolean;
enabled?: boolean;
children?: string | string[];
}
export interface IKawkahOptionBase {
type?: KawkahOptionType;
index?: true | number;
alias?: string | string[];
describe?: string;
demand?: string | string[] | IKawkahDemandDeny;
deny?: string | string[] | IKawkahDemandDeny;
default?: any;
required?: boolean;
coerce?: KawkahHandler;
validate?: KawkahValidate;
variadic?: number | boolean;
help?: string | boolean | KawkahHandler;
completions?: string | string[];
extend?: any;
skip?: boolean;
action?: KawkahResultAction;
}
/**
* Contains all properties for arg and flag option types.
*/
export interface IKawkahOption extends IKawkahOptionBase {
}
export interface IKawkahOptionInternal extends IKawkahOption {
name?: string;
index?: number;
alias?: string[];
demand?: IKawkahDemandDeny;
deny?: IKawkahDemandDeny;
completions?: string[];
extend?: true | string[];
static?: any;
validate?: IKawkahValidateConfig;
command?: string;
}
export interface IKawkahCommandOptions {
[key: string]: IKawkahOption | IKawkahOptionInternal;
}
export interface IKawkahCommand {
readonly usage?: string;
readonly args?: string[];
describe?: string;
about?: string;
alias?: string | string[];
options?: IKawkahMap;
help?: string | boolean | KawkahHandler;
spread?: boolean;
external?: string;
externalOptions?: SpawnOptions;
skip?: boolean;
abort?: boolean;
minArgs?: number;
maxArgs?: number;
minFlags?: number;
maxFlags?: number;
action?: KawkahAction;
}
export interface IKawkahCommandInternal extends IKawkahCommand {
usage?: string;
name?: string;
args?: string[];
alias?: string[];
options?: IKawkahMap;
}
export interface IKawkahCommands {
[key: string]: IKawkahCommand | IKawkahCommandInternal;
}
export interface IKawkahOptionsBase {
name?: string;
locale?: string;
output?: NodeJS.WritableStream;
parser?: KawkahParser;
scheme?: KawkahHelpScheme | string;
theme?: KawkahThemeKeys | IKawkahTheme | string;
header?: string;
footer?: string;
width?: number;
sortGroups?: boolean;
colorize?: boolean;
spread?: boolean;
stacktrace?: boolean;
throw?: boolean;
terminate?: boolean;
examples?: IKawkahMap;
commands?: IKawkahMap;
timestampFormat?: string;
logFormat?: string;
middleware?: string[];
styles?: IKawkahStyles;
strict?: boolean;
}
/**
* All Kawkah options passed by user for configuration.
*/
export interface IKawkahOptions extends IKawkahOptionsBase, IKawkahCommand, IKawhakParserBaseOptions {
usage?: string;
}
/**
* Internal options interface stripping out default command options.
*/
export interface IKawkahOptionsInternal extends IKawkahOptionsBase, IKawkahParserOptions {
theme?: IKawkahThemeInternal;
styles?: {
primary?: AnsiStyles[];
accent?: AnsiStyles[];
muted?: AnsiStyles[];
alert?: AnsiStyles[];
warning?: AnsiStyles[];
notify?: AnsiStyles[];
};
}
export interface IKawkahNormalized {
first?: string;
command?: IKawkahCommandInternal;
defaultCommand?: IKawkahCommandInternal;
argv?: string[];
actionKeys?: string[];
}
export interface IKawkahValidateResult {
anonymous?: any[];
stripped?: any[];
spread?: any[];
variadics?: any[];
errors?: any[];
options?: IKawkahMap;
}
export interface IKawkahResult extends IKawkahParserResult {
$0?: string;
$command?: string;
}
export interface IKawkahMiddlewareEventBase {
start?: number;
completed?: number;
elapsed?: number;
result?: IKawkahResult;
isActionOption?: boolean;
command?: IKawkahCommandInternal;
}
export interface IKawkahMiddlewareEventResult extends IKawkahMiddlewareEventBase {
}
export interface IKawkahMiddlewareEventOption extends IKawkahMiddlewareEventBase {
isArg?: boolean;
isFlag?: boolean;
isPresent?: boolean;
option?: IKawkahOptionInternal;
}
export interface IKawkahMiddlewareEvent extends IKawkahMiddlewareEventResult, IKawkahMiddlewareEventOption {
}