-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
40 lines (37 loc) · 875 Bytes
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* eslint-disable import/no-unused-modules */
/** Generic error options */
export interface GenericErrorInput {
code?: number | string
details?: Record<string, any>
}
/**
* Generic error
*
* Base usage
* ```ts
* new GenericError('failed')
* ```
*
* Usage with details
* ```ts
* new GenericError('api failed', {
* code: 'account_suspended',
* details: {
* xid: 'k1k2jn31kjnasxa9'
* }
* })
* ```
*/
export class GenericError extends Error {
code: GenericErrorInput['code']
details?: GenericErrorInput['details']
/** Generic error constructor */
constructor(message: string, input?: GenericErrorInput) {
super()
this.name = 'GenericError'
this.message = message.toString().toLowerCase()
this.code = input?.code ?? 'unknown'
this.details = input?.details
Object.setPrototypeOf(this, GenericError.prototype)
}
}