@ganintegrity/gan-error

1.2.1 • Public • Published

@ganintegrity/gan-error

npm version pipeline status coverage report

an extendable ES6 Error with support for HTTP errors

Installation

npm install --save @ganintegrity/gan-error

Usage

const GanError = require('@ganintegrity/gan-error');

const error = new GanError('something bad happened');

console.log(error.message); // => 'something bad happened'
console.log(error.name); // => 'GanError'

class MyError extends GanError {}

const myError = new MyError('some other bad thing happened');

console.log(myError.message); // => 'some other bad thing happened'
console.log(myError.name); // => 'MyError''

When passed an error instance, the message is "inherited" from the error instance and the passed error stored as originalError:

class CustomError extends GanError {}

const error = new CustomError(new Error('foo'));

console.log(error.message); // => 'foo'
console.log(error.originalError); // => new Error('foo')

Also, if the passed error instance has a status property, it will also be copied over from the error:

class CustomError extends GanError {}

const error = new CustomError(new GanError.InternalServerError('foo'));

console.log(error.message); // => 'foo'
console.log(error.status); // => 500
console.log(error.originalError); // => new GanError.InternalServerError('foo')

Objects can also be passed to the constructor. They will be stored as data on the error:

class CustomError extends GanError {}

const error = new CustomError({ foo: 'bar' } });

console.log(error.message); // => ''
console.log(error.data); // => { message: 'foo', foo: 'bar' }

If the object contains a message property whose value is a string, then that is also used as the error's message:

class CustomError extends GanError {}

const error = new CustomError({ message: 'oops!', foo: 'bar' } });

console.log(error.message); // => 'oops!'
console.log(error.data); // => { message: 'oops!', foo: 'bar' }

HTTP errors

HTTP errors are exposed as static properties on GanError by name and by status code:

// base http error, without `status`
class MyError extends GanError.HttpError {}
// http error with `status` 500
class MySecondError extends GanError.InternalServerError {}
// same, http error with `status` 500
class MyOtherError extends GanError['500'] {}

Disabling HTTP errors

If you're using this module for the browser and you don't need support for http errors, you can disable them altogether by setting the DISABLE_GAN_HTTP_ERRORS environment variable to true when bundling your frontend code (e.g. with webpack's DefinePlugin). This reduces the size of the frontend bundle.

Dependents (49)

Package Sidebar

Install

npm i @ganintegrity/gan-error

Weekly Downloads

31,101

Version

1.2.1

License

MIT

Unpacked Size

7.83 kB

Total Files

7

Last publish

Collaborators

  • zakibadawi
  • lukas_holst
  • lato.ganintegrity.com
  • mustafasidiqi
  • atsg
  • anbo-gan
  • jvaganintegrity
  • jabihd
  • iazogan
  • shelbykelleyhd
  • abrahamhd
  • milan_amrein
  • ivanzvonimirhorvat
  • pmrcunha-gan
  • astojanova
  • ovadmarton
  • pouryaak
  • anastoica
  • hector.reboucas.integrity
  • adga
  • claymayhem
  • lladipas
  • thomasboel-gan
  • mahamahib
  • amarendrak
  • kallaben
  • bthomsen
  • casperguldberg
  • gandevops
  • li36
  • tchang
  • ivizitiu13
  • ccogan
  • michaeljordan23
  • mjhammer
  • mgsorensen
  • iakoulinine
  • mapap