@overture-stack/lyric
Version:
Data Submission system
21 lines (20 loc) • 1.18 kB
TypeScript
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 {};