zod-opts
Version:
node.js CLI option parser / validator using Zod
38 lines (37 loc) • 2.06 kB
TypeScript
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): Command<TOptions, TPositionalArguments>;
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): Command<TOptions, TPositionalArguments>;
action<TShape extends GenerateZodShape<TOptions, TPositionalArguments>>(action: (parsed: z.infer<ZodObject<TShape>>) => void): Command<TOptions, TPositionalArguments>;
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 {};