@uphold/http-errors
TypeScript icon, indicating that this package has built-in type declarations

1.4.0 • Public • Published

http-errors

This module provides a set of errors based on standard-http-error, reducing the boilerplate of adding error classes for the most common HTTP errors.

Setup

Install @uphold/http-errors with yarn:

$ yarn add @uphold/http-errors

Alternatively, with npm:

$ npm i @uphold/http-errors

Errors

The HttpError serves as base error since all other errors extend it, use it to handle errors provided from this library.

const { BadRequestError, HttpError } = require('@uphold/http-errors');

try {
  throw new BadRequestError();
} catch (e) {
  console.log(e instanceof HttpError);
  // true
}

Below is the list of all available errors:

Name Code Default message
AssertionFailedError 500 Internal Server Error
BadRequestError 400 Bad Request
ConflictError 409 Conflict
ForbiddenError 403 Forbidden
GoneError 410 Gone
NotFoundError 404 Not Found
ServiceUnavailableError 503 Service Unavailable
TooManyRequestsError 429 Too Many Requests
UnauthorizedError 401 Unauthorized
ValidationFailedError 400 Validation Failed

Usage

Import and throw an HTTP error:

const { ForbiddenError, UnauthorizedError } = require('@uphold/http-errors');

function authorize(user, permission) {
  if (!user.role) {
    throw new UnauthorizedError('User needs to authenticate');
  }

  if (permission === 'admin' && user.role !== 'admin') {
    throw new ForbiddenError('Only admins allowed', { role: 'admin' })
  }

  return true;
}

All errors accept a message and a set of properties as arguments, or both:

const { BadRequestError } = require('@uphold/http-errors');

try {
  throw new BadRequestError();
} catch (e) {
  console.log(e);
  // { BadRequestError: Bad Request
  //   at ...
  //   message: 'Bad Request', name: 'BadRequestError', code: 400 }
}

try {
  throw new BadRequestError('foo');
} catch (e) {
  // { BadRequestError: Bad Request
  //   at ...
  //   message: 'foo', name: 'BadRequestError', code: 400 }
}

try {
  throw new BadRequestError({ foo: 'bar' });
} catch (e) {
  console.log(e);
  // { BadRequestError: Bad Request
  //   at ...
  //   message: 'Bad Request', foo: 'bar', name: 'BadRequestError', code: 400 }
}

try {
  throw new BadRequestError('foo', { bar: 'biz' });
} catch (e) {
  console.log(e);
  // { BadRequestError: Bad Request
  //   at ...
  //   message: 'foo', bar: 'biz', name: 'BadRequestError', code: 400 }
}

Test suite

Use the test script to run the test suite:

$ yarn test

To test and check coverage use the cover script:

$ yarn cover

A full coverage report will be generated on test/coverage folder.

Contributing

Please create a PR with a description of the changes, its motivation and impacted areas, making sure the build passes.

Release

$ yarn release [<version> | major | minor | patch]

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @uphold/http-errors

Weekly Downloads

1,966

Version

1.4.0

License

MIT

Unpacked Size

11.4 kB

Total Files

27

Last publish

Collaborators

  • botatuphold
  • satazor
  • americas
  • kurayama
  • pedrobranco
  • fixe
  • franciscocardoso
  • cristiano.oliveira
  • ruimarinho