0.7.1 • Published 7 years ago

ts-rules v0.7.1

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

ts-rules

A powerful JSON validator that design to validate complex JSON object.

How to install

npm install ts-rules --save

How to use

es6 import

import {rules} from 'ts-rules';

Simple

    let r = rules({
      p1: 'required | maxLen: 5',
      p2: 'eq: {{p1}}'
    });

    let result = r({
      p1: '123456',
      p2: ''
    });
    
    result.valid; //false
    
    result = r({
      p1: '12345',
      p2: '12345'
    });
    
    result.valid; //true

Rules

required

        {
            'propName': 'required'
        }

number

        {
            'propName': 'number'
        }

email

        {
            'propName': 'email'
        }

max length

        {
            'propName': 'maxLen: 8'
        }

eq

        // equal
        {
            'propName': `eq: 'kino'`
        }

gt

        // greater than
        {
            'propName': `gt: 23`
        }

gte

        // greater than or equal to
        {
            'propName': `gte: 23`
        }

lt

        // less than
        {
            'propName': `lt: 23`
        }

lte

        // less than or equal to
        {
            'propName': `lte: 23`
        }

custom rule

        r = rules({
            p: 'myRule: "kinogam"'
        });
   
   
        r.register('myRule', (val, name) => {
            return val.indexOf(name) !== -1;
        });
   
        json = {
            p: 'hello, kinogam!'
        };
   
        r(json).valid; // true

multiple rules

use | to separate rules

        r = rules({
            p: 'email | maxLen: 14'
        });
        
        json = {
            p: 'kino@gmail.com'
        };
        
        r(json).valid; // true
        
        json = {
            p: 'kinogam@gmail.com'
        };
        
        r(json).valid; // false

wildcard *

you can use * as a wildcard to match all fields

    r = rules({
        '*': 'required'
    });
    
    json = {
        p1: 'hello',
        p2: 'world'
    };
    
    r(json).valid; // true
    
    json = {
        p1: 'hello',
        p2: ''
    };
    
    r(json).valid; // false

validation info

when you use rFn(json) then will return a validation result

    result.valid;

you also can see each field's validation info

    r = rules({
        p1: 'required',
        p2: 'required'
    });

    json = {
        p1: 'kino',
        p2: ''
    };

    let result = r(json);

    result.fields.p1.invalid; // false
    result.fields.p2.invalid; // true;

and you can set error message, the 'labels' property is optional

    let info = {
        labels: {
            p1: 'my field',
            p2: 'your field'
        },
        message: {
            p1: {
                'required': '{{p1}} is required',
                'maxLen': '{{p1}} can not longer than 5 characters'
            },
            p2: {
                'eq': '{{p2}} must equal to {{p1}}'
            }
        }
    };

    r = rules({
        p1: 'required | maxLen: 5',
        p2: 'eq: {{p1}}'
    }, info);

    json = {
        p1: '',
        p2: ''
    };

    let result = r(json);

    result.fields.p1.message; // 'my field is required'

    json = {
        p1: '123456',
        p2: ''
    };

    result = r(json);

    result.fields.p1.message; // 'my field can not longer than 5 characters'

    json = {
        p1: '123',
        p2: '234'
    };

    result = r(json);

    result.fields.p2.message; // 'your field must equal to my field';
0.7.1

7 years ago

0.7.0

7 years ago

0.6.0

7 years ago

0.4.1

7 years ago

0.3.0

7 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.0.1

8 years ago