@gypsy-js/cli
Version:
183 lines (165 loc) • 3.95 kB
TypeScript
/**
* @file cli typedef.
* @author qivmvip AT gmail DOT com
* @date 2022-03-01
*/
declare type MessageStyle = Partial<{
color: string;
bgColor: string;
bold: boolean;
italic: boolean;
underline: boolean;
}>
declare type Message = {
text: string;
style?: MessageStyle;
}
declare type MessageBuilder = {
text(text: string): MessageBuilder;
color(color: string): MessageBuilder;
bgColor(bgColor: string): MessageBuilder;
bold(bold: boolean): MessageBuilder;
italic(italic: boolean): MessageBuilder;
underline(underline: boolean): MessageBuilder;
}
declare type MessagesBuilderFn = {
(text: string): MessageBuilder
}
declare type MessagesRawFn = {
(text: string): MessageBuilder
}
declare type MessagesColorizeFn = {
(text: string, color: string): MessageBuilder
}
declare type Messages= Readonly<{
builder: MessagesBuilderFn;
raw: MessagesRawFn;
colorize: MessagesColorizeFn;
}>;
declare const messages: MessagesNamespace;
declare type LoggerColors = Readonly<{
dbg: string,
log: string,
inf: string,
wrn: string,
err: string,
}>
declare type IndicatorColors = Readonly<{
exec: string,
info: string,
warn: string,
succ: string,
fail: string,
}>
declare type SpinnerColors = Readonly<{
spin: string,
updt: string,
succ: string,
fail: string,
}>
declare type Colors = Readonly<{
logger: LoggerColors;
indicator: LoggerColors;
spinner: SpinColors;
}>;
declare const colors: Colors;
declare type SymbolsGetOptions = {
unicode: boolean;
colorized: boolean;
}
declare type LoggerSymbols = Readonly<{
get: (
verb: 'dbg' | 'log' | 'inf' | 'wrn' | 'err', options: SymbolsGetOptions
) => Message;
}>
declare type IndicatorSymbols = Readonly<{
get: (
verb: 'exec' | 'info' | 'warn' | 'succ' | 'fail', options: SymbolsGetOptions
) => Message;
}>
declare type SpinnerSymbols = Readonly<{
get: (
verb: 'spin' | 'updt' | 'succ' | 'fail', options: SymbolsGetOptions
) => Message;
}>
declare type Symbols = Readonly<{
logger: LoggerSymbols;
indicator: IndicatorSymbols;
spinner: SpinnerSymbols;
}>;
declare const symbols: Symbols;
declare type ContextArgs = Partial<{
argv: string[];
options: {
[key: string]: {
arg: string;
index: number;
values: string[];
follows: string[];
};
};
}>
declare type ContextI18n = Partial<{
lang: string;
}>
declare type Context = Partial<{
cwd: string;
env: string[];
args: ContextArgs;
i18n: ContextI18n;
}>
declare type Output = {
date: Date;
instance: string;
verb: string;
symbol: Message;
messages: Message[];
}
declare type Sink = {
pour(output: Output): void;
}
declare type Sinks = Partial<{
logger: Sink[];
indicator: Sink[];
spinner: Sink[];
}>
declare type DefaultSinks = Partial<{
console: Sinks;
devtools: Partial<{
common: Sinks;
chrome: Sinks;
firefox: Sinks;
}>;
html: Sinks;
}>
declare type Defaults = Readonly<{
context: Readonly<Context>;
sinks: Readonly<Sinks>;
}>;
declare const defaults: Defaults
declare type Configs = {
configure(context?: Context, sinks?: Sinks): void;
}
declare const configs: Configs;
declare type CliMessages = (string | Message)[];
declare type Logger = {
dbg: (...messages: CliMessages) => Logger;
log: (...messages: CliMessages) => Logger;
wrn: (...messages: CliMessages) => Logger;
err: (...messages: CliMessages) => Logger;
}
declare const logger: Logger;
declare type Indicator = {
exec: (...messages: CliMessages) => Indicator;
info: (...messages: CliMessages) => Indicator;
succ: (...messages: CliMessages) => Indicator;
fail: (...messages: CliMessages) => Indicator;
}
declare const indicator: Indicator;
declare type Spinner = {
spin: (...messages: CliMessages) => Spinner;
updt: (...messages: CliMessages) => Spinner;
succ: (...messages: CliMessages) => Spinner;
fail: (...messages: CliMessages) => Spinner;
}
declare const spinner: Spinner;