2.0.0 • Published 6 years ago
micro-boom v2.0.0
micro-boom  
  
 
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-boomOr even better
yarn add micro-boomImport 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)
:rotating_light: TAKE NOTE :rotating_light:
All HTTP 500 errors have their user provided message removed for security reasons.
Parameters
- fnFunction Async function, your normal- micrologic.
- dumpBoolean Optional. Dumps- err.stackto- stderrif 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
- statusCodeNumber HTTP status code, must be >= 400
- messageString An optional error message.
- dataAny 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.