@orveth/validation-zod connects Zod schemas to Orveth middleware. Validation failures integrate with @orveth/errors for consistent JSON error responses.
validation-zod.ts
import { z } from "zod";
import { Orveth } from "orveth";
import { validateBody, validateQuery } from "@orveth/validation-zod";
const app = new Orveth();
const createUser = z.object({
email: z.string().email(),
name: z.string().min(1),
});
app.post("/users", validateBody(createUser), (ctx) => {
return ctx.created(ctx.valid.body);
});
const listQuery = z.object({
page: z.coerce.number().optional(),
});
app.get("/users", validateQuery(listQuery), (ctx) => {
return ctx.ok({ page: ctx.valid.query.page ?? 1 });
});