Security News
CISA Brings KEV Data to GitHub
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
assert-args
Advanced tools
Validate and format function arguments ( handles types and optionals)
Validate and format function arguments ( handles types and optionals).
npm install --save assert-args
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 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
*/
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
*/
var args = assertArgs(arguments, {
'foo': 'string' // required string argument
})
var args = assertArgs(arguments, {
'[foo]': 'string' // optional string argument
})
var args = assertArgs(arguments, {
'...foo': 'string', // captures multiple arguments
'cb': 'function'
})
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...
MIT
FAQs
Validate and format function arguments ( handles types and optionals)
The npm package assert-args receives a total of 12,651 weekly downloads. As such, assert-args popularity was classified as popular.
We found that assert-args demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.