meilisearch
Version:
The Meilisearch JS client for Node.js and the browser.
47 lines (40 loc) • 1.24 kB
text/typescript
import { FetchError } from '../types'
class MeiliSearchCommunicationError extends Error {
statusCode?: number
errno?: string
code?: string
stack?: string
constructor(
message: string,
body: Response | FetchError,
url?: string,
stack?: string
) {
super(message)
// Make errors comparison possible. ex: error instanceof MeiliSearchCommunicationError.
Object.setPrototypeOf(this, MeiliSearchCommunicationError.prototype)
this.name = 'MeiliSearchCommunicationError'
if (body instanceof Response) {
this.message = body.statusText
this.statusCode = body.status
}
if (body instanceof Error) {
this.errno = body.errno
this.code = body.code
}
if (stack) {
this.stack = stack
this.stack = this.stack?.replace(/(TypeError|FetchError)/, this.name)
this.stack = this.stack?.replace(
'Failed to fetch',
`request to ${url} failed, reason: connect ECONNREFUSED`
)
this.stack = this.stack?.replace('Not Found', `Not Found: ${url}`)
} else {
if (Error.captureStackTrace) {
Error.captureStackTrace(this, MeiliSearchCommunicationError)
}
}
}
}
export { MeiliSearchCommunicationError }