Properly update an error's properties.
- Prevents overriding error core properties (
name
,message
, etc.) - Protects against prototype pollution
- Merges deeply
- Merges with either high or low priority
- Copies another error's properties
- Strict, deep TypeScript typing of the return value
import setErrorProps from 'set-error-props'
const error = new Error('one')
setErrorProps(error, { message: 'two' })
console.log(error.message) // 'one'
const error = new Error('one')
setErrorProps(error, { toString: () => 'injected' })
console.log(error.toString()) // 'Error: one'
console.log(Error.prototype.toString()) // 'Error'
// Deep merges plain objects and arrays
const error = new Error('message')
error.prop = { one: [true] }
setErrorProps(error, { prop: { one: [false], two: true } })
console.log(error.prop) // { one: [true, false], two: true }
const error = new Error('message')
error.prop = { one: true }
setErrorProps(error, { prop: { one: false, two: true } }, { soft: true })
console.log(error.prop) // { one: true, two: true }
const error = new Error('one')
const secondError = new Error('two')
secondError.prop = true
setErrorProps(error, secondError)
console.log(error.message) // 'one'
console.log(error.prop) // true
npm install set-error-props
This package is an ES module and must be loaded using
an import
or import()
statement,
not require()
.
error
Error | object
props
Error | object
options
Options?
Return value: Error
Assigns props
to error
, then returns error
.
Optional object with the following properties.
Type: boolean
Default: false
Whether props
should have lower merging priority over error
or not.
modern-errors
: Handle errors like it's 2022 🔮error-custom-classes
: Create multiple error classeserror-custom-class
: Create one error classerror-class-utils
: Utilities to properly create error classeserror-serializer
: Convert errors to/from plain objectsnormalize-exception
: Normalize exceptions/errorsset-error-class
: Properly update an error's classset-error-message
: Properly update an error's messagemerge-error-cause
: Merge an error with itscause
error-cause-polyfill
: Polyfillerror.cause
handle-cli-error
: 💣 Error handler for CLI applications 💥log-process-errors
: Show some ❤ to Node.js process errors
For any question, don't hesitate to submit an issue on GitHub.
Everyone is welcome regardless of personal background. We enforce a Code of conduct in order to promote a positive and inclusive environment.
This project was made with ❤️. The simplest way to give back is by starring and sharing it online.
If the documentation is unclear or has a typo, please click on the page's Edit
button (pencil icon) and suggest a correction.
If you would like to help us fix a bug or add a new feature, please check our guidelines. Pull requests are welcome!