-
Notifications
You must be signed in to change notification settings - Fork 115
/
error.ts
133 lines (122 loc) · 2.99 KB
/
error.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* Base class for all Nylas API errors.
*/
export abstract class AbstractNylasApiError extends Error {
/**
* The unique identifier of the request.
*/
requestId?: string;
/**
* The HTTP status code of the error response.
*/
statusCode?: number;
}
/**
* Base class for all Nylas SDK errors.
*/
export abstract class AbstractNylasSdkError extends Error {}
/**
* Class representation of a general Nylas API error.
*/
export class NylasApiError extends AbstractNylasApiError
implements NylasApiErrorResponseData {
/**
* Error type.
*/
type: string;
/**
* Provider Error.
*/
providerError: any;
constructor(apiError: NylasApiErrorResponse, statusCode?: number) {
super(apiError.error.message);
this.type = apiError.error.type;
this.requestId = apiError.requestId;
this.providerError = apiError.error.providerError;
this.statusCode = statusCode;
}
}
/**
* Class representing an OAuth error returned by the Nylas API.
*/
export class NylasOAuthError extends AbstractNylasApiError
implements NylasOAuthErrorResponse {
/**
* Error type.
*/
error: string;
/**
* Error code used for referencing the docs, logs, and data stream.
*/
errorCode: number;
/**
* Human readable error description.
*/
errorDescription: string;
/**
* URL to the related documentation and troubleshooting regarding this error.
*/
errorUri: string;
constructor(apiError: NylasOAuthErrorResponse, statusCode?: number) {
super(apiError.errorDescription);
this.error = apiError.error;
this.errorCode = apiError.errorCode;
this.errorDescription = apiError.errorDescription;
this.errorUri = apiError.errorUri;
this.statusCode = statusCode;
}
}
/**
* Error thrown when the Nylas SDK times out before receiving a response from the server
*/
export class NylasSdkTimeoutError extends AbstractNylasSdkError {
/**
* The URL that timed out
*/
url: string;
/**
* The timeout value set in the Nylas SDK, in seconds
*/
timeout: number;
constructor(url: string, timeout: number) {
super('Nylas SDK timed out before receiving a response from the server.');
this.url = url;
this.timeout = timeout;
}
}
/**
* Interface representing the error response from the Nylas API.
*/
export interface NylasApiErrorResponse {
requestId: string;
error: NylasApiErrorResponseData;
}
/**
* Interface representing the error data within the response object.
*/
export interface NylasApiErrorResponseData {
type: string;
message: string;
providerError?: any;
}
/**
* Interface representing an OAuth error returned by the Nylas API.
*/
export interface NylasOAuthErrorResponse {
/**
* Error type.
*/
error: string;
/**
* Error code used for referencing the docs, logs, and data stream.
*/
errorCode: number;
/**
* Human readable error description.
*/
errorDescription: string;
/**
* URL to the related documentation and troubleshooting regarding this error.
*/
errorUri: string;
}