nuxt-procedures
Version:
Nuxt module to define and easily consume your backend API in a validated and type-safe way using procedures and Zod schemas.
23 lines (22 loc) • 798 B
TypeScript
import { type EventHandler, type H3Event } from 'h3';
import z from 'zod';
export interface Procedure<I extends z.ZodTypeAny = z.ZodUndefined, O extends z.ZodTypeAny = z.ZodVoid> extends EventHandler {
__procedureMetadata: {
inputSchema: I;
outputSchema: O;
};
}
type Awaitable<T> = T | Promise<T>;
type HandlerArgs<I> = I extends undefined ? {
event: H3Event;
} : {
input: I;
event: H3Event;
};
type Handler<I extends z.ZodTypeAny = z.ZodUndefined, O extends z.ZodTypeAny = z.ZodVoid> = (args: HandlerArgs<z.infer<I>>) => Awaitable<z.infer<O>>;
export declare function defineProcedure<I extends z.ZodTypeAny = z.ZodUndefined, O extends z.ZodTypeAny = z.ZodVoid>(args: {
input?: I;
output?: O;
handler: Handler<I, O>;
}): Procedure<I, O>;
export {};