Skip to content

Intevel/h3-valibot

Repository files navigation

h3-valibot

npm version npm downloads Github Actions CI License

Schema validation for h3 using Valibot 🤖

Install

# Using npm
npm install h3-valibot

# Using yarn
yarn add h3-valibot

Validation

import { useValidatedBody } from 'h3-valibot'

import { createApp, createRouter, eventHandler } from "h3";
import { email, minLength, string, objectAsync } from 'valibot';

export const app = createApp();
const LoginSchema = objectAsync({
    email: string([email()]),
    password: string([minLength(8)]),
 });

const router = createRouter();
app.use(router);

router.post("/login", eventHandler(async (event) => {
    const body = await useValidatedBody(event, LoginSchema);
    return body;
  }),
);

Errors

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"
    }
}

License

Published under MIT - Made with ❤️ by Conner Bachmann