Skip to content
/ stop-if Public

An assert statement that turns off in production

Notifications You must be signed in to change notification settings

Flaque/stop-if

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hey You! Don't use this library

It already exists in the form of invariant. Didn't realize that at the time.


stop-if

stop-if is a tiny function that fills the need of an assert statement in javascript. However, if the function is run in a production environment:

process.env.NODE_ENV === "production"

then stop-if will do nothing.

The goal of stop-if is to catch bugs early without ever risking uncaught production errors.

Install

With npm

$ npm install --save stop-if

With yarn

$ yarn add stop-if

Example

import stopIf from 'stop-if';

function addToList(item) {
    stopIf(list === undefined)
    list.add(item)
}

You can also add a message if you would like:

stopIf(foo, "Fee fi fo fum, I smell the code of a hum-ity-dum.");

Why is this not called assert?

Javascript testing frameworks frequently use terms like assert or expect to prove a statement. stopIf is named differently to avoid any confusion with these sorts of statements.

When should I use stop-if?

Stop-if, as with all assert statements, should be used as a way of expressing original intent of a function. It should be used to prove pre or post conditions or to standardize a way a function should be used.

When should I not use stop-if?

You should not use stop-if as a regular throw statement. A regular throw statement should only be used in excepttional circumstances that are theoretically possible in the function, but not desired. For example, opening a file and then noticing that it doesn't exist would be an exception that you should use a regular throw statement.

It follows that you should not ever attempt to catch a stopIf function. The function will not run in production and therefore your catch is entirely useless.

Never do this:

try { // no 
  stopIf(true); // no
} catch (Error e) { // no 
  console.error(e); // no 
} // no wtf no

About

An assert statement that turns off in production

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages