UNPKG

@oriun/next-api

Version:

Next.js API routes with Zod validation

24 lines (23 loc) 1.28 kB
import { NextRequest } from "next/server"; import type { z } from "zod"; export type Any = z.ZodType<any, any>; export type Schemas<Q extends Any = Any, P extends Any = Any, B extends Any = Any, C extends Any = Any> = { query?: Q; params?: P; body?: B; cookies?: C; }; export type Variables<Q extends Any = Any, P extends Any = Any, B extends Any = Any, C extends Any = Any> = { query: z.infer<Q>; params: z.infer<P>; body: z.infer<B>; cookies: z.infer<C>; }; export type Handler<Q extends Any = Any, P extends Any = Any, B extends Any = Any, C extends Any = Any> = (variables: Variables<Q, P, B, C>, request: NextRequest) => any | Promise<any>; export type MiddlewareReturn = Record<string, any> | void; export type Middleware<Q extends Any = Any, P extends Any = Any, B extends Any = Any, C extends Any = Any> = (variables: Variables<Q, P, B, C>, request: NextRequest) => MiddlewareReturn | Promise<MiddlewareReturn>; export type ErrorHandler<Q extends Any = Any, P extends Any = Any, B extends Any = Any, C extends Any = Any> = (error: any, variables: any, request: NextRequest) => Response | Promise<Response> | void | null | undefined; export type CreateApiParams = { middlewares?: Middleware[]; errorHandlers?: ErrorHandler[]; };