@andrewscwei/super-error
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

node-super-error npm CI CD

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 a SuperError.

Method: SuperError.deserialize(value)

Deserializes any value to a SuperError instance. SuperErrors are passed through, and Errors are converted to SuperErrors. 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 deserialized SuperError.

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 test:unit

# Run tests against src for specific file patterns (relative to /src)
$ npm run test: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"

Dependencies (2)

Dev Dependencies (9)

Package Sidebar

Install

npm i @andrewscwei/super-error

Weekly Downloads

1

Version

3.0.0

License

MIT

Unpacked Size

34.5 kB

Total Files

6

Last publish

Collaborators

  • andrewscwei