Skip to content

telegraph/node-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TMG Node Validator

Build Status

build status Codacy Badge Codacy Badge

Install

    npm install @telegraph-engineering/node-validator --save

Description

TMG node validator is a library for validating that any passed object conforms to the spec passed to it.

Getting started

Once you have installed the pacakge, it can be required, which will return a function that accepts two paramters. The first being the object you wish to test, and the second is the config that the object should be validated against.

Example Checking that a parameter is defined and has type string.

const Validator = require('@telegraph-engineering/node-validator');
const spec = {
    name: {
	    required: true,
	    type: 'string'
	}
};
const param = {} //your object to test;

const errors = Validator(param, spec);
if (errors && errors.length > 0) {
	console.error("Validation failed");
	console.log(errors.join(' & '));
	return;
}

//else do your other logic

Spec options

Name Type Default Description
children {object} all specs for children should be passed in the child param
required {boolean} false wether or not the paramter must be present
type {string} The data type that the field must be, equivelant of typeof param
requiredIf {string} This field is used to specify that this field is required if the passed key is undefined
validation {function} A custom validator function, which will be called with the value of the parameter under test, if the function returns anything other than undefined it will be treated as a failure
validValues {array} An array of possible values for this parameter

children

If a passed object has children that you wish to validate, you can pass the specs for the children as children parameter

const spec = {
    param1: {
	    children: {
		    param2: {
			    required: true
		    }
	    }
    }
};
Validate({param1: {param2: undefined}}) //fail
Validate({param1: {param2: true}}) //pass

required

This field defines if a field is required

const spec = {
    param1: {
	    required: true
    }
};
Validate({param1: undefined}) //fail
Validate({param1: true}) //pass

type

This field defines what type of fata the field must contain, if it is defined

const spec = {
    param1: {
	    type: 'string'
    }
};
Validate({param1: 1234}) //fail
Validate({param1: 'String'}) //pass

requiredIf

This field allows you to specify that this field is required, if another field is undefined

const spec = {
    param1: {
	    requiredIf: 'param2'
    },
    param2: {
	    type: 'string'
    }
};
Validate({param1: undefined, param2: undefined}) //fail
Validate({param1: undefined, param2: 'String 2'}) //pass
Validate({param1: 1234}) //pass
Validate({param1: 'String', param2: 'String 2'}) //pass

validation

Allows the passing of a custom function to validate values

const spec = {
    param1: {
	    validation: (val) => {
		    if (val.indexOf('invalid') < -1) {
			    return "Should not contain invalid";
		    }
	    }
    }
};
Validate({param1: 'this string is invalid'}) //fail
Validate({param1: 'this string is valid'}) //pass

validValues

Allows the passing of a list of values that the paramter must match one of

const spec = {
    param1: {
	    validValues: ['valid', 27]
    }
};
Validate({param1: 'this string is invalid'}) //fail
Validate({param1: 27}) //pass
Validate({param1: 'valid'}) //pass

Limitations

  • The tool cannot currently validate the values of arrays

The future

  • Support for arrays
  • Support for callback/ promise for custom validation

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published