
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
assert-args
Advanced tools
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 14,532 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
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.