Schema validation for h3 using Valibot 馃
# Using npm
npm install h3-valibot
# Using yarn
yarn add h3-valibot
import { useValidatedBody, v } from 'h3-valibot'
import { createApp, createRouter, eventHandler } from "h3";
import { email, minLength, string, objectAsync } from 'valibot';
export const app = createApp();
const LoginSchema = v.object({
email: v.pipe(v.string(), v.email()),
password: v.pipe(v.string(), v.minLength(8)),
});
const router = createRouter();
app.use(router);
router.post("/login", eventHandler(async (event) => {
const body = await useValidatedBody(event, LoginSchema);
return body;
}),
);
h3-valibot throws an ValiError when the validation fails:
Exampl
{
"statusCode": 400,
"statusMessage": "Bad Request",
"stack": [],
"data": {
"issues": [
{
"validation": "email",
"origin": "value",
"message": "Invalid email",
"input": "github@conner-bachmande",
"path": [
{
"schema": "object",
"input": {
"email": "github@conner-bachmande",
"password": "12345678"
},
"key": "email",
"value": "github@conner-bachmande"
}
],
"reason": "string"
}
],
"name": "ValiError"
}
}
This library supports Nuxt鈥檚 auto-imports, just add it in your nuxt.config.ts:
export default defineNuxtConfig({
modules: [
// ...
'h3-valibot/nuxt',
],
})
Published under MIT - Made with 鉂わ笍 by Conner Bachmann
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.