{"_id":"maybe-combine-errors","_rev":"1-eab5c21306f34b75f5d264f855d03b81","name":"maybe-combine-errors","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"maybe-combine-errors","version":"1.0.0","description":"Combine 0 or more errors into one","license":"MIT","author":{"name":"Vincent Weevers"},"scripts":{"test":"standard && nyc node test"},"dependencies":{},"devDependencies":{"nyc":"^15.1.0","standard":"^14.3.4","tape":"^5.0.1"},"repository":{"type":"git","url":"git+https://github.com/vweevers/maybe-combine-errors.git"},"homepage":"https://github.com/vweevers/maybe-combine-errors","keywords":["combine","error","errors","exception"],"engines":{"node":">=10"},"gitHead":"7b1e640fad52317c5b9ad5f800ce6cf0b92236ad","bugs":{"url":"https://github.com/vweevers/maybe-combine-errors/issues"},"_id":"maybe-combine-errors@1.0.0","_nodeVersion":"12.11.1","_npmVersion":"6.11.3","_npmUser":{"name":"vweevers","email":"dev@vincentweevers.nl"},"maintainers":[{"name":"vweevers","email":"dev@vincentweevers.nl"}],"dist":{"integrity":"sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==","shasum":"e9592832e61fc47643a92cff3c1f33e27211e5be","tarball":"https://registry.npmjs.org/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz","fileCount":4,"unpackedSize":6284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGV9bCRA9TVsSAnZWagAA5+0P/2n0R7nU8Hj+KFw5LavU\n1qc5XCeZ+4/IUZ5nxfIg8xjym2jSDtR9N+MPEJH2dgb3gJMh3S80qgOc6mcs\naxP+rR10F2WOG4A0O27tZuh5iPBXvTXVaMvURvSZ9aUnWQf5hoNe+sViGwKn\nniuOGGA26jruCr4KIrpqJK8SyPa/6geE3FLbiP49O9j/RVGYDZAzM5QQUN60\nyqP1ARbkhettb9pHQ20SrN8RfBxUTpskUJaUgyy2Hm6pThoOh+TmikImvfmI\ngVh+N1oYI9gVEnDnib2bogbA69w9xtjIewZgz84yxpH2KNK0DLu5ljIXzzu9\n9CFSR62r9Eqwgv9HXX6cxTeC0cxLt884Kx3mGJ95uYXa0lLJR4bhbKtGVnMP\nJ8efIg2SHlo9GOMyBJUfZBRwkzKOMzbCOpIS3+D4jQGmTU4miadJNfCTfrT5\nkuX+asCBBS0Mbik6PFI56A7D9aD0bpx0J9KpWHosq6onhK9uX+1gR1zbTJrP\nerkOLqMp2qcnXLexwHOXp3lhmEj1IeXCBzaQFVZT7DCTf5giVELoTV7uYDHR\ntZpCrRSIjmWYbDrep+iyzhmZnAurWMyx6/BQ+6wS+/7PeBuTofzNFdmrL2hB\nQWFwBLSTwZqFCPYCHyO9QsF9nkpy2/vpwk6WEeAdA+SYtGbXyLRWjcXZ1gvW\nGwdS\r\n=W5aE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD29EV9uw7v5rR1gwO+C7USUUpOCy8X1TqaMlUVu/eRXQIhAMj5R001d6llIzJXGk2l0P3S47YEhJ+C2rMFKBQaOSAH"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/maybe-combine-errors_1.0.0_1595498330860_0.25920115653273257"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-23T09:58:50.860Z","1.0.0":"2020-07-23T09:58:50.964Z","modified":"2022-05-08T23:57:41.935Z"},"maintainers":[{"name":"vweevers","email":"dev@vincentweevers.nl"}],"description":"Combine 0 or more errors into one","homepage":"https://github.com/vweevers/maybe-combine-errors","keywords":["combine","error","errors","exception"],"repository":{"type":"git","url":"git+https://github.com/vweevers/maybe-combine-errors.git"},"author":{"name":"Vincent Weevers"},"bugs":{"url":"https://github.com/vweevers/maybe-combine-errors/issues"},"license":"MIT","readme":"# maybe-combine-errors\n\n**Combine 0 or more errors into one.**\n\n[![npm status](http://img.shields.io/npm/v/maybe-combine-errors.svg)](https://www.npmjs.org/package/maybe-combine-errors)\n[![node](https://img.shields.io/node/v/maybe-combine-errors.svg)](https://www.npmjs.org/package/maybe-combine-errors)\n[![Travis build status](https://img.shields.io/travis/com/vweevers/maybe-combine-errors.svg?label=travis)](http://travis-ci.com/vweevers/maybe-combine-errors)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n\n## Usage\n\n```js\nconst combine = require('maybe-combine-errors')\n\nconst err1 = new Error('one')\nconst err2 = new Error('two')\n\nconsole.log(combine([err1, err2]).message)\nconsole.log(combine([err1, err2]) instanceof Error)\nconsole.log(combine([err1, null]) === err1)\nconsole.log(combine([]) === undefined)\n\nthrow combine([err1, err2])\n```\n\n```\n$ node example.js\none; two\ntrue\ntrue\ntrue\nexample.js:9\nthrow combine([err1, err2])\n^\n\nError: one\n    at Object.<anonymous> (example.js:3:14)\n    at Module._compile (internal/modules/cjs/loader.js:945:30)\n    at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)\n    at Module.load (internal/modules/cjs/loader.js:798:32)\n    at Function.Module._load (internal/modules/cjs/loader.js:711:12)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)\n    at internal/main/run_main_module.js:17:11\n\nError: two\n    at Object.<anonymous> (example.js:4:14)\n    at Module._compile (internal/modules/cjs/loader.js:945:30)\n    at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)\n    at Module.load (internal/modules/cjs/loader.js:798:32)\n    at Function.Module._load (internal/modules/cjs/loader.js:711:12)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)\n    at internal/main/run_main_module.js:17:11\n```\n\n## API\n\n### `combine(errors)`\n\nThe `errors` argument must be an array.\n\nElements that are `null` or `undefined` are skipped. If the array is empty (after skipping `null` and `undefined`), `undefined` will be returned. If the array contains only 1 error, that error will be returned as-is. Otherwise, a combined error with joined messages and a lazily joined stack. Duplicate messages are skipped.\n\nRespects [`transient-error`](https://github.com/vweevers/transient-error) and `err.expected`: if all errors have `.transient === true` then the combined error will also be transient. Same for `.expected`, which is useful for the following pattern:\n\n```js\nif (err.expected) {\n  console.error(err.message)\n  process.exit(1)\n} else {\n  throw err\n}\n```\n\n## Alternatives\n\n### [`combine-errors`](https://github.com/MatthewMueller/combine-errors)\n\nSame message and stack behavior. Different in that it always returns an error regardless of input length.\n\n### [`aggregate-error`](https://github.com/sindresorhus/aggregate-error)\n\nSets message to a joined stack, which means you can't get a human-friendly message with e.g. `console.error(err.message)`. Removes \"mostly unhelpful\" internal Node.js entries from the stack.\n\n## Install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install maybe-combine-errors\n```\n\n## License\n\n[MIT](LICENSE.md) © 2020-present Vincent Weevers\n","readmeFilename":"README.md"}