@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
|
@@ -0,0 +1,485 @@
|
|
|
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 { DEFAULT_TIMEOUT, MIME_TYPES, SUCCESS_CODES } from "../core/types.js";
|
|
5
|
+
import { SdkError, TimeoutError, CancelledError, NetworkError } from "../errors.js";
|
|
6
|
+
import { DefaultAuthTokenManager, buildAuthHeaders } from "../auth/token-manager.js";
|
|
7
|
+
import { createLogger } from "../utils/logger.js";
|
|
8
|
+
import { createCacheStore } from "../utils/cache.js";
|
|
9
|
+
import { withRetry } from "../utils/retry.js";
|
|
10
|
+
class BaseHttpClient {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
__publicField(this, "config");
|
|
13
|
+
__publicField(this, "authConfig");
|
|
14
|
+
__publicField(this, "logger");
|
|
15
|
+
__publicField(this, "cache");
|
|
16
|
+
__publicField(this, "interceptors");
|
|
17
|
+
__publicField(this, "tenantId");
|
|
18
|
+
__publicField(this, "organizationId");
|
|
19
|
+
__publicField(this, "platform");
|
|
20
|
+
__publicField(this, "userId");
|
|
21
|
+
this.config = {
|
|
22
|
+
baseUrl: config.baseUrl,
|
|
23
|
+
timeout: config.timeout ?? DEFAULT_TIMEOUT,
|
|
24
|
+
headers: config.headers ?? {},
|
|
25
|
+
retry: {
|
|
26
|
+
maxRetries: 3,
|
|
27
|
+
retryDelay: 1e3,
|
|
28
|
+
retryBackoff: "exponential",
|
|
29
|
+
maxRetryDelay: 3e4,
|
|
30
|
+
...config.retry
|
|
31
|
+
},
|
|
32
|
+
cache: {
|
|
33
|
+
enabled: false,
|
|
34
|
+
ttl: 5 * 60 * 1e3,
|
|
35
|
+
maxSize: 100,
|
|
36
|
+
...config.cache
|
|
37
|
+
},
|
|
38
|
+
logger: {
|
|
39
|
+
level: "info",
|
|
40
|
+
prefix: "[SDK]",
|
|
41
|
+
timestamp: true,
|
|
42
|
+
colors: true,
|
|
43
|
+
...config.logger
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
this.logger = createLogger(this.config.logger);
|
|
47
|
+
this.cache = createCacheStore(this.config.cache);
|
|
48
|
+
this.interceptors = config.interceptors ?? {
|
|
49
|
+
request: [],
|
|
50
|
+
response: [],
|
|
51
|
+
error: []
|
|
52
|
+
};
|
|
53
|
+
const authMode = this.determineAuthMode(config);
|
|
54
|
+
this.authConfig = {
|
|
55
|
+
authMode,
|
|
56
|
+
apiKey: config.apiKey,
|
|
57
|
+
tokenManager: config.tokenManager ?? new DefaultAuthTokenManager({
|
|
58
|
+
accessToken: config.accessToken,
|
|
59
|
+
authToken: config.authToken
|
|
60
|
+
})
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
determineAuthMode(config) {
|
|
64
|
+
if (config.apiKey) {
|
|
65
|
+
return "apikey";
|
|
66
|
+
}
|
|
67
|
+
return "dual-token";
|
|
68
|
+
}
|
|
69
|
+
getAuthMode() {
|
|
70
|
+
return this.authConfig.authMode;
|
|
71
|
+
}
|
|
72
|
+
setAuthMode(mode) {
|
|
73
|
+
this.authConfig.authMode = mode;
|
|
74
|
+
}
|
|
75
|
+
getTokenManager() {
|
|
76
|
+
return this.authConfig.tokenManager;
|
|
77
|
+
}
|
|
78
|
+
setTokenManager(manager) {
|
|
79
|
+
this.authConfig.tokenManager = manager;
|
|
80
|
+
}
|
|
81
|
+
setApiKey(apiKey) {
|
|
82
|
+
var _a;
|
|
83
|
+
this.authConfig.apiKey = apiKey;
|
|
84
|
+
this.authConfig.authMode = "apikey";
|
|
85
|
+
(_a = this.authConfig.tokenManager) == null ? void 0 : _a.clearTokens();
|
|
86
|
+
}
|
|
87
|
+
setAuthToken(token) {
|
|
88
|
+
var _a;
|
|
89
|
+
(_a = this.authConfig.tokenManager) == null ? void 0 : _a.setAuthToken(token);
|
|
90
|
+
if (this.authConfig.authMode === "apikey") {
|
|
91
|
+
this.authConfig.authMode = "dual-token";
|
|
92
|
+
this.authConfig.apiKey = void 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
setAccessToken(token) {
|
|
96
|
+
var _a;
|
|
97
|
+
(_a = this.authConfig.tokenManager) == null ? void 0 : _a.setAccessToken(token);
|
|
98
|
+
if (this.authConfig.authMode === "apikey") {
|
|
99
|
+
this.authConfig.authMode = "dual-token";
|
|
100
|
+
this.authConfig.apiKey = void 0;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
setTenantId(tenantId) {
|
|
104
|
+
this.tenantId = tenantId;
|
|
105
|
+
}
|
|
106
|
+
setOrganizationId(organizationId) {
|
|
107
|
+
this.organizationId = organizationId;
|
|
108
|
+
}
|
|
109
|
+
setPlatform(platform) {
|
|
110
|
+
this.platform = platform;
|
|
111
|
+
}
|
|
112
|
+
setUserId(userId) {
|
|
113
|
+
this.userId = userId;
|
|
114
|
+
}
|
|
115
|
+
clearAuthToken() {
|
|
116
|
+
var _a;
|
|
117
|
+
(_a = this.authConfig.tokenManager) == null ? void 0 : _a.clearTokens();
|
|
118
|
+
}
|
|
119
|
+
addRequestInterceptor(interceptor) {
|
|
120
|
+
this.interceptors.request.push(interceptor);
|
|
121
|
+
return () => {
|
|
122
|
+
const index = this.interceptors.request.indexOf(interceptor);
|
|
123
|
+
if (index > -1) {
|
|
124
|
+
this.interceptors.request.splice(index, 1);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
addResponseInterceptor(interceptor) {
|
|
129
|
+
this.interceptors.response.push(interceptor);
|
|
130
|
+
return () => {
|
|
131
|
+
const index = this.interceptors.response.indexOf(interceptor);
|
|
132
|
+
if (index > -1) {
|
|
133
|
+
this.interceptors.response.splice(index, 1);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
addErrorInterceptor(interceptor) {
|
|
138
|
+
this.interceptors.error.push(interceptor);
|
|
139
|
+
return () => {
|
|
140
|
+
const index = this.interceptors.error.indexOf(interceptor);
|
|
141
|
+
if (index > -1) {
|
|
142
|
+
this.interceptors.error.splice(index, 1);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
clearCache() {
|
|
147
|
+
this.cache.clear();
|
|
148
|
+
}
|
|
149
|
+
getConfig() {
|
|
150
|
+
var _a, _b;
|
|
151
|
+
return {
|
|
152
|
+
baseUrl: this.config.baseUrl,
|
|
153
|
+
timeout: this.config.timeout,
|
|
154
|
+
authMode: this.authConfig.authMode,
|
|
155
|
+
apiKey: this.authConfig.apiKey,
|
|
156
|
+
accessToken: (_a = this.authConfig.tokenManager) == null ? void 0 : _a.getAccessToken(),
|
|
157
|
+
authToken: (_b = this.authConfig.tokenManager) == null ? void 0 : _b.getAuthToken(),
|
|
158
|
+
tenantId: this.tenantId,
|
|
159
|
+
organizationId: this.organizationId,
|
|
160
|
+
platform: this.platform,
|
|
161
|
+
userId: this.userId
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
isAuthenticated() {
|
|
165
|
+
var _a;
|
|
166
|
+
return ((_a = this.authConfig.tokenManager) == null ? void 0 : _a.isValid()) ?? false;
|
|
167
|
+
}
|
|
168
|
+
buildBaseUrl(path, params) {
|
|
169
|
+
const baseUrl = this.config.baseUrl.replace(/\/$/, "");
|
|
170
|
+
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
171
|
+
let url = `${baseUrl}${normalizedPath}`;
|
|
172
|
+
if (params) {
|
|
173
|
+
const searchParams = new URLSearchParams();
|
|
174
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
175
|
+
if (value !== void 0 && value !== null) {
|
|
176
|
+
searchParams.append(key, String(value));
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
const queryString = searchParams.toString();
|
|
180
|
+
if (queryString) {
|
|
181
|
+
url += `?${queryString}`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return url;
|
|
185
|
+
}
|
|
186
|
+
buildHeaders(config, skipAuth = false) {
|
|
187
|
+
const headers = {
|
|
188
|
+
"Content-Type": MIME_TYPES.JSON,
|
|
189
|
+
...this.config.headers,
|
|
190
|
+
...config.headers
|
|
191
|
+
};
|
|
192
|
+
if (!skipAuth && !config.skipAuth) {
|
|
193
|
+
const authHeaders = buildAuthHeaders(
|
|
194
|
+
this.authConfig.authMode,
|
|
195
|
+
this.authConfig.apiKey,
|
|
196
|
+
this.authConfig.tokenManager
|
|
197
|
+
);
|
|
198
|
+
Object.assign(headers, authHeaders);
|
|
199
|
+
}
|
|
200
|
+
if (this.tenantId) {
|
|
201
|
+
headers["X-Tenant-Id"] = this.tenantId;
|
|
202
|
+
}
|
|
203
|
+
if (this.organizationId) {
|
|
204
|
+
headers["X-Organization-Id"] = this.organizationId;
|
|
205
|
+
}
|
|
206
|
+
if (this.platform) {
|
|
207
|
+
headers["X-Platform"] = this.platform;
|
|
208
|
+
}
|
|
209
|
+
if (this.userId !== void 0) {
|
|
210
|
+
headers["X-User-Id"] = String(this.userId);
|
|
211
|
+
}
|
|
212
|
+
return headers;
|
|
213
|
+
}
|
|
214
|
+
serializeRequestBody(body, headers) {
|
|
215
|
+
if (body === void 0 || body === null) {
|
|
216
|
+
return void 0;
|
|
217
|
+
}
|
|
218
|
+
if (typeof FormData !== "undefined" && body instanceof FormData) {
|
|
219
|
+
delete headers["Content-Type"];
|
|
220
|
+
return body;
|
|
221
|
+
}
|
|
222
|
+
if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) {
|
|
223
|
+
headers["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8";
|
|
224
|
+
return body.toString();
|
|
225
|
+
}
|
|
226
|
+
if (typeof Blob !== "undefined" && body instanceof Blob) {
|
|
227
|
+
delete headers["Content-Type"];
|
|
228
|
+
return body;
|
|
229
|
+
}
|
|
230
|
+
if (typeof ArrayBuffer !== "undefined") {
|
|
231
|
+
if (body instanceof ArrayBuffer) {
|
|
232
|
+
delete headers["Content-Type"];
|
|
233
|
+
return body;
|
|
234
|
+
}
|
|
235
|
+
if (ArrayBuffer.isView(body)) {
|
|
236
|
+
delete headers["Content-Type"];
|
|
237
|
+
return body;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (typeof body === "string") {
|
|
241
|
+
headers["Content-Type"] = headers["Content-Type"] || "text/plain;charset=UTF-8";
|
|
242
|
+
return body;
|
|
243
|
+
}
|
|
244
|
+
return JSON.stringify(body);
|
|
245
|
+
}
|
|
246
|
+
async applyRequestInterceptors(config) {
|
|
247
|
+
let processedConfig = config;
|
|
248
|
+
for (const interceptor of this.interceptors.request) {
|
|
249
|
+
processedConfig = await interceptor(processedConfig);
|
|
250
|
+
}
|
|
251
|
+
return processedConfig;
|
|
252
|
+
}
|
|
253
|
+
async applyResponseInterceptors(response, config) {
|
|
254
|
+
let processedResponse = response;
|
|
255
|
+
for (const interceptor of this.interceptors.response) {
|
|
256
|
+
processedResponse = await interceptor(processedResponse, config);
|
|
257
|
+
}
|
|
258
|
+
return processedResponse;
|
|
259
|
+
}
|
|
260
|
+
async applyErrorInterceptors(error, config) {
|
|
261
|
+
for (const interceptor of this.interceptors.error) {
|
|
262
|
+
await interceptor(error, config);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async handleErrorResponse(response, config) {
|
|
266
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
267
|
+
try {
|
|
268
|
+
const result = await response.json();
|
|
269
|
+
errorMessage = result.msg || result.message || errorMessage;
|
|
270
|
+
} catch {
|
|
271
|
+
}
|
|
272
|
+
const error = SdkError.fromHttpStatus(response.status, errorMessage);
|
|
273
|
+
await this.applyErrorInterceptors(error, config);
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
async processResponse(response, config) {
|
|
277
|
+
if (!response.ok) {
|
|
278
|
+
await this.handleErrorResponse(response, config);
|
|
279
|
+
}
|
|
280
|
+
const contentType = response.headers.get("content-type");
|
|
281
|
+
if (contentType == null ? void 0 : contentType.includes(MIME_TYPES.JSON)) {
|
|
282
|
+
const result = await response.json();
|
|
283
|
+
if (!SUCCESS_CODES.includes(result.code) && !SUCCESS_CODES.includes(String(result.code))) {
|
|
284
|
+
throw SdkError.fromApiResult(result, response.status);
|
|
285
|
+
}
|
|
286
|
+
return result.data;
|
|
287
|
+
}
|
|
288
|
+
if (contentType == null ? void 0 : contentType.includes("text/")) {
|
|
289
|
+
return await response.text();
|
|
290
|
+
}
|
|
291
|
+
return await response.json();
|
|
292
|
+
}
|
|
293
|
+
async executeFetch(url, options) {
|
|
294
|
+
const controller = new AbortController();
|
|
295
|
+
let timedOut = false;
|
|
296
|
+
const timeoutId = setTimeout(() => {
|
|
297
|
+
timedOut = true;
|
|
298
|
+
controller.abort();
|
|
299
|
+
}, options.timeout);
|
|
300
|
+
const abortHandler = () => controller.abort();
|
|
301
|
+
if (options.signal) {
|
|
302
|
+
if (options.signal.aborted) {
|
|
303
|
+
controller.abort();
|
|
304
|
+
} else {
|
|
305
|
+
options.signal.addEventListener("abort", abortHandler, { once: true });
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
this.logger.debug(`${options.method} ${url}`);
|
|
310
|
+
const response = await fetch(url, {
|
|
311
|
+
method: options.method,
|
|
312
|
+
headers: options.headers,
|
|
313
|
+
body: options.body,
|
|
314
|
+
signal: controller.signal
|
|
315
|
+
});
|
|
316
|
+
return response;
|
|
317
|
+
} catch (error) {
|
|
318
|
+
if (error instanceof Error) {
|
|
319
|
+
if (error.name === "AbortError") {
|
|
320
|
+
if (timedOut) {
|
|
321
|
+
throw new TimeoutError(`Request timeout after ${options.timeout}ms`, options.timeout);
|
|
322
|
+
}
|
|
323
|
+
throw new CancelledError("Request was cancelled");
|
|
324
|
+
}
|
|
325
|
+
throw new NetworkError(error.message);
|
|
326
|
+
}
|
|
327
|
+
throw new NetworkError("Unknown network error");
|
|
328
|
+
} finally {
|
|
329
|
+
clearTimeout(timeoutId);
|
|
330
|
+
if (options.signal) {
|
|
331
|
+
options.signal.removeEventListener("abort", abortHandler);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
async execute(config) {
|
|
336
|
+
const processedConfig = await this.applyRequestInterceptors(config);
|
|
337
|
+
const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);
|
|
338
|
+
const headers = this.buildHeaders(processedConfig);
|
|
339
|
+
const serializedBody = this.serializeRequestBody(processedConfig.body, headers);
|
|
340
|
+
const response = await this.executeFetch(url, {
|
|
341
|
+
method: processedConfig.method,
|
|
342
|
+
headers,
|
|
343
|
+
body: serializedBody,
|
|
344
|
+
timeout: processedConfig.timeout ?? this.config.timeout,
|
|
345
|
+
signal: processedConfig.signal
|
|
346
|
+
});
|
|
347
|
+
return this.processResponse(response, processedConfig);
|
|
348
|
+
}
|
|
349
|
+
async upload(path, options) {
|
|
350
|
+
const formData = new FormData();
|
|
351
|
+
formData.append(options.fieldName ?? "file", options.file);
|
|
352
|
+
if (options.additionalData) {
|
|
353
|
+
Object.entries(options.additionalData).forEach(([key, value]) => {
|
|
354
|
+
formData.append(key, value);
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
const config = {
|
|
358
|
+
url: path,
|
|
359
|
+
method: "POST",
|
|
360
|
+
body: formData,
|
|
361
|
+
skipAuth: false
|
|
362
|
+
};
|
|
363
|
+
const processedConfig = await this.applyRequestInterceptors(config);
|
|
364
|
+
const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);
|
|
365
|
+
const headers = this.buildHeaders(processedConfig);
|
|
366
|
+
delete headers["Content-Type"];
|
|
367
|
+
const response = await this.executeFetch(url, {
|
|
368
|
+
method: "POST",
|
|
369
|
+
headers,
|
|
370
|
+
body: formData,
|
|
371
|
+
timeout: processedConfig.timeout ?? this.config.timeout,
|
|
372
|
+
signal: processedConfig.signal
|
|
373
|
+
});
|
|
374
|
+
return this.processResponse(response, processedConfig);
|
|
375
|
+
}
|
|
376
|
+
async download(path, _options) {
|
|
377
|
+
const config = {
|
|
378
|
+
url: path,
|
|
379
|
+
method: "GET",
|
|
380
|
+
skipAuth: false
|
|
381
|
+
};
|
|
382
|
+
const processedConfig = await this.applyRequestInterceptors(config);
|
|
383
|
+
const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);
|
|
384
|
+
const headers = this.buildHeaders(processedConfig);
|
|
385
|
+
const response = await this.executeFetch(url, {
|
|
386
|
+
method: "GET",
|
|
387
|
+
headers,
|
|
388
|
+
timeout: processedConfig.timeout ?? this.config.timeout,
|
|
389
|
+
signal: processedConfig.signal
|
|
390
|
+
});
|
|
391
|
+
if (!response.ok) {
|
|
392
|
+
await this.handleErrorResponse(response, processedConfig);
|
|
393
|
+
}
|
|
394
|
+
return response.blob();
|
|
395
|
+
}
|
|
396
|
+
async *stream(path, options) {
|
|
397
|
+
var _a;
|
|
398
|
+
const config = {
|
|
399
|
+
url: path,
|
|
400
|
+
method: (options == null ? void 0 : options.method) ?? "POST",
|
|
401
|
+
body: options == null ? void 0 : options.body,
|
|
402
|
+
headers: options == null ? void 0 : options.headers,
|
|
403
|
+
skipAuth: options == null ? void 0 : options.skipAuth
|
|
404
|
+
};
|
|
405
|
+
const processedConfig = await this.applyRequestInterceptors(config);
|
|
406
|
+
const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);
|
|
407
|
+
const headers = this.buildHeaders(processedConfig);
|
|
408
|
+
const response = await this.executeFetch(url, {
|
|
409
|
+
method: processedConfig.method,
|
|
410
|
+
headers,
|
|
411
|
+
body: processedConfig.body ? JSON.stringify(processedConfig.body) : void 0,
|
|
412
|
+
timeout: processedConfig.timeout ?? this.config.timeout,
|
|
413
|
+
signal: processedConfig.signal
|
|
414
|
+
});
|
|
415
|
+
if (!response.ok) {
|
|
416
|
+
await this.handleErrorResponse(response, processedConfig);
|
|
417
|
+
}
|
|
418
|
+
const reader = (_a = response.body) == null ? void 0 : _a.getReader();
|
|
419
|
+
if (!reader) {
|
|
420
|
+
throw new NetworkError("No response body");
|
|
421
|
+
}
|
|
422
|
+
const decoder = new TextDecoder();
|
|
423
|
+
let buffer = "";
|
|
424
|
+
try {
|
|
425
|
+
while (true) {
|
|
426
|
+
const { done, value } = await reader.read();
|
|
427
|
+
if (done) break;
|
|
428
|
+
buffer += decoder.decode(value, { stream: true });
|
|
429
|
+
const lines = buffer.split("\n");
|
|
430
|
+
buffer = lines.pop() ?? "";
|
|
431
|
+
for (const line of lines) {
|
|
432
|
+
const trimmedLine = line.trim();
|
|
433
|
+
if (trimmedLine === "" || trimmedLine === "data: [DONE]") continue;
|
|
434
|
+
if (trimmedLine.startsWith("data: ")) {
|
|
435
|
+
yield trimmedLine.slice(6);
|
|
436
|
+
} else {
|
|
437
|
+
yield trimmedLine;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
} finally {
|
|
442
|
+
reader.releaseLock();
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
function createBaseHttpClient(config) {
|
|
447
|
+
return new class extends BaseHttpClient {
|
|
448
|
+
async request(path, options = {}) {
|
|
449
|
+
const config2 = {
|
|
450
|
+
url: path,
|
|
451
|
+
method: options.method ?? "GET",
|
|
452
|
+
headers: options.headers,
|
|
453
|
+
params: options.params,
|
|
454
|
+
body: options.body,
|
|
455
|
+
timeout: options.timeout,
|
|
456
|
+
signal: options.signal,
|
|
457
|
+
skipAuth: options.skipAuth
|
|
458
|
+
};
|
|
459
|
+
return withRetry(
|
|
460
|
+
() => this.execute(config2),
|
|
461
|
+
{ ...this.config.retry, ...options.retry }
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
async get(path, params) {
|
|
465
|
+
return this.request(path, { method: "GET", params });
|
|
466
|
+
}
|
|
467
|
+
async post(path, body) {
|
|
468
|
+
return this.request(path, { method: "POST", body });
|
|
469
|
+
}
|
|
470
|
+
async put(path, body) {
|
|
471
|
+
return this.request(path, { method: "PUT", body });
|
|
472
|
+
}
|
|
473
|
+
async delete(path, body) {
|
|
474
|
+
return this.request(path, { method: "DELETE", body });
|
|
475
|
+
}
|
|
476
|
+
async patch(path, body) {
|
|
477
|
+
return this.request(path, { method: "PATCH", body });
|
|
478
|
+
}
|
|
479
|
+
}(config);
|
|
480
|
+
}
|
|
481
|
+
export {
|
|
482
|
+
BaseHttpClient,
|
|
483
|
+
createBaseHttpClient
|
|
484
|
+
};
|
|
485
|
+
//# sourceMappingURL=base-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-client.js","sources":["../../src/http/base-client.ts"],"sourcesContent":["import type {\n HttpClientConfig,\n RequestConfig,\n RequestOptions,\n QueryParams,\n HttpHeaders,\n ApiResult,\n Interceptors,\n UploadOptions,\n DownloadOptions,\n} from '../core/types';\nimport { DEFAULT_TIMEOUT, SUCCESS_CODES, MIME_TYPES } from '../core/types';\nimport {\n SdkError,\n NetworkError,\n TimeoutError,\n CancelledError,\n} from '../errors';\nimport type { AuthTokenManager, AuthMode } from '../auth';\nimport { DefaultAuthTokenManager, buildAuthHeaders } from '../auth';\nimport { createLogger, type Logger } from '../utils/logger';\nimport { createCacheStore, type CacheStore } from '../utils/cache';\nimport { withRetry } from '../utils/retry';\n\nexport interface HttpClientOptions extends HttpClientConfig {\n apiKey?: string;\n accessToken?: string;\n authToken?: string;\n tokenManager?: AuthTokenManager;\n}\n\nexport interface HttpClientAuthConfig {\n authMode: AuthMode;\n apiKey?: string;\n tokenManager?: AuthTokenManager;\n}\n\nexport interface RequestExecutor {\n execute<T>(config: RequestConfig): Promise<T>;\n}\n\nexport interface ResponseProcessor {\n process<T>(response: Response, config: RequestConfig): Promise<T>;\n}\n\nexport interface UrlBuilder {\n build(path: string, params?: QueryParams): string;\n}\n\nexport interface HeaderBuilder {\n build(config: RequestConfig, skipAuth?: boolean): HttpHeaders;\n}\n\nexport abstract class BaseHttpClient implements RequestExecutor {\n protected config: Required<Omit<HttpClientConfig, 'interceptors'>> & { baseUrl: string };\n protected authConfig: HttpClientAuthConfig;\n protected logger: Logger;\n protected cache: CacheStore;\n protected interceptors: Interceptors;\n protected tenantId?: string;\n protected organizationId?: string;\n protected platform?: string;\n protected userId?: string | number;\n\n constructor(config: HttpClientOptions) {\n this.config = {\n baseUrl: config.baseUrl,\n timeout: config.timeout ?? DEFAULT_TIMEOUT,\n headers: config.headers ?? {},\n retry: {\n maxRetries: 3,\n retryDelay: 1000,\n retryBackoff: 'exponential',\n maxRetryDelay: 30000,\n ...config.retry,\n },\n cache: {\n enabled: false,\n ttl: 5 * 60 * 1000,\n maxSize: 100,\n ...config.cache,\n },\n logger: {\n level: 'info',\n prefix: '[SDK]',\n timestamp: true,\n colors: true,\n ...config.logger,\n },\n };\n\n this.logger = createLogger(this.config.logger);\n this.cache = createCacheStore(this.config.cache);\n \n this.interceptors = config.interceptors ?? {\n request: [],\n response: [],\n error: [],\n };\n\n const authMode = this.determineAuthMode(config);\n this.authConfig = {\n authMode,\n apiKey: config.apiKey,\n tokenManager: config.tokenManager ?? new DefaultAuthTokenManager({\n accessToken: config.accessToken,\n authToken: config.authToken,\n }),\n };\n }\n\n protected determineAuthMode(config: HttpClientOptions): AuthMode {\n if (config.apiKey) {\n return 'apikey';\n }\n return 'dual-token';\n }\n\n getAuthMode(): AuthMode {\n return this.authConfig.authMode;\n }\n\n setAuthMode(mode: AuthMode): void {\n this.authConfig.authMode = mode;\n }\n\n getTokenManager(): AuthTokenManager | undefined {\n return this.authConfig.tokenManager;\n }\n\n setTokenManager(manager: AuthTokenManager): void {\n this.authConfig.tokenManager = manager;\n }\n\n setApiKey(apiKey: string): void {\n this.authConfig.apiKey = apiKey;\n this.authConfig.authMode = 'apikey';\n this.authConfig.tokenManager?.clearTokens();\n }\n\n setAuthToken(token: string): void {\n this.authConfig.tokenManager?.setAuthToken(token);\n if (this.authConfig.authMode === 'apikey') {\n this.authConfig.authMode = 'dual-token';\n this.authConfig.apiKey = undefined;\n }\n }\n\n setAccessToken(token: string): void {\n this.authConfig.tokenManager?.setAccessToken(token);\n if (this.authConfig.authMode === 'apikey') {\n this.authConfig.authMode = 'dual-token';\n this.authConfig.apiKey = undefined;\n }\n }\n\n setTenantId(tenantId: string): void {\n this.tenantId = tenantId;\n }\n\n setOrganizationId(organizationId: string): void {\n this.organizationId = organizationId;\n }\n\n setPlatform(platform: string): void {\n this.platform = platform;\n }\n\n setUserId(userId: string | number): void {\n this.userId = userId;\n }\n\n clearAuthToken(): void {\n this.authConfig.tokenManager?.clearTokens();\n }\n\n addRequestInterceptor(interceptor: (config: RequestConfig) => RequestConfig | Promise<RequestConfig>): () => void {\n this.interceptors.request.push(interceptor);\n return () => {\n const index = this.interceptors.request.indexOf(interceptor);\n if (index > -1) {\n this.interceptors.request.splice(index, 1);\n }\n };\n }\n\n addResponseInterceptor(interceptor: (response: unknown, config: RequestConfig) => unknown | Promise<unknown>): () => void {\n this.interceptors.response.push(interceptor);\n return () => {\n const index = this.interceptors.response.indexOf(interceptor);\n if (index > -1) {\n this.interceptors.response.splice(index, 1);\n }\n };\n }\n\n addErrorInterceptor(interceptor: (error: Error, config: RequestConfig) => void | Promise<void>): () => void {\n this.interceptors.error.push(interceptor);\n return () => {\n const index = this.interceptors.error.indexOf(interceptor);\n if (index > -1) {\n this.interceptors.error.splice(index, 1);\n }\n };\n }\n\n clearCache(): void {\n this.cache.clear();\n }\n\n getConfig() {\n return {\n baseUrl: this.config.baseUrl,\n timeout: this.config.timeout,\n authMode: this.authConfig.authMode,\n apiKey: this.authConfig.apiKey,\n accessToken: this.authConfig.tokenManager?.getAccessToken(),\n authToken: this.authConfig.tokenManager?.getAuthToken(),\n tenantId: this.tenantId,\n organizationId: this.organizationId,\n platform: this.platform,\n userId: this.userId,\n };\n }\n\n isAuthenticated(): boolean {\n return this.authConfig.tokenManager?.isValid() ?? false;\n }\n\n protected buildBaseUrl(path: string, params?: QueryParams): string {\n const baseUrl = this.config.baseUrl.replace(/\\/$/, '');\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n let url = `${baseUrl}${normalizedPath}`;\n\n if (params) {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n searchParams.append(key, String(value));\n }\n });\n const queryString = searchParams.toString();\n if (queryString) {\n url += `?${queryString}`;\n }\n }\n\n return url;\n }\n\n protected buildHeaders(config: RequestConfig, skipAuth: boolean = false): HttpHeaders {\n const headers: HttpHeaders = {\n 'Content-Type': MIME_TYPES.JSON,\n ...this.config.headers,\n ...config.headers,\n };\n\n if (!skipAuth && !config.skipAuth) {\n const authHeaders = buildAuthHeaders(\n this.authConfig.authMode,\n this.authConfig.apiKey,\n this.authConfig.tokenManager\n );\n Object.assign(headers, authHeaders);\n }\n\n if (this.tenantId) {\n headers['X-Tenant-Id'] = this.tenantId;\n }\n\n if (this.organizationId) {\n headers['X-Organization-Id'] = this.organizationId;\n }\n\n if (this.platform) {\n headers['X-Platform'] = this.platform;\n }\n\n if (this.userId !== undefined) {\n headers['X-User-Id'] = String(this.userId);\n }\n\n return headers;\n }\n\n protected serializeRequestBody(body: unknown, headers: HttpHeaders): BodyInit | string | undefined {\n if (body === undefined || body === null) {\n return undefined;\n }\n\n if (typeof FormData !== 'undefined' && body instanceof FormData) {\n delete headers['Content-Type'];\n return body;\n }\n\n if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';\n return body.toString();\n }\n\n if (typeof Blob !== 'undefined' && body instanceof Blob) {\n delete headers['Content-Type'];\n return body;\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (body instanceof ArrayBuffer) {\n delete headers['Content-Type'];\n return body;\n }\n if (ArrayBuffer.isView(body)) {\n delete headers['Content-Type'];\n return body as unknown as BodyInit;\n }\n }\n\n if (typeof body === 'string') {\n headers['Content-Type'] = headers['Content-Type'] || 'text/plain;charset=UTF-8';\n return body;\n }\n\n return JSON.stringify(body);\n }\n\n protected async applyRequestInterceptors(config: RequestConfig): Promise<RequestConfig> {\n let processedConfig = config;\n for (const interceptor of this.interceptors.request) {\n processedConfig = await interceptor(processedConfig);\n }\n return processedConfig;\n }\n\n protected async applyResponseInterceptors<T>(response: T, config: RequestConfig): Promise<T> {\n let processedResponse: T = response;\n for (const interceptor of this.interceptors.response) {\n processedResponse = (await interceptor(processedResponse, config)) as T;\n }\n return processedResponse;\n }\n\n protected async applyErrorInterceptors(error: Error, config: RequestConfig): Promise<void> {\n for (const interceptor of this.interceptors.error) {\n await interceptor(error, config);\n }\n }\n\n protected async handleErrorResponse(response: Response, config: RequestConfig): Promise<never> {\n let errorMessage = `HTTP ${response.status}: ${response.statusText}`;\n\n try {\n const result = await response.json();\n errorMessage = result.msg || result.message || errorMessage;\n } catch {\n // Ignore JSON parse errors\n }\n\n const error = SdkError.fromHttpStatus(response.status, errorMessage);\n\n await this.applyErrorInterceptors(error, config);\n throw error;\n }\n\n protected async processResponse<T>(response: Response, config: RequestConfig): Promise<T> {\n if (!response.ok) {\n await this.handleErrorResponse(response, config);\n }\n\n const contentType = response.headers.get('content-type');\n\n if (contentType?.includes(MIME_TYPES.JSON)) {\n const result: ApiResult<T> = await response.json();\n\n if (!SUCCESS_CODES.includes(result.code) && !SUCCESS_CODES.includes(String(result.code))) {\n throw SdkError.fromApiResult(result, response.status);\n }\n\n return result.data;\n }\n\n if (contentType?.includes('text/')) {\n return (await response.text()) as unknown as T;\n }\n\n return await response.json() as T;\n }\n\n protected async executeFetch(\n url: string,\n options: {\n method: string;\n headers: HttpHeaders;\n body?: string | BodyInit | null;\n timeout: number;\n signal?: AbortSignal;\n }\n ): Promise<Response> {\n const controller = new AbortController();\n let timedOut = false;\n const timeoutId = setTimeout(() => {\n timedOut = true;\n controller.abort();\n }, options.timeout);\n\n const abortHandler = () => controller.abort();\n\n if (options.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n options.signal.addEventListener('abort', abortHandler, { once: true });\n }\n }\n\n try {\n this.logger.debug(`${options.method} ${url}`);\n\n const response = await fetch(url, {\n method: options.method,\n headers: options.headers,\n body: options.body,\n signal: controller.signal,\n });\n\n return response;\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n if (timedOut) {\n throw new TimeoutError(`Request timeout after ${options.timeout}ms`, options.timeout);\n }\n throw new CancelledError('Request was cancelled');\n }\n throw new NetworkError(error.message);\n }\n\n throw new NetworkError('Unknown network error');\n } finally {\n clearTimeout(timeoutId);\n if (options.signal) {\n options.signal.removeEventListener('abort', abortHandler);\n }\n }\n }\n\n async execute<T>(config: RequestConfig): Promise<T> {\n const processedConfig = await this.applyRequestInterceptors(config);\n const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);\n const headers = this.buildHeaders(processedConfig);\n const serializedBody = this.serializeRequestBody(processedConfig.body, headers);\n\n const response = await this.executeFetch(url, {\n method: processedConfig.method,\n headers,\n body: serializedBody,\n timeout: processedConfig.timeout ?? this.config.timeout,\n signal: processedConfig.signal,\n });\n\n return this.processResponse<T>(response, processedConfig);\n }\n\n abstract request<T>(path: string, options?: RequestOptions): Promise<T>;\n abstract get<T>(path: string, params?: QueryParams): Promise<T>;\n abstract post<T>(path: string, body?: unknown): Promise<T>;\n abstract put<T>(path: string, body?: unknown): Promise<T>;\n abstract delete<T>(path: string, body?: unknown): Promise<T>;\n abstract patch<T>(path: string, body?: unknown): Promise<T>;\n\n async upload<T>(path: string, options: UploadOptions): Promise<T> {\n const formData = new FormData();\n formData.append(options.fieldName ?? 'file', options.file);\n\n if (options.additionalData) {\n Object.entries(options.additionalData).forEach(([key, value]) => {\n formData.append(key, value);\n });\n }\n\n const config: RequestConfig = {\n url: path,\n method: 'POST',\n body: formData,\n skipAuth: false,\n };\n\n const processedConfig = await this.applyRequestInterceptors(config);\n const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);\n const headers = this.buildHeaders(processedConfig);\n delete headers['Content-Type'];\n\n const response = await this.executeFetch(url, {\n method: 'POST',\n headers,\n body: formData,\n timeout: processedConfig.timeout ?? this.config.timeout,\n signal: processedConfig.signal,\n });\n\n return this.processResponse<T>(response, processedConfig);\n }\n\n async download(path: string, _options?: DownloadOptions): Promise<Blob> {\n const config: RequestConfig = {\n url: path,\n method: 'GET',\n skipAuth: false,\n };\n\n const processedConfig = await this.applyRequestInterceptors(config);\n const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);\n const headers = this.buildHeaders(processedConfig);\n\n const response = await this.executeFetch(url, {\n method: 'GET',\n headers,\n timeout: processedConfig.timeout ?? this.config.timeout,\n signal: processedConfig.signal,\n });\n\n if (!response.ok) {\n await this.handleErrorResponse(response, processedConfig);\n }\n\n return response.blob();\n }\n\n async *stream(path: string, options?: RequestOptions): AsyncIterable<string> {\n const config: RequestConfig = {\n url: path,\n method: options?.method ?? 'POST',\n body: options?.body,\n headers: options?.headers,\n skipAuth: options?.skipAuth,\n };\n\n const processedConfig = await this.applyRequestInterceptors(config);\n const url = this.buildBaseUrl(processedConfig.url, processedConfig.params);\n const headers = this.buildHeaders(processedConfig);\n\n const response = await this.executeFetch(url, {\n method: processedConfig.method,\n headers,\n body: processedConfig.body ? JSON.stringify(processedConfig.body) : undefined,\n timeout: processedConfig.timeout ?? this.config.timeout,\n signal: processedConfig.signal,\n });\n\n if (!response.ok) {\n await this.handleErrorResponse(response, processedConfig);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new NetworkError('No response body');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() ?? '';\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n if (trimmedLine === '' || trimmedLine === 'data: [DONE]') continue;\n if (trimmedLine.startsWith('data: ')) {\n yield trimmedLine.slice(6);\n } else {\n yield trimmedLine;\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n}\n\nexport function createBaseHttpClient(config: HttpClientOptions): BaseHttpClient {\n return new (class extends BaseHttpClient {\n async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const config: RequestConfig = {\n url: path,\n method: options.method ?? 'GET',\n headers: options.headers,\n params: options.params,\n body: options.body,\n timeout: options.timeout,\n signal: options.signal,\n skipAuth: options.skipAuth,\n };\n\n return withRetry(\n () => this.execute<T>(config),\n { ...this.config.retry, ...options.retry }\n );\n }\n\n async get<T>(path: string, params?: QueryParams): Promise<T> {\n return this.request<T>(path, { method: 'GET', params });\n }\n\n async post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: 'POST', body });\n }\n\n async put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: 'PUT', body });\n }\n\n async delete<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: 'DELETE', body });\n }\n\n async patch<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: 'PATCH', body });\n }\n })(config);\n}\n"],"names":["config"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
|
package/dist/http.cjs
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const baseClient = require("./http/base-client.cjs");
|
|
4
|
+
exports.BaseHttpClient = baseClient.BaseHttpClient;
|
|
5
|
+
exports.createBaseHttpClient = baseClient.createBaseHttpClient;
|
|
6
|
+
//# sourceMappingURL=http.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/dist/http.js
ADDED
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("./core/types.cjs");
|
|
4
|
+
const tokenManager = require("./auth/token-manager.cjs");
|
|
5
|
+
const logger = require("./utils/logger.cjs");
|
|
6
|
+
const cache = require("./utils/cache.cjs");
|
|
7
|
+
const retry = require("./utils/retry.cjs");
|
|
8
|
+
require("./utils/string.cjs");
|
|
9
|
+
require("./utils/encoding.cjs");
|
|
10
|
+
const errors = require("./errors.cjs");
|
|
11
|
+
const baseClient = require("./http/base-client.cjs");
|
|
12
|
+
exports.DEFAULT_CACHE_CONFIG = types.DEFAULT_CACHE_CONFIG;
|
|
13
|
+
exports.DEFAULT_LOGGER_CONFIG = types.DEFAULT_LOGGER_CONFIG;
|
|
14
|
+
exports.DEFAULT_RETRY_CONFIG = types.DEFAULT_RETRY_CONFIG;
|
|
15
|
+
exports.DEFAULT_TIMEOUT = types.DEFAULT_TIMEOUT;
|
|
16
|
+
exports.HTTP_STATUS = types.HTTP_STATUS;
|
|
17
|
+
exports.MIME_TYPES = types.MIME_TYPES;
|
|
18
|
+
exports.SUCCESS_CODES = types.SUCCESS_CODES;
|
|
19
|
+
exports.DefaultAuthTokenManager = tokenManager.DefaultAuthTokenManager;
|
|
20
|
+
exports.buildAuthHeaders = tokenManager.buildAuthHeaders;
|
|
21
|
+
exports.createTokenManager = tokenManager.createTokenManager;
|
|
22
|
+
exports.isTokenValid = tokenManager.isTokenValid;
|
|
23
|
+
exports.requiresRefresh = tokenManager.requiresRefresh;
|
|
24
|
+
exports.createLogger = logger.createLogger;
|
|
25
|
+
exports.noopLogger = logger.noopLogger;
|
|
26
|
+
exports.createCacheStore = cache.createCacheStore;
|
|
27
|
+
exports.generateCacheKey = cache.generateCacheKey;
|
|
28
|
+
exports.calculateDelay = retry.calculateDelay;
|
|
29
|
+
exports.createRetryConfig = retry.createRetryConfig;
|
|
30
|
+
exports.sleep = retry.sleep;
|
|
31
|
+
exports.withRetry = retry.withRetry;
|
|
32
|
+
exports.AuthenticationError = errors.AuthenticationError;
|
|
33
|
+
exports.CancelledError = errors.CancelledError;
|
|
34
|
+
exports.ForbiddenError = errors.ForbiddenError;
|
|
35
|
+
exports.NetworkError = errors.NetworkError;
|
|
36
|
+
exports.NotFoundError = errors.NotFoundError;
|
|
37
|
+
exports.RateLimitError = errors.RateLimitError;
|
|
38
|
+
exports.SdkError = errors.SdkError;
|
|
39
|
+
exports.ServerError = errors.ServerError;
|
|
40
|
+
exports.TimeoutError = errors.TimeoutError;
|
|
41
|
+
exports.TokenExpiredError = errors.TokenExpiredError;
|
|
42
|
+
exports.ValidationError = errors.ValidationError;
|
|
43
|
+
exports.isAuthError = errors.isAuthError;
|
|
44
|
+
exports.isNetworkError = errors.isNetworkError;
|
|
45
|
+
exports.isRetryableError = errors.isRetryableError;
|
|
46
|
+
exports.isSdkError = errors.isSdkError;
|
|
47
|
+
exports.BaseHttpClient = baseClient.BaseHttpClient;
|
|
48
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { HttpMethod, LogLevel, QueryParams, HttpHeaders, ApiResult, PageResult, Pageable, Page, DeepPartial, PickByType, RequiredByKeys, OptionalByKeys, RequestConfig, RequestOptions, RetryConfig, CacheConfig, LoggerConfig, Interceptors, RequestInterceptor, ResponseInterceptor, ErrorInterceptor, HttpClientConfig, SdkConfig, } from './core';
|
|
2
|
+
export { DEFAULT_RETRY_CONFIG, DEFAULT_CACHE_CONFIG, DEFAULT_LOGGER_CONFIG, DEFAULT_TIMEOUT, SUCCESS_CODES, HTTP_STATUS, MIME_TYPES, } from './core';
|
|
3
|
+
export { DefaultAuthTokenManager, createTokenManager, buildAuthHeaders, isTokenValid, requiresRefresh, } from './auth';
|
|
4
|
+
export type { AuthTokenManager, AuthMode, AuthTokens, TokenManagerEvents, AuthConfig, OAuthConfig, OAuthTokens, } from './auth';
|
|
5
|
+
export { createLogger, noopLogger, createCacheStore, generateCacheKey, withRetry, sleep, calculateDelay, createRetryConfig, } from './utils';
|
|
6
|
+
export type { Logger, CacheStore, } from './utils';
|
|
7
|
+
export { SdkError, NetworkError, TimeoutError, AuthenticationError, TokenExpiredError, ForbiddenError, NotFoundError, ValidationError, RateLimitError, ServerError, CancelledError, isSdkError, isNetworkError, isAuthError, isRetryableError, } from './errors';
|
|
8
|
+
export type { ErrorCode, ErrorDetail } from './errors';
|
|
9
|
+
export { BaseHttpClient } from './http';
|
|
10
|
+
export type { HttpClientOptions } from './http';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,GACV,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAChB,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,MAAM,EACN,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,WAAW,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
|