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
SuperError
Class: A serializable and extendable Error
with optional code
, info
and cause
properties.
{unknown}
cause
Property: An arbitrary cause of this error.
{string}
code
Property: An arbitrary error code.
{object}
info
Property: A plain object containing arbitrary info.
SuperError.serialize(error)
Method: Serializes any error into a plain object representing a SuperError
.
@param value: unknown
— Any error.@returns SuperErrorObject
— A plain object representing aSuperError
.
SuperError.deserialize(value)
Method: 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
.
SuperError.from(value)
Method: 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 test:ts
# Run tests against src for specific file patterns (relative to /src)
$ npm run test:ts --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"