UNPKG

1.91 kBTypeScriptView Raw
1import { StrictValidator } from 'typanion';
2import { CommandBuilder, RunState } from '../../core';
3import { UsageError } from '../../errors';
4import { BaseContext, CliContext } from '../Cli';
5export declare const isOptionSymbol: unique symbol;
6export type GeneralOptionFlags = {
7 description?: string;
8 hidden?: boolean;
9 required?: boolean;
10};
11export type TupleOf<Type, Arity extends number, Accumulator extends Array<Type>> = Accumulator['length'] extends Arity ? Accumulator : TupleOf<Type, Arity, [Type, ...Accumulator]>;
12export type Tuple<Type, Arity extends number> = Arity extends Arity ? number extends Arity ? Array<Type> : TupleOf<Type, Arity, []> : never;
13export type WithArity<Type extends {
14 length?: number;
15}, Arity extends number> = number extends Type['length'] ? Arity extends 0 ? boolean : Arity extends 1 ? Type : number extends Arity ? boolean | Type | Tuple<Type, Arity> : Tuple<Type, Arity> : Type;
16export type CommandOption<T> = {
17 [isOptionSymbol]: true;
18 definition: <Context extends BaseContext>(builder: CommandBuilder<CliContext<Context>>, key: string) => void;
19 transformer: <Context extends BaseContext>(builder: CommandBuilder<CliContext<Context>>, key: string, state: RunState, context: Context) => T;
20};
21export type CommandOptionReturn<T> = T;
22export declare function makeCommandOption<T>(spec: Omit<CommandOption<T>, typeof isOptionSymbol>): T;
23export declare function rerouteArguments<A, B>(a: A | B, b: B): [Exclude<A, B>, B];
24export declare function rerouteArguments<A, B>(a: A | B | undefined, b: B): [Exclude<A, B> | undefined, B];
25export declare function cleanValidationError(message: string, { mergeName }?: {
26 mergeName?: boolean;
27}): string;
28export declare function formatError(message: string, errors: Array<string>): UsageError;
29export declare function applyValidator<U, V>(name: string, value: U, validator?: StrictValidator<unknown, V>): U;