uvalidator

1.0.4 • Public • Published

A light weight js object validator

Very easy to use and extend check rules of your own

  • normal validation
  • async validation
  • user defined validation
  • dynamic validation

supported rules (on development)

email, max, maxlength, min, minlength, number, regex, required

install

    npm install uvalidator # yarn add uvalidator

basic usage

    import validator from 'uvalidator'

    // if we have a 'user' property to check
    const rules = {
        user: {
            rule: 'required', // pre-defined rule
            errorMsg: 'user is required'
        }
    }

    let result = validator.validate({
        user: 'lily'
    }, rules)
    // ok !
    result.ok() === true

    result = validator.validate({
        user: ''
    }, rules)
    // failed !
    result.ok() === false
    result.getErrors() = [{name: 'user', message: 'name is required'}]

with dynamic params

    const rules = {
        username: {
            rule: 'maxlength',
            params: 5,
            errorMsg: 'username is too long'
        }
    }

    // return {success: false, errors: [{name: 'username', messag: 'username is too long'}]}
    validator.validate({
        username: 'aaaaaa'
    }, rules)

user defined rule

    /// your can register several rules in an array either
    validator.register({ // add a rule named 'contain' to check sub string
        name: 'contain',
        validate: function(val, str) {
            return val && val.indexOf(str) > -1
        }
    })

    const rules = {
        desc: {
            rule: 'contain',
            params: 'hello',
            errorMsg: 'your description must contain hello'
        }
    }

    // {success: true}
    const result = validator.validate({
        desc: 'hello world'
    }, rules)

add dynamic rule

    const rules = {
        name: {
            rule: 'required',
            errorMsg: 'name is required'
        },
        desc: {
            rule: function(val) { // define the check funtion
                return val.indexOf('hello') > -1
            },
            errorMsg: 'your description must contain hello'
        }
    }

    const result = validator.validate({
        name: '',
        desc: 'hello world'
    }, rules)

async validation

    const rules = {
        name: {
            rule: function(val) {
                return new Promise(function(resolve) {
                    // ... send ajax request to check name
                    resolve(false) // check failed
                })
            },
            errorMsg: 'this name has been used'
        }
    }

    // the 'validate' method will return a Promise while any rule is async,
    // and the errors (of sync or async rules) will be resolved by order
    validator.validate({
        name: 'aaa'
    }, rules).then(result => {
        result.ok() // false
        result.getErrors() // [{name: 'name', message: 'this name has been used'}]
    })

About Result Object

result.ok() // true or false
result.getErrors() // Array of errors, each error has name and message property
result.getFirstError() // the first error object, has name and message property

Package Sidebar

Install

npm i uvalidator

Weekly Downloads

5

Version

1.0.4

License

MIT

Last publish

Collaborators

  • qintx