niid

Terse argument checking.

Usage no npm install needed!

<script type="module">
  import niid from 'https://cdn.skypack.dev/niid';
</script>

README

niid

Terse argument checking.

A function that when supplied with arguments and argument names will throw an exception when they are not present.

Also provides needBeAlike which will ensure an argument is 'like' an example.

File size: 1089 bytes.
Supported platforms: server and browser.
Supported language versions: ES5 and above.

Supports gaps in argument lists. Also works with objects and their properties.

If you use this library in your software please tweet me @benastontweet.

Installation

npm install niid

Example 1

var need = require('niid').need;

function myFunction(foo, bar, bam) {
    need(arguments, 'foo', 'bar');
    return 'OK';
}

myFunction(null, null); // 'OK'
myFunction(null, null, null); // 'OK'
myFunction(undefined, null, null); // throws 'foo is not defined.'
myFunction(null, undefined, null); // throws 'bar is not defined.'

Example 2

var needBeAlike = require('niid').needBeAlike;

var example = { foo: '', bar: { bam: 0 } };

function myFunction(options) {
    needBeAlike(options, example);
    return 'OK';
}

myFunction({}); // throws 'object unlike example.'
myFunction({ foo: null }); // throws 'object unlike example.'
myFunction({ foo: 1 }); // throws 'object unlike example.'
myFunction({ foo: 'foo' }); // throws 'object unlike example.'
myFunction({ foo: 'foo', bar: { bam: 42 } }); // OK

Example 3 (argument gaps)

var need = require('niid').need;

function myFunction(foo, bar, bam) {
    need(arguments, 'foo', '_', 'bam');
    return 'OK';
}

myFunction(null, undefined, null); // 'OK'
myFunction(null, undefined, undefined); // throws 'bam is not defined.'

Example 4 (trailing argument gaps)

var need = require('niid').need;

function myFunction(foo, bar, bam) {
    need(arguments, 'foo');
    return 'OK';
}

myFunction(null); // 'OK'
myFunction(null, undefined, undefined); // 'OK'

Example 5 (short-hand for "all arguments required")

var need = require('niid').need;

function myFunction(foo, bar, bam) {
    need(arguments);
    return 'OK';
}

myFunction(undefined, undefined, undefined); // throws 'argument is not defined.'
myFunction(null, undefined, undefined); // throws 'argument is not defined.'
myFunction(undefined, null, undefined); // throws 'argument is not defined.'
myFunction(undefined, undefined, null); // throws 'argument is not defined.'
myFunction(undefined, null, null); // throws 'argument is not defined.'
myFunction(null, null, null); // 'OK'

Example 6 (object properties)

var need = require('niid').need;

function myFunction(options) {
    need(options, 'foo');
    return 'OK';
}

myFunction({foo: undefined}); // throws 'foo is not defined.'
myFunction({foo: 'foo'}); // 'OK'

License & Copyright

This software is released under the MIT License. It is Copyright 2015, Ben Aston. I may be contacted at ben@bj.ma.

How to Contribute

Pull requests including bug fixes, new features and improved test coverage are welcomed. Please do your best, where possible, to follow the style of code found in the existing codebase.