Skip to content

cobainid/validanode

Repository files navigation

VALIDANODE

Table of Content

Description

VALIDANODE adalah sebuah validator yang dibuat dengan Javascript.

Installation

npm install validanode

How To Use

Simple Usage

const validanode = require('validanode');
const validator = new validanode;

(async function () {
    let data = {
        name: "Defri Indra Mahardika",
        age: 17,
    };
    let field = {
        attribute: ['name', 'age'],
        rules: ['required', 'string'],
    };
    err = await validator.check(field, data);

    if (err) console.log(err);
})();

OUTPUT :

{ age: [ 'The age must a string!' ] }

Get All Validator

const validanode = require('validanode');
const customValidation = require('validanode/my-custom-validation/custom');
const anotherCustomValidation = require('validanode/my-custom-validation/another-custom');
const validator = new validanode();

validator.add(customValidation);
validator.add(anotherCustomValidation);

(async function () {
    validator
        .getValidators()
        .then(result => console.log(result));
})();

OUTPUT :

[
  'NUMBER',
  'STRING',
  'BOOLEAN',
  'OBJECT',
  'ARRAY',
  'REQUIRED',
  'START_WITH',
  'EQUAL_WITH',
  'GREATER_THAN.ATTRIBUTE',
  'EMAIL.YAHOO',
  'EMAIL.GOOGLE'
]

Change Error Message

const validanode = require('validanode');
const validator = new validanode;

(async function () {
    let data = {
        // name: "Defri Indra Mahardika",
        age: 17,
    };
    let field = {
        'attribute': ['name', 'age'],
        'rules': [{
            'rule': 'required',
            'property.message': "Kolom '{attribute}' tidak boleh kosong."
        }, {
            'rule': "string",
            'property.message': "Kolom '{attribute}' harus berupa string."
        }],
    };
    let err = await validator.check(field, data);

    if (err) console.log(err);
})();

OUTPUT :

{
  name: [
    "Kolom 'name' tidak boleh kosong.",
    "Kolom 'name' harus berupa string."
  ],
  age: [ "Kolom 'age' harus berupa string." ]
}

Get Validator Schema

const validanode = require('validanode');
const validator = new validanode;

(async function () {
    let schema = validator.getValidator('EQUAL_WITH');
    console.log(schema);
})();

OUTPUT :

{
  name: 'EQUAL_WITH',
  attribute: '',
  property: {
    targetAttribute: '',
    message: 'The {attribute} must equal with {property.targetAttribute}'
  },
  action: [Function: action]
}

Add Custom Validator

const Validanode = require("validanode");
const { invalidMessage } = require("validanode/lib/core");
const CUSTOM_VALIDATION = {
    EMAIL: {
        YAHOO: {
            name: 'EMAIL.YAHOO',
            property: {
                message: 'The {attribute} should be a valid yahoo mail.'
            },
            action: function (data) {
                value = data.value
                regex = /[a-zA-Z0-9\.].+\@yahoo\.com/i
                if (value.match(regex)) {
                    return;
                }
                return invalidMessage(data);
            }
        }
    }
};
const validator = new Validanode;
validator.add(CUSTOM_VALIDATION);

(async function () {
    let data = {
        email: '[email protected]'
    };
    let fields = {
        attribute: 'email',
        rules: 'EMAIL.YAHOO'
    };
    let err = await validator.check(fields, data);
    if (err) console.log(err);
})();

OUTPUT :

{ email: [ 'The email should be a valid yahoo mail.' ] }

Localization

const validanode = require('validanode');
const MESSAGES = {
    'number': 'Kolom {attribute} harus berupa number!',
    'required': 'Kolom {attribute} tidak boleh kosong.',
    'greater_than.attribute': 'Kolom {attribute} harus lebih besar dari kolom {property.targetAttribute}',
};
const validator = new validanode;
validator.localization(MESSAGES);

(async function () {
    let data = {
        field_1: 12,
    };
    let fields = [{
        'attribute': ['field_1', 'field_2'],
        'rules': ['required', 'number']
    }, {
        'attribute': 'field_1',
        'rules': {
            'rule': 'greater_than.attribute',
            'property.targetAttribute': 'field_2'
        }
    }];
    let err = await validator.check(fields, data);
    if (err) console.log(err);
})();

OUTPUT :

{
  field_2: [
    'Kolom field_2 tidak boleh kosong.',
    'Kolom field_2 harus berupa number!'
  ],
  field_1: [ 'Kolom field_1 harus lebih besar dari kolom field_2' ]
}