assert-args
Validate and format function arguments ( handles types and optionals)
Last updated 8 years ago by tjmehta .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install assert-args 
SYNC missed versions from official npm registry.

assert-args Build Status js-standard-style

Validate and format function arguments ( handles types and optionals).

Installation

npm install --save assert-args

Examples

assertArgs(arguments, validator)

Assert argument types and format arguments into an object

function something (foo, bar, baz, qux, corge) {
  var args = assertArgs(arguments, {
    'foo': 'object',            // foo is required and must be a object
    '[bar]': SomeClass,         // bar is optional and must be an instance of 'SomeClass'
    'baz'  : someTest           // baz must pass someTest (someTest should throw an error if it fails)
    'qux': ['string', 'number'] // qux is required and must be a string or number
    '...corge': 'function'     // corge is required and captures multiple arguments that must be functions

  })
  foo = args.foo
  bar = args.bar
  baz = args.baz
  qux = args.qux
  corge = args.corge // will be an array
  /// ...
}

Check out the examples below.

Type validations

  • Supports '*', 'string', 'number', 'object', 'function', and classes (Array, RegExp, etc)
// Type example
var args = assertArgs(arguments, {
  'foo': 'string' // required string _or_ number arguments
})
/*
Will throw an error if it does not pass:
  TypeError: "foo" must be a string
*/
// Multi-type example
var args = assertArgs(arguments, {
  'foo': ['string', 'number'] // requires string or number argument
})
/*
Will throw an error if it does not pass:
  TypeError: "foo" must be a string or number
*/

// Class example
var args = assertArgs(arguments, {
  'foo': Array // required Array argument
})
/*
Will throw an error if it does not pass:
  TypeError: "foo" must be an instance of Array
*/

Custom validations

var args = assertArgs(arguments, {
  'foo': customValidation
})
// custom validation should throw an error if the value is invalid
function customValidation (value) {
  if (!value.bar) {
    throw new Error('"bar" is required')
  }
}
/*
If `foo` does not pass it will throw:
  Error: "foo" is invalid: "bar" is required
*/

Required arguments

var args = assertArgs(arguments, {
  'foo': 'string' // required string argument
})

Optional arguments

var args = assertArgs(arguments, {
  '[foo]': 'string' // optional string argument
})

Spread arguments

var args = assertArgs(arguments, {
  '...foo': 'string', // captures multiple arguments
  'cb': 'function'
})

Full examples

var args = assertArgs(['str', {}, function () {}], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
args = {
  foo: 'str',
  bar: {},
  qux: function () {}
}
*/

var args = assertArgs(['str', function () {}], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
args = {
  foo: 'str',
  bar: undefined,
  qux: function () {}
}
*/

var args = assertArgs([], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
TypeError: "foo" is required
*/

var args = assertArgs(['str'], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
TypeError: "qux" is required
*/

var args = assertArgs([10, {}], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
TypeError: "foo" must be a string
*/

var args = assertArgs(['str', 10], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
TypeError: "qux" must be a function
*/

var args = assertArgs(['str', {}], {
  'foo': 'string',
  '[bar]': 'object',
  'qux': 'function'
})
/*
TypeError: "qux" is required
*/

var args = assertArgs(['one', 'two', 'three', function () {}], {
  '...foo': 'string',
  'bar': 'function'
})
/*
args = {
  foo: ['one', 'two', 'three'],
  bar: function () {}
}
*/

var args = assertArgs([function () {}], {
  '...foo': 'string',
  'bar': 'function'
})
/*
TypeError: "...foo" is required
*/

var args = assertArgs([null, function () {}], {
  '...foo': 'string',
  'bar': 'function'
})
/*
TypeError: "...foo" must be strings
*/

// Check out the tests for more examples...

License

MIT

Current Tags

  • 1.2.1                                ...           latest (8 years ago)

12 Versions

  • 1.2.1                                ...           8 years ago
  • 1.2.0                                ...           8 years ago
  • 1.1.3                                ...           8 years ago
  • 1.1.2                                ...           8 years ago
  • 1.1.1                                ...           8 years ago
  • 1.1.0                                ...           9 years ago
  • 1.0.5                                ...           9 years ago
  • 1.0.4                                ...           9 years ago
  • 1.0.3                                ...           9 years ago
  • 1.0.2                                ...           9 years ago
  • 1.0.1                                ...           9 years ago
  • 1.0.0                                ...           9 years ago
Maintainers (1)
Downloads
Total 11
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (6)
Dev Dependencies (5)
Dependents (1)

© 2010 - cnpmjs.org x YWFE | Home | YWFE