Skip to content

Wobe validator

Wobe has a validator beforeHandler hook that allows you to validate the request body. It can be considered as an equivalent of express-validator for Express.

Because validator's hook uses typebox in background, it is in a separate package to avoid unnecessary dependencies on the main package if you don't want to use this hook.

Install

sh
bun install wobe-validator # On bun
npm install wobe-validator # On npm
yarn add wobe-validator # On yarn

Basic example

In this example, we will check if the body of the request is an object with a name field that is a string. If the validation fails, the request will be rejected with a 400 status code.

ts
import { Wobe } from 'wobe'
import { wobeValidator } from 'wobe-validator'
import { Type as T } from '@sinclair/typebox'

const wobe = new Wobe()

const schema = T.Object({
	name: T.String(),
})

wobe.post(
	'/test',
	(ctx) => {
		return ctx.res.send('ok')
	},
	wobeValidator(schema),
)

wobe.listen(3000)

In the above example the following request will be accepted:

ts
// Success
await fetch(`http://127.0.0.1:3000/test`, {
	method: 'POST',
	body: JSON.stringify({ name: 'testName' }),
	headers: {
		'Content-Type': 'application/json',
	},
})

The following request will be rejected:

ts
// Failed
await fetch(`http://127.0.0.1:3000/test`, {
	method: 'POST',
	body: JSON.stringify({ name: 42 }),
	headers: {
		'Content-Type': 'application/json',
	},
})

Options

The wobeValidator function accepts a schema in input that is the typebox schema. See here for more informations.

Made with ❤️ by coratgerl