{"_id":"beautiful-error","_rev":"8-b930095802c3a387c82ff616786c707b","name":"beautiful-error","dist-tags":{"latest":"2.2.0"},"versions":{"0.0.1":{"name":"beautiful-error","version":"0.0.1","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@0.0.1","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"d212c1f9a3edaa1cde74850bc73f0ccfd2dfa83b","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-0.0.1.tgz","fileCount":15,"integrity":"sha512-PBPyVK2DCqFgf01gfzMwGlEquqDos5Q3BL/9VueTdPPVs0WSyLkwcSIY5rIKH4ae0NMCBD2sQesJS7YUKLSbrA==","signatures":[{"sig":"MEUCIQCwrSKJr3aJXS2oCx0Ru4ufl80EpcKnSnHXdHfYpkZQVAIgXzehbqUkr+6GI4SZi8qeiUOUqI6ckwHx/Fyug17QiL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20732},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"0b04be3e689bde49fba432a1fb8499e5ef1433af","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.2","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.0.2","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^3.0.1","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.31","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_0.0.1_1747792566489_0.9751670750147383","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"beautiful-error","version":"1.0.0","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@1.0.0","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"717f1db3982134145b92f59c9907ea138043e732","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-1.0.0.tgz","fileCount":15,"integrity":"sha512-VZwJTVxnynAmyTmkg5EZplutJmEAp7irtMruBAD7hFdp45dahcEjNGOna058CNsNg3L9F2cSWH6MylirnjqrEQ==","signatures":[{"sig":"MEUCIEqyhCFZNwmWyZtZPLP93nYKR5EnMVHtBOz1Em3GGKY5AiEA/sA9FXjZcCEP0ZFNonbUVtKdfb4UyecQERW5Q3tx9zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20732},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"09e0335dca2cb6d35f372d1884d2911605665995","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.2","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.0.2","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^3.0.1","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.31","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_1.0.0_1747792776391_0.8712140724458048","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"beautiful-error","version":"1.0.1","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@1.0.1","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"76e7ef6eaeafedc95e5d83ef3e0d04e89b7d2a8d","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-1.0.1.tgz","fileCount":14,"integrity":"sha512-X+lb5jRd6mMpIIMtquOFZMB8V7ndUx8GyPlLiF0nNAorU67HMTt0niyEx/KZ44ahoLWHUPeTpuRrTRMbv5HfKg==","signatures":[{"sig":"MEUCIEjRYbXWzFbP0qMR4eUcw5eAgVI+dlKAfTslWQYJBeOmAiEA762qeCtts6LHXtdcrhlkasvtjf+ZkV71E3D2vmmOtKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20286},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"19d639a674f907608633ba9d0c4626356ded3619","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.2","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.1.0","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^3.0.1","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.31","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_1.0.1_1747845294481_0.05239104255736837","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"beautiful-error","version":"1.0.2","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@1.0.2","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"4380beadf66c7b247cb0ed33b532d88403780c5f","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-1.0.2.tgz","fileCount":14,"integrity":"sha512-68Wo3a4orOHwyYJT4uzS1TPDYssY0koG7U3eCIzp2eeP2xYaibjmeV+nAb3RzRkp/g+WbfLoLWi3bXJEbF8rbQ==","signatures":[{"sig":"MEUCIGvz4hoHjBFZt/yuH66OKUc+VxSkfsSFbh7Aa07ExxMOAiEAx70WXBzVmmj2ApsG1/TwdWJVXMR2pNx4nRJQ1amMLiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20435},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"d0bd7c69aa608beca7386058c7f77a713560a14a","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.2","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.1.0","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^3.0.1","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.32","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_1.0.2_1748299707152_0.08085083017566363","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"beautiful-error","version":"1.1.0","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@1.1.0","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"1f165d857c410620cab3e5114bc9767706a19b8c","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-1.1.0.tgz","fileCount":14,"integrity":"sha512-kpsSnOEEykI2K/8fW7G3KoJ41683jH9MqU6PhWlzI9cm33pS6k04jWGMUpZLMKarw07d5IwS295aI10Wk7Fjzw==","signatures":[{"sig":"MEUCIQDtSqYm5NY7auA9jJ5ichVuz9cCr5CZk+CnhnEoj2sfTAIgDoApUvY8DoB6fX1DCj5yB/zR7UoyF+xOGT2rUcIhZag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20390},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"519eee6cf89b390b29996ca6a36c834f359fe087","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.2","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.2.0","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^4.0.0","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.32","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_1.1.0_1749586459296_0.9519603329777537","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"beautiful-error","version":"2.0.0","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@2.0.0","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"dd67b9841a391ba58b4c1407ef6ed669ab6e3406","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-2.0.0.tgz","fileCount":17,"integrity":"sha512-EwgDpzkS1MKVOjVxyTDyaBPH2LnuAmWK0NbpwCoevxewDxw5G8iMTRs6ZrxkGH7IyV38vHImuLNzqx9dWRfq7A==","signatures":[{"sig":"MEUCIFMPquokjq5PfFKg1YFWF72MvcQxWsEIPhpC/Z6gn/ShAiEAqiV5i9q3FohJTAfwYBWgFh5jXJkmMTGZd9FZpxB8g20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24898},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"96f2eb0198a1414efa504ccee037c7f67991351e","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.3","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.9.0","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^4.0.0","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.32","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_2.0.0_1759169464068_0.7593228577882887","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"beautiful-error","version":"2.1.0","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"author":{"url":"https://github.com/ehmicky","name":"ehmicky","email":"ehmicky@gmail.com"},"license":"MIT","_id":"beautiful-error@2.1.0","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"homepage":"https://www.github.com/ehmicky/beautiful-error","bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"dist":{"shasum":"d3ffa21c8bcb1af9b273d9baf9f67687db016d0c","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-2.1.0.tgz","fileCount":18,"integrity":"sha512-kJaDodZYUmcsx3MvKKoqjX94bZIxLNUdEP2nosJt0UW/xwH085GF7piZQvzqb1uyUcPdCtL6Xe5IsgWd1oq33Q==","signatures":[{"sig":"MEQCIHJN+USjpnhb08KSbTyM1LF8bjugyw8XDGHoV5tdHTA0AiBfQ8lL2wkXxhWlIkLpt6JgSgBGrcGwv00+FlgqPRU1Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26823},"main":"./build/src/main.js","type":"module","types":"./build/src/main.d.ts","engines":{"node":">=18.18.0"},"exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"gitHead":"df01100f5f1748c41fa1dc5add982f18de3c6eec","scripts":{"test":"gulp test"},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"repository":{"url":"git+https://github.com/ehmicky/beautiful-error.git","type":"git"},"_npmVersion":"10.9.3","description":"💣 Prettify error messages and stacks 💥","directories":{"lib":"src"},"sideEffects":false,"_nodeVersion":"24.9.0","dependencies":{"figures":"^6.0.1","filter-obj":"^6.1.0","chalk-string":"^4.0.0","is-plain-obj":"^4.1.0","is-error-instance":"^3.0.1","normalize-exception":"^4.0.1"},"_hasShrinkwrap":false,"devDependencies":{"has-ansi":"^6.0.0","test-each":"^7.0.1","error-serializer":"^8.0.1","@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.32","@ehmicky/prettier-config":"^1.0.6"},"_npmOperationalInternal":{"tmp":"tmp/beautiful-error_2.1.0_1759257233452_0.687566794710655","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"beautiful-error","version":"2.2.0","type":"module","exports":{"types":"./build/src/main.d.ts","default":"./build/src/main.js"},"main":"./build/src/main.js","types":"./build/src/main.d.ts","sideEffects":false,"scripts":{"test":"gulp test"},"description":"💣 Prettify error messages and stacks 💥","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"license":"MIT","homepage":"https://www.github.com/ehmicky/beautiful-error","repository":{"type":"git","url":"git+https://github.com/ehmicky/beautiful-error.git"},"bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"author":{"name":"ehmicky","email":"ehmicky@gmail.com","url":"https://github.com/ehmicky"},"directories":{"lib":"src"},"dependencies":{"chalk-string":"^4.0.0","figures":"^6.0.1","filter-obj":"^6.1.0","is-error-instance":"^3.0.1","is-plain-obj":"^4.1.0","normalize-exception":"^4.0.1"},"devDependencies":{"@ehmicky/dev-tasks":"^3.0.34","@ehmicky/eslint-config":"^20.0.32","@ehmicky/prettier-config":"^1.0.6","error-serializer":"^8.0.1","has-ansi":"^6.0.0","test-each":"^7.0.1"},"engines":{"node":">=18.18.0"},"_id":"beautiful-error@2.2.0","gitHead":"e17a583d97c40afc67b95cb75de5a6c72448e048","_nodeVersion":"24.9.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-mGTlxWkNRFq2XLjPUQuI5BAMg6QYX+hY4y6NW5EH95bVYdNxanGLb+Z+mtQ4cFsaWoy1XiSy/S9VIcAAbhvK5w==","shasum":"ad8f86a724046f09480eb90a5fcd8180d2af045c","tarball":"https://registry.npmjs.org/beautiful-error/-/beautiful-error-2.2.0.tgz","fileCount":18,"unpackedSize":27699,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCtYflw2NqnaMRrCbioXhkRORXVCK+kBzXNIfZOS9uplQIhAJs+Lotxoylnst+O6Kda9IPKoPEq3uBVQLGLRvICVhKt"}]},"_npmUser":{"name":"ehmicky","email":"ehmicky@gmail.com"},"maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beautiful-error_2.2.0_1759269410067_0.9146668202803818"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-21T01:56:06.345Z","modified":"2025-09-30T21:56:50.416Z","0.0.1":"2025-05-21T01:56:06.680Z","1.0.0":"2025-05-21T01:59:36.563Z","1.0.1":"2025-05-21T16:34:54.696Z","1.0.2":"2025-05-26T22:48:27.348Z","1.1.0":"2025-06-10T20:14:19.463Z","2.0.0":"2025-09-29T18:11:04.260Z","2.1.0":"2025-09-30T18:33:53.640Z","2.2.0":"2025-09-30T21:56:50.232Z"},"bugs":{"url":"https://github.com/ehmicky/beautiful-error/issues"},"author":{"name":"ehmicky","email":"ehmicky@gmail.com","url":"https://github.com/ehmicky"},"license":"MIT","homepage":"https://www.github.com/ehmicky/beautiful-error","keywords":["nodejs","javascript","shell","bash","cli","console","library","typescript","terminal","errors","monitoring","error-monitoring","stack","handler","message","timeout","error-handling","error","exit","exitcode"],"repository":{"type":"git","url":"git+https://github.com/ehmicky/beautiful-error.git"},"description":"💣 Prettify error messages and stacks 💥","maintainers":[{"name":"ehmicky","email":"ehmicky@gmail.com"}],"readme":"<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ehmicky/design/main/beautiful-error/beautiful-error_dark.svg\"/>\n  <img alt=\"beautiful-error logo\" src=\"https://raw.githubusercontent.com/ehmicky/design/main/beautiful-error/beautiful-error.svg\" width=\"500\"/>\n</picture>\n\n[![Node](https://img.shields.io/badge/-Node.js-808080?logo=node.js&colorA=404040&logoColor=66cc33)](https://www.npmjs.com/package/beautiful-error)\n[![TypeScript](https://img.shields.io/badge/-Typed-808080?logo=typescript&colorA=404040&logoColor=0096ff)](/src/main.d.ts)\n[![Codecov](https://img.shields.io/badge/-Tested%20100%25-808080?logo=codecov&colorA=404040)](https://codecov.io/gh/ehmicky/beautiful-error)\n[![Mastodon](https://img.shields.io/badge/-Mastodon-808080.svg?logo=mastodon&colorA=404040&logoColor=9590F9)](https://fosstodon.org/@ehmicky)\n[![Medium](https://img.shields.io/badge/-Medium-808080.svg?logo=medium&colorA=404040)](https://medium.com/@ehmicky)\n\nPrettify error messages and stacks.\n\n# Features\n\n- 🖍️ Pretty [colors](#%EF%B8%8F-colors), [icons](#-icon) and [header](#-header)\n- 💣 [Error class-specific](#-classes) and [custom](#-custom) handling\n- ⛑️ [Normalize](https://github.com/ehmicky/normalize-exception) invalid errors\n- 🔕 Log verbosity: [stack](#-stack), [nested errors](#-cause),\n  [properties](#-props)\n- 💥 Exception-safe\n\n# Screenshot\n\n<img alt=\"beautiful-error screenshot\" src=\"docs/screenshot.png\" width=\"500\"/>\n\n# Example\n\n## General\n\n```js\nimport beautifulError from 'beautiful-error'\n\ntry {\n  // ...\n} catch (error) {\n  const message = beautifulError(error)\n  console.error(message)\n}\n```\n\n## Error class-specific\n\n```js\nconst message = beautifulError(error, {\n  InputError: { icon: 'warning', stack: false },\n  DatabaseError: { icon: 'info', stack: false },\n  default: { icon: 'cross' },\n})\n```\n\n# Install\n\n```bash\nnpm install beautiful-error\n```\n\nThis package works in Node.js >=18.18.0.\n\nThis is an ES module. It must be loaded using\n[an `import` or `import()` statement](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),\nnot `require()`. If TypeScript is used, it must be configured to\n[output ES modules](https://www.typescriptlang.org/docs/handbook/esm-node.html),\nnot CommonJS.\n\n# API\n\n## beautifulError(error, options?)\n\n`error` `any`\\\n`options` [`Options?`](#options)\\\n_Return value_: `string`\n\nReturns `error` as a prettified string.\n\nThis never throws. Invalid errors are silently\n[normalized](https://github.com/ehmicky/normalize-exception).\n\n### Options\n\n#### 📕 stack\n\n_Type_: `boolean`\\\n_Default_: `true`\n\nWhether to show the error's stack trace.\n\n#### 🪏 cause\n\n_Type_: `boolean`\\\n_Default_: `true`\n\nWhether to show nested errors, i.e.\n[`error.cause`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause)\nand\n[`error.errors`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError/errors).\n\n#### 📢 props\n\n_Type_: `boolean`\\\n_Default_: `true`\n\nWhether to show the error's additional properties.\n\n#### 🖍️ colors\n\n_Type_: `boolean`\\\n_Default_: `true` in terminals, `false` otherwise\n\nWhether to colorize the error's message, stack trace and additional properties.\n\nQuoted strings in the error's message are printed in bold (for `\"...\"` and\n`'...'`) and in italic (for `` `...` ``).\n\n#### ❌ icon\n\n_Type_: `string`\\\n_Default_: `'cross'`\n\nIcon prepended to the error's name. The available values are listed\n[here](https://github.com/sindresorhus/figures/blob/main/readme.md#figures-1).\nCan be disabled by passing an empty string.\n\n#### 💄 header\n\n_Type_: `string`\\\n_Default_: `'red bold'`\n\nColor/style of the error's [icon](#-icon) and name. The available values are\nlisted [here](https://github.com/ehmicky/chalk-string#available-styles). Several\nstyles can be specified by using spaces. Can be disabled by passing an empty\nstring.\n\n#### 💣 classes\n\n_Type_: `object`\\\n_Default_: `{}`\n\nSpecify [different options per error class](#error-class-specific). The object:\n\n- Keys are either the\n  [`error.name`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name),\n  or `\"default\"` (used if no `error.name` matches)\n- Values are [options](#options) objects\n\n#### 🪛 custom\n\n_Type_: `string | symbol`\\\n_Default_: `beautiful`\n\nName of a method to map the output. That method must take the output as a string\nargument, transform it then return it.\n\n<!-- eslint-disable fp/no-class -->\n\n```js\nclass ExampleError extends Error {\n  beautiful(output) {\n    return output.replaceAll('secret', '***')\n  }\n}\n\nconst error = new ExampleError('Unknown value: secret')\nconst message = beautifulError(error) // 'Unknown value: ***'\n```\n\n# Related projects\n\n- [`modern-errors`](https://github.com/ehmicky/modern-errors): Handle errors in\n  a simple, stable, consistent way\n- [`modern-errors-beautiful`](https://github.com/ehmicky/modern-errors-beautiful):\n  Prettify errors messages and stacks\n- [`modern-errors-cli`](https://github.com/ehmicky/modern-errors-cli): Handle\n  errors in CLI modules\n- [`error-custom-class`](https://github.com/ehmicky/error-custom-class): Create\n  one error class\n- [`error-class-utils`](https://github.com/ehmicky/error-class-utils): Utilities\n  to properly create error classes\n- [`error-serializer`](https://github.com/ehmicky/error-serializer): Convert\n  errors to/from plain objects\n- [`normalize-exception`](https://github.com/ehmicky/normalize-exception):\n  Normalize exceptions/errors\n- [`is-error-instance`](https://github.com/ehmicky/is-error-instance): Check if\n  a value is an `Error` instance\n- [`merge-error-cause`](https://github.com/ehmicky/merge-error-cause): Merge an\n  error with its `cause`\n- [`set-error-class`](https://github.com/ehmicky/set-error-class): Properly\n  update an error's class\n- [`set-error-message`](https://github.com/ehmicky/set-error-message): Properly\n  update an error's message\n- [`wrap-error-message`](https://github.com/ehmicky/wrap-error-message):\n  Properly wrap an error's message\n- [`set-error-props`](https://github.com/ehmicky/set-error-props): Properly\n  update an error's properties\n- [`set-error-stack`](https://github.com/ehmicky/set-error-stack): Properly\n  update an error's stack\n- [`error-cause-polyfill`](https://github.com/ehmicky/error-cause-polyfill):\n  Polyfill `error.cause`\n- [`handle-cli-error`](https://github.com/ehmicky/handle-cli-error): 💣 Error\n  handler for CLI applications 💥\n- [`log-process-errors`](https://github.com/ehmicky/log-process-errors): Show\n  some ❤ to Node.js process errors\n- [`error-http-response`](https://github.com/ehmicky/error-http-response):\n  Create HTTP error responses\n- [`winston-error-format`](https://github.com/ehmicky/winston-error-format): Log\n  errors with Winston\n\n# Credits\n\nThe logo background was created by\n[dgim-studio](https://www.freepik.com/free-vector/comic-dynamic-elements-set_7997347.htm).\n\n# Support\n\nFor any question, _don't hesitate_ to [submit an issue on GitHub](../../issues).\n\nEveryone is welcome regardless of personal background. We enforce a\n[Code of conduct](CODE_OF_CONDUCT.md) in order to promote a positive and\ninclusive environment.\n\n# Contributing\n\nThis project was made with ❤️. The simplest way to give back is by starring and\nsharing it online.\n\nIf the documentation is unclear or has a typo, please click on the page's `Edit`\nbutton (pencil icon) and suggest a correction.\n\nIf you would like to help us fix a bug or add a new feature, please check our\n[guidelines](CONTRIBUTING.md). Pull requests are welcome!\n\n<!-- Thanks go to our wonderful contributors: -->\n\n<!-- ALL-CONTRIBUTORS-LIST:START -->\n<!-- prettier-ignore -->\n<!--\n<table><tr><td align=\"center\"><a href=\"https://fosstodon.org/@ehmicky\"><img src=\"https://avatars2.githubusercontent.com/u/8136211?v=4\" width=\"100px;\" alt=\"ehmicky\"/><br /><sub><b>ehmicky</b></sub></a><br /><a href=\"https://github.com/ehmicky/beautiful-error/commits?author=ehmicky\" title=\"Code\">💻</a> <a href=\"#design-ehmicky\" title=\"Design\">🎨</a> <a href=\"#ideas-ehmicky\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"https://github.com/ehmicky/beautiful-error/commits?author=ehmicky\" title=\"Documentation\">📖</a></td></tr></table>\n -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n","readmeFilename":"README.md"}