Norse Polytheistic Mythology

    revalidator-model

    0.4.2 • Public • Published

    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.

    Install

    npm i revalidator-model

    DownloadsWeekly Downloads

    1

    Version

    0.4.2

    License

    none

    Last publish

    Collaborators

    • pluma