npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

precond

v0.2.3

Published

Precondition checking utilities.

Downloads

2,539,570

Readme

Preconditions for Node.js

Build Status NPM version

Precondition checks for Node.js inspired by Guava's precondition checking utilities.

Installation

npm install precond

Unit tests

npm test

Overview

Precond provides a set of functions to verify arguments and state correctness

It lets you rewrite constructs like the following

if (!this.isConnected) {
    throw new Error('Client should be connected before calling X.');
}

into a more compact and declarative check bellow.

precond.checkState(this.isConnected, 'Client should be ...');

Note that even though the throw statement is wrapped in a function, the call stack will still start from the calling function. So the previous examples would both produce the same stack trace.

All arguments after the message will be used to format the actual error message that will be thrown.

The following precondition checks are provded:

  • checkArgument(value, [messageFormat, [formatArgs, ...]])
  • checkState(value, [messageFormat, [formatArgs, ...]])
  • checkIsDef(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsDefAndNotNull(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsString(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsArray(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsNumber(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsBoolean(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsFunction(value, [messageFormat, [formatArgs, ...]]) -> value
  • checkIsObject(value, [messageFormat, [formatArgs, ...]]) -> value

API

Static functions

precond.checkArgument(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be truthy
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is true. Throws an IllegalArgumentError if value is false.

precond.checkState(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be truthy
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is true. Throws an IllegalStateError if value is false.

precond.checkIsDef(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be defined
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is defined (could be null). Throws an IllegalArgumentError if value is undefined. Returns the value of the value that was validated.

precond.checkIsDefAndNotNull(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be defined and not null
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is defined and not null. Throws an IllegalArgumentError if value is undefined or null. Returns the value of the value that was validated.

precond.checkIsString(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be a string
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is a string or a String object. Throws an IllegalArgumentError if value isn't a string. Returns the value of the value that was validated.

precond.checkIsArray(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be an array
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is an array. Throws an IllegalArgumentError if value isn't an array. Returns the value of the value that was validated.

precond.checkIsNumber(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be a number
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is a number. Throws an IllegalArgumentError if value isn't a number. Returns the value of the value that was validated.

precond.checkIsBoolean(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be a boolean
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is a boolean. Throws an IllegalArgumentError if value isn't a boolean. Returns the value of the value that was validated.

precond.checkIsFunction(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be a function
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is a function. Throws an IllegalArgumentError if value isn't a function. Returns the value of the value that was validated.

precond.checkIsObject(value, [messageFormat, [formatArgs, ...]])

  • value: the value that is required to be an object
  • messageFormat: error message format template
  • formatArgs: arguments to be substituted into the message template

Ensures that value is an object. Throws an IllegalArgumentError if value isn't an object. Returns the value of the value that was validated.

Class precond.IllegalArgumentError

Extends Error and is thrown to signal illegal arguments.

Class precond.IllegalStateError

Extends Error and is thrown to signal that the program or object has reached an illegal state.

License

This code is free to use under the terms of the MIT license.