ignore-errors
Version:
Easily ignore specific promise errors
163 lines (130 loc) • 3.91 kB
Markdown
Easily ignore specific promise errors
```bash
npm i --save ignore-errors
```
```js
// esm
import ignore from 'ignore-errors'
// commonjs
const ignore = require('ignore-errors').default
```
Will ignore errors w/ property `foo` that equals the given literal value (string, number, anything except a regexp)
```js
import ignore from 'ignore-errors'
const err = new Error('boom')
err.foo = 'foobar'
const val = await Promise.reject(err).catch(ignore('foo', 'foobar'))
// gets here, no error thrown
console.log(val) // undefined
```
Will ignore errors w/ 'foo' and 'bar' given expected values
```js
import ignore from 'ignore-errors'
const err = new Error('boom')
err.foo = 1
err.bar = 2
const val = await Promise.reject(err).catch(ignore({ foo: 1, bar: 2 }))
// gets here, no error thrown
console.log(val) // undefined
```
Will ignore errors w/ property `foo` that have a value that matches the regexp
```js
import ignore from 'ignore-errors'
let val
const err = new Error('boom')
err.foo = 'foobar'
val = await Promise.reject(err).catch(ignore('foo', /foobar/))
// gets here, no error thrown
console.log(val) // undefined
// regexps work when passed when matching multiple properties too
const err = new Error('boom')
err.foo = 1
err.bar = 2
val = await Promise.reject(err).catch(ignore({ foo: /1/, bar: /2/ }))
// gets here, no error thrown
console.log(val) // undefined
```
Easily ignore errors with `messages`, `names`, `statuses`, `reasons` or `codes`
```js
import {
ignoreMessage,
ignoreName,
ignoreStatus,
ignoreReason,
ignoreCode,
} from 'ignore-errors'
let err
let val
// ignore errors with specific messages
err = new Error('boom')
val = await Promise.reject(err).catch(ignoreMessage('boom'))
val = await Promise.reject(err).catch(ignoreMessage(/boom/))
// gets here, no error thrown
// ignore errors with specific names
class SpecialError extends Error {
constructor(message) {
super(message)
this.name = this.constructor.name
}
}
err = new SpecialError('boom')
val = await Promise.reject(err).catch(ignoreName('SpecialError'))
val = await Promise.reject(err).catch(ignoreName(/SpecialError/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific statuses
err = new Error('boom')
err.status = 500
val = await Promise.reject(err).catch(ignoreStatus(500))
val = await Promise.reject(err).catch(ignoreStatus(/500/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific reasons
err = new Error('boom')
err.reason = 'BOOM_ERROR'
val = await Promise.reject(err).catch(ignoreReason('BOOM_ERROR'))
val = await Promise.reject(err).catch(ignoreReason(/BOOM_ERROR/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific codes
err = new Error('boom')
err.code = 10
val = await Promise.reject(err).catch(ignoreCode(10))
val = await Promise.reject(err).catch(ignoreCode(/10/))
// gets here, no error thrown
console.log(val) // undefined
```
```js
import {
ignoreAny,
ignoreMessage,
ignoreName,
ignoreStatus,
ignoreReason,
ignoreCode,
} from 'ignore-errors'
let err
let val
// ignore errors with specific messages
err = new Error('boom')
val = await Promise.reject(err).catch(
ignoreAny(
ignoreMessage('boom'),
ignoreMessage('bam'),
ignoreMessage('pow')
)
)
// gets here, no error thrown
console.log(val) // undefined
```
MIT