This package contains named errors and a function to create new named errors
It's recommend to add this package to peerDependencies to avoid duplicate versions of the package
which will cause instanceof checks to fail.
import { ValidationError } from '@shapeshiftoss/errors'
throw new ValidationError('txId cannot be null', { details: { name: 'txId', expected: 'not null', actual: 'null' }})import { createErrorClass } from '@shapeshiftoss/errors'
const MyError = createErrorClass<{ myDetails: string }>('MyError')
try {
throw new MyError('My cool error', { details: { myDetails: 'string' } })
} catch (e) {
assert.ok(e instanceof MyError)
}All errors support a code property. This property is designed to be used for internationalization
so that translated text can be displayed based on the code rather than on the message.
import { RateLimitError } from '@shapeshiftoss/errors'
const e = new RateLimitError('Something bad happened', { code: 'ERR_RATE_LIMIT_INFURA' })ForbiddenError - Authorized but not allowed access request resource
NotFoundError - Can not find requested entity
RateLimitError - API returned a 429 error
UnauthorizedError - Trying to access a protected resource
ValidationError - Invalid data provided