Simple validatable models with revalidator.


revalidator-model is a simple model library based on revalidator.


npm install revalidator-model
git clone
cd revalidator-model
npm install
make test

Usage Example

var model = require('revalidator-model');
var List = model({
    properties: {
        items: {type: 'array'}
    proto: {
        sizefunction() {
            return this.items.length;
    defaults: {
        flavor: 'pungent'
    hydrate: {
        itemsfunction(val) {
            return val.split('');
    dehydrate: {
        itemsfunction(val) {
            return val.join('');
var list = List.hydrate({items: 'foo, bar, qux', foo: 'bar'});
console.log(list.items); // ['foo', 'bar', 'qux'] 
console.log(list.size()); // 3 
console.log(list.flavor); // 'pungent' 
console.log(list.dehydrate()); // {items: 'foo, bar, qux'} 
console.log(list.validate()); // {valid: true, errors: []} 
var list2 = new List({items: 5, flavor: 'spicy'});
console.log(list2.flavor); // 'spicy'; 
console.log(list2.items); // 5 
console.log(list2.validate().valid); // false 
list2.dehydrate(); // fails with error: "Object 5 has no method split." 


Creates a Model with the given revalidator schema.

In addition to the properties recognized by revalidator (properties, patternProperties, additionalProperties), the schema can have the following properties:

The prototype instances of the Model should inherit from. Use this to specify methods you want to have access to on your model's instances.

Default property values to be copied to new instances of this Model. Arrays and objects will be deep-cloned.

A transformation that will be applied to objects processed by your model's hydrate method.

A transformation that will be applied to model instance when processed by its dehydrate method.

Creates a new instance with the given data. Use of the new keyword is optional.

Any properties of the given data object that are not recognized will be ignored.

See schema.hydrate. Hydrates the object from the given data and returns a new Model instance.

The schema that was used to create this Model.

Validates the given data against the Model's schema using revalidator. The result object has two attributes:

Whether the data passed validation.

An array of error messages if the validation failed.

Validates the instance. Shorthand for Model.validate(instance).

See schema.dehydrate. Dehydrates the instance's data and returns it.


This is free and unencumbered public domain software. For more information, see or the accompanying UNLICENSE file.