UNPKG

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.

17 lines (16 loc) 961 B
import type { z } from 'zod'; import type { Procedure } from './define-procedure.js'; import { useFetch } from '#imports'; type InferProcedureInput<P> = P extends Procedure<infer I, any> ? I extends z.ZodUndefined ? unknown : z.infer<I> : never; type InferProcedureOutput<P> = P extends Procedure<any, infer O> ? O extends z.ZodTypeAny ? z.infer<O> : unknown : never; type Call<P extends Procedure<any, any>> = [unknown] extends [ InferProcedureInput<P> ] ? () => Promise<InferProcedureOutput<P>> : (input: InferProcedureInput<P>) => Promise<InferProcedureOutput<P>>; type UseCall<P extends Procedure<any, any>> = [unknown] extends [ InferProcedureInput<P> ] ? () => ReturnType<typeof useFetch<InferProcedureOutput<P>>> : (input: InferProcedureInput<P>) => ReturnType<typeof useFetch<InferProcedureOutput<P>>>; export declare function createCaller<P extends Procedure<any, any>>(url: string): { call: Call<P>; useCall: UseCall<P>; }; export {};