arguguard
v2.1.1
Published
Strict argument validation with testable errors
Downloads
35
Readme
arguguard
Strict argument validation with testable errors
Install
Install with npm
$ npm i arguguard --save-dev
Usage
arguguard takes three arguments.
arguguard(label, [description1, description2, ...], arguments)
- A string label such as
myFunction()
that will be used in error reporting - An array of descriptions. Each description can either be one of 4 things
- A lower case string (ex.
"number"
or"boolean"
) in which atypeof
check will be performed - An upper case string (ex.
"Object"
or"MyClass"
) in which ainstanceof
check will be performed - An
[]
(ex."[]number"
or"[]MyClass"
) in which case the top level argument must be an array, and every instance of that array must pass either atypeof
orinstanceof
check - An instance of the
Validator
class (require('arguguard/lib/Validator')
)
- A lower case string (ex.
- The arguments to test.
var arguguard = require('arguguard')
var Validator = require('arguguard/lib/Validator')
var aboveThreeValidator = new Validator('AboveThree', (number) => { return number > 3 })
function myFunction(myNumber, myClass, arrayofMyClass, myBigNumber) {
arguguard('myFunction()', ['number', 'MyClass', '[]MyClass', aboveThreeValidator], arguments)
}
myFunction()
>> Arguguard:User:ArgumentsLengthError: myFunction() arguments.length should be "4", received "0"
myFunction(1, myClass, [myClass, myClass], 4, callback)
>> Arguguard:User:ArgumentsLengthError: myFunction() arguments.length should be "4", received "5"
myFunction('1', myClass, [myClass, myClass], 4)
>> Arguguard:User:ArgumentTypeError: myFunction() arguments[0] type should be "number", received "string"
myFunction(1, {}, [myClass, myClass], 4)
>> Arguguard:User:ArgumentInstanceError: myFunction() arguments[1] constructor should be "MyClass", received "Object"
myFunction(1, myClass, myClass, 4)
>> Arguguard:User:ArgumentInstanceError: myFunction() arguments[2] constructor should be "Array", received "MyClass"
myFunction(1, myClass, [myClass, MyClass], 4)
>> Arguguard:User:ArgumentInstanceError: myFunction() arguments[2][1] constructor should be "MyClass", received "Function"
myFunction(1, myClass, [myClass, myClass], 3)
>> Arguguard:User:ValidationError:AboveThree: myFunction() arguments[3] should be "above 3", received "3"
myFunction(1, myClass, [myClass, myClass], 4)
>> ✓
Api Errors
The arguguard
api is defensively programmed and will throw errors if called with the wrong arguments
arguguard(['number', MyClass, [MyClass]], arguments)
>> Arguguard:Api:ArgumentsLengthError: arguguard() arguments.length should be "3", received "2"
arguguard('myFunction()', ['number', MyClass, [MyClass]], arguments)
>> ✓
Settings
Disable (Get a speed boost)
arguguard.options.disabled = true
Allow for Synonymous Constructors (such as when you have two versions of a dependency)
arguguard.options.allowSynonymousConstructors = true
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue
Author
License
Copyright © 2017 Licensed under the MIT license.
This file was generated by readme-generator on January 21, 2017.