Wondering what’s next for npm?Check out our public roadmap! »

    @bodidata/micro-boom

    1.1.0 • Public • Published

    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.
    • message [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.

    Keywords

    none

    Install

    npm i @bodidata/micro-boom

    DownloadsWeekly Downloads

    0

    Version

    1.1.0

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar