{"_id":"@bodidata/micro-boom","_rev":"12-44acd61b5c6b007d36e6e76e847b6f0d","name":"@bodidata/micro-boom","description":"Wraps errors in micro with Boom","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"@bodidata/micro-boom","version":"1.1.0","description":"Wraps errors in micro with Boom","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/onbjerg/micro-boom.git"},"author":{"name":"Oliver Nordbjerg","email":"hi@notbjerg.me"},"license":"MIT","dependencies":{"boom":"^4.2.0"},"peerDependencies":{"micro":"*"},"devDependencies":{"async-to-gen":"^1.3.0","ava":"^0.18.0","micro":"^7.0.2","request":"^2.79.0","request-promise":"^4.1.1","standard":"^9.0.2","test-listen":"^1.0.0"},"ava":{"require":["async-to-gen/register"],"files":["test/index.js"]},"scripts":{"prepublish":"npm run build","build":"mkdir -p dist && async-to-gen lib/index.js > dist/index.js","test":"standard && ava"},"gitHead":"4c7685d292a42909e768d9daff24808adb7eaeb3","bugs":{"url":"https://github.com/onbjerg/micro-boom/issues"},"homepage":"https://github.com/onbjerg/micro-boom#readme","_id":"@bodidata/micro-boom@1.1.0","_shasum":"d45a54c48933884f87f7810af5ca4ac94c3dd9cd","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"tungv","email":"gmanvn@gmail.com"},"dist":{"shasum":"d45a54c48933884f87f7810af5ca4ac94c3dd9cd","tarball":"https://registry.npmjs.org/@bodidata/micro-boom/-/micro-boom-1.1.0.tgz","integrity":"sha512-u9IqXkfUMICNrRMyx1qpxls8SOEjHMM+hTWB+5tB66aMzSx4CwL1YFDuCOWUbVvOZwQL5Wq9P1QiZahPAcp9sg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtrOe0N3Z88pwGDbeXR0vWQmDyYB3fwHyCn6xp+XfSnwIhAI3PpT3bFXE0+fLnnKdt0Ycy/Qrve9CYjLLy1hJgsIA1"}]},"maintainers":[{"name":"tungv","email":"gmanvn@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/micro-boom-1.1.0.tgz_1492152946732_0.7867789010051638"},"directories":{}}},"readme":"# `micro-boom` [![NPM](https://img.shields.io/npm/v/micro-boom.svg?style=flat)](https://www.npmjs.org/package/micro-boom) [![travis-ci](https://travis-ci.org/onbjerg/micro-boom.svg?branch=master)](https://travis-ci.org/onbjerg/micro-boom) [![Greenkeeper](https://badges.greenkeeper.io/onbjerg/micro-boom.svg)](https://greenkeeper.io/)\n\nWraps errors in [`micro`](https://github.com/zeit/micro) services [`Boom`](https://github.com/hapijs/boom) errors.\n\n**Example Responses**\n\n```json\n{\n  \"error\": \"Unauthorized\", \n  \"message\": \"Not authenticated\", \n  \"statusCode\": 401\n}\n```\n\n```json\n{\n  \"data\": {\n    \"reason\": \"Username is wrong\"\n  }, \n  \"error\": \"Unauthorized\", \n  \"message\": \"Not authenticated\", \n  \"statusCode\": 401\n}\n```\n\n---\n\n## Installation\n\n```sh\nnpm install --save micro-boom\n```\n\nOr even better\n\n```sh\nyarn add micro-boom\n```\n\n## Import and Usage Example\n\n```js\nconst { handleErrors, createError } = require('micro-boom')\n\nmodule.exports = handleErrors(async function (req, res) {\n  throw createError(401, 'Not authenticated', {\n    reason: 'Bad password'\n  })\n})\n```\n\n## API\n\n#### handleErrors\n\nCatches error from an async function, wraps them in a Boom error object and generates a JSON response.\n\nThe status code of an error is determined by three factors, in order:\n\n- Status code is set to `err.output.statusCode`\n- If not set, error is inferred from `res.statusCode`\n- Default to HTTP 500 (also defaults to HTTP 500 if status is < 400)\n\n> :rotating_light: **TAKE NOTE** :rotating_light:  \n> All HTTP 500 errors have their user provided message removed for security reasons.\n\n**Parameters**\n\n-   `fn` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** Async function, your normal `micro` logic.\n-   `dump` **[Boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Optional. Dumps `err.stack` to `stderr` if true\n\n**Examples**\n\n```js\nconst { handleErrors } = require('micro-boom')\n\n// Returns HTTP 500\nmodule.exports = handleErrors(async function (req, res) {\n  throw Error('Uh-oh, something bad happened.')\n})\n```\n\n```js\nconst { handleErrors } = require('micro-boom')\n\n// Returns HTTP 401\nmodule.exports = handleErrors(async function (req, res) {\n  res.statusCode = 401\n  throw Error('Unauthorized')\n})\n```\n\nReturns an async **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)**.\n\n#### createError\n\nAlias for [`Boom#create(statusCode, [message], [data])`](https://github.com/hapijs/boom#createstatuscode-message-data).\n\n**Parameters**\n\n-   `statusCode` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** HTTP status code, must be >= 400\n-   `message` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** An optional error message.\n-   `message` **[Any]** Some optional error metadata, serialized with [``JSON.stringify``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n\n**Examples**\n\n```js\nconst { handleErrors, createError } = require('micro-boom')\n\n// Message defaults to what corresponds to the HTTP error code\nmodule.exports = handleErrors(async function (req, res) {\n  throw createError(500)\n})\n```\n\n```js\nconst { handleErrors, createError } = require('micro-boom')\n\n// HTTP 401: Unauthorized\nmodule.exports = handleErrors(async function (req, res) {\n  throw createError(401, 'Unauthorized')\n})\n```\n\n```js\nconst { handleErrors, createError } = require('micro-boom')\n\n// HTTP 401: Unauthorized with metadata,\n// set in `.data` of the response.\nmodule.exports = handleErrors(async function (req, res) {\n  throw createError(401, 'Unauthorized', {\n    reason: 'Bad password',\n    foo: 'bar'\n  })\n})\n```\n\nReturns an async **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)**.\n","maintainers":[{"email":"bruce@bodidata.com","name":"bruceterry"},{"email":"gmanvn@gmail.com","name":"tungv"},{"email":"devops@bodidata.com","name":"bodidata-ci"}],"time":{"modified":"2023-07-20T17:25:20.127Z","created":"2017-04-14T06:55:46.971Z","1.1.0":"2017-04-14T06:55:46.971Z"},"homepage":"https://github.com/onbjerg/micro-boom#readme","repository":{"type":"git","url":"git+https://github.com/onbjerg/micro-boom.git"},"author":{"name":"Oliver Nordbjerg","email":"hi@notbjerg.me"},"bugs":{"url":"https://github.com/onbjerg/micro-boom/issues"},"license":"MIT","readmeFilename":"README.md"}