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 normalmicrologic.dumpBoolean Optional. Dumpserr.stacktostderrif 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 >= 400messageString An optional error message.dataAny Some optional error metadata, serialized withJSON.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.