Coder Social home page Coder Social logo

micro-boom's Introduction

micro-boom NPM travis-ci Greenkeeper

Wraps errors in micro services Boom errors.

Example Responses

{
  "error": "Unauthorized", 
  "message": "Not authenticated", 
  "statusCode": 401
}
{
  "data": {
    "reason": "Username is wrong"
  }, 
  "error": "Unauthorized", 
  "message": "Not authenticated", 
  "statusCode": 401
}

Installation

npm install --save micro-boom

Or even better

yarn add micro-boom

Import and Usage Example

const { handleErrors, createError } = require('micro-boom')

module.exports = handleErrors(async function (req, res) {
  throw createError(401, 'Not authenticated', {
    reason: 'Bad password'
  })
})

API

handleErrors

Catches error from an async function, wraps them in a Boom error object and generates a JSON response.

The status code of an error is determined by three factors, in order:

  • Status code is set to err.output.statusCode
  • If not set, error is inferred from res.statusCode
  • Default to HTTP 500 (also defaults to HTTP 500 if status is < 400)

๐Ÿšจ TAKE NOTE ๐Ÿšจ
All HTTP 500 errors have their user provided message removed for security reasons.

Parameters

  • fn Function Async function, your normal micro logic.
  • dump Boolean Optional. Dumps err.stack to stderr if true

Examples

const { handleErrors } = require('micro-boom')

// Returns HTTP 500
module.exports = handleErrors(async function (req, res) {
  throw Error('Uh-oh, something bad happened.')
})
const { handleErrors } = require('micro-boom')

// Returns HTTP 401
module.exports = handleErrors(async function (req, res) {
  res.statusCode = 401
  throw Error('Unauthorized')
})

Returns an async Function.

createError

Alias for Boom#create(statusCode, [message], [data]).

Parameters

  • statusCode Number HTTP status code, must be >= 400
  • message String An optional error message.
  • data [Any] Some optional error metadata, serialized with JSON.stringify.

Examples

const { handleErrors, createError } = require('micro-boom')

// Message defaults to what corresponds to the HTTP error code
module.exports = handleErrors(async function (req, res) {
  throw createError(500)
})
const { handleErrors, createError } = require('micro-boom')

// HTTP 401: Unauthorized
module.exports = handleErrors(async function (req, res) {
  throw createError(401, 'Unauthorized')
})
const { handleErrors, createError } = require('micro-boom')

// HTTP 401: Unauthorized with metadata,
// set in `.data` of the response.
module.exports = handleErrors(async function (req, res) {
  throw createError(401, 'Unauthorized', {
    reason: 'Bad password',
    foo: 'bar'
  })
})

Returns an async Function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.