valivali

Dead simple validation for JavaScript

Usage no npm install needed!

<script type="module">
  import valivali from 'https://cdn.skypack.dev/valivali';
</script>

README

valivali

valivali is a dead simple validation library for

  • form validation
  • API request validation
  • type checking
  • schema verification
  • anything else you might need it for

How it looks

let vali = require('valivali')

let validator = vali.object({
    name: vali.required(),
    email: vali.required()
})

let form = {}

validator(form)
// { name: [ 'required' ], email: [ 'required' ] }

Quickstart

npm i --save valivali

let vali = require('valivali')

Usage

A validator is a function that takes a value as an argument and returns a data structure with errors.

> vali.required()('')
[ 'required' ]
> vali.required()('this is valid')
[]

To check the validity of a result you can use isValid

> vali.isValid(vali.required()(''))
false
> vali.isValid(vali.required()('this is valid'))
true

Validators are composable

> let validator = vali.any(vali.number(), vali.string())
undefined
> validator('string')
[]
> validator(1)
[]
> validator({})
[ 'number', 'string' ]


> vali.all(vali.required(), vali.number())(0)
[ 'required' ]
> vali.all(vali.required(), vali.number())(1)
[]


> vali.object({ x: vali.required(), y: vali.number() })({ x: 0, y: 3 })
{ x: [ 'required' ], y: [] }

can include complex logic

> validator = vali.when(vali.number(), vali.eq(2), vali.required())
[Function]
> validator(2)
[]
> validator(1)
[ 'eq' ]
> validator('')
[ 'required' ]

and can be customized for displaying error messages

> vali.object({ email: vali.message(vali.required(), (errors) => 'Email is a required field') })({})
{ email: 'Email is a required field' }

Creating custom validators

Since a validator is just a function that returns a data structure with errors, defining custom validators is as simple as defining functions

> let isEven = (it) => it % 2 === 0 ? [] : ['isEven']
undefined
> vali.isValid(isEven(3))
false
> vali.isValid(isEven(4))
true

License

valivali is released under MIT License