Nostradamus Prophecy Machine
    Wondering what’s next for npm?Check out our public roadmap! »

    app-validation

    0.1.1 • Public • Published

    app-validation

    Part of app-helpers project.

    Promise-based validation engine.

    Installation

    npm install app-validation
    

    Usage

    var createValidator = require('app-validation');
     
    // Create user validation function
    var validateUser = createValidator({
        email: ['required', 'email', 'only gmail'],
        password: ['required', 'longer than 5'],
        type: ['required', 'available user types']
    });
     
    // Sample user object
     
    var user = {
        email: 'user@example.com',
        password: 'test',
        type: 'admin'
    };
     
    // Validate user object and return promise
    validateUser(user)
     
        // If validation passes successfully, resolves promise with given data object
        .then(function (user) {
     
        })
     
        // If validation fails -> rejection with validation errors object
        .catch(function (errors) {
            // Fits well with app-controller
        });

    Define custom rules

    Rule is a simple function that takes 3 aprams: value to validate, field name of currently validating object property and context - whole validating data object.

    v.extendRules({
        'valid name': function (value, field, context) {
            // ...
        }
    });
     
    var validate = v({
        name: ['valid name'],
        level: ['positive number']
    });
     
    validate({
        name: 'John',
        level: 10
    });
     
    // Will emit 'valid name' rule with params ('John', 'name', { name: 'John', level: 10 })

    To emit failure rule function must return error message otherwise any falsy value or nothing.

    var v = require('app-validation');
     
    v.extendRules({
        'only gmail': function (value) {
            if (value.indexOf('@gmail') === -1) {
                return 'Not gmail actually';
            }
        }
    });
     
    // Rule could be async
    v.extendRules({
        'user exists': function (email) {
            // Assume users.findByEmail returns promise
            return users.findByEmail(email).then(function (user) {
                if (!user) {
                    return 'User does not exist';
                }
            });
        }
    });

    LICENSE

    MIT

    Install

    npm i app-validation

    DownloadsWeekly Downloads

    2

    Version

    0.1.1

    License

    MIT

    Last publish

    Collaborators

    • avatar