warble

1.0.0-alpha.6 • Public • Published

Warble

An universal javascript validation library.

See the documentation for more information.

Table of contents

Instalation

Install with NPM

npm install --save warble

Usage

Creating a model

Source

// Create an extension to verify if value is a Gmail address.
warble.subtypes.gmail = value => /\@gmail\.com$/i.test(value);
 
let
 
    // Creating an object model:
 
    model = warble.model({
        name: {
            required: true,
            minlength: 3
        },
        age: {
            required: true,
            min: 18,
            is: ['integer', 'positive']
        },
        email: {
            is: ['email', 'gmail']
        },
        password: {
            required: true
        },
        passwordConfirmation: {
            required: true,
            equal: 'password'
        },
        gender: {
            options: ['male', 'female', 'other']
        },
        address: warble.model({
            postalCode: {
                required: true,
                is: ['numeric', 'positive']
            },
            street: {
                required: true
            }
        })
    }),
 
    // Data example:
 
    data = {
        name: 'Diego Lopes Lima',
        age: 23,
        email: 'web.diego.lima@yahoo.com',
        password: 'a1b2c3',
        passwordConfirmation: '1a2b3c',
        gender: 'male',
        address: {
            postalCode: 54321,
            street: 'Lorem ipsum dolor, 123'
        }
    };
 
// Testing data:
 
model.validate(data);

Output

{
    "data": {
        "name": {
            "value": "Diego Lopes Lima",
            "valid": true,
            "status": {
                "required": true,
                "minlength": true
            }
        },
        "age": {
            "value": 23,
            "valid": true,
            "status": {
                "required": true,
                "min": true,
                "isInteger": true,
                "isPositive": true,
                "is": true
            }
        },
        "email": {
            "value": "web.diego.lima@yahoo.com",
            "valid": true,
            "status": {
                "isEmail": true,
                "isGmail": false,
                "is": false
            }
        },
        "password": {
            "value": "a1b2c3",
            "valid": true,
            "status": {
                "required": true
            }
        },
        "passwordConfirmation": {
            "value": "1a2b3c",
            "valid": false,
            "status": {
                "required": true,
                "equal": false
            }
        },
        "gender": {
            "value": "male",
            "valid": true,
            "status": {
                "options": true
            }
        },
        "address": {
            "data": {
                "postalCode": {
                    "value": 54321,
                    "valid": true,
                    "status": {
                        "required": true,
                        "isNumeric": true,
                        "isPositive": true,
                        "is": true
                    }
                },
                "street": {
                    "value": "Lorem ipsum dolor, 123",
                    "valid": true,
                    "status": {
                        "required": true
                    }
                }
            },
            "valid": true
        }
    },
    "valid": false
}

Validating a single data:

Source

warble.validate(data.name, {
    required: true,
    minlength: 3
});

Output

{
    "value": "Diego Lopes Lima",
    "valid": true,
    "status": {
        "required": true,
        "minlength": true
    }
}

Getting data type:

Example

warble.type(['lorem', 'ipsum']); // "array"
 
warble.type({ name: 'Diego Lopes Lima' }); // "object"
 
warble.type('Hello world!'); // "string"

Testing data:

Example

var value = '-1';
 
warble.is(value, 'number'); // false
 
warble.is(value, 'string'); // true
 
warble.is(value, ['numeric', 'negative']); // true
 
warble.is(value, ['numeric', 'positive']); // false

Changelog

See releases page.

Credits

Created and maintained by Diego Lopes Lima.

License

Code and documentation copyright © 2017 Warble.

All content of this repository is licensed under the MIT License.

Dependencies (0)

    Dev Dependencies (5)

    Package Sidebar

    Install

    npm i warble

    Weekly Downloads

    0

    Version

    1.0.0-alpha.6

    License

    MIT

    Last publish

    Collaborators

    • diegolopeslima