Errorish

When you have an error-ish but what you really want is an Error.
Install
npm install errorish
Use cases
There are three main use cases for Errorish:
Usage
See complete documentation.
Exception
is an Error extending class with additional label
, error
and data
fields.- Utils:
ensure
ensures any
is an Error
, otherwise creating one -it can optionally include a normalization step, enabled by default.normalize
ensures an Error
has a message
, name
, and stack
properties -filling them if they're not defined.capture
runs Error.captureStackTrace
if running in V8
to clean up the error stack trace.
Exception
See documentation for Exception
.
Exception
is an Error extending class that can store an identifying label
, the source error
that caused it and/or additional associated data
. Exception
also comes with several static and instance methods.
import { Exception } from 'errorish';
try {
try {
throw new Error('Source');
} catch (err) {
throw new Exception(['label', 'message'], err, { code: 401 });
}
} catch (err) {
throw new Exception(err.message, err, { code: 500 })
}
Utils
ensure
See documentation for ensure
.
Ensure will return its first argument if an instance of Error
is passed as such, otherwise instantiating and returning an Exception
.
import { ensure } from 'errorish';
ensure('foo');
ensure(new Error('foo'));
ensure({ message: 'foo' });
normalize
See documentation for normalize
.
Normalization fills an error's message
, name
, and stack
property when empty. It's performed by default by ensure
, but it can also be run independently.
import { normalize } from 'errorish';
normalize(new Error());
normalize(new Error(), { message: 'Foo bar' });
capture
See documentation for capture
.
Captures the stack trace on Node and Chromium browsers.
import { capture } from 'errorish';
capture(new Error());