sapin
Sapin is a library that allows to easily create a Schema using a declarative style. This schema can then :
- be be validated with the validate function, will store each error encountered in a new object at the same path as the property that had the error. While it can be used to easily validate forms connected with redux-form, it can validate any structure.
- be transformed with the transform function, to convert each of the object's property to the right type.
Features
- Provides functions for most basic field validations (no date validations, use your own formats and libs)
- Support validation of inner structures
- Supports the validation of attributes that are arrays of values, array of objects, dictionary of objects, dictionary of values
- Validations on an object property can be applied to its members, on the whole object or on both
- Allows to easily add your own custom validator functions
Example
// Load validators functions // create a Schemaconst userSchema = firstName: lastName: age: phones: address: civicNumber: streetName: city: string // validation function that is called when validating your form or objectconst validateUserForm = { return } ... // testconst user = firstName: 'Joe' // pass // no lastName provided age: 55 // not an integer phones: '555' '555-555-5555' // first phone is invalid address: civicNumber: '344' streetName: '65th street' city: 'Québec' const error = console
Output is :
Documentation
Documentation can be found in the wiki
Installation
Using npm:
$ npm i --save sapin
sapin is released under the MIT license
Why sapin?
While there are many libraries out there that allow to achieve the same goal, Sapin allows to describe complex structures in a really simple manner. You can use the schema to validate and/or transform the data before sending it to a server or database.