import {Request} from '../http/lifecycle/Request' import {Validator} from './Validator' import {ZodError} from 'zod' import {HTTPStatus, left, right} from '../util' import {json} from '../http/response/JSONResponseFactory' export function validateMiddleware(validator: Validator) { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types return (request: Request) => { try { const data = validator.parse(request.parsedInput) return right(data) } catch (e) { if ( e instanceof ZodError ) { // FIXME render this better return left(json(e.formErrors).status(HTTPStatus.BAD_REQUEST)) } throw e } } }