@sdkwork/sdk-common 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/token-manager.cjs +127 -0
- package/dist/auth/token-manager.cjs.map +1 -0
- package/dist/auth/token-manager.d.ts +80 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +127 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/auth.cjs +9 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.js +9 -0
- package/dist/auth.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/types.cjs +54 -0
- package/dist/core/types.cjs.map +1 -0
- package/dist/core/types.d.ts +187 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +54 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core.cjs +11 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.js +11 -0
- package/dist/core.js.map +1 -0
- package/dist/errors/index.d.ts +103 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors.cjs +286 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.js +286 -0
- package/dist/errors.js.map +1 -0
- package/dist/http/base-client.cjs +485 -0
- package/dist/http/base-client.cjs.map +1 -0
- package/dist/http/base-client.d.ts +98 -0
- package/dist/http/base-client.d.ts.map +1 -0
- package/dist/http/base-client.js +485 -0
- package/dist/http/base-client.js.map +1 -0
- package/dist/http/index.d.ts +2 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http.cjs +6 -0
- package/dist/http.cjs.map +1 -0
- package/dist/http.js +6 -0
- package/dist/http.js.map +1 -0
- package/dist/index.cjs +48 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/array.d.ts +146 -0
- package/dist/utils/array.d.ts.map +1 -0
- package/dist/utils/cache.cjs +80 -0
- package/dist/utils/cache.cjs.map +1 -0
- package/dist/utils/cache.d.ts +25 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +80 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/date.cjs +25 -0
- package/dist/utils/date.cjs.map +1 -0
- package/dist/utils/date.d.ts +127 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +25 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/encoding.cjs +678 -0
- package/dist/utils/encoding.cjs.map +1 -0
- package/dist/utils/encoding.d.ts +107 -0
- package/dist/utils/encoding.d.ts.map +1 -0
- package/dist/utils/encoding.js +679 -0
- package/dist/utils/encoding.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.cjs +110 -0
- package/dist/utils/logger.cjs.map +1 -0
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +110 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/object.d.ts +131 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/retry.cjs +73 -0
- package/dist/utils/retry.cjs.map +1 -0
- package/dist/utils/retry.d.ts +9 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +73 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/string.cjs +820 -0
- package/dist/utils/string.cjs.map +1 -0
- package/dist/utils/string.d.ts +160 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +821 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/url.d.ts +106 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/validation.d.ts +157 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils.cjs +52 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.js +46 -0
- package/dist/utils.js.map +1 -0
- package/package.json +80 -0
package/dist/errors.cjs
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
|
+
const types = require("./core/types.cjs");
|
|
7
|
+
class SdkError extends Error {
|
|
8
|
+
constructor(message, code = "UNKNOWN", httpStatus, options) {
|
|
9
|
+
super(message, { cause: options == null ? void 0 : options.cause });
|
|
10
|
+
__publicField(this, "code");
|
|
11
|
+
__publicField(this, "httpStatus");
|
|
12
|
+
__publicField(this, "details");
|
|
13
|
+
__publicField(this, "timestamp");
|
|
14
|
+
__publicField(this, "traceId");
|
|
15
|
+
__publicField(this, "metadata");
|
|
16
|
+
this.name = this.constructor.name;
|
|
17
|
+
this.code = code;
|
|
18
|
+
this.httpStatus = httpStatus;
|
|
19
|
+
this.details = options == null ? void 0 : options.details;
|
|
20
|
+
this.timestamp = Date.now();
|
|
21
|
+
this.traceId = options == null ? void 0 : options.traceId;
|
|
22
|
+
this.metadata = options == null ? void 0 : options.metadata;
|
|
23
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
24
|
+
}
|
|
25
|
+
static fromApiResult(result, httpStatus) {
|
|
26
|
+
const code = String(result.code);
|
|
27
|
+
const message = result.msg || result.message || "Unknown error";
|
|
28
|
+
switch (code) {
|
|
29
|
+
case "400":
|
|
30
|
+
case "4000":
|
|
31
|
+
return new ValidationError(message);
|
|
32
|
+
case "401":
|
|
33
|
+
case "4010":
|
|
34
|
+
return new AuthenticationError(message);
|
|
35
|
+
case "403":
|
|
36
|
+
case "4030":
|
|
37
|
+
return new ForbiddenError(message);
|
|
38
|
+
case "404":
|
|
39
|
+
case "4040":
|
|
40
|
+
return new NotFoundError(message);
|
|
41
|
+
case "409":
|
|
42
|
+
case "4090":
|
|
43
|
+
return new ConflictError(message);
|
|
44
|
+
case "429":
|
|
45
|
+
case "4290":
|
|
46
|
+
return new RateLimitError(message);
|
|
47
|
+
default:
|
|
48
|
+
if (code.startsWith("5")) {
|
|
49
|
+
return new ServerError(message, httpStatus ?? types.HTTP_STATUS.INTERNAL_SERVER_ERROR);
|
|
50
|
+
}
|
|
51
|
+
return new BusinessError(message, result.code, result.data);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
static fromHttpStatus(status, message) {
|
|
55
|
+
const defaultMessage = message ?? `HTTP Error ${status}`;
|
|
56
|
+
switch (status) {
|
|
57
|
+
case types.HTTP_STATUS.BAD_REQUEST:
|
|
58
|
+
case types.HTTP_STATUS.UNPROCESSABLE_ENTITY:
|
|
59
|
+
return new ValidationError(defaultMessage);
|
|
60
|
+
case types.HTTP_STATUS.UNAUTHORIZED:
|
|
61
|
+
return new AuthenticationError(defaultMessage);
|
|
62
|
+
case types.HTTP_STATUS.FORBIDDEN:
|
|
63
|
+
return new ForbiddenError(defaultMessage);
|
|
64
|
+
case types.HTTP_STATUS.NOT_FOUND:
|
|
65
|
+
return new NotFoundError(defaultMessage);
|
|
66
|
+
case types.HTTP_STATUS.METHOD_NOT_ALLOWED:
|
|
67
|
+
return new ValidationError(defaultMessage);
|
|
68
|
+
case types.HTTP_STATUS.CONFLICT:
|
|
69
|
+
return new ConflictError(defaultMessage);
|
|
70
|
+
case types.HTTP_STATUS.TOO_MANY_REQUESTS:
|
|
71
|
+
return new RateLimitError(defaultMessage);
|
|
72
|
+
case types.HTTP_STATUS.INTERNAL_SERVER_ERROR:
|
|
73
|
+
return new ServerError(defaultMessage, status);
|
|
74
|
+
case types.HTTP_STATUS.BAD_GATEWAY:
|
|
75
|
+
return new BadGatewayError(defaultMessage);
|
|
76
|
+
case types.HTTP_STATUS.SERVICE_UNAVAILABLE:
|
|
77
|
+
return new ServiceUnavailableError(defaultMessage);
|
|
78
|
+
case types.HTTP_STATUS.GATEWAY_TIMEOUT:
|
|
79
|
+
return new GatewayTimeoutError(defaultMessage);
|
|
80
|
+
default:
|
|
81
|
+
if (status >= 500) {
|
|
82
|
+
return new ServerError(defaultMessage, status);
|
|
83
|
+
}
|
|
84
|
+
return new NetworkError(defaultMessage);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
toJSON() {
|
|
88
|
+
return {
|
|
89
|
+
name: this.name,
|
|
90
|
+
message: this.message,
|
|
91
|
+
code: this.code,
|
|
92
|
+
httpStatus: this.httpStatus,
|
|
93
|
+
details: this.details,
|
|
94
|
+
timestamp: this.timestamp,
|
|
95
|
+
traceId: this.traceId,
|
|
96
|
+
metadata: this.metadata
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
toString() {
|
|
100
|
+
return `${this.name}: ${this.message} (code: ${this.code})`;
|
|
101
|
+
}
|
|
102
|
+
isRetryable() {
|
|
103
|
+
return isRetryableError(this);
|
|
104
|
+
}
|
|
105
|
+
isAuthError() {
|
|
106
|
+
return this.code === "UNAUTHORIZED" || this.code === "TOKEN_EXPIRED" || this.code === "TOKEN_INVALID";
|
|
107
|
+
}
|
|
108
|
+
isNetworkError() {
|
|
109
|
+
return this.code === "NETWORK_ERROR" || this.code === "TIMEOUT";
|
|
110
|
+
}
|
|
111
|
+
isClientError() {
|
|
112
|
+
return this.httpStatus !== void 0 && this.httpStatus >= 400 && this.httpStatus < 500;
|
|
113
|
+
}
|
|
114
|
+
isServerError() {
|
|
115
|
+
return this.httpStatus !== void 0 && this.httpStatus >= 500;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
class NetworkError extends SdkError {
|
|
119
|
+
constructor(message = "Network error", options) {
|
|
120
|
+
super(message, "NETWORK_ERROR", void 0, options);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
class TimeoutError extends SdkError {
|
|
124
|
+
constructor(message = "Request timeout", timeout, options) {
|
|
125
|
+
super(message, "TIMEOUT", void 0, options);
|
|
126
|
+
__publicField(this, "timeout");
|
|
127
|
+
this.timeout = timeout;
|
|
128
|
+
}
|
|
129
|
+
toJSON() {
|
|
130
|
+
return { ...super.toJSON(), timeout: this.timeout };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
class CancelledError extends SdkError {
|
|
134
|
+
constructor(message = "Request cancelled", options) {
|
|
135
|
+
super(message, "CANCELLED", void 0, options);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
class AuthenticationError extends SdkError {
|
|
139
|
+
constructor(message = "Authentication failed", options) {
|
|
140
|
+
super(message, "UNAUTHORIZED", types.HTTP_STATUS.UNAUTHORIZED, options);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
class TokenExpiredError extends AuthenticationError {
|
|
144
|
+
constructor(message = "Token expired", options) {
|
|
145
|
+
super(message, options);
|
|
146
|
+
this.code = "TOKEN_EXPIRED";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
class TokenInvalidError extends AuthenticationError {
|
|
150
|
+
constructor(message = "Invalid token", options) {
|
|
151
|
+
super(message, options);
|
|
152
|
+
this.code = "TOKEN_INVALID";
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
class ForbiddenError extends SdkError {
|
|
156
|
+
constructor(message = "Access forbidden", options) {
|
|
157
|
+
super(message, "FORBIDDEN", types.HTTP_STATUS.FORBIDDEN, options);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
class NotFoundError extends SdkError {
|
|
161
|
+
constructor(message = "Resource not found", options) {
|
|
162
|
+
super(message, "NOT_FOUND", types.HTTP_STATUS.NOT_FOUND, options);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
class ValidationError extends SdkError {
|
|
166
|
+
constructor(message = "Validation error", details, options) {
|
|
167
|
+
super(message, "VALIDATION_ERROR", types.HTTP_STATUS.BAD_REQUEST, { ...options, details });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
class ConflictError extends SdkError {
|
|
171
|
+
constructor(message = "Resource conflict", options) {
|
|
172
|
+
super(message, "CONFLICT", types.HTTP_STATUS.CONFLICT, options);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
class MethodNotAllowedError extends SdkError {
|
|
176
|
+
constructor(message = "Method not allowed", allowedMethods, options) {
|
|
177
|
+
super(message, "VALIDATION_ERROR", types.HTTP_STATUS.METHOD_NOT_ALLOWED, options);
|
|
178
|
+
__publicField(this, "allowedMethods");
|
|
179
|
+
this.allowedMethods = allowedMethods;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
class RateLimitError extends SdkError {
|
|
183
|
+
constructor(message = "Rate limit exceeded", retryAfter, options) {
|
|
184
|
+
super(message, "RATE_LIMIT", types.HTTP_STATUS.TOO_MANY_REQUESTS, options);
|
|
185
|
+
__publicField(this, "retryAfter");
|
|
186
|
+
this.retryAfter = retryAfter;
|
|
187
|
+
}
|
|
188
|
+
toJSON() {
|
|
189
|
+
return { ...super.toJSON(), retryAfter: this.retryAfter };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
class ServerError extends SdkError {
|
|
193
|
+
constructor(message = "Server error", httpStatus = types.HTTP_STATUS.INTERNAL_SERVER_ERROR, options) {
|
|
194
|
+
super(message, "SERVER_ERROR", httpStatus, options);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
class BadGatewayError extends ServerError {
|
|
198
|
+
constructor(message = "Bad gateway", options) {
|
|
199
|
+
super(message, types.HTTP_STATUS.BAD_GATEWAY, options);
|
|
200
|
+
this.code = "BAD_GATEWAY";
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
class ServiceUnavailableError extends ServerError {
|
|
204
|
+
constructor(message = "Service unavailable", options) {
|
|
205
|
+
super(message, types.HTTP_STATUS.SERVICE_UNAVAILABLE, options);
|
|
206
|
+
this.code = "SERVICE_UNAVAILABLE";
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
class GatewayTimeoutError extends ServerError {
|
|
210
|
+
constructor(message = "Gateway timeout", options) {
|
|
211
|
+
super(message, types.HTTP_STATUS.GATEWAY_TIMEOUT, options);
|
|
212
|
+
this.code = "GATEWAY_TIMEOUT";
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
class BusinessError extends SdkError {
|
|
216
|
+
constructor(message, code, data, options) {
|
|
217
|
+
super(message, "BUSINESS_ERROR", void 0, options);
|
|
218
|
+
__publicField(this, "businessCode");
|
|
219
|
+
__publicField(this, "data");
|
|
220
|
+
this.businessCode = code;
|
|
221
|
+
this.data = data;
|
|
222
|
+
}
|
|
223
|
+
toJSON() {
|
|
224
|
+
return { ...super.toJSON(), businessCode: this.businessCode, data: this.data };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function isSdkError(error) {
|
|
228
|
+
return error instanceof SdkError;
|
|
229
|
+
}
|
|
230
|
+
function isNetworkError(error) {
|
|
231
|
+
return error instanceof NetworkError;
|
|
232
|
+
}
|
|
233
|
+
function isTimeoutError(error) {
|
|
234
|
+
return error instanceof TimeoutError;
|
|
235
|
+
}
|
|
236
|
+
function isCancelledError(error) {
|
|
237
|
+
return error instanceof CancelledError;
|
|
238
|
+
}
|
|
239
|
+
function isAuthError(error) {
|
|
240
|
+
return error instanceof AuthenticationError;
|
|
241
|
+
}
|
|
242
|
+
function isValidationError(error) {
|
|
243
|
+
return error instanceof ValidationError;
|
|
244
|
+
}
|
|
245
|
+
function isRateLimitError(error) {
|
|
246
|
+
return error instanceof RateLimitError;
|
|
247
|
+
}
|
|
248
|
+
function isServerError(error) {
|
|
249
|
+
return error instanceof ServerError;
|
|
250
|
+
}
|
|
251
|
+
function isBusinessError(error) {
|
|
252
|
+
return error instanceof BusinessError;
|
|
253
|
+
}
|
|
254
|
+
function isRetryableError(error) {
|
|
255
|
+
if (!(error instanceof SdkError)) return false;
|
|
256
|
+
return error instanceof NetworkError || error instanceof TimeoutError || error instanceof ServerError || error instanceof RateLimitError || error instanceof BadGatewayError || error instanceof ServiceUnavailableError || error instanceof GatewayTimeoutError;
|
|
257
|
+
}
|
|
258
|
+
exports.AuthenticationError = AuthenticationError;
|
|
259
|
+
exports.BadGatewayError = BadGatewayError;
|
|
260
|
+
exports.BusinessError = BusinessError;
|
|
261
|
+
exports.CancelledError = CancelledError;
|
|
262
|
+
exports.ConflictError = ConflictError;
|
|
263
|
+
exports.ForbiddenError = ForbiddenError;
|
|
264
|
+
exports.GatewayTimeoutError = GatewayTimeoutError;
|
|
265
|
+
exports.MethodNotAllowedError = MethodNotAllowedError;
|
|
266
|
+
exports.NetworkError = NetworkError;
|
|
267
|
+
exports.NotFoundError = NotFoundError;
|
|
268
|
+
exports.RateLimitError = RateLimitError;
|
|
269
|
+
exports.SdkError = SdkError;
|
|
270
|
+
exports.ServerError = ServerError;
|
|
271
|
+
exports.ServiceUnavailableError = ServiceUnavailableError;
|
|
272
|
+
exports.TimeoutError = TimeoutError;
|
|
273
|
+
exports.TokenExpiredError = TokenExpiredError;
|
|
274
|
+
exports.TokenInvalidError = TokenInvalidError;
|
|
275
|
+
exports.ValidationError = ValidationError;
|
|
276
|
+
exports.isAuthError = isAuthError;
|
|
277
|
+
exports.isBusinessError = isBusinessError;
|
|
278
|
+
exports.isCancelledError = isCancelledError;
|
|
279
|
+
exports.isNetworkError = isNetworkError;
|
|
280
|
+
exports.isRateLimitError = isRateLimitError;
|
|
281
|
+
exports.isRetryableError = isRetryableError;
|
|
282
|
+
exports.isSdkError = isSdkError;
|
|
283
|
+
exports.isServerError = isServerError;
|
|
284
|
+
exports.isTimeoutError = isTimeoutError;
|
|
285
|
+
exports.isValidationError = isValidationError;
|
|
286
|
+
//# sourceMappingURL=errors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.cjs","sources":["../src/errors/index.ts"],"sourcesContent":["import type { ApiResult } from '../core/types';\nimport { HTTP_STATUS } from '../core/types';\n\nexport type ErrorCode = \n | 'UNKNOWN'\n | 'NETWORK_ERROR'\n | 'TIMEOUT'\n | 'CANCELLED'\n | 'UNAUTHORIZED'\n | 'FORBIDDEN'\n | 'NOT_FOUND'\n | 'VALIDATION_ERROR'\n | 'RATE_LIMIT'\n | 'SERVER_ERROR'\n | 'TOKEN_EXPIRED'\n | 'TOKEN_INVALID'\n | 'BUSINESS_ERROR'\n | 'CONFLICT'\n | 'SERVICE_UNAVAILABLE'\n | 'BAD_GATEWAY'\n | 'GATEWAY_TIMEOUT';\n\nexport interface ErrorDetail {\n field?: string;\n message?: string;\n value?: unknown;\n code?: string;\n constraint?: string;\n}\n\nexport interface ErrorOptions {\n cause?: Error;\n details?: ErrorDetail[];\n traceId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport class SdkError extends Error {\n public readonly code: ErrorCode;\n public readonly httpStatus?: number;\n public readonly details?: ErrorDetail[];\n public readonly timestamp: number;\n public readonly traceId?: string;\n public readonly metadata?: Record<string, unknown>;\n\n constructor(\n message: string,\n code: ErrorCode = 'UNKNOWN',\n httpStatus?: number,\n options?: ErrorOptions\n ) {\n super(message, { cause: options?.cause });\n this.name = this.constructor.name;\n this.code = code;\n this.httpStatus = httpStatus;\n this.details = options?.details;\n this.timestamp = Date.now();\n this.traceId = options?.traceId;\n this.metadata = options?.metadata;\n \n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static fromApiResult(result: ApiResult, httpStatus?: number): SdkError {\n const code = String(result.code);\n const message = result.msg || result.message || 'Unknown error';\n \n switch (code) {\n case '400':\n case '4000':\n return new ValidationError(message);\n case '401':\n case '4010':\n return new AuthenticationError(message);\n case '403':\n case '4030':\n return new ForbiddenError(message);\n case '404':\n case '4040':\n return new NotFoundError(message);\n case '409':\n case '4090':\n return new ConflictError(message);\n case '429':\n case '4290':\n return new RateLimitError(message);\n default:\n if (code.startsWith('5')) {\n return new ServerError(message, httpStatus ?? HTTP_STATUS.INTERNAL_SERVER_ERROR);\n }\n return new BusinessError(message, result.code, result.data);\n }\n }\n\n static fromHttpStatus(status: number, message?: string): SdkError {\n const defaultMessage = message ?? `HTTP Error ${status}`;\n \n switch (status) {\n case HTTP_STATUS.BAD_REQUEST:\n case HTTP_STATUS.UNPROCESSABLE_ENTITY:\n return new ValidationError(defaultMessage);\n case HTTP_STATUS.UNAUTHORIZED:\n return new AuthenticationError(defaultMessage);\n case HTTP_STATUS.FORBIDDEN:\n return new ForbiddenError(defaultMessage);\n case HTTP_STATUS.NOT_FOUND:\n return new NotFoundError(defaultMessage);\n case HTTP_STATUS.METHOD_NOT_ALLOWED:\n return new ValidationError(defaultMessage);\n case HTTP_STATUS.CONFLICT:\n return new ConflictError(defaultMessage);\n case HTTP_STATUS.TOO_MANY_REQUESTS:\n return new RateLimitError(defaultMessage);\n case HTTP_STATUS.INTERNAL_SERVER_ERROR:\n return new ServerError(defaultMessage, status);\n case HTTP_STATUS.BAD_GATEWAY:\n return new BadGatewayError(defaultMessage);\n case HTTP_STATUS.SERVICE_UNAVAILABLE:\n return new ServiceUnavailableError(defaultMessage);\n case HTTP_STATUS.GATEWAY_TIMEOUT:\n return new GatewayTimeoutError(defaultMessage);\n default:\n if (status >= 500) {\n return new ServerError(defaultMessage, status);\n }\n return new NetworkError(defaultMessage);\n }\n }\n\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n httpStatus: this.httpStatus,\n details: this.details,\n timestamp: this.timestamp,\n traceId: this.traceId,\n metadata: this.metadata,\n };\n }\n\n toString(): string {\n return `${this.name}: ${this.message} (code: ${this.code})`;\n }\n\n isRetryable(): boolean {\n return isRetryableError(this);\n }\n\n isAuthError(): boolean {\n return this.code === 'UNAUTHORIZED' || this.code === 'TOKEN_EXPIRED' || this.code === 'TOKEN_INVALID';\n }\n\n isNetworkError(): boolean {\n return this.code === 'NETWORK_ERROR' || this.code === 'TIMEOUT';\n }\n\n isClientError(): boolean {\n return this.httpStatus !== undefined && this.httpStatus >= 400 && this.httpStatus < 500;\n }\n\n isServerError(): boolean {\n return this.httpStatus !== undefined && this.httpStatus >= 500;\n }\n}\n\nexport class NetworkError extends SdkError {\n constructor(message: string = 'Network error', options?: ErrorOptions) {\n super(message, 'NETWORK_ERROR', undefined, options);\n }\n}\n\nexport class TimeoutError extends SdkError {\n public readonly timeout?: number;\n\n constructor(message: string = 'Request timeout', timeout?: number, options?: ErrorOptions) {\n super(message, 'TIMEOUT', undefined, options);\n this.timeout = timeout;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), timeout: this.timeout };\n }\n}\n\nexport class CancelledError extends SdkError {\n constructor(message: string = 'Request cancelled', options?: ErrorOptions) {\n super(message, 'CANCELLED', undefined, options);\n }\n}\n\nexport class AuthenticationError extends SdkError {\n constructor(message: string = 'Authentication failed', options?: ErrorOptions) {\n super(message, 'UNAUTHORIZED', HTTP_STATUS.UNAUTHORIZED, options);\n }\n}\n\nexport class TokenExpiredError extends AuthenticationError {\n constructor(message: string = 'Token expired', options?: ErrorOptions) {\n super(message, options);\n (this as { code: ErrorCode }).code = 'TOKEN_EXPIRED';\n }\n}\n\nexport class TokenInvalidError extends AuthenticationError {\n constructor(message: string = 'Invalid token', options?: ErrorOptions) {\n super(message, options);\n (this as { code: ErrorCode }).code = 'TOKEN_INVALID';\n }\n}\n\nexport class ForbiddenError extends SdkError {\n constructor(message: string = 'Access forbidden', options?: ErrorOptions) {\n super(message, 'FORBIDDEN', HTTP_STATUS.FORBIDDEN, options);\n }\n}\n\nexport class NotFoundError extends SdkError {\n constructor(message: string = 'Resource not found', options?: ErrorOptions) {\n super(message, 'NOT_FOUND', HTTP_STATUS.NOT_FOUND, options);\n }\n}\n\nexport class ValidationError extends SdkError {\n constructor(message: string = 'Validation error', details?: ErrorDetail[], options?: ErrorOptions) {\n super(message, 'VALIDATION_ERROR', HTTP_STATUS.BAD_REQUEST, { ...options, details });\n }\n}\n\nexport class ConflictError extends SdkError {\n constructor(message: string = 'Resource conflict', options?: ErrorOptions) {\n super(message, 'CONFLICT', HTTP_STATUS.CONFLICT, options);\n }\n}\n\nexport class MethodNotAllowedError extends SdkError {\n public readonly allowedMethods?: string[];\n\n constructor(message: string = 'Method not allowed', allowedMethods?: string[], options?: ErrorOptions) {\n super(message, 'VALIDATION_ERROR', HTTP_STATUS.METHOD_NOT_ALLOWED, options);\n this.allowedMethods = allowedMethods;\n }\n}\n\nexport class RateLimitError extends SdkError {\n public readonly retryAfter?: number;\n\n constructor(message: string = 'Rate limit exceeded', retryAfter?: number, options?: ErrorOptions) {\n super(message, 'RATE_LIMIT', HTTP_STATUS.TOO_MANY_REQUESTS, options);\n this.retryAfter = retryAfter;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), retryAfter: this.retryAfter };\n }\n}\n\nexport class ServerError extends SdkError {\n constructor(message: string = 'Server error', httpStatus: number = HTTP_STATUS.INTERNAL_SERVER_ERROR, options?: ErrorOptions) {\n super(message, 'SERVER_ERROR', httpStatus, options);\n }\n}\n\nexport class BadGatewayError extends ServerError {\n constructor(message: string = 'Bad gateway', options?: ErrorOptions) {\n super(message, HTTP_STATUS.BAD_GATEWAY, options);\n (this as { code: ErrorCode }).code = 'BAD_GATEWAY';\n }\n}\n\nexport class ServiceUnavailableError extends ServerError {\n constructor(message: string = 'Service unavailable', options?: ErrorOptions) {\n super(message, HTTP_STATUS.SERVICE_UNAVAILABLE, options);\n (this as { code: ErrorCode }).code = 'SERVICE_UNAVAILABLE';\n }\n}\n\nexport class GatewayTimeoutError extends ServerError {\n constructor(message: string = 'Gateway timeout', options?: ErrorOptions) {\n super(message, HTTP_STATUS.GATEWAY_TIMEOUT, options);\n (this as { code: ErrorCode }).code = 'GATEWAY_TIMEOUT';\n }\n}\n\nexport class BusinessError extends SdkError {\n public readonly businessCode?: string | number;\n public readonly data?: unknown;\n\n constructor(message: string, code?: string | number, data?: unknown, options?: ErrorOptions) {\n super(message, 'BUSINESS_ERROR', undefined, options);\n this.businessCode = code;\n this.data = data;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), businessCode: this.businessCode, data: this.data };\n }\n}\n\nexport function isSdkError(error: unknown): error is SdkError {\n return error instanceof SdkError;\n}\n\nexport function isNetworkError(error: unknown): error is NetworkError {\n return error instanceof NetworkError;\n}\n\nexport function isTimeoutError(error: unknown): error is TimeoutError {\n return error instanceof TimeoutError;\n}\n\nexport function isCancelledError(error: unknown): error is CancelledError {\n return error instanceof CancelledError;\n}\n\nexport function isAuthError(error: unknown): error is AuthenticationError {\n return error instanceof AuthenticationError;\n}\n\nexport function isValidationError(error: unknown): error is ValidationError {\n return error instanceof ValidationError;\n}\n\nexport function isRateLimitError(error: unknown): error is RateLimitError {\n return error instanceof RateLimitError;\n}\n\nexport function isServerError(error: unknown): error is ServerError {\n return error instanceof ServerError;\n}\n\nexport function isBusinessError(error: unknown): error is BusinessError {\n return error instanceof BusinessError;\n}\n\nexport function isRetryableError(error: unknown): boolean {\n if (!(error instanceof SdkError)) return false;\n \n return (\n error instanceof NetworkError ||\n error instanceof TimeoutError ||\n error instanceof ServerError ||\n error instanceof RateLimitError ||\n error instanceof BadGatewayError ||\n error instanceof ServiceUnavailableError ||\n error instanceof GatewayTimeoutError\n );\n}\n"],"names":["HTTP_STATUS"],"mappings":"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"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
import { HTTP_STATUS } from "./core/types.js";
|
|
5
|
+
class SdkError extends Error {
|
|
6
|
+
constructor(message, code = "UNKNOWN", httpStatus, options) {
|
|
7
|
+
super(message, { cause: options == null ? void 0 : options.cause });
|
|
8
|
+
__publicField(this, "code");
|
|
9
|
+
__publicField(this, "httpStatus");
|
|
10
|
+
__publicField(this, "details");
|
|
11
|
+
__publicField(this, "timestamp");
|
|
12
|
+
__publicField(this, "traceId");
|
|
13
|
+
__publicField(this, "metadata");
|
|
14
|
+
this.name = this.constructor.name;
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.httpStatus = httpStatus;
|
|
17
|
+
this.details = options == null ? void 0 : options.details;
|
|
18
|
+
this.timestamp = Date.now();
|
|
19
|
+
this.traceId = options == null ? void 0 : options.traceId;
|
|
20
|
+
this.metadata = options == null ? void 0 : options.metadata;
|
|
21
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
22
|
+
}
|
|
23
|
+
static fromApiResult(result, httpStatus) {
|
|
24
|
+
const code = String(result.code);
|
|
25
|
+
const message = result.msg || result.message || "Unknown error";
|
|
26
|
+
switch (code) {
|
|
27
|
+
case "400":
|
|
28
|
+
case "4000":
|
|
29
|
+
return new ValidationError(message);
|
|
30
|
+
case "401":
|
|
31
|
+
case "4010":
|
|
32
|
+
return new AuthenticationError(message);
|
|
33
|
+
case "403":
|
|
34
|
+
case "4030":
|
|
35
|
+
return new ForbiddenError(message);
|
|
36
|
+
case "404":
|
|
37
|
+
case "4040":
|
|
38
|
+
return new NotFoundError(message);
|
|
39
|
+
case "409":
|
|
40
|
+
case "4090":
|
|
41
|
+
return new ConflictError(message);
|
|
42
|
+
case "429":
|
|
43
|
+
case "4290":
|
|
44
|
+
return new RateLimitError(message);
|
|
45
|
+
default:
|
|
46
|
+
if (code.startsWith("5")) {
|
|
47
|
+
return new ServerError(message, httpStatus ?? HTTP_STATUS.INTERNAL_SERVER_ERROR);
|
|
48
|
+
}
|
|
49
|
+
return new BusinessError(message, result.code, result.data);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
static fromHttpStatus(status, message) {
|
|
53
|
+
const defaultMessage = message ?? `HTTP Error ${status}`;
|
|
54
|
+
switch (status) {
|
|
55
|
+
case HTTP_STATUS.BAD_REQUEST:
|
|
56
|
+
case HTTP_STATUS.UNPROCESSABLE_ENTITY:
|
|
57
|
+
return new ValidationError(defaultMessage);
|
|
58
|
+
case HTTP_STATUS.UNAUTHORIZED:
|
|
59
|
+
return new AuthenticationError(defaultMessage);
|
|
60
|
+
case HTTP_STATUS.FORBIDDEN:
|
|
61
|
+
return new ForbiddenError(defaultMessage);
|
|
62
|
+
case HTTP_STATUS.NOT_FOUND:
|
|
63
|
+
return new NotFoundError(defaultMessage);
|
|
64
|
+
case HTTP_STATUS.METHOD_NOT_ALLOWED:
|
|
65
|
+
return new ValidationError(defaultMessage);
|
|
66
|
+
case HTTP_STATUS.CONFLICT:
|
|
67
|
+
return new ConflictError(defaultMessage);
|
|
68
|
+
case HTTP_STATUS.TOO_MANY_REQUESTS:
|
|
69
|
+
return new RateLimitError(defaultMessage);
|
|
70
|
+
case HTTP_STATUS.INTERNAL_SERVER_ERROR:
|
|
71
|
+
return new ServerError(defaultMessage, status);
|
|
72
|
+
case HTTP_STATUS.BAD_GATEWAY:
|
|
73
|
+
return new BadGatewayError(defaultMessage);
|
|
74
|
+
case HTTP_STATUS.SERVICE_UNAVAILABLE:
|
|
75
|
+
return new ServiceUnavailableError(defaultMessage);
|
|
76
|
+
case HTTP_STATUS.GATEWAY_TIMEOUT:
|
|
77
|
+
return new GatewayTimeoutError(defaultMessage);
|
|
78
|
+
default:
|
|
79
|
+
if (status >= 500) {
|
|
80
|
+
return new ServerError(defaultMessage, status);
|
|
81
|
+
}
|
|
82
|
+
return new NetworkError(defaultMessage);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
toJSON() {
|
|
86
|
+
return {
|
|
87
|
+
name: this.name,
|
|
88
|
+
message: this.message,
|
|
89
|
+
code: this.code,
|
|
90
|
+
httpStatus: this.httpStatus,
|
|
91
|
+
details: this.details,
|
|
92
|
+
timestamp: this.timestamp,
|
|
93
|
+
traceId: this.traceId,
|
|
94
|
+
metadata: this.metadata
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
toString() {
|
|
98
|
+
return `${this.name}: ${this.message} (code: ${this.code})`;
|
|
99
|
+
}
|
|
100
|
+
isRetryable() {
|
|
101
|
+
return isRetryableError(this);
|
|
102
|
+
}
|
|
103
|
+
isAuthError() {
|
|
104
|
+
return this.code === "UNAUTHORIZED" || this.code === "TOKEN_EXPIRED" || this.code === "TOKEN_INVALID";
|
|
105
|
+
}
|
|
106
|
+
isNetworkError() {
|
|
107
|
+
return this.code === "NETWORK_ERROR" || this.code === "TIMEOUT";
|
|
108
|
+
}
|
|
109
|
+
isClientError() {
|
|
110
|
+
return this.httpStatus !== void 0 && this.httpStatus >= 400 && this.httpStatus < 500;
|
|
111
|
+
}
|
|
112
|
+
isServerError() {
|
|
113
|
+
return this.httpStatus !== void 0 && this.httpStatus >= 500;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
class NetworkError extends SdkError {
|
|
117
|
+
constructor(message = "Network error", options) {
|
|
118
|
+
super(message, "NETWORK_ERROR", void 0, options);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
class TimeoutError extends SdkError {
|
|
122
|
+
constructor(message = "Request timeout", timeout, options) {
|
|
123
|
+
super(message, "TIMEOUT", void 0, options);
|
|
124
|
+
__publicField(this, "timeout");
|
|
125
|
+
this.timeout = timeout;
|
|
126
|
+
}
|
|
127
|
+
toJSON() {
|
|
128
|
+
return { ...super.toJSON(), timeout: this.timeout };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
class CancelledError extends SdkError {
|
|
132
|
+
constructor(message = "Request cancelled", options) {
|
|
133
|
+
super(message, "CANCELLED", void 0, options);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
class AuthenticationError extends SdkError {
|
|
137
|
+
constructor(message = "Authentication failed", options) {
|
|
138
|
+
super(message, "UNAUTHORIZED", HTTP_STATUS.UNAUTHORIZED, options);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
class TokenExpiredError extends AuthenticationError {
|
|
142
|
+
constructor(message = "Token expired", options) {
|
|
143
|
+
super(message, options);
|
|
144
|
+
this.code = "TOKEN_EXPIRED";
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
class TokenInvalidError extends AuthenticationError {
|
|
148
|
+
constructor(message = "Invalid token", options) {
|
|
149
|
+
super(message, options);
|
|
150
|
+
this.code = "TOKEN_INVALID";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
class ForbiddenError extends SdkError {
|
|
154
|
+
constructor(message = "Access forbidden", options) {
|
|
155
|
+
super(message, "FORBIDDEN", HTTP_STATUS.FORBIDDEN, options);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
class NotFoundError extends SdkError {
|
|
159
|
+
constructor(message = "Resource not found", options) {
|
|
160
|
+
super(message, "NOT_FOUND", HTTP_STATUS.NOT_FOUND, options);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
class ValidationError extends SdkError {
|
|
164
|
+
constructor(message = "Validation error", details, options) {
|
|
165
|
+
super(message, "VALIDATION_ERROR", HTTP_STATUS.BAD_REQUEST, { ...options, details });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
class ConflictError extends SdkError {
|
|
169
|
+
constructor(message = "Resource conflict", options) {
|
|
170
|
+
super(message, "CONFLICT", HTTP_STATUS.CONFLICT, options);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
class MethodNotAllowedError extends SdkError {
|
|
174
|
+
constructor(message = "Method not allowed", allowedMethods, options) {
|
|
175
|
+
super(message, "VALIDATION_ERROR", HTTP_STATUS.METHOD_NOT_ALLOWED, options);
|
|
176
|
+
__publicField(this, "allowedMethods");
|
|
177
|
+
this.allowedMethods = allowedMethods;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
class RateLimitError extends SdkError {
|
|
181
|
+
constructor(message = "Rate limit exceeded", retryAfter, options) {
|
|
182
|
+
super(message, "RATE_LIMIT", HTTP_STATUS.TOO_MANY_REQUESTS, options);
|
|
183
|
+
__publicField(this, "retryAfter");
|
|
184
|
+
this.retryAfter = retryAfter;
|
|
185
|
+
}
|
|
186
|
+
toJSON() {
|
|
187
|
+
return { ...super.toJSON(), retryAfter: this.retryAfter };
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
class ServerError extends SdkError {
|
|
191
|
+
constructor(message = "Server error", httpStatus = HTTP_STATUS.INTERNAL_SERVER_ERROR, options) {
|
|
192
|
+
super(message, "SERVER_ERROR", httpStatus, options);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
class BadGatewayError extends ServerError {
|
|
196
|
+
constructor(message = "Bad gateway", options) {
|
|
197
|
+
super(message, HTTP_STATUS.BAD_GATEWAY, options);
|
|
198
|
+
this.code = "BAD_GATEWAY";
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
class ServiceUnavailableError extends ServerError {
|
|
202
|
+
constructor(message = "Service unavailable", options) {
|
|
203
|
+
super(message, HTTP_STATUS.SERVICE_UNAVAILABLE, options);
|
|
204
|
+
this.code = "SERVICE_UNAVAILABLE";
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
class GatewayTimeoutError extends ServerError {
|
|
208
|
+
constructor(message = "Gateway timeout", options) {
|
|
209
|
+
super(message, HTTP_STATUS.GATEWAY_TIMEOUT, options);
|
|
210
|
+
this.code = "GATEWAY_TIMEOUT";
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
class BusinessError extends SdkError {
|
|
214
|
+
constructor(message, code, data, options) {
|
|
215
|
+
super(message, "BUSINESS_ERROR", void 0, options);
|
|
216
|
+
__publicField(this, "businessCode");
|
|
217
|
+
__publicField(this, "data");
|
|
218
|
+
this.businessCode = code;
|
|
219
|
+
this.data = data;
|
|
220
|
+
}
|
|
221
|
+
toJSON() {
|
|
222
|
+
return { ...super.toJSON(), businessCode: this.businessCode, data: this.data };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function isSdkError(error) {
|
|
226
|
+
return error instanceof SdkError;
|
|
227
|
+
}
|
|
228
|
+
function isNetworkError(error) {
|
|
229
|
+
return error instanceof NetworkError;
|
|
230
|
+
}
|
|
231
|
+
function isTimeoutError(error) {
|
|
232
|
+
return error instanceof TimeoutError;
|
|
233
|
+
}
|
|
234
|
+
function isCancelledError(error) {
|
|
235
|
+
return error instanceof CancelledError;
|
|
236
|
+
}
|
|
237
|
+
function isAuthError(error) {
|
|
238
|
+
return error instanceof AuthenticationError;
|
|
239
|
+
}
|
|
240
|
+
function isValidationError(error) {
|
|
241
|
+
return error instanceof ValidationError;
|
|
242
|
+
}
|
|
243
|
+
function isRateLimitError(error) {
|
|
244
|
+
return error instanceof RateLimitError;
|
|
245
|
+
}
|
|
246
|
+
function isServerError(error) {
|
|
247
|
+
return error instanceof ServerError;
|
|
248
|
+
}
|
|
249
|
+
function isBusinessError(error) {
|
|
250
|
+
return error instanceof BusinessError;
|
|
251
|
+
}
|
|
252
|
+
function isRetryableError(error) {
|
|
253
|
+
if (!(error instanceof SdkError)) return false;
|
|
254
|
+
return error instanceof NetworkError || error instanceof TimeoutError || error instanceof ServerError || error instanceof RateLimitError || error instanceof BadGatewayError || error instanceof ServiceUnavailableError || error instanceof GatewayTimeoutError;
|
|
255
|
+
}
|
|
256
|
+
export {
|
|
257
|
+
AuthenticationError,
|
|
258
|
+
BadGatewayError,
|
|
259
|
+
BusinessError,
|
|
260
|
+
CancelledError,
|
|
261
|
+
ConflictError,
|
|
262
|
+
ForbiddenError,
|
|
263
|
+
GatewayTimeoutError,
|
|
264
|
+
MethodNotAllowedError,
|
|
265
|
+
NetworkError,
|
|
266
|
+
NotFoundError,
|
|
267
|
+
RateLimitError,
|
|
268
|
+
SdkError,
|
|
269
|
+
ServerError,
|
|
270
|
+
ServiceUnavailableError,
|
|
271
|
+
TimeoutError,
|
|
272
|
+
TokenExpiredError,
|
|
273
|
+
TokenInvalidError,
|
|
274
|
+
ValidationError,
|
|
275
|
+
isAuthError,
|
|
276
|
+
isBusinessError,
|
|
277
|
+
isCancelledError,
|
|
278
|
+
isNetworkError,
|
|
279
|
+
isRateLimitError,
|
|
280
|
+
isRetryableError,
|
|
281
|
+
isSdkError,
|
|
282
|
+
isServerError,
|
|
283
|
+
isTimeoutError,
|
|
284
|
+
isValidationError
|
|
285
|
+
};
|
|
286
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../src/errors/index.ts"],"sourcesContent":["import type { ApiResult } from '../core/types';\nimport { HTTP_STATUS } from '../core/types';\n\nexport type ErrorCode = \n | 'UNKNOWN'\n | 'NETWORK_ERROR'\n | 'TIMEOUT'\n | 'CANCELLED'\n | 'UNAUTHORIZED'\n | 'FORBIDDEN'\n | 'NOT_FOUND'\n | 'VALIDATION_ERROR'\n | 'RATE_LIMIT'\n | 'SERVER_ERROR'\n | 'TOKEN_EXPIRED'\n | 'TOKEN_INVALID'\n | 'BUSINESS_ERROR'\n | 'CONFLICT'\n | 'SERVICE_UNAVAILABLE'\n | 'BAD_GATEWAY'\n | 'GATEWAY_TIMEOUT';\n\nexport interface ErrorDetail {\n field?: string;\n message?: string;\n value?: unknown;\n code?: string;\n constraint?: string;\n}\n\nexport interface ErrorOptions {\n cause?: Error;\n details?: ErrorDetail[];\n traceId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport class SdkError extends Error {\n public readonly code: ErrorCode;\n public readonly httpStatus?: number;\n public readonly details?: ErrorDetail[];\n public readonly timestamp: number;\n public readonly traceId?: string;\n public readonly metadata?: Record<string, unknown>;\n\n constructor(\n message: string,\n code: ErrorCode = 'UNKNOWN',\n httpStatus?: number,\n options?: ErrorOptions\n ) {\n super(message, { cause: options?.cause });\n this.name = this.constructor.name;\n this.code = code;\n this.httpStatus = httpStatus;\n this.details = options?.details;\n this.timestamp = Date.now();\n this.traceId = options?.traceId;\n this.metadata = options?.metadata;\n \n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static fromApiResult(result: ApiResult, httpStatus?: number): SdkError {\n const code = String(result.code);\n const message = result.msg || result.message || 'Unknown error';\n \n switch (code) {\n case '400':\n case '4000':\n return new ValidationError(message);\n case '401':\n case '4010':\n return new AuthenticationError(message);\n case '403':\n case '4030':\n return new ForbiddenError(message);\n case '404':\n case '4040':\n return new NotFoundError(message);\n case '409':\n case '4090':\n return new ConflictError(message);\n case '429':\n case '4290':\n return new RateLimitError(message);\n default:\n if (code.startsWith('5')) {\n return new ServerError(message, httpStatus ?? HTTP_STATUS.INTERNAL_SERVER_ERROR);\n }\n return new BusinessError(message, result.code, result.data);\n }\n }\n\n static fromHttpStatus(status: number, message?: string): SdkError {\n const defaultMessage = message ?? `HTTP Error ${status}`;\n \n switch (status) {\n case HTTP_STATUS.BAD_REQUEST:\n case HTTP_STATUS.UNPROCESSABLE_ENTITY:\n return new ValidationError(defaultMessage);\n case HTTP_STATUS.UNAUTHORIZED:\n return new AuthenticationError(defaultMessage);\n case HTTP_STATUS.FORBIDDEN:\n return new ForbiddenError(defaultMessage);\n case HTTP_STATUS.NOT_FOUND:\n return new NotFoundError(defaultMessage);\n case HTTP_STATUS.METHOD_NOT_ALLOWED:\n return new ValidationError(defaultMessage);\n case HTTP_STATUS.CONFLICT:\n return new ConflictError(defaultMessage);\n case HTTP_STATUS.TOO_MANY_REQUESTS:\n return new RateLimitError(defaultMessage);\n case HTTP_STATUS.INTERNAL_SERVER_ERROR:\n return new ServerError(defaultMessage, status);\n case HTTP_STATUS.BAD_GATEWAY:\n return new BadGatewayError(defaultMessage);\n case HTTP_STATUS.SERVICE_UNAVAILABLE:\n return new ServiceUnavailableError(defaultMessage);\n case HTTP_STATUS.GATEWAY_TIMEOUT:\n return new GatewayTimeoutError(defaultMessage);\n default:\n if (status >= 500) {\n return new ServerError(defaultMessage, status);\n }\n return new NetworkError(defaultMessage);\n }\n }\n\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n httpStatus: this.httpStatus,\n details: this.details,\n timestamp: this.timestamp,\n traceId: this.traceId,\n metadata: this.metadata,\n };\n }\n\n toString(): string {\n return `${this.name}: ${this.message} (code: ${this.code})`;\n }\n\n isRetryable(): boolean {\n return isRetryableError(this);\n }\n\n isAuthError(): boolean {\n return this.code === 'UNAUTHORIZED' || this.code === 'TOKEN_EXPIRED' || this.code === 'TOKEN_INVALID';\n }\n\n isNetworkError(): boolean {\n return this.code === 'NETWORK_ERROR' || this.code === 'TIMEOUT';\n }\n\n isClientError(): boolean {\n return this.httpStatus !== undefined && this.httpStatus >= 400 && this.httpStatus < 500;\n }\n\n isServerError(): boolean {\n return this.httpStatus !== undefined && this.httpStatus >= 500;\n }\n}\n\nexport class NetworkError extends SdkError {\n constructor(message: string = 'Network error', options?: ErrorOptions) {\n super(message, 'NETWORK_ERROR', undefined, options);\n }\n}\n\nexport class TimeoutError extends SdkError {\n public readonly timeout?: number;\n\n constructor(message: string = 'Request timeout', timeout?: number, options?: ErrorOptions) {\n super(message, 'TIMEOUT', undefined, options);\n this.timeout = timeout;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), timeout: this.timeout };\n }\n}\n\nexport class CancelledError extends SdkError {\n constructor(message: string = 'Request cancelled', options?: ErrorOptions) {\n super(message, 'CANCELLED', undefined, options);\n }\n}\n\nexport class AuthenticationError extends SdkError {\n constructor(message: string = 'Authentication failed', options?: ErrorOptions) {\n super(message, 'UNAUTHORIZED', HTTP_STATUS.UNAUTHORIZED, options);\n }\n}\n\nexport class TokenExpiredError extends AuthenticationError {\n constructor(message: string = 'Token expired', options?: ErrorOptions) {\n super(message, options);\n (this as { code: ErrorCode }).code = 'TOKEN_EXPIRED';\n }\n}\n\nexport class TokenInvalidError extends AuthenticationError {\n constructor(message: string = 'Invalid token', options?: ErrorOptions) {\n super(message, options);\n (this as { code: ErrorCode }).code = 'TOKEN_INVALID';\n }\n}\n\nexport class ForbiddenError extends SdkError {\n constructor(message: string = 'Access forbidden', options?: ErrorOptions) {\n super(message, 'FORBIDDEN', HTTP_STATUS.FORBIDDEN, options);\n }\n}\n\nexport class NotFoundError extends SdkError {\n constructor(message: string = 'Resource not found', options?: ErrorOptions) {\n super(message, 'NOT_FOUND', HTTP_STATUS.NOT_FOUND, options);\n }\n}\n\nexport class ValidationError extends SdkError {\n constructor(message: string = 'Validation error', details?: ErrorDetail[], options?: ErrorOptions) {\n super(message, 'VALIDATION_ERROR', HTTP_STATUS.BAD_REQUEST, { ...options, details });\n }\n}\n\nexport class ConflictError extends SdkError {\n constructor(message: string = 'Resource conflict', options?: ErrorOptions) {\n super(message, 'CONFLICT', HTTP_STATUS.CONFLICT, options);\n }\n}\n\nexport class MethodNotAllowedError extends SdkError {\n public readonly allowedMethods?: string[];\n\n constructor(message: string = 'Method not allowed', allowedMethods?: string[], options?: ErrorOptions) {\n super(message, 'VALIDATION_ERROR', HTTP_STATUS.METHOD_NOT_ALLOWED, options);\n this.allowedMethods = allowedMethods;\n }\n}\n\nexport class RateLimitError extends SdkError {\n public readonly retryAfter?: number;\n\n constructor(message: string = 'Rate limit exceeded', retryAfter?: number, options?: ErrorOptions) {\n super(message, 'RATE_LIMIT', HTTP_STATUS.TOO_MANY_REQUESTS, options);\n this.retryAfter = retryAfter;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), retryAfter: this.retryAfter };\n }\n}\n\nexport class ServerError extends SdkError {\n constructor(message: string = 'Server error', httpStatus: number = HTTP_STATUS.INTERNAL_SERVER_ERROR, options?: ErrorOptions) {\n super(message, 'SERVER_ERROR', httpStatus, options);\n }\n}\n\nexport class BadGatewayError extends ServerError {\n constructor(message: string = 'Bad gateway', options?: ErrorOptions) {\n super(message, HTTP_STATUS.BAD_GATEWAY, options);\n (this as { code: ErrorCode }).code = 'BAD_GATEWAY';\n }\n}\n\nexport class ServiceUnavailableError extends ServerError {\n constructor(message: string = 'Service unavailable', options?: ErrorOptions) {\n super(message, HTTP_STATUS.SERVICE_UNAVAILABLE, options);\n (this as { code: ErrorCode }).code = 'SERVICE_UNAVAILABLE';\n }\n}\n\nexport class GatewayTimeoutError extends ServerError {\n constructor(message: string = 'Gateway timeout', options?: ErrorOptions) {\n super(message, HTTP_STATUS.GATEWAY_TIMEOUT, options);\n (this as { code: ErrorCode }).code = 'GATEWAY_TIMEOUT';\n }\n}\n\nexport class BusinessError extends SdkError {\n public readonly businessCode?: string | number;\n public readonly data?: unknown;\n\n constructor(message: string, code?: string | number, data?: unknown, options?: ErrorOptions) {\n super(message, 'BUSINESS_ERROR', undefined, options);\n this.businessCode = code;\n this.data = data;\n }\n\n toJSON(): Record<string, unknown> {\n return { ...super.toJSON(), businessCode: this.businessCode, data: this.data };\n }\n}\n\nexport function isSdkError(error: unknown): error is SdkError {\n return error instanceof SdkError;\n}\n\nexport function isNetworkError(error: unknown): error is NetworkError {\n return error instanceof NetworkError;\n}\n\nexport function isTimeoutError(error: unknown): error is TimeoutError {\n return error instanceof TimeoutError;\n}\n\nexport function isCancelledError(error: unknown): error is CancelledError {\n return error instanceof CancelledError;\n}\n\nexport function isAuthError(error: unknown): error is AuthenticationError {\n return error instanceof AuthenticationError;\n}\n\nexport function isValidationError(error: unknown): error is ValidationError {\n return error instanceof ValidationError;\n}\n\nexport function isRateLimitError(error: unknown): error is RateLimitError {\n return error instanceof RateLimitError;\n}\n\nexport function isServerError(error: unknown): error is ServerError {\n return error instanceof ServerError;\n}\n\nexport function isBusinessError(error: unknown): error is BusinessError {\n return error instanceof BusinessError;\n}\n\nexport function isRetryableError(error: unknown): boolean {\n if (!(error instanceof SdkError)) return false;\n \n return (\n error instanceof NetworkError ||\n error instanceof TimeoutError ||\n error instanceof ServerError ||\n error instanceof RateLimitError ||\n error instanceof BadGatewayError ||\n error instanceof ServiceUnavailableError ||\n error instanceof GatewayTimeoutError\n );\n}\n"],"names":[],"mappings":";;;;AAqCO,MAAM,iBAAiB,MAAM;AAAA,EAQlC,YACE,SACA,OAAkB,WAClB,YACA,SACA;AACA,UAAM,SAAS,EAAE,OAAO,mCAAS,OAAO;AAb1B;AACA;AACA;AACA;AACA;AACA;AASd,SAAK,OAAO,KAAK,YAAY;AAC7B,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,UAAU,mCAAS;AACxB,SAAK,YAAY,KAAK,IAAA;AACtB,SAAK,UAAU,mCAAS;AACxB,SAAK,WAAW,mCAAS;AAEzB,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AAAA,EAEA,OAAO,cAAc,QAAmB,YAA+B;AACrE,UAAM,OAAO,OAAO,OAAO,IAAI;AAC/B,UAAM,UAAU,OAAO,OAAO,OAAO,WAAW;AAEhD,YAAQ,MAAA;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,gBAAgB,OAAO;AAAA,MACpC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,oBAAoB,OAAO;AAAA,MACxC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,eAAe,OAAO;AAAA,MACnC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,cAAc,OAAO;AAAA,MAClC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,cAAc,OAAO;AAAA,MAClC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,eAAe,OAAO;AAAA,MACnC;AACE,YAAI,KAAK,WAAW,GAAG,GAAG;AACxB,iBAAO,IAAI,YAAY,SAAS,cAAc,YAAY,qBAAqB;AAAA,QACjF;AACA,eAAO,IAAI,cAAc,SAAS,OAAO,MAAM,OAAO,IAAI;AAAA,IAAA;AAAA,EAEhE;AAAA,EAEA,OAAO,eAAe,QAAgB,SAA4B;AAChE,UAAM,iBAAiB,WAAW,cAAc,MAAM;AAEtD,YAAQ,QAAA;AAAA,MACN,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AACf,eAAO,IAAI,gBAAgB,cAAc;AAAA,MAC3C,KAAK,YAAY;AACf,eAAO,IAAI,oBAAoB,cAAc;AAAA,MAC/C,KAAK,YAAY;AACf,eAAO,IAAI,eAAe,cAAc;AAAA,MAC1C,KAAK,YAAY;AACf,eAAO,IAAI,cAAc,cAAc;AAAA,MACzC,KAAK,YAAY;AACf,eAAO,IAAI,gBAAgB,cAAc;AAAA,MAC3C,KAAK,YAAY;AACf,eAAO,IAAI,cAAc,cAAc;AAAA,MACzC,KAAK,YAAY;AACf,eAAO,IAAI,eAAe,cAAc;AAAA,MAC1C,KAAK,YAAY;AACf,eAAO,IAAI,YAAY,gBAAgB,MAAM;AAAA,MAC/C,KAAK,YAAY;AACf,eAAO,IAAI,gBAAgB,cAAc;AAAA,MAC3C,KAAK,YAAY;AACf,eAAO,IAAI,wBAAwB,cAAc;AAAA,MACnD,KAAK,YAAY;AACf,eAAO,IAAI,oBAAoB,cAAc;AAAA,MAC/C;AACE,YAAI,UAAU,KAAK;AACjB,iBAAO,IAAI,YAAY,gBAAgB,MAAM;AAAA,QAC/C;AACA,eAAO,IAAI,aAAa,cAAc;AAAA,IAAA;AAAA,EAE5C;AAAA,EAEA,SAAkC;AAChC,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,IAAA;AAAA,EAEnB;AAAA,EAEA,WAAmB;AACjB,WAAO,GAAG,KAAK,IAAI,KAAK,KAAK,OAAO,WAAW,KAAK,IAAI;AAAA,EAC1D;AAAA,EAEA,cAAuB;AACrB,WAAO,iBAAiB,IAAI;AAAA,EAC9B;AAAA,EAEA,cAAuB;AACrB,WAAO,KAAK,SAAS,kBAAkB,KAAK,SAAS,mBAAmB,KAAK,SAAS;AAAA,EACxF;AAAA,EAEA,iBAA0B;AACxB,WAAO,KAAK,SAAS,mBAAmB,KAAK,SAAS;AAAA,EACxD;AAAA,EAEA,gBAAyB;AACvB,WAAO,KAAK,eAAe,UAAa,KAAK,cAAc,OAAO,KAAK,aAAa;AAAA,EACtF;AAAA,EAEA,gBAAyB;AACvB,WAAO,KAAK,eAAe,UAAa,KAAK,cAAc;AAAA,EAC7D;AACF;AAEO,MAAM,qBAAqB,SAAS;AAAA,EACzC,YAAY,UAAkB,iBAAiB,SAAwB;AACrE,UAAM,SAAS,iBAAiB,QAAW,OAAO;AAAA,EACpD;AACF;AAEO,MAAM,qBAAqB,SAAS;AAAA,EAGzC,YAAY,UAAkB,mBAAmB,SAAkB,SAAwB;AACzF,UAAM,SAAS,WAAW,QAAW,OAAO;AAH9B;AAId,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAkC;AAChC,WAAO,EAAE,GAAG,MAAM,UAAU,SAAS,KAAK,QAAA;AAAA,EAC5C;AACF;AAEO,MAAM,uBAAuB,SAAS;AAAA,EAC3C,YAAY,UAAkB,qBAAqB,SAAwB;AACzE,UAAM,SAAS,aAAa,QAAW,OAAO;AAAA,EAChD;AACF;AAEO,MAAM,4BAA4B,SAAS;AAAA,EAChD,YAAY,UAAkB,yBAAyB,SAAwB;AAC7E,UAAM,SAAS,gBAAgB,YAAY,cAAc,OAAO;AAAA,EAClE;AACF;AAEO,MAAM,0BAA0B,oBAAoB;AAAA,EACzD,YAAY,UAAkB,iBAAiB,SAAwB;AACrE,UAAM,SAAS,OAAO;AACrB,SAA6B,OAAO;AAAA,EACvC;AACF;AAEO,MAAM,0BAA0B,oBAAoB;AAAA,EACzD,YAAY,UAAkB,iBAAiB,SAAwB;AACrE,UAAM,SAAS,OAAO;AACrB,SAA6B,OAAO;AAAA,EACvC;AACF;AAEO,MAAM,uBAAuB,SAAS;AAAA,EAC3C,YAAY,UAAkB,oBAAoB,SAAwB;AACxE,UAAM,SAAS,aAAa,YAAY,WAAW,OAAO;AAAA,EAC5D;AACF;AAEO,MAAM,sBAAsB,SAAS;AAAA,EAC1C,YAAY,UAAkB,sBAAsB,SAAwB;AAC1E,UAAM,SAAS,aAAa,YAAY,WAAW,OAAO;AAAA,EAC5D;AACF;AAEO,MAAM,wBAAwB,SAAS;AAAA,EAC5C,YAAY,UAAkB,oBAAoB,SAAyB,SAAwB;AACjG,UAAM,SAAS,oBAAoB,YAAY,aAAa,EAAE,GAAG,SAAS,SAAS;AAAA,EACrF;AACF;AAEO,MAAM,sBAAsB,SAAS;AAAA,EAC1C,YAAY,UAAkB,qBAAqB,SAAwB;AACzE,UAAM,SAAS,YAAY,YAAY,UAAU,OAAO;AAAA,EAC1D;AACF;AAEO,MAAM,8BAA8B,SAAS;AAAA,EAGlD,YAAY,UAAkB,sBAAsB,gBAA2B,SAAwB;AACrG,UAAM,SAAS,oBAAoB,YAAY,oBAAoB,OAAO;AAH5D;AAId,SAAK,iBAAiB;AAAA,EACxB;AACF;AAEO,MAAM,uBAAuB,SAAS;AAAA,EAG3C,YAAY,UAAkB,uBAAuB,YAAqB,SAAwB;AAChG,UAAM,SAAS,cAAc,YAAY,mBAAmB,OAAO;AAHrD;AAId,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,SAAkC;AAChC,WAAO,EAAE,GAAG,MAAM,UAAU,YAAY,KAAK,WAAA;AAAA,EAC/C;AACF;AAEO,MAAM,oBAAoB,SAAS;AAAA,EACxC,YAAY,UAAkB,gBAAgB,aAAqB,YAAY,uBAAuB,SAAwB;AAC5H,UAAM,SAAS,gBAAgB,YAAY,OAAO;AAAA,EACpD;AACF;AAEO,MAAM,wBAAwB,YAAY;AAAA,EAC/C,YAAY,UAAkB,eAAe,SAAwB;AACnE,UAAM,SAAS,YAAY,aAAa,OAAO;AAC9C,SAA6B,OAAO;AAAA,EACvC;AACF;AAEO,MAAM,gCAAgC,YAAY;AAAA,EACvD,YAAY,UAAkB,uBAAuB,SAAwB;AAC3E,UAAM,SAAS,YAAY,qBAAqB,OAAO;AACtD,SAA6B,OAAO;AAAA,EACvC;AACF;AAEO,MAAM,4BAA4B,YAAY;AAAA,EACnD,YAAY,UAAkB,mBAAmB,SAAwB;AACvE,UAAM,SAAS,YAAY,iBAAiB,OAAO;AAClD,SAA6B,OAAO;AAAA,EACvC;AACF;AAEO,MAAM,sBAAsB,SAAS;AAAA,EAI1C,YAAY,SAAiB,MAAwB,MAAgB,SAAwB;AAC3F,UAAM,SAAS,kBAAkB,QAAW,OAAO;AAJrC;AACA;AAId,SAAK,eAAe;AACpB,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,SAAkC;AAChC,WAAO,EAAE,GAAG,MAAM,UAAU,cAAc,KAAK,cAAc,MAAM,KAAK,KAAA;AAAA,EAC1E;AACF;AAEO,SAAS,WAAW,OAAmC;AAC5D,SAAO,iBAAiB;AAC1B;AAEO,SAAS,eAAe,OAAuC;AACpE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,eAAe,OAAuC;AACpE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,iBAAiB,OAAyC;AACxE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,YAAY,OAA8C;AACxE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,SAAO,iBAAiB;AAC1B;AAEO,SAAS,iBAAiB,OAAyC;AACxE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,cAAc,OAAsC;AAClE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,gBAAgB,OAAwC;AACtE,SAAO,iBAAiB;AAC1B;AAEO,SAAS,iBAAiB,OAAyB;AACxD,MAAI,EAAE,iBAAiB,UAAW,QAAO;AAEzC,SACE,iBAAiB,gBACjB,iBAAiB,gBACjB,iBAAiB,eACjB,iBAAiB,kBACjB,iBAAiB,mBACjB,iBAAiB,2BACjB,iBAAiB;AAErB;"}
|