node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



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

stability 2 - unstable license - Unlicense Flattr this

Build Status Coverage Status Dependencies

NPM status


With NPM

npm install revalidator-model

From source

git clone
cd revalidator-model
npm install
make test

Usage Example

var model = require('revalidator-model');
var List = model({
    properties: {
        items: {type: 'array'}
    proto: {
        size: function() {
            return this.items.length;
    defaults: {
        flavor: 'pungent'
    hydrate: {
        items: function(val) {
            return val.split('');
    dehydrate: {
        items: function(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:

schema.proto:Object (optional)

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.

schema.defaults:Object (optional)

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

schema.hydrate:Function (optional)

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

schema.dehydrate:Function (optional)

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

new Model(data:Object):Instance

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.