Package Exports
- set-error-props
Readme
Properly update an error's properties.
Features
- Prevents overriding error core properties (
name
,message
, etc.) - Protects against prototype pollution
- Merges with either high or low priority
- Copies another error's properties
- Strict TypeScript typing of the return value
Examples
Error core properties
import setErrorProps from 'set-error-props'
const error = new Error('one')
setErrorProps(error, { message: 'two' })
console.log(error.message) // 'one'
Prototype pollution
const error = new Error('one')
setErrorProps(error, { toString: () => 'injected' })
console.log(error.toString()) // 'Error: one'
console.log(Error.prototype.toString()) // 'Error'
Low priority merging
const error = new Error('message')
error.one = true
setErrorProps(error, { one: false, two: true }, { soft: true })
console.log(error.one) // true
console.log(error.two) // true
Error copy
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
Install
npm install set-error-props
This package is an ES module and must be loaded using
an import
or import()
statement,
not require()
.
API
setErrorProps(error, props, options?)
error
Error | object
props
Error | object
options
Options?
Return value: Error
Assigns props
to error
, then returns error
.
Options
Optional object with the following properties.
soft
Type: boolean
Default: false
Whether props
should have lower merging priority over error
or not.
Related projects
modern-errors
: Handle errors like it's 2022 🔮error-custom-class
: Create one error classerror-class-utils
: Utilities to properly create error classeserror-serializer
: Convert errors to/from plain objectsnormalize-exception
: Normalize exceptions/errorsis-error-instance
: Check if a value is anError
instanceset-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
Support
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.
Contributing
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!