Validate arguments, declaritive


Validate arguments, declarative.

    npm install validate-arguments

The code itself depends on lodash, and will propably run just fine in the browser using require.js.

This module levarages some of the validation methods from lodash, but by offering you a declaritive syntax and nice error strings:

  • array
  • boolean
  • date
  • element
  • empty
  • finite
  • function
  • null
  • number
  • object
  • plainObject
  • regexp
  • string

And adds the following additional ones:

  • whole ( An integer )
  • real ( A real number that isn't NaN )
  • natural ( Positive integer )
  • primitive ( 'number', 'boolean', 'string' )

When passing a constructor (function) as an isa, an instanceof check is done.

    var Validate = require('validate-arguments');
    function doSomething(withNamedArguments) {
        var args = Validate.named(arguments, {
            number: 'whole',
            name: 'string'
            callback: 'function'
            options: {
                isa: 'plainObject',
                optional: true
            validation: Validate // performs an instanceof 
        if (!args.isValid()) {
            throw args.errorString();
        // continue safely 

Look at the test cases for more examples.

Node that validations may be nested:

    var args = Validate.named(arguments, {
        address: {
            primary: {
                street: 'string',
                housenumber: 'number'

Returns a validationObject for further inspection. named should be a non-empty plain Object, containing all the keys documented in the validationSpec. The validationSpec should be an object, where the keys match the desired input. You may use the form { thing: 'string' } over { thing: { isa: 'string' } }.

When passed an arguments object instead of a plain object, the first key of the arguments is used.

Validate positional arguments, either an array or arguments object. Spec may be provided as an array in the second argument, or a variable number of arguments.

Validate arguments, freeform.

If the second argument contains a string, it is treated as a positional argument with one element.

Both validateObject and validatePositional return a validationObject with the following methods:

  • isValid: A boolean indication the validness
  • errors: An array containing positions or keys of invalid arguments
  • get: Retrieve values from the original input, array index or key
  • values: Return an array of values ( not that usable )
  • errorString: An error string explaining what went wrong (verbosely)
cd validate-arguments-js
npm install
npm test