Veni
Painless validation for TypeScript 🧘♀️🧘♂️
Installation
npm i veni
yarn add veni
Usage
import { V, validate } from 'veni';
enum Gender {
Male = 'Male',
Female = 'Female',
gender: V.enum().values<Gender>(Object.values(Gender)),
}
const schema = V.object().keys({
username: V.string()
.min(3)
.max(30),
firstName: V.string().optional(),
lastName: V.string().optional(),
password: V.string().regex(/^[a-zA-Z0-9]{3,30}$/),
birthyear: V.number()
.integer()
.min(1900)
.max(2013),
});
const data = {
username: 'john',
password: 'password',
birthyear: '2000',
email: 'john@example.com',
gender: 'male'
};
const user = validate(data, schema, 'user');
‼️ Properties are inferred automatically.

API Reference
Check API reference here
Features
Written and compatible with TypeScript in 100%.
API is highly inspired on joi, but simplified.
Types are automatically inferred based on schema. Solves "double annotation" problem.
No dependencies.
Minimal bundle size.
Very easy to extend, and add custom validation rules. Check here.
MIT
Last updated
Was this helpful?