Spaces:
Running
Running
declare const flagSymbol: unique symbol; | |
declare function arg<T extends arg.Spec>( | |
spec: T, | |
options?: arg.Options | |
): arg.Result<T>; | |
declare namespace arg { | |
export function flag<T>(fn: T): T & { [flagSymbol]: true }; | |
export const COUNT: Handler<number> & { [flagSymbol]: true }; | |
export type Handler<T = any> = ( | |
value: string, | |
name: string, | |
previousValue?: T | |
) => T; | |
export class ArgError extends Error { | |
constructor(message: string, code: string); | |
code: string; | |
} | |
export interface Spec { | |
[key: string]: string | Handler | [Handler]; | |
} | |
export type Result<T extends Spec> = { _: string[] } & { | |
[K in keyof T]?: T[K] extends Handler | |
? ReturnType<T[K]> | |
: T[K] extends [Handler] | |
? Array<ReturnType<T[K][0]>> | |
: never; | |
}; | |
export interface Options { | |
argv?: string[]; | |
permissive?: boolean; | |
stopAtPositional?: boolean; | |
} | |
} | |
export = arg; | |