0.2.0 • Published 10 years ago

arg-validator v0.2.0

Weekly downloads
3
License
-
Repository
github
Last release
10 years ago

arg-validator.js

A simpler way to do argument validations on functions.

NPM version Build Status

Install

npm install arg-validator --save

Example

var argValidator = require('arg-validator');

// required: name, age
// optional: address
function makeHttpRequest(url, action, params){
  var arg = argValidator();
  arg('url', url).isURL();
  arg('action', action).isStringIn('GET', 'POST', 'PUT', 'DELETE');
  arg.optional('params', params).isObject();
  arg.throwsOnError(); // or access the errors by arg.errors
}

Compare with the code without arg-validation.js

function makeHttpRequest(url, action, params){
  if(some regexp validation of the url)
    throw "url must be an url";
  if(check if action is in ['GET', 'POST', 'PUT', 'DELETE'])
    throw "action must be in GET, POST, PUT, DELETE";
  if(params){
    if(typeof params != 'object')
      throw "params must be an object";
  }
}

And you get all the validation errors

makeHttpRequest('abc', 'AMEND', 12); // ArgValidator: url is not an url. action is not
                                     // in [GET, POST, PUT, DELETE]. params is not an object.

Asynchronous Example

var argValidator = require('arg-validator');

// required: name, age
// optional: address
function makeHttpRequest(url, action, params, callback){
  var arg = argValidator();
  arg('url', url).isURL();
  arg('action', action).isStringIn('GET', 'POST', 'PUT', 'DELETE');
  arg('params', params).isObject();
  if(arg.callsOnError(callback)) return;
}

makeHttpRequest('google.com', 'AMEND', {}, function(error){
  console.log(error); // => ArgValidator: action is not in [GET, POST, PUT, DELETE]
                      //            :
                      //            :
                      //            :
                      //         [stack]
  console.log(error.message); // => 'ArgValidator: action is not in [GET, POST, PUT, DELETE]'
  console.log(error.errors);  // => [
                              //      ['action', 'is not in [GET, POST, PUT, DELETE']
                              //    ]
});

Custom Validation

function hello(world){
  var arg = argValidator();
  if(world !== 'world') arg.addError('world', 'must be "world".')
  arg.throwsOnError();
}

// Or you can add a custom validation rule by
argValidator.addValidation('isWorld', function(){
  if(this.argValue !== 'world')
    this.addError(this.argName, 'must be "world", but is "' + this.argValue + '"');
})

function hello(world){
  var arg = argValidator();
  arg('world', world).isWorld();
  arg.throwsOnError();
}

List of Validations

  • isExist // arg('a', a) is a shortcut to arg('a', a).isExist()
  • isString
  • isNumber
  • isBoolean
  • isFunction
  • isObject
  • isArray
  • isURL
  • isStringIn(values...)
  • hasProperty(requireProtocol)

License

MIT

0.2.0

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.0

10 years ago