revalidator-model

Simple validatable models with revalidator.

npm install revalidator-model
22 downloads in the last day
22 downloads in the last week
35 downloads in the last month

Synopsis

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

stability 2 - unstable license - Unlicense Flattr this

Build Status Coverage Status Dependencies

NPM status

Install

With NPM

npm install revalidator-model

From source

git clone https://github.com/pluma/revalidator-model.git
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."

API

model(schema:Object):Model

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.

Model.hydrate(data:Object):Instance

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

Model.schema:Object

The schema that was used to create this Model.

Model.validate(data:Object):Object

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

valid:Boolean

Whether the data passed validation.

errors:Array

An array of error messages if the validation failed.

Model#validate():Object

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

Model#dehydrate():Object

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

Unlicense

This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.

npm loves you