UNPKG

@overture-stack/lyric

Version:
21 lines (20 loc) 1.18 kB
import { NextFunction, Request, Response } from 'express'; import type { ParamsDictionary, RequestHandler } from 'express-serve-static-core'; import type { ParsedQs } from 'qs'; import { type ZodType, type ZodTypeDef } from 'zod'; import type { UserSession } from '../middleware/auth.js'; export declare type RequestValidation<TBody, TQuery, TParams> = { body?: ZodType<TBody, ZodTypeDef, unknown>; query?: ZodType<TQuery>; pathParams?: ZodType<TParams>; }; type RequestWithUser<TParams extends ParamsDictionary = ParamsDictionary, TBody = unknown, TQuery extends ParsedQs = ParsedQs> = Request<TParams, unknown, TBody, TQuery> & { user?: UserSession; }; /** * Validate the body using Zod parse * @param schema Zod objects used to validate request * @returns Throws a Bad Request when validation fails */ export declare function validateRequest<TBody, TQuery extends ParsedQs = ParsedQs, TParams extends ParamsDictionary = ParamsDictionary>(schema: RequestValidation<TBody, TQuery, TParams>, handler: (req: RequestWithUser<TParams, TBody, TQuery>, res: Response, next: NextFunction) => unknown): RequestHandler<TParams, unknown, TBody, TQuery>; export {};