NOTE: This package is no longer being maintained. If you are interested in taking over as maintainer or are interested in the npm package name, get in touch by creating an issue.
revalidator-model is a simple model library based on revalidator.
npm install revalidator-model
git clone https://github.com/pluma/revalidator-model.git
cd revalidator-model
npm install
make test
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:
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 http://unlicense.org/ or the accompanying UNLICENSE file.