Skip to content

in4in-dev/js-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Convenient data validation library!

Validate data with the comfort of your soul!

npm i js-simple-validator

Examples

Basic usage

import {Validator} from 'js-simple-validator';
try{
	
    let data = {
        id : 1,
        name : 'Tomato',
        price : '25.22'
    }
	
    let {id, name, price, comment} = Validator.make(
        {
            id      : Validator.rule.setRequired().isInt(),
            name    : Validator.rule.setRequired().isString().trim().length(1, 255),
            price   : Validator.rule.setRequired().isNumeric().after(0).max(10000),
            comment : Validator.rule.setDefault(null).isString().length(1, 4096)
        }
    ).validate(data);
	
    console.log(id);      //Number(1)
    console.log(name);    //String('Tomato')
    console.log(price);   //Number(25.22)
    console.log(comment); //Null
	
}catch(ValidatorError e){
    console.log(e);
}

Simple validation

try{

    let validator = Validator.rule
        .isString()
        .regex(/^[A-z]+$/);
	
	let result = validator.validate('Value');
	
}catch (ValidatorFieldError e){
    console.log(e);
}

No errors mode

In case of an error, no exception will be thrown. Instead - the field will get a default value (or null).

For all fields in Validator:

Validator.make(...).errNo().validate(...);

For current rule:

Validator.rule.isString().errNo();

Validator methods

Validator.errNo()
Validator.setCustomErrors(errors)
Validator.validate(data)

Validator.rule methods

.custom(fn)
.assert(fn [, message])
.try(message, fn)
.errNo()
.setDefault(val)
.setRequired()
.setCustomErrors(errors)
.validate(data)

Default validate methods

.isString()
.isNumeric()
.isInt()
.isBoolean()
.length(min, max)
.range(min, max)
.min(min)
.max(max)
.in(values)
.notIn(values)
.regex(regularExpression)
.regexSearch(regularExpression)
.after(min)
.before(max)
.isCreditCard()
.isDate(format = 'YYYY-MM-DD')
.isEmail()
.isJSON(parse = true)
.isLowerCase()
.isUpperCase()
.isArray()
.isObject()
.inObjectKeys(obj)
.trim()
.isJSON(parse = false)
.stripTags()
.encodeHtmlChars()
.urlDecode()

Custom validation

assert(fn [,errorMessage])

The function must return true or false.

Validator.rule
    .isString()
    .assert(item => item.length > 5)
    .stripTags();

custom(fn)

The function must throw an error or return a new value. Any type. You can throw only ValidatorFieldError from the custom callback.

Validator.rule.isString().custom(item => {

    if (item.length > 5) {
        throw new ValidatorFieldError('Bad length');
    }

    return item.substr(0, 2);

});

try(errorMessage, fn)

Everything that happens inside this function will cause a specific error:

Validator.rule.isString().try('Specific error message', field => {
	
    field.custom(item => item.split("|"))
         .assert(item => item.length > 5);
    
});

Custom error messages

To change default error messages - use setCustomErrors

import {errors} from 'js-simple-validator';

console.log(errors.DefaultErrors);

let myErrorMessages = {
    'isString' : 'String is bad',
    'trim' : 'Trim error'
}
Validator.make({...}).setCustomErrors(myErrorMessages)
Validator.rule.isString().setCustomErrors(myErrorMessages);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published