@andrewscwei/super-error
v3.2.0
Published
Custom error for Node.js with additional properties
Downloads
58
Readme
node-super-error
A serializable and extendable Node.js Error
with optional code
, info
and cause
properties.
import { SuperError } from "@andrewscwei/super-error";
const cause = new Error("I am the cause");
const error = new SuperError(
"I am the error",
"error-code",
{ some: "info" },
cause
);
console.log(error.name); // 'SuperError'
console.log(error.code); // 'error-code'
console.log(error.info); // { some: 'info' }
console.log(error.cause); // cause
const serialized = SuperError.serialize(error); // { 'name': 'SuperError', 'code': 'error-code', 'info': { 'some': 'info' }, 'cause': { 'name': 'Error', 'message': 'I am the cause' }, 'stack': <error_stack> }
const deserialized = SuperError.deserialize(serialized); // A `SuperError` instance equivalent to the initially created `error`.
API
Class: SuperError
A serializable and extendable Error
with optional code
, info
and cause
properties.
Property: {unknown}
cause
An arbitrary cause of this error.
Property: {string}
code
An arbitrary error code.
Property: {object}
info
A plain object containing arbitrary info.
Method: SuperError.serialize(error)
Serializes any error into a plain object representing a SuperError
.
@param value: unknown
— Any error.@returns SuperErrorObject
— A plain object representing aSuperError
.
Method: SuperError.deserialize(value)
Deserializes any value to a SuperError
instance. SuperError
s are passed through, and Error
s are converted to SuperError
s. Plain objects are deserialized to match their keys to respective SuperError
properties. Strings are wrapped as the message of a SuperError
and numbers are wrapped as the code of a SuperError
. Everything else are wrapped as the cause of a SuperError
.
@param value: unknown
— Any value.@returns SuperError
— The deserializedSuperError
.
Method: SuperError.from(value)
This method is an alias of SuperError.deserialize(value)
.
Usage
# Install dependencies
$ npm install
# Build module
$ npm run build
# Run tests against src
$ npm run unit
# Run tests against src for specific file patterns (relative to /src)
$ npm run unit --files="foo.ts"
# Run tests again built files
$ npm test
# Run tests again built files for specific file patterns (relative to /build)
$ npm test --files="foo.js"