@digitaledgeit/validator-chain

A simple validator chain for running multiple validators on a single input value.

Stats

StarsIssuesVersionUpdatedCreatedSize
@digitaledgeit/validator-chain
200.3.06 years ago6 years agoMinified + gzip package size for @digitaledgeit/validator-chain in KB

Readme

validator-chain

A simple validator chain for running multiple validators on a single input value.

Features

  • sync and async validators
  • conditional validaiton
  • error handling

Installation

NPM:

npm install --save validator-chain

Component:

component install digitaledgeit/js-validator-chain

Usage

A simple example:

var validator = require('validator-chain');

function required(value) {
  return value !== '';
}

function digits(value) {
  return /^[0-9]+$/.test(value);
}

function length(value) {
  return value.length === 10;
}

validator()
  .add(required,    'Please enter a phone number')
  .add(digits,      'A phone number may only contain digits')
  .add(length,      'A phone number may only contain 10 digits')
  .validate('0123456789', function(err, valid, ctx) {
    if (err) return console.log(':( Uh oh an error occurred whilst trying to validate that phone number');
    if (valid) return console.log(':) Yay! You can type');
    if (!valid) return console.log(':( Try again: "'+ ctx+'"');
  })
;

// Outputs ":) Yay! You can type"

See the examples folder for more.

API

Methods

new ValidatorChain()

Create a new validation chain.

.optional(fn|bool)

Whether an empty value is considered valid and the validators should not be run.

.add(fn, ctx, when)

Add a new validator to the chain.

  • fn - the validation method
  • ctx - the validation context - optional and can be anything e.g. a message string
  • when - a validation condition - if provided, the validation method is only run when the condition is true - optional function that returns a boolean

.validate(value, callback)

Run the validation methods on a value and call the callback with the result.

Callback arguments:

  • err - a error thrown by a sync method or a error returned by an async validation method e.g. problems connecting to a server that performs a unique validation
  • valid - whether the value is valid or not
  • ctx - the context of the failing validation method

Writing a validator

There are many existing validation methods you can make use of (e.g. validator, validation-methods or validate-date) but if you require some custom logic then it's easy to create your own.

Sync

function validator(value) {
    //throw new Error();    //return an error
    return true;            //return whether the value is valid
}

Async

function validator(value, next) {
    //next(new Error());    //return an error
    next(null, true);       //return whether the value is valid
}

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.