h3-valibot
v0.0.9
Published
🤖 Schema validation for h3 using Valibot
Downloads
134
Readme
h3-valibot
Schema validation for h3 using Valibot 🤖
Install
# Using npm
npm install h3-valibot
# Using yarn
yarn add h3-valibot
Validation
import { useValidatedBody, v, vh } 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: vh.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;
}),
);
Safe Validation
// same as above
router.post("/login", eventHandler(async (event) => {
const body = await useSafeValidatedBody(event, LoginSchema);
if (!body.success) // do something
return body.output;
}),
);
Utils available
h3-valibot
provides a series of utils and their safe variants (don't throw an h3 error):
useValidatedBody
useValidatedParams
useValidatedQuery
useSafeValidatedBody
useSafeValidatedParams
useSafeValidatedQuery
Each one accepts an h3 event
, a valibot schema
and optionally a parser config
.
Helpers
It also provides a set of helpers via vh
object, mainly related to string validation, particularly useful during the prototyping phase of any project. For production use we still suggest to create dedicated schemas with project-related error messages and fallbacks.
boolAsString
checkboxAsString
dateAsString
intAsString
numAsString
email
uuid
For more details or examples please refer to their JSdocs or source code.
Errors
h3-valibot
throws an ValiError
when the validation fails:
Example
{
"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"
}
}
Nuxt auto-imports
This library supports Nuxt's auto-imports, just add it in your nuxt.config.ts
:
export default defineNuxtConfig({
modules: [
// ...
'h3-valibot/nuxt',
],
})
License
Published under MIT - Made with ❤️ by Conner Bachmann