A JavaScript library that provides traceable errors ✨🕵️
One who encourages and propagates error.
The package for errorist
is available on the public npm registry.
- With
yarn
:
yarn add errorist.js
- With
npm
:
npm install --save errorist.js
The library is designed to enforce a better context to an error by:
- Keeping track of an error root causes and detect them at ease;
- Forcing the usage of error codes;
- Encouraging succint, precise error messages;
- Patching errors with related data.
class SomeError extends Errorist {
constructor(message) {
super(message || "some human readable message");
this.code = "some-error-code";
this.name = "SomeError";
}
}
// Alternatively:
const SomeError = Errorist.extend({
message: "some human readable message",
code: "some-error-code",
name: "SomeError"
})
try {
// ...
} catch(e) {
throw SomeCustomError.create({
causes: e,
data: {
foo: "some data",
bar: "some other data"
}
})
}
const doSomething = () => {
throw SomeError.create({
causes: [new CauseOneError(), new CauseTwoError()]
});
};
try {
doSomething();
} catch (e) {
const err = Errorist.wrap(e);
err.is(SomeError) // => SomeError [Errorist]
err.isCausedBy(SomeError) // => null
err.isCausedBy(CauseOneError) // => CauseOneError [Errorist]
err.is(CauseOneError) // => CauseOneError [Errorist]
}
const [err, thing] = await errorist.try(createThing);
if (err?.is(ThingAlreadyCreatedError)) {
// ...
}
- Antonio Schönmann (@schonmann)