Socket
Socket
Sign inDemoInstall

argsy

Package Overview
Dependencies
223
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    argsy

awesome argument assertion


Version published
Weekly downloads
8
increased by700%
Maintainers
1
Install size
11.1 MB
Created
Weekly downloads
 

Readme

Source

argsy

awesome argument assertion

Made with ❤ at @outlandish

npm version

Argument-oriented assertions...

  • assertions that name offending arguments
  • collects assertion failures and groups them in a single error
  • reports function name, location, and clean stack trace
  • support for optional arguments

Example

Before
function hello (name, message) {
  if (typeof name !== 'string' || !name.length) {
    throw new Error('expecting name to be non-empty string')
  } else if (message && typeof message !== 'string') {
    throw new Error('expecting message to be string')
  }
  console.log('hello', name, message)
}
hello() //=> Error: expecting name to be non-empty string
After
function hello (name, message) {
  assert('hello')
    .nonEmptyStr(name)
    .optional.str(message)
  console.log('hello', name, message)
}
hello()
//=>  Error: Failed argument assertions in call to "hello" at C:/hello.js:1:
//      - expecting name to be non-empty string

Install

npm install --save argsy
yarn add argsy

Import

// ES2015
import assert from 'argsy'
// CommonJS
var assert = require('argsy')

API

assert.{method}(val[, subject][, name[, name2]])

Assert val is of type indicated by method (see below).

  • val {*} value to assert
  • subject {*} (optional) subject of assert
  • name {String} name to report in error message
  • nam2 {String} (optional) name of subject

No return value.

AssertionInstance

assert([name]) : AssertionInstance

Create a new assertion instance.

  • name {String} (optional) name of the assertion instance

Returns an AssertionInstance.

AssertionInstance.{method}(val[, subject][, name[, name2]])

Assert val is of type indicated by method (see below).

  • val {*} value to assert
  • subject {*} (optional) subject of assert
  • name {String} name to report in error message
  • nam2 {String} (optional) name of subject

Returns the AssertionInstance.

Methods
ok
notOk
str
obj
nonEmptyStr
num
sym
int
bool
undef
null
nan
elem (use subject arg)
key (use subject arg)

AssertionInstance.optional.{method}()

Assert an optional value.

Shares the same API as AssertionInstance.method (see above).

Returns the AssertionInstance.

AssertionInstance.$eval()

Assert the arguments.

This should be called last in the chain of assertion declarations.

More Examples

examples/report.js

Evaluates all assertions, groups them, and reports all failures.

Note call to $eval at the end.

function add (a, b) {
  assert('add')
    .num(a, 'a')
    .num(b, 'b')
    .$eval()
    
  return a + b
}

const a = Number(process.argv[1])
const b = Number(process.argv[2])
const result = add(a, b)

console.log(a, '+', b, '=', result)
Good
$ node examples/add.js 1 2
1+2=3
Bad
$ node add.js
Error: Failed argument assertions in call to "add" at C:/argsy/examples/report.js:10:
  - expecting a to be number
  - expecting b to be number
    at Function.evaluate (C:/argsy/src/index.js:63:13)
    at add (C:/argsy/examples/report.js:10:6)
    at Object.<anonymous> (C:/argsy/examples/report.js:18:16)

examples/spongebob.js

Stops and throws at first failed assertion.

import assert from 'argsy'

function person (name, occupation) {
  assert
    .nonEmptyStr(name, 'name')
    .optional.nonEmptyStr(occupation, 'occupation')

  console.log(name + ' is a ' + (occupation || 'sponge'))
}

person('Spongebob')
//=> Spongebob is a sponge

person(['Spongebob'], 'crabby patty flipper')
//=> Error: Expecting name to be a non-empty string

person('Spongebob', 'crabby patty flipper')
//=> Spongebob is a crabby patty flipper

Contributing

All pull requests and issues welcome!

If you're not sure how, check out the great video tutorials on egghead.io!

License

MIT © Sam Gluck

FAQs

Last updated on 20 Sep 2017

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc