UNPKG

zod

Version:

TypeScript-first schema declaration and validation library with static type inference

53 lines (52 loc) 3.6 kB
import type * as core from "./core.cjs"; import * as schemas from "./schemas.cjs"; import { $ZodTuple } from "./schemas.cjs"; import type * as util from "./util.cjs"; export interface $ZodFunctionDef<In extends $ZodFunctionIn = $ZodFunctionIn, Out extends $ZodFunctionOut = $ZodFunctionOut> { type: "function"; input: In; output: Out; } export type $ZodFunctionArgs = schemas.$ZodType<unknown[], unknown[]>; export type $ZodFunctionIn = $ZodFunctionArgs; export type $ZodFunctionOut = schemas.$ZodType; export type $InferInnerFunctionType<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (...args: $ZodFunctionIn extends Args ? never[] : core.output<Args>) => core.input<Returns>; export type $InferInnerFunctionTypeAsync<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (...args: $ZodFunctionIn extends Args ? never[] : core.output<Args>) => util.MaybeAsync<core.input<Returns>>; export type $InferOuterFunctionType<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (...args: $ZodFunctionIn extends Args ? never[] : core.input<Args>) => core.output<Returns>; export type $InferOuterFunctionTypeAsync<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (...args: $ZodFunctionIn extends Args ? never[] : core.input<Args>) => util.MaybeAsync<core.output<Returns>>; export declare class $ZodFunction<Args extends $ZodFunctionIn = $ZodFunctionIn, Returns extends $ZodFunctionOut = $ZodFunctionOut> { def: $ZodFunctionDef<Args, Returns>; /** @deprecated */ _def: $ZodFunctionDef<Args, Returns>; _input: $InferInnerFunctionType<Args, Returns>; _output: $InferOuterFunctionType<Args, Returns>; constructor(def: $ZodFunctionDef<Args, Returns>); implement<F extends $InferInnerFunctionType<Args, Returns>>(func: F): (...args: Parameters<this["_output"]>) => ReturnType<F> extends ReturnType<this["_output"]> ? ReturnType<F> : ReturnType<this["_output"]>; implementAsync<F extends $InferInnerFunctionTypeAsync<Args, Returns>>(func: F): F extends $InferOuterFunctionTypeAsync<Args, Returns> ? F : $InferOuterFunctionTypeAsync<Args, Returns>; input<const Items extends util.TupleItems, const Rest extends $ZodFunctionOut = $ZodFunctionOut>(args: Items, rest?: Rest): $ZodFunction<schemas.$ZodTuple<Items, Rest>, Returns>; input<NewArgs extends $ZodFunctionIn>(args: NewArgs): $ZodFunction<NewArgs, Returns>; output<NewReturns extends schemas.$ZodType>(output: NewReturns): $ZodFunction<Args, NewReturns>; } export interface $ZodFunctionParams<I extends $ZodFunctionIn, O extends schemas.$ZodType> { input?: I; output?: O; } declare function _function(): $ZodFunction; declare function _function<const In extends Array<schemas.$ZodType> = Array<schemas.$ZodType>>(params: { input: In; }): $ZodFunction<$ZodTuple<In, null>, $ZodFunctionOut>; declare function _function<const In extends Array<schemas.$ZodType> = Array<schemas.$ZodType>, const Out extends $ZodFunctionOut = $ZodFunctionOut>(params: { input: In; output: Out; }): $ZodFunction<$ZodTuple<In, null>, Out>; declare function _function<const In extends $ZodFunctionIn = $ZodFunctionIn>(params: { input: In; }): $ZodFunction<In, $ZodFunctionOut>; declare function _function<const Out extends $ZodFunctionOut = $ZodFunctionOut>(params: { output: Out; }): $ZodFunction<$ZodFunctionIn, Out>; declare function _function<In extends $ZodFunctionIn = $ZodFunctionIn, Out extends schemas.$ZodType = schemas.$ZodType>(params?: { input: In; output: Out; }): $ZodFunction<In, Out>; export { _function as function };