UNPKG

zod-opts

Version:

node.js CLI option parser / validator using Zod

38 lines (37 loc) 1.96 kB
import { type z, type ZodObject, type ZodRawShape } from "zod"; import type { GenerateZodShape, Handler, InternalCommand, Narrow, Options, PositionalArguments, ValidateCallback } from "./type"; type ActionCallback<T extends ZodRawShape> = (parsed: z.infer<ZodObject<T>>) => true | string; export declare class Command<TOptions extends Options = {}, TPositionalArguments extends PositionalArguments = []> { private readonly _name; private _description; private readonly _options; private readonly _positionalArgs; private _validation; private readonly _handler; private _action; constructor({ name, description, options, positionalArgs, validation, handler, action, }?: { name?: string; description?: string; options?: Options; positionalArgs?: Narrow<PositionalArguments>; validation?: ValidateCallback<ZodRawShape>; handler?: Handler<ZodRawShape>; action?: ActionCallback<ZodRawShape>; }); description(description: string): this; options<TNewOptions extends Options>(options: TNewOptions): Command<TNewOptions, TPositionalArguments>; args<TNewPositionalArguments extends PositionalArguments>(positionalArgs: Narrow<TNewPositionalArguments>): Command<TOptions, TNewPositionalArguments>; validation<TShape extends GenerateZodShape<TOptions, TPositionalArguments>>(validation: (parsed: z.infer<ZodObject<TShape>>) => true | string): this; action<TShape extends GenerateZodShape<TOptions, TPositionalArguments>>(action: (parsed: z.infer<ZodObject<TShape>>) => void): this; toInternalCommand(): InternalCommand; private _currentState; private _validateMultipleCommands; _toParseCommand(): { shape: ZodRawShape; internalCommand: InternalCommand; action: ActionCallback<ZodRawShape>; validation?: ValidateCallback<ZodRawShape>; }; } export declare function command(name: string): Command; export {};