0.3.0 • Published 6 years ago
rattata v0.3.0
Rattata (WIP)
Simple data validation for JavaScript
Example
const rules = {
firstName: r.withMessage(r.string, 'should be a string'),
middleName: r.opt(r.string),
lastName: r.string,
age: r.xor(
r.undefined,
r.and(
r.withMessage(r.integer, 'should be an integer'),
r.withMessage(r.range(10, 99), 'should be between 10 and 99'),
),
),
pokedex: r.validate({
serialNumber: r.pattern(/\d\d\d\d-\d\d\d\d/),
pokemonIds: r.array(
withMessage(
r.and(
r.integer,
r.range(1, 151)
), 'should be an integer between 1 and 151')
),
}),
}
const props = {
firstName: 42,
// middleName is optional
lastName: [],
age: '100',
pokedex: {
serialNumber: '1234-5678',
pokemonIds: [23, 1, 56, '11'],
},
}
r
.validate(rules, props)
.then(() => {
// validation successful
})
.catch(err => {
// err {
// firstName: ['should be a string'],
// lastName: [],
// age: ['should be an integer', 'should be between 10 and 99'],
// pokedex: {
// 'pokemonIds[i]': ['should be an integer between 1 and 151'],
// }
// }
})